Zack Verham's Little Slice of the Internet


A Roguelike in Go

April 27, 2022 -

3 min read

Some friends and I have started tinkering with building a Roguelike in Go - mostly for the fun of it, but at least partially to get some practice writing and thinking about problems in Go.

Fight cultists and bats in your browser here!

We used this devlog as a starting point, but have mostly gone our own way outside of some initial architectural setup and the recommendation to use Ebiten as a game engine. Ebiten in particular is very cool because it can compile to wasm which means we can embed the game in a webpage. Kenney provides fantastic free game assets that we’re using for the tileset.

We have Netlify setup to re-deploy the project whenever a commit gets pushed to main, so you should hypothetically be able to see the current build of our silly little hobby project here if you’re curious. No idea how long that link will stay alive - hopefully for awhile.

Currently we have implemented:

  • Random dungeon generation (currently generating rooms using a binary-space-partitioning, but we also have an algorithm that will generate caves using cellular automata)
  • Line-of-sight and some very rudimentary lighting systems (you’ll see lit candelabras at the end of long hallways)
  • Bats that move randomly!
  • Cultists that will chase you if you alert them (very naively - ideally their pathfinding would use A* but for now its very simple)
  • Loot
  • Combat whenever actors move into the same tile space which is based on RPG-esque stats
  • Inventory / loot
  • A fun random Lovecraftian deity gets randomly generated as the curator of the dungeon (this mechanically does nothing but adds some fun flavor)

Up next to implement:

  • UI improvments around inventory management
  • Loot that actually does things
  • Efficiency improvements - there’s a noticeable deprecation in snappiness in the webassembly build, not sure why that is yet.
  • More enemies!
  • More loot!
  • More room types!
  • More flavor text!
  • Some type of actual game loop - currently the win/lose conditions are very simple, so the question is: what is the point of the game?

    • A full dungeon crawl with multi-floored dungeons?
    • Perhaps a quick game loop where you go in, try to do something in the single screened dungeon (stop a ritual? eliminate all the enemies? find some essential treasure?) then come back out to some type of “shop” screen to spend your loot before entering a slightly harder dungeon?
    • An overworld with multiple dungeons?
  • More theme - I think this would be cool if it was as Lovecraftian as possible - maybe set in the 20s / 30s? Or maybe medieval Lovecraft? Who knows!

I’ll maybe try to keep posting about this little hobby project as more stuff happens with it (if more stuff happens with it) - but for now its very fun to tinker with. We’re having a good time with it.

“In his house at R’lyeh dead Cthulhu waits dreaming…”