Each summer the r/roguelikedev community on Reddit has a summer event[1] in which we all make a simple roguelike game, roughly following the libtcod roguelike tutorial. I previously participated in 2020, 2021, 2022, 2023.
Each year I want to learn new things by trying something different, but I also have a problem with scope creep[2] where I try to do too much. This year I limited myself to these three goals:
- Use table/spreadsheet data structures instead of OOP or ECS. I wanted this for my 2023 project[3], and want to use that structure everywhere this year, including indexes, spreadsheet formulas, queries, and editing the spreadsheet to see the changes in the game.
- Embrace Javascript instead of holding one’s nose using it. This includes prototype inheritance, dynamic types (but with jsdoc sometimes), dynamic field access, no-build setup, async/await, eval(), and the with statement.
- Learn the Jujutsu version control system[4] as an alternative to Git. This is in part because I think it’s interesting, but in part because it lets me have a “two dimensional” history, with one dimension being time and one dimension being the chapters of the roguelike tutorial.
To keep my scope under control, I also made a list of things I did not want to learn:
- Stick to the features in the tutorial (unlike 2021–2023 where I tried things like thin walls, learning a new programming language, a new field of view algorithm, stackable inventory items, friendly NPCs, farming, hunger system, and even a full colony simulator like Dwarf Fortress).
- Use a language and library I already know: Javascript and ROT.js[5]. I love making my own engine but that is a distraction.
- Write the UI in HTML instead of making my own in the console. I did this in previous years and it went well.
It went well. Try the finished result. Feel free to edit the spreadsheet.
Notes about each part of the tutorial: