Hot answers tagged

52

I would like to challenge the framing of the primary thrust of this question: the notion that "flat" design is a good idea. Game design is really not that different from plot structure in narrative entertainment (movies, TV shows, books, etc). In a plot, things start off simple. Then, a complication occurs. Then a couple more. More conflict is added. This ...


35

Real-Time Strategy is a genre which actually combines multiple games in one. You have a management game (resource management and build orders), a puzzle game (building a base with a functional yet easy to defend layout), two different kinds of exploration games (exploring the map and exploring which units beat which other units), and a tactics game (...


34

This is opinionated question. It can be fun either way and boring as well. Only you (together) can decide what you like best and have a better chance of implementing well. Start playtesting! It does not have to be fancy - from what I can tell, you can try starting with an A5 piece of graph paper and play with your partner imposing 10-30 players with a set ...


26

At this point, there were good examples of preventing lowling bashing, so I want to suggest a different approach: encourage the protection of lowbies. The only High level player's dangers are basically other high level players. It is unlikely, that many lower levels gather togehter to attack someone higher. So, to stay ahead of the enemys, his economy ...


25

A common approach is to have a component-based approach where the base-class "Unit" just implements the most basic aspects all units have in common, while each unit then has a list of multiple component-objects which say what it can do and how it does it. For example, a tank might have the components Mobile, Destructible, Attacker, an immobile turret only ...


21

Clearly, your business partner feels very strongly that your approach has some deep flaws and just won't work. If they didn't, they wouldn't be suggesting starting from scratch or abandoning the project entirely, especially not at this late stage. What you should try to do first is find out why they think your approach won't work. This might be tricky, ...


18

Very good advice in comments (which got moved into chat). I'll just add, since I'm in the middle of implementing such "flattening" into my RTS (Knights Province) right now. Classic strategies are unlike many other kinds of games: They deliver too big of a change from 1st to last minute. In other games the main “gameplay element” is evenly spread along all ...


16

It's common for the client to implement some sort of feedback to let the player know immediately that their chosen action has been registered, eg.: interface sound (eg. button click) in-world sound (eg. a character saying, "At once, commander") animation (eg. begin swinging a sword) These can take place while the information is travelling to the server so ...


14

There is no reason to communicate over the network when the player selects units, because in most games just selecting a unit has no game-mechanical consequences. So this is an information which isn't relevant to the server or to the other players. But what would be important is when the player gives a command to one or more units. When issuing a move-...


14

What would be the MVP for SC2...? If the answer were generally known, don't you think there would be a lot more competition to SC2 out there? SC2 is the product of countless hours of design decisions; every patch that was released to SC1, SC1's initial design, the lessons from WC and WC2 that went into the SC1 design, and so on. Game design isn't an exact ...


13

Rule number one of multithreading: Don't even think about it, unless you really need to use multiple CPU cores for performance reasons*. Multithreading opens up a whole can of worms of obscure and impossible to reproduce bugs: Race conditions! Because you have no control over the thread scheduling of the OS, you have no control over the order in which ...


13

A good tutorial is one where the player doesn't realize it's one. Work on your new user experience to introduce the complexity of the game gradually. After giving the player access to a new game element, give them a trivial and intuitive problem based in that new mechanic. Only let them progress to the next layer of complexity when they solved that problem.


12

KD-trees are definitively not dynamic enough to be considered, honestly. Moving a few units can easily require you to rebuild the whole KD-Tree. Plus, a KD-tree is very efficient for queries, but not so much for neighbor searching. A quadtree is more flexible over time, as the modification are kept more locally. The disadvantage is that if you have many ...


12

It seems like what you're looking for is the Optimal Reciprocal Collision Avoidance algorithm. The preceding paper is also worth a read. Although the paper may be a bit involved the theory behind the algorithm is fairly straightforward: Assume that you already have a simulation (game) with agents (units) that have some sort of bounding volume around them. ...


12

Rule number one for multiplayer netcode design: Anything that matters for gameplay should be calculated server-sided. Never trust the client. The client is in the hands of the enemy. You can not efficiently prevent players from modifying their game client to gain an advantage. The only reasons why you would do damage calculation on the client are: Your ...


11

Yes, navigation meshes are still applicable to tile based games. Although, they would primarily be used as a optimization. For example, I've converted the lower left of your image to use a navigation mesh: In this case, each green square would be a navigation node. As you can see, this drastically reduces the number of nodes that A* needs to process. Units ...


11

Ideas for removing micro from the game : No units at all (at least physically present in the game) : you win by spreading your control over areas like in the Go game. You have units but you can't control them, they automatically go attack some critical point of the enemy. This could work like the minions in League of Legends by following a line or as in ...


11

Option 3: The client sends a click event to the server, the server decides where this click event has landed, decides if there is a hit or a miss, then applies the damage and sends the updated world state back to the client. Don't even trust the client to tell if there is a hit or a miss.


10

Break movement into two steps Select a position on a 2D X/Z plane located at the entity's current Y position. Set the offset (up or down) from that plane. This is similar to how Homeworld, one of the first 3D space RTS games handled movement. Works really well. Breaking movement into two steps provides the most control, simply because the mouse is a 2D ...


10

Base building and drop-in multiplayer are two features which don't go very well together. One option is to allow new players to progress very quickly. Give them the tools and resources to defend themselves after a very short playtime. Further progression is either horizontal (more variety, but all newly unlocked options are tradeoffs which are different but ...


10

TLDR; From a game design perspective. The complete, consistent, and well understood model beats out the incomplete model with unresolved (or unresolvable) technical or conceptual issues. Based on your descriptions, it sounds like the con listed for the scaling territory design is technical in nature, and the cons listed for the non-scaling territory design ...


9

You can add a simple attribute to each tile that specifies its level. So for example: tileA.layer = 0 // Will be at the bottom tileB.layer = 1 // Will be above level 0, on top of it. // Add tiles to layered list List<List<Tile>> tiles = new List<List<Tile>>(); tiles[0].add(tileA); tiles[1].add(tileB); // Draw 'em in the right ...


9

Following answer is based on own RTS experience, which visually aligns with Age Of Empires and other RTS games Nowadays there is not one, but 2 Fog Of Wars (FOW) Static FOW is simpler (once revealed, remains open): First FOW is calculated on CPU and is used for games logic to test what units "see" in the game and can/cannot do. For an RTS it must be 100% ...


8

Create a grid with enough spaces for all the units you want to "unclutter", have them each choose the nearest unclaimed grid space. Then have them move towards their respective grid space. This will move them into something like a formation, where the player can easily select an individual unit. That's an O(N) operation with pretty good results.


8

Fair warning: if you don't find this sort of game play in the RTS world, that means there's a good chance that your market of gamers don't find value in this sort of game. Always be careful with the "if you build it they will come" argument. What makes a non-twitchy RTS tricky is the limited interface that we have to our computer. It's very good at making ...


7

Random thoughts: cheat: use rockets. Rockets explode in a radius, hiding any weirdness. cheat: predetermine the outcome and force the condition to happen visually cheat: attacks take time, hide latency in the atk+anim+result discontinuity cheat: disconnect local feedback from the networking stuff cheat: lots of VFX or screen activity that covers any ...


7

You'll basically have to create a third dimension, though in the simplest case it can consist of just two values: "on ground/on bridge" and "on water/below bridge". An inspiration can be found in the way Advanced Strategic Command does it: Units occupy a specific height level, can only move around on height levels fitting to their type unless there are ...


7

There is no need to implement BVH's, since Unity's collision engine essentially does that for you already. Simply attach a large bounding-sphere trigger to each unit (representing its range) and handle the OnCollisionEnter() and OnCollisionExit() callbacks to keep track of which enemies are within range of each unit. Note that the case you're interested in ...


Only top voted, non community-wiki answers of a minimum length are eligible