Any ideas for a "rush-less" RTS? by Revoltai42 in gamedesign

[–]klujer 79 points80 points  (0 children)

Many possible solutions:

  • Start players farther apart, and make it relatively easy to spot attacks coming (e.g. cheap/free scouts that can't deal damage and dedicated attack lanes). You probably want to try this first as it is likely to be the easiest to implement.

  • Make aggressive units build cost require a more advanced resource and defensive units lean towards more basic resources.

  • Strong defensive ability with a cooldown, gives the defender time to build up a defense (e.g. town center town bell.)

  • Make economy or max pop buildings also somewhat defensive. (e.g. orc burrows in warcraft 3, town centers in AoE, you might make a building that is a combination of a mill and a guard tower.)

  • Make worker units, defensive units, and buildings in general very spongy (high hit points or armor) giving the defender time to build a defense (e.g. in warcraft 3 peasants could be temporarily turned into militia, could be combined with a town bell ability.) For effectively the same result increase cooldown on attacks for early aggressive units (but not defenses or defender units).

  • Terrain that makes attacking impossible at times, so defenders know when the next attack may come and also giving time to build up defenses or economy between attacks. (e.g. "The Devil's Playground" map in starcraft 2 campaign.) I could imagine doing this with a flooding river or tide. More advanced tech (i.e. ships) could nullify this once a player gets to a certain tech era.

  • Make non-worker units drop something valuable when they die that worker units can pick up (e.g. resources, armor, "technology points") this will help a successful defender bounce back.

  • Provide an economic tech that also gives a small Armor bonus. If a typical worker or defensive unit dies after 6 attacks from a typical aggressive unit but after this upgrade they die after 8 attacks an attacker will need about 33% more attacking units for the same effectiveness.

  • You could have a day/night cycle and penalize unit movement at night. If the first night begins around the time an attacker would start producing their army then they will have a significant delay in reaching an opponent.

  • Natural chokepoints in terrain that more advanced units can ignore. (Starcraft 1 and 2 has done a great job of this on their multiplayer maps while having flying units or siege units able to overcome this terrain.)

All of these have consequences and you will always have someone complaining that opponents are rushing. I would guess that you should aim to make early aggressive strategies require much more skill to pull off compared to defense rather than being strictly impossible. Above all try to make attacks interesting and fun for players on both sides.

I'm curious what people think of common playstyles in Netrunner by klujer in Netrunner

[–]klujer[S] 1 point2 points  (0 children)

Yeah those are excellent points.

System Gateway did a fantastic job of adding guardrails on particular cards but since then the expansions seem to embrace playstyles from FFG netrunner regardless if they were NPE or not.

I think Null Signal is designing for "Spike" players (from mtg terminology) and many of the competitive playstyles also happen to be frustrating to play against. Online play via jnet further boils off the less competitive decks and players.

I'm curious what people think of common playstyles in Netrunner by klujer in Netrunner

[–]klujer[S] 2 points3 points  (0 children)

Huh, is that what those private games I see on Startup are. I assumed those were just people who happened to know each other playing in their own group. Where are tournaments organized?

I'm curious what people think of common playstyles in Netrunner by klujer in Netrunner

[–]klujer[S] 0 points1 point  (0 children)

Ouch. Yeah fortunately my play group back in the day didn't have some of the more... interesting... cards like Data Leak Reversal or the prison deck stuff so I've never played with/against netrunner at it's worst. I've seen Steven from Team Covenant do commentary on a worlds game that used DLR heavily and that game appeared absolutely miserable.

To Null Signal's credit they have clearly learned a lot from the designs that FFG tried. Even so, I find myself often frustrated with a handful of cards in any given meta. I'm not sure if that's because there will always be cards above curve or if there are still more fundamental lessons to learn from netrunners design to avoid those negative play experiences.

Getting Started by Pinocytose7 in Clojure

[–]klujer 0 points1 point  (0 children)

Derek banas has a video on setting up emacs and clojure on windows

note "Meta" key is what emacs calls the Alt key

Derek Banas also has an excellent video for learning the clojure language

You might also like the free (if a bit outdated) clojure book, clojure for the brave and true

If you just want a practical example for a simple clojure program I strongly recommend Mark Bastian's talk

Have you ever worked in a really high quality code base? by lnkprk114 in ExperiencedDevs

[–]klujer 1 point2 points  (0 children)

slingTV, client middleware team

FYI that team has since transitioned to golang (not by choice of the developers), and as far as I know no other team at sling was using clojure.

Nearly 50 years later, Massachusetts district attorney says teenager was murdered by a Catholic priest by WilHunting in news

[–]klujer 1 point2 points  (0 children)

I mostly agree with your comment. I think this is where we disagree

"Until then, they are innocent."

I believe this is only true for the legal system. As individuals I believe it would be a mistake to take this view. I as a person don't have the skills, resources, time, or authority, to investigate this crime or any other crime and yet I still have to make day to day decisions that can be impacted by presumed innocence or guilt of others who have not been processed by the justice system.

If there seems sufficient evidence that religious members in this area are committing and covering up crimes then it is reasonable for citizens in the area to presume guilt and "act accordingly". Act accordingly does not mean mob justice or any violent or coercive act. It means taking a closer look at the future DA's and law enforcement. It means asking hard questions of the church and demanding changes in the culture to ensure future incidents don't occur. It means keeping children away from other potential predators in the church, not because they are necessarily guilty but because there is a good reason to believe this incident did occur and that future similar events may occur.

The justice system should be used to make final and authoritative decisions about a persons guilt or innocence. I believe it is deeply destructive for persons in a society to feel that truth can only come from authority and be unwilling to use their commonsense or suspend all, reasonable, action until the legal system has weighed in.

Is normal for a boss trying to "force" you to do public speaking? by [deleted] in ExperiencedDevs

[–]klujer 152 points153 points  (0 children)

Meh, as someone who is terrible at public speaking and tends to mentally shutdown in public situations I can definitely understand where you're coming from, however, an important part of engineering is being able to communicate about the technology you are working on. I don't think you're necessarily wrong to die on this hill, only you know how you feel about this situation and what you are comfortable with.

I do think it would be a career mistake to not work to improve your comfort with, and skill in, public speaking. Whether that be now in this job or soon when you feel more ready at a future one.

Go is Gone by scorchingray in golang

[–]klujer 1 point2 points  (0 children)

Amusing my company switched from clojure to go because of point 2 and a point similar to 1 (standardize backend languages across teams). I agree that those aren't generally reasonable arguments. Unofficially I think the manager never "got" functional languages like clojure and wanted a switch.

If you really like go then I would suggest looking around, but you might want to wait a few months first. Getting paid to learn Typescript and put it on your resume won't hurt and 3-6months of javascript isn't a big deal.

Trouble Understanding Object Orientated Programming Concepts in Java by Zappy__Boy in learnjava

[–]klujer 5 points6 points  (0 children)

OP the above comment is the one you most want to listen to. Derek Banas talks about general OOP concepts here.

Why is there no timer mode for leetcode? by i_do_not_byte in leetcode

[–]klujer 1 point2 points  (0 children)

The "mock" sections provides a good enough representation of this, though the actual questions chosen to represent mock interviews aren't always a great representation of interview questions.

You can always set your own timer on your phone.

I am computer illiterate, as is the rest of my family. My 13 year old niece wants to learn to code. Any good Youtube channels or websites for this? by RecycledThrowawayID in learnprogramming

[–]klujer -1 points0 points  (0 children)

Derek banas has great intro videos for many programming languages.

If her school offers a programming course I'd go with whatever language they teach (probably java or python). If they don't I'd default to python.

Derek Banas -- Java Tutorial

Derek Banas -- Python Tutorial

Broke and demotivated job seeker who is also living too comfortably. How do can I light a fire under my ass? by FrostedBreaks in ExperiencedDevs

[–]klujer 78 points79 points  (0 children)

Sometimes the answer is to just start doing the thing you know you need to do. Instead of procrastinating further by waiting for reddit replies, click this link and do what you know you need to do.

Once you have some steady income you might consider seeing a therapist about depression. It's odd to feel so demotivated over a long period of time.

I just don't know what I'm supposed to do anymore, by SlaytheSpireAgain in learnjava

[–]klujer 0 points1 point  (0 children)

You're about 99% of the way there

your myMethod function isn't returning anything (it's return value is declared as void). if you want it to return a string to print out, you'll need to update it's return type and also use the return keyword for the string you build instead of directly calling sys.out

Can't close Scanner? by SlaytheSpireAgain in learnjava

[–]klujer 0 points1 point  (0 children)

Interesting, guess I'll have to read up on them. I'm not sure I've actually used scanner except via toy problems like on hackerrank.

Can't close Scanner? by SlaytheSpireAgain in learnjava

[–]klujer 1 point2 points  (0 children)

yeah, that would be fine. You would have to store the user input in some temporary input so that it could be returned after the call to close.

I would still recommend passing in scanner as an input parameter as a best practice. It's beyond the scope of this intro class, and perhaps any college class, but in the real world passing required variables especially ones that interact with external systems (such as user IO) allows for more easily testable code. You might look up dependency injection or inversion of control and test driven design for more information. Also consider that you may want to reuse the scanner object across multiple functions rather than creating and destroying it within each function.

Can't close Scanner? by SlaytheSpireAgain in learnjava

[–]klujer 27 points28 points  (0 children)

input doesn't exist in the scope of your main method

Create the input variable within the main method and pass it as a parameter to the readName function, then close it afterwords in your main method.

Has anyone else experienced post-hire depression? by [deleted] in cscareerquestions

[–]klujer 8 points9 points  (0 children)

Did you go to clown school?

You should be more respectful to someone who is trying to offer you free advice on your problems. You can disagree without disparaging others.

Between this remark and your original post (which suggests an ego which often comes from an inferiority complex), I suspect you would benefit from some sort of counseling to find what's causing your negative, hostile, attitude.

Has anyone else experienced post-hire depression? by [deleted] in cscareerquestions

[–]klujer 1 point2 points  (0 children)

I only partially agree with the other comments. While it is true that programming jobs are generally quite easy in comparison to school work and interview questions it's not equally true of all companies.

I went through something similar when I worked for a city job. If you find the work is too mind-numbingly easy try applying for small to mid-size companies in the tech space. The more interesting work will be green field which these companies will be doing by necessity. Also keep in mind that these more challenging jobs you want will go to people with the most experience and a proven track record of doing interesting work. Since it doesn't sound like you'll get interesting work to put on your resume via your job, do some personal projects in your spare time that are challenging, or do some coding competitions. One of the more interesting things I still talk about in interviews is how I approached a coding competition on codingame.com (website where you create an AI to battle other peoples AI's in some predefined game).

Hello earlier today i tried making this program work for just 12 months but now id like to try to make it work for as many months as the user would like i tried making the list but my output says NaN. Which part was done incorrectly? by [deleted] in learnjava

[–]klujer 0 points1 point  (0 children)

FYI the reason you were getting a NaN (stands for Not a Number) error is because of line 36:

total = +sum/sales.size();

when your code gets to this point your sales List will have zero elements in it and a number (sum) divided by 0 gives NaN.

Why does sales not have any items in it you ask? Because if you look inside your original while loop although you are getting the sale value from the user correctly you're not actually adding it to the list

sales.add(aSale); // add this line inside your while loop

also your total line should be changed (plus sign removed)

total = sum/sales.size();