Different Time Systems

Hello everyone,
I attended IRDC last weekend. There was a talk by Brett Gildersleeve (the developer of Rogue Space Marine and Helix). The talk is called Real Time Synchronous Turn Systems in Roguelikes. It’s about analyzing the current turn base systems in Roguelike and comparing it to his game Rogue Space Marine. This talk inspired me to write about different systems and which games use which. His talk was astonishing but missing lots of ideas that can be done (It just covered the classic stuff). Here is the ideas about the systems:


Asynchronous Turn Based System: The player plays and after it finished each enemy play its turn. This is the most classic technique used in lots of games (NetHack, Moria, Dungeon Dashers, and …etc).

Synchronous Turn Based System: The player plays at the same time of the enemy. The system resolve the collision by some precedence. Some games adds a speed parameter to have different enemies. Every enemy or npc move related to the player so if he is slower this means he might take more than 1 turn to move but if he is faster than the player he might be moving two tiles with every one player move. For example Cardinal Quest and Super-W-Hack!.

Real Time System: Everything runs at each frame. Everything is continuous and running smooth. The collision happens at each frame. For example Nuclear Throne, The Binding of Isaac, Spelunky, and …etc.

Real Time Synchronous System: This is the system he was talking about in his game. The player move in tile based and when he is moving everything else work in real time (enemy bullets can be avoided). For example Rogue Space Marine.

Bullet Time System: The game move in real time till enemies come near then the game goes in bullet time. Right now there is no roguelike use this system but it would be amazing if some one used it. The current game used it is SuperHot.

Physics Based Turn System: The player move with a speed and the turn ends when the physics stops simulation. For example Billiard Dungeon.

Real Time Pause System: Everything runs in real time and if the player didn’t move nothing move. For example The Spooky Cave.

Real Time Rhythm System: Everything moves on a rhythm if the player didn’t move enemies will move. Missing the rhythm make enemies move while player is still at same location. For example Crypt of the Necrodancer.

Real Time Slot Pause System: The game is totally paused where the player can make all his decisions then the game turns into real time for a fixed time slot. The only game that used that is not a roguelike but it would be cool in a Roguelike. The only game is The Random Encounter.

Time Accumulation Synchronous System: The game saves the amount of time the user not doing his turn and when he plays it repeat the action for the this amount of time. It seems weird and complicated but we might make maximum of the saved time. Its not done before and I would love to try doing it at one day. But if this system is used to penaltize the player it might be similar to Real Time Rhythm System (when not doing anything the game penaltize the player by moving the enemies).

These are all the systems I can think of that can be used in roguelike games. I think I need to organize it and make like 2D matrix for the different parameter that can be mixed.

Bye Bye


IRDC NYC 2016 – Day 1

Hello everyone,
I went to the International Roguelike Developer Conference (IRDC 2016). It was fun, you can watch it on twitch and they are gonna stream tomorrow (link).

Here is the recap on the talks:

Markov Text Generation:
Caves of Quds text/books/tomes/realms/lore are generated using Markov Chain models. They use Markov Chain models to generate paragraphs (3 to 6 sentences) and books (4 to 8 paragraphs). Some other people do two direction Markov Chain instead of one direction Markov Chain. For book titles they used a template filling like Tracery but this technique is kinda limited so they replaced it by a generated sentence from Markov Chain models with limited length then shove off the unwanted words from the beginning and the end of the sentence. For hidden secrets in the book, he generate all the secrets first then he add them to the Markov Chain model. Also he told to check (The Annals of the Parrigues) by Emily Short.

Writing Better Code:
It was about tricks and hints to write better readable code. For example, use code review, read a book (Writing Solid Code by Steve Maguire), read other people code, and …etc. Examples for stuff that make the code better is always make the write the constant on the left of the condition, comment beside any else to understand which “if-condition” its related to it, unroll big long “if-condition” statement to multiple short ones, and …etc.

Applications of Dijkstra Maps in Roguelikes:
This talk is about using Dijkstra Maps instead of A* algorithm. A* algorithm (check A* Pathfinding video by Sebastian Lague) is widely used, easy to implement, call on demand, and efficient when points are close but you need to recalculate the path when something changes and its expensive when used by tons of NPCs. Dijkstra is done over the whole map and can be used by all actors but its more expensive than A* and there is no off the shelf implementations. Dijkstra produces a map of numbers where each number equal to the number of steps to reach the goal. In order to find the path just move from the npc location towards the goal in the direction of decreasing number till reaching the goal. Dijkstra can be used for autoexploring, procedural generation for rivers, optimal range for ranged enemies, find the path towards the mouse location, and …etc.

He is the creator of Barony game. Now he is working on Space Punk which an open world metroidvania where the Enemy AI is the challenge. Also he used Chai script language to allow modding.

Procedural Dialect Generation:
That was super interesting talk about a game called Ultima Ratio Regum. The game generate history for NPCs, religions, names, dialects. You have to try it if you are into exploring stories and understanding different cultures.

Quick Talks:
The day ends by couple of very fast talks from the audience themselves talking about different stuff for example using BFXR, Queneau Assembly instead of Markov Chains to generate text, and Procedural Rap Generator.

Tomorrow I will write a wrap up on the whole day too.

Bye Bye