71

Melee counter-attack is an easy way to make ranged attacks valuable. Do you build and use units that have strong melee attacks but die more easily because they're in melee or do you use units with weaker ranged attacks that live longer because they can stay out of melee? Melee counter-attack reduces otherwise over-whelming attacker advantage. In a game ...


15

It's a basic question of a certain type of "realism". It's hard to imagine getting a melee hit in on an enemy and them not getting involved at all, because you have to very close to them to hit with with something like an axe. It makes sense that the unit getting attacked gets a swing in. Ranged attackers can't get hit by the melee units they attack because ...


15

I am currently developing a turn-based strategy game. There are (overly simplified) two kinds of units in the game: sturdy melee damage sponges and fragile ranged damage dealers. The player is supposed to position the first in a way which prevents the opponent from attacking the second. However, that usually means that the melee units will receive the first ...


8

Pacing One standard rule not just of game design but of any form of entertainment is to aim for an engagement curve which slowly builds up excitement and then relieves the tension at the peak point. Game designers usually aim for that curve not just in their overall narrative, but also in smaller events, down to the most basic game loops. When you ...


6

Go is difficult for computers because there are many, many possible moves for the player in each board state, too many for the computer to brute-force and calculate all possible outcomes (unlike, for example, tic-tac-toe). Traditionally, chess playing computer programs would calculate all possible moves a few turns into the future and pick one of the moves ...


6

Of course it's good for you to have this tree, but what I see from this is that you are aiming too high! As a beginner developer you might just get stuck. Trust me it happened to me many times and I have only finished one small game. I didn't read the whole thing, but I ran trough it and I can really say it's too much for a beginner. So if you want to get ...


5

I wouldn't do the turn-based gameplay in a separate loop. Instead, just have the one main game loop like any other game, and that loop checks if it's time to advance a turn yet.


4

Here is how I would approach this: I would start by performing terrain analysis (pdf) and creating a set of influence maps based on various attributes (conflict maps, resource maps, etc). You might want to combine the influence maps together with associated weights. You'll probably update some of them at the start of each turn. But assuming you have the ...


4

When you develop your game object-oriented, this might be a good application for the flyweight pattern. In this context, a flyweight would be an object which acts as a copy of the gamestate, but actually references the original gamestate it was created from while also having one or more modifications to it. To create a flyweight, you need a reference to ...


4

Your pathfinding should return a list of way points to reach your objective for each unit. Since you are making a turn based game, I am assuming that the unit movement is like a chess piece. It is either on "this" tile or "that tile, and not in between. If this is the case you might end up with the scenario where a units movements runs out in the middle of ...


4

This is primarily just a design decision. Consider that you can actually do these things at the same time. If you look at the situation in terms of your update loop: Update 1: Calculate outcome for entity: n Play animation: n (frame 1) Update 2: Calculate outcome for entity: n+1 Play animation: n (frame 2) and n+1 (frame 1) Update 3: ...


4

Note: I'm playing fast and loose with the pseudocode here, so let me know if anything is unclear. Ideally, the player shouldn't be special - just another set of components. The main function of entities is to group components. You might think of it this way: components get updates, not entities. From the good old Evolve Your Hierarchy article: Updates ...


4

I think the rationale is pretty simple. A melee or a close quarters attack is a immediate threat to your survival fail to counter and your dead, or running for your life. Going into a melee is a two way street, you might get the first blow, but the other will counter attack or die. Nobody in their sane minds would be standing in place when they get attacked....


4

You add additional depth by mixing 2 existing systems. System 1: Combat can be initiated from either side, winner is determined by stats and luck. System 2: Only the one initiating combat deals damage. Retaliations are just a variation of the first system. Both systems make sense on their own. "Attacker deals all the damage" has been used since chess, so ...


4

You should not force players to make their moves under duress by giving them a ticking down countdown timer. A reasonable time limit might not be a bad idea to prevent AFK players from ruining everyone's game experience, but if you make the time limit too short, the game will become very stressful. You don't want players to lose a game because they simply ...


4

First of all, 65000 peak current users is quite a lot. Many games don't even get near that number. Looking at the current player stats on Steam, there are just 7 games which broke that limit today. And if you think you are playing in the same league as CS:GO, DOTA 2 or PUBG, then you should be able to afford more than one gameserver. But the number of ...


4

My stance is there aren't inherently bad mechanics. Different mechanics appeal to different people. However, it sounds like that particular set of play testing might have found a disconnect between this particular mechanic & your particular game. Here are some options: The play testers are not the intended audience. The good news is this lets you keep ...


3

Constantly looping is probably unnecessary for a turn-based game. If the only time something is going to change is when a player moves, consider using setTimeout() or requestAnimationFrame(). Here's an approximate setup: var player = {x: 0, y: 0}; //to be executed whenever the player moves function animate(xDifference, yDifference){ var pixelsLeftX = ...


3

If you can buy more turns then it's for monetization. The non-buyable turns are to keep you playing over time. You have no choice but to wait until they regenerate which means you will come back the next day to spend them and then see the advertisement to buy more turns of the other kind. If it is a multiplayer game then the goal is usually to limit the ...


3

It's a year old question but now I'm facing the same trubles with my home made game while studying ECS, thus some necromany. Hopefully it will end up in a discussion or at least few comments. I`m not sure if it violates ECS concepts, but what if: Add an EventBus to let Systems issue/subscribe to event objects (pure data in fact, but not a component I guess)...


3

When the game is parallel turn-based, you can calculate your moves while the player is making theirs. This gives your AI quite a lot of time. So performance is not that much of a concern as it would be in a real-time game. In many games it is not actually necessary to plan ahead more than one round. It is often possible to write a passable AI which doesn't. ...


3

When designing arbitrary turn-based game you have few options to make harder for AI, focusing on different aspects of AI: Abstraction (e.g. task "draw something beautiful") Feature extraction (e.g. from non gaming: captcha) Decision making: unfeasible bruteforce solutions (huge state space, e.g.the go) Your best bet is on abstraction - you should aim to ...


3

It gives turn based games a component of "realtime"-realism. In real battle you seldom can attack an enemies army without him fighting back at all, especially at close range. This is why everything in civ counterattacks everything in range in civ. Bowmen will counterattack other bownman. In some games the counterattack even happens before the damage is ...


3

I see no other solution that having distinct 'moves' that are implemented in some mechanism that allows the 'owner' to invoke them without really knowing what those moves are. However, it is unclear if you want to make the logical break on implementing distinct moves as a 'Move' with subclasses. You may find it more useful to think about the content (...


3

An alternative to every move inheriting from an abstract class Move, you can instead use interfaces in C#. This has the advantage of allowing your move classes to be more flexible while still sharing the execute method. An example of this could be: public interface IMove { void Execute(); } The different moves: public class Attack : IMove { public ...


3

Often games tend to prefer single class focus, as you described for your end game, however from a user perspective consider this: Warrior beats stealth beats mage beats warrior I'm playing your game as a Stealth character. I spent the last 4 hours quickly leveling up. Each level granted new information, so the majority of the time spent playing was ...


3

Allowing a move after an attack lets you aggro an enemy then dash out of its range / behind full cover where your unit is no longer at risk. It's a safe but dull strategy that avoids the drama of injuring or losing loved/useful/heavily-invested soldiers that's at the heart of a game like X-COM. By requiring that the soldier stay in the place from which ...


2

I'm not familiar with Google Play Game Services, however it might be worth looking into how old console games did randomness. Often random number seeds were taken from hidden but not random states within the game and then the numbers come off a hidden list or calculator. What frame of the game's start menu 'start' was hit on. What enemies were killed in the ...


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