DCJame 2022

Here’s a quick summary of my experience programming “Strange Slime Sewers” for the 2022 dungeoncrawlers.org jam.

Tools Used

  • DragonRuby for the Game Engine
  • GIMP for image work.
  • Kate text editor, a terminal, and Fedora 35 linux for the development environment.


I started weeks ago by gathering screenshots, making a timeline, and outlining the manuals of the greats. Wizardry 6 (1990), EOTB 1 and 2 (1991), Might and Magiv IV (1992), Ultima Underworld (1992), Wizardry 8 (2001). I also explored some of the newer entries, just looking at screenshots to jog the memory on Legend of Grimrock, and discovering some games I didn’t know existed like the crawlers on Nintendo 3DS.  

I then just took the gif on the jam homepage, the first level in Eye of the Beholder, and traced the perspective lines. I then generated a flat wall texture and built up a large gimp file with a different layer for each wall section. I should point out that zooperdan has “AtlasMaker” that will generate a lot of files for you: https://github.com/zooperdan/AtlasMaker-for-2D-Dungeon-Crawlers

I hope to use his tool next time, or to write my own tool!

Outlining a map

SSS loads a map.txt file into memory and then rotates it like a sheet of paper when you hit Q or E so that your field of view is always ‘up’.
I had originally designed a bigger map with treasures and different monsters, but had to remove those to make the deadline.

I was having trouble implementing a counter-clockwise “Q” rotation, so to save time I just re-used my clockwise function.

def rotate_map_counter_clockwise(m)
    return rotate_map_clockwise(rotate_map_clockwise(rotate_map_clockwise(m)))

Each frame, at DragonRuby’s set 60 FPS, I grab the potentially visible chunk of the map. The potentially visible section of the map is then used to render walls and monsters.

I found this description and diagram very helpful – and I didn’t find it until about halfway through the Jam.

  ¯ ¯ ¯ ¯ ¯
    ¯ ¯ ¯
    ¯ ¯ ¯
^ in the picture is the party position, facing north.
| and - in the above picture resembled walls. There are a total of 25 different wall positions. To render all the walls correctly 17 maze positions must be read (A-Q).

UI and Gameplay

After I had the dungeon walls and monsters rendering, I would take a screenshot of the current game state, scour the internet for game art, and then try laying it out in GIMP before loading it into the game.

I wasn’t set on turn-based, real-time, or something else going into the jam. I just iterated over what I thought I could do quickly, and what art I could find that would work.

I think the jam’s guidelines, that it has to have grid-based movement, that it had to have ways to affect player(s) stats, that it had to have a win and lose state, really helped guide me and create something that met these minimums.

Future Work

I think it would be great to:

  •  setup some better tooling to ease the creation of dungeons,
  • create outside areas,
  • an optional mini-map,
  • inventory items,
  • dungeon interactions with doors, buttons, and puzzles,
  • movable or removable walls,
  • spells,
  • ranged attacks,
  • monsters that chase you,
  • sound effects for actions,
  • story dialog, and
  • character creation or at least party composition.

Other thoughts

I’ve been wanting to create a game like Eye of the Beholder for a while. I am really grateful that this jam exists; the deadline and constraints are what helped me actually make something.

During the jam, I realized that the first-person-view dungeon crawlers are an evolution of the rogue-like game genre. Maybe this was obvious if you think about it, but creating a map and having an avatar “a” like the traditional “@” made the connection for me.

Assets used

Get Strange Slime Sewers

Leave a comment

Log in with itch.io to leave a comment.