I'm building a reasonably traditional Roguelike so it's going to be turn based. That sounds straightforward but there are different ways that turn based can go.
Player then mobsThis is probably the easiest way to go. The player takes their turn, be it movement or action, then the mobs or npcs take their turn.
- This has the huge advantage that it's very straight forward for the player and easy to keep track of.
- It makes AI pathfinding easier since the mobs always know where the player is when they move.
- It gives the player an advantage over the mobs, since if they player can kill the mob in his turn, the mob won't have a turn to react, because it will be dead.
- Difficult to simulate different speed of movement or attack, since it's very binary. Adding extra actions in a turn is hugely powerful and potentially game changing, as Baldur's gate/Icewind Dale players will remember when their fighters got multiple attacks per round.
- If the player moves next to a mob one square away, since it's the mobs turn next the player will be attack with no chance to defend. This happens in Dredmor and it's very annoying. If a mob is one square away I find myself hitting space to wait a turn and let the mob come to me, which feels like cheesing.
Movement then action
First everyone moves, then they perform their actions.
- Again fairly straightforward for the player.
- Feels fairer than players then mobs.
- Again can't simulate different speeds easily.
- Slightly more complicated. Mobs don't where the player will be until he moves, so needs some logic. Ditto for players chasing a fleeing mob.
- Possible for a character to make and action and die on the same turn.
Character speed based
The best example of this kind of system would probably be Final Fantasy. Imagine each character has an individual timer, and they can only perform and action when that timer finishes, then with each action it resets. Different characters have slower or faster timers to make different characters feel faster or slower.
- The most flexible and the most 'realistic'. It means that you can have faster characters moving faster and attacking more often.
- More avenues to build your character in different ways. Do you want a fast character and to use a kiting strategy or maybe a slow attack speed high damage build.
- You could have different actions take different amounts of time, which could be part of their balance. For example spell which take longer to cast but are much more powerful.
- Actually could be easier for pathfinding since instead of everyone moving at the same time there is a definite list of who moves when and only one character will move at a time.
- A bit more difficult to understand for newer players, and even for for seasoned player might be more difficult to plan around. This could maybe be compensated for by having most characters in similar attack speed at the start and to ease the players into the concept.
- Much more complex to implement, especially with many different mobs, all with potentially different speeds.
- Balancing would be more difficult as speed is just another factor to consider. I dislike how in any turn based game with haste, haste always becomes the number one must have spell.
- It slightly breaks the whole turn based thing. If a player can take more than one action a turn is each action a turn? What should I call it? What if I want to make a scoring element turn based?
I would love to do the speed based. It just opens up so many different options for builds and abilities. I'm just worried that it's another layer of complexity on top of what is already a very complex project.
In the end I'm going to experiment with the movement then actions model, which feels nicer to me than player then mob. I'll see if I can get it to work well, then if I get problems I can fall back on the player then mob model.