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.
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.
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.