Going down a roguelike rabbit-hole
I fondly remember being introduced to roguelike games when I was in college. Several people in my friend group played UMoria and I really remember enjoying how little I knew about what was happening. I wasn’t a big fan of LoTR (I know, blasphemy) but Moria was a neat jumping off point.
Lately, I’ve wanted to look into how rougelikes are built, and because of that I’ve started looking into some resources online. Though I’m not a fan of reddit in general, I have found the rougelike development subreddit to be a great place to start.
I found a ton of tutorials and articles there and decided to start putting a few things together. My
first attempt at this was rrogue which was supposed to be a low-effort
demonstrator for myself on how I could use go
and ebitengine.
Using a game engine like ebitengine is much more “modern” than using curses
directly and I quickly found
myself going off the rails and adding things like ecs
and messaging. It became pretty obvious that I would
never be able to finish if I didn’t reign the scope in. So, I’ve put it on pause and decided to look at the
popular python tutorials for roguelikes at roguelikedev. And most of them
are indeed excellent.
However, many of them focused on building on top of an excellent purpose-built roguelike toolkit built in python.
And while I was able to get through the tutorials, I felt like I was missing the ‘struggle’ and learning
experience that comes with building software from scratch. So, I’ve decided to start from a more basic approach
and attempt to build something with as few external dependencies as manageable. This means I’ll be using curses
and either python
or go
to build a classic text-based roguelike.
There was one glaring problem with this approach, I didn’t know anything about curses
. So, I hit
the python curses tutorial as a guide and tried to document my
learnings. The result so far is cursesrogueui. This is a guide I
build with code to help me learn to build a rougelike curses UI in python. I’ll be adding to it as I go along.
The next steps will be to start building the roguelike itself. I’ll encoporate what I’ve learned at this point and try to keep documenting things as I go.