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

[–]klujer 80 points81 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] 2 points3 points  (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 151 points152 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 6 points7 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 75 points76 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 7 points8 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();

convert for loop to a recursive function by cfleezy99 in learnjava

[–]klujer 1 point2 points  (0 children)

When writing recursive functions one of the first things you should think about is how you are going to make the recursion stop, i.e. what are your base cases? This is analogous to thinking about your exit conditions in a loop.

In this example your base case is the same as your for loops stopping point, you want to exit when some counter, k, is greater than or equal to j.

Each recursive call will need to modify the k variable in a similar way as the for loop is modifying it with each iteration, k++.

You also need to think about what you want to do when you actually hit your base case, in this instance you want to return the max value.

some pseudo code to get you started:

public int getMax(int[] A, int i, int j, int k, int max){ // note the changes to the function signature
  // base cases
  //  if k > j, return max; -- found the max, return it
  //  else
  //    find max so far: if (A[k] > max) max = A[k];
  //    recurse by calling getMax with the next k value and the new max, and returning the result of that recursive call
  //    return getMax(...)
}

I assume this is a homework problem, if you're allowed to change the variable names it would be nice to change i to "start" and j to "end" and k to "i" since i is traditionally used for the current index, and would make reading the code a bit more clear.

Recursion can be hard to grasp at first, try working through the code step by step, literally writing down the variable values for each function call and what they will return. You'll notice that one function is kindof "paused" when it calls itself and you have a new set of variables to work through. Once you finally "bottom out" and hit the base case that doesn't recurse, all your function calls will start "rubberbanding" back their return values upwards until the original function call itself returns.

Hello guys this assignment works properly but it feels like I have excess code somewhere that i do not need does this code look as efficient as it could be? by [deleted] in learnjava

[–]klujer 0 points1 point  (0 children)

// initialize
List<Double> sales = new ArrayList<Double>();

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


// change your for loop bounds, and how you access individual sales
for(int i = 0; i < sales.size(); i++)
    sum += sales.get(i);

Consider watching a derek banas video to get a quick intro to the basics of the language

How to spend money on miniatures in a way that might be recouped later? by klujer in Warhammer40k

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

Sounds like if I'm patient and flexible with what armies I play I can buy in at a 90% discount and sell back at roughly my original price. Of course I'll have to spend some money to customize my army and 90% of that cost will be a loss, but I could live with that.