Not HeroQuest



‘Not HeroQuest’ is a rough approximation of the 1989 Milton Bradley and Games Workshop board game, HeroQuest. This project is part of an effort to teach myself to create a game from the ground up. While NHQ is built in Unity, I’ve eschewed using the engine’s built-in objects and physics system in order to build my own in C#. The presentation lacks graphics and sounds so that I can focus entirely on coding a pre-existing game design.

Why De-Make HeroQuest?

For me, HeroQuest was my first foray in to tabletop role playing. Persistent characters, a dungeon master, and a connected narrative were concepts foreign to me until I played this game. So, in a word, nostalgia.

More importantly, HeroQuest lends itself to being easily represented in code. Its turn-based systems mean I don’t have to worry about managing a demanding game loop. It features grid-based movement and dice rolls, which are both easy to program, even for a novice. Finally, I didn’t design its systems, so I’m not concerned with gameplay balance or creating content. It’s already there.

Programming the Damn Thing

I’m a writer by trade, but I’ve been dabbling with C and C++ since I was eleven. It always seemed beneath me to learn something like Game Maker’s GML or JavaScript to build a game. But without understanding and applying fundamentals like linked lists, BSP trees, and external libraries, I was never able to escape reading “Learn C in 24 Hours” over and over and fruitlessly writing pointless command line applications.

In 2014 I bought Game Maker Studio and committed myself to learning fundamentals like basic game loops and file I/O operations. A number of prototypes followed. Eventually, I weaned myself off the game’s GUI editor and coded everything in their language. Surprisingly, I learned a lot about 3D graphics during this time, including transforms, dynamic mesh generation, shaders, and UV coordinates. It was at times painful and slow going, but using Game Maker’s rudimentary 3D functions proved revelatory for me.

Early 2016 saw me return to C++ and the Irrlicht graphics library. I was happy that most of what I learned carried over, but I was still far from competent with the language. I focused solely on one prototype, implementing billboard sprites, specular lighting, and a dynamic level mesh generator. While I was happy to program in a “big boy” language again, I wasn’t really learning how to build and manage a structure for an entire game. So, I turned to Unity.

I was wary of tying up my project in Unity, but the benefits of platform independence, OS compatibility, and easy asset management sold me. Continuing my strategy with Game Maker, I placed a single object in my Unity project and coded the rest.

Educational Resources

I relied on a lot of free online resources. Here are the ones I highly recommend to anyone pursuing game development: