Introductions

Introductions

Before we begin it is probably appropriate that I introduce myself. I go by Scott, and I am not sure what relevant background to include here, so I will just say that I have been a hobby programmer for most of my life.

My first interactions with programming and computers was early and in the 8-bit days. Some of my very first memories are standing in our living room and looking up longingly at the Wizardry game boxes lined up neatly on the top shelf of my father’s bookshelf. I wanted so badly to learn to read so that I could play them, and I did. Not long after that I was poking at Logo, then Applesoft Basic, and eventually c/c++. Despite earning a BSEE, I have only fleetingly worked as a programmer, choosing to go directly back to school and earn a nursing degree. In the long run, it worked out well, because I was able to retain my passion for programming and work a job that allowed me to express empathy in a much more straightforward way1.

Just look at these boxes. They are beautiful

Wizardry: Proving Grounds of the Mad Overlord (1981) Wizardry II: The Knight of Diamonds (1982) Wizardry III: Legacy of Llylgamyn (1983)

It took a combination of drugs, therapy, several decades, and friendly interventions before I was finally able to start my first large solo project, but here I am. In the process of finding example code to look at for said project, I stumbled upon the Angband github page. I have a long history with the game, originally discovering it via a link to zangband on an EverQuest forum. I had previously played Nethack and ADOM and loved both of them, but Moria had slipped my radar. Zangband almost instantly lulled me into a several year long addiction. Angband, is in my humble opinion, the quintessential dungeon crawler.

I ended up spending several evenings poring over the source trying to re-familiarize myself with c. I had been thinking about starting some type of journal, toying with the idea of a dev blog, when the idea to write about my experience exploring the Angband source hit me. That is what I will be doing here. It serves to give me reason to write and helps expand my understanding of game architecture and procedural generation techniques. I will also occasionally share updates from my own projects.

The plan

I will be starting with main.c and the ‘play_game()’ function before working my way though the player structure, monsters, AI behaviors, dungeon generation, items, the magic system, and eventually I hope to trace single actions throughout the source in order to really understand the how.

So, if the idea of Angband, An Exploration of the Source Code sounds interesting to you, stick around. Until then, take care of yourself.


  1. I want to be clear that I am not implying that tech minded people are not empathetic, it is just a difficult field in which to express that empathy. ↩︎

Built with Hugo
Theme Stack designed by Jimmy