toy roguelike project
godot videogame roguelike

Files
README.md

README #

GDRL is a toy roguelike project built in Godot. The goal of the project is

  • A Resource-driven logical layer, providing simple save, load & undo
    • Right now I just serialize the resource hierarchy to save. Smart cookies could serialize to JSON if they were worried about the usual problems with loading resources.
    • I deep copy the entire state before taking a turn. this is how Undo currently works.
  • A flexible view layer
    • each action has an action view. actions are performed in the logic layer, then each tick hands its action list to the view. for each action with an action view, we load the view and trigger it.
    • the binding between an action and its view is held in a resource, allowing, eventually, entities or environemnts to override the view of specific actions, if desired.
  • A framework that allows expressive content creation with minimal friction
    • Schemas define how an object gets made
      • map schemas are a big list of "generator steps" that act on a shared black board dictionary.
        • the map schema also has a list of parsing layers that define how those BB entries get turned into the Map object used at runtime.
      • entity schemas define different entity data (not much of this yet)
  • eventually, a small finished game

TODO #

  • Combat
    • how do we create a combat system that aims to be data driven, but is also malleable enough to be largely replaced wholesale if needed?
    • the work here is largely throwaway on a per-project basis: just need to create an ideal implementation of the skeleton of standard roguelike combat.
    • A Combat System exists at the game level. this hooks in as needed and allows the gameplay loop, ui, etc to access the system. How these intertwine is largely dependent on the project and code-driven.
    • Entities can contain Components, objects that provided specific functionality. These modules expose a specific API to be manipulated by Systems - and only systems.
  • Items & Inventory
    • Items are entities
    • Inventory is a system
    • Component solution for various uses
  • Flesh out how we define which enemies, items spawn on which maps.
  • make example game

How Its Made #

I'm building GDRL slowly, in a meandering way. I work full time and this something of a digital bonsai tree for me to sit with when time avails. I'm not sure if I'll make a demo game or just keep stacking systems up forever. I do know some things for sure though:

  • Even alone, I like working in feature branches
  • I don't use test-driven development (yet)
  • no AI

Changelog #

  • October 2026 (so far): FOV first steps. action binding rework. nuke the old test ui, primarily use the Runner scene for iteration. Introduced entity schemas and map schemas. there's a map testing scene called map Drawer you can use to peek at map generation results layer by layer. simple Mystery-dungeon style map generation, as well as a backtrack maze.
  • September 2026: Updates to the game's serialized version. committing to keeping cell resources shared until modified. Options save split off from game save. Implemented View Layer. Starting to work out "Schemas" for authoring design data.Added KDLog, as singleton named RLog. Added Util for simplifying verbose/repetitive calls. Implement awaited_set for awaiting a set of tasks.
  • August 2026: The initial Resource-driven logical layer is mostly complete, though barebones. you can simulate a very simple world and there are examples of Map Generation, Entities, Actions, Action Generators and a simple test scene to see how it all comes together. if for some reason you are here, you can check out test_ui.gd for a very simple gameloop or peak at world_state.gd for the data representation.

Attribution #

using Dungeon Crawl Stone Soup assets from http://opengameart.org/content/dungeon-crawl-32x32-tiles-supplemental