So, I've been working on my first roguelike game for a couple of weeks now, and what you could call the game's "engine" is now completed (well, the main parts are... field of view and items/inventory are still in progress, for example). At first the game was going to be a classic roguelike (think ADOM or DCSS) and so the gameplay was going to be purely turn-based - in the sense that time moves when you move - and enemies had different speeds which determined how many turns they could perform every iteration of the game loop. Then, though, I thought that since there were a lot of games like that already, I could come up with an alternative movement system. What at first came up to mind, of course, was real-time gameplay. Still, I didn't want to abandon the grid-based movement (since the engine was already wired up that way...) and also I didn't want to lose the typical complexity associated with roguelikes. Above all, I wanted the player to be able to access tons of character builds; including
a lot of attack/action moves to choose from that would be scattered around the dungeon. So, what I came up with is a weird real-time/turn-based hybrid mechanic: every entity has a
visible (important for strategy) energy bar which fills up with time at different paces (ergo, each entity has a different intrinsic speed stat) and actions such as walking or attacking deplete the bar. Special moves, such as ranged magic attacks, cost more energy than normal attacks, and of course each move has its own energy cost. Controlling the character was a tricky design issue... since having a lot of moves to choose from doesn't go well in hand with having a limited amount of time to use them. So I came up with a double-directional system. QWEASDZXC controls movement, while TYUGHJBNM (which is another "square of keys" next to the QWERASDZXC square... check it on your keyboard and you'll unerstand...) handles special moves (which also have ranges of different shapes and scales - think things like a three blocks wide columns of fire, or a sphere of ice, etc...). To switch moves, you use the number keys (1 through 0) and you can pause the game any time to adjust the keys in any combination possible with the moves you have aquired so far). Enemies also act the same way as you do, balancing their energy to attack you in different ways, but also to escape from you or charge (since movement also costs energy, interesing situations arise when, for example, your energy bar is full and you spend it all on an almost instant burst of multiple steps).
Currently, I implemented both systems in two different branches of the project, but I have to pick one to start balancing the game and implemeting the magic system... I'm asking here, out of indecision, but also out of inexperience (since I'm not an hardcore roguelike player, much less a rougelike developer...), if you think the time-based system will work out in the end, or if a more classical, "rougelikish", turn mechanich is preferable. If you did not understand well what I'm going for (I wouldn't be surprised... english is not my language of choice
), here's a link to the game:
https://www.dropbox.com/s/qorjvw31ilbwa0g/RandomRL.rar?dl=0Of course it is only a prototype to show off the engine... so there is a single type of monster with a rudimentary AI which attacks the player only if he/she appears in its immediate vicinity, otherwise moving randomly. Also, if you die, you just stop existing and the game goes on without you... aaand there are no special moves yet, just a melee attack, which is performed by moving onto the desired target. Do not talk to the tuturial guy for more than 3 times or it will crash your game...
The game was programmed using C++, sfml and a couple more utility libraries.
Thanks a lot for your attention
EDIT: I've been playing around with the game, adding more enemy types and expanding the AI, and I actually find the real-timish mechanics sort of fun... attacks are not just bumping into monsters, but require quick thinking and some level of timing to accomplish right. So I will be continuing down this road, adding items and ranged special moves/spells next. Still, I will leave this discussion open for feedback and for inspiring other developers which may want to try something similar. I will also probably start a development log in another section of the forums soon.