Main      Site Guide    

The Making of

Murkon's Refuge


The history of Murkon's Refuge goes back as far as the late 1980s. I had long been addicted to the classic computer role-playing game Wizardry. When I wasn't playing that, I was rattling off programming projects of my own, one after another. None of them even approached the complexity of a role playing game, but by the late eighties I was narrowing the gap. Finally I decided it was time to attempt a simple CRPG myself. And so I did. In Applesoft BASIC, on my Apple IIe. I named it the fairly unimaginative title Swords and Sorcery. I got through the character creation process and some of the character-manipulation facilities required in town -- adding, removing, saving, loading, and so forth. But I hadn't even begun with the heart of the game when suddenly I started getting "?OUT OF MEMORY" errors. I had used up however much memory was allotted to BASIC programs, and that was that. It's conceivable I might have been able to divide up the code into separate BASIC programs spanned across multiple disks, but my programming skills weren't up to it at the time, and I'm certain it would not have worked cleanly in any case. So that was that.

Years passed. I went to college and learned about the wonderful things that are UNIX and C/C++. Now code could be compiled for faster execution, and memory considerations were essentially gone. Although I learned C++ my first semester there, in 1991, most of the classes I happened to take before 1995 were in C -- I rode just ahead of the wave to switch over to C++ before it finally caught up with me when I started working toward my Master's degree at the same school. So by 1993, when I resurrected the idea of writing a role-playing game, my inclination was to write it in C. (This was quite a bit before I realized how amazingly well CRPGs lend themselves to object-oriented programming, making C++ a far better choice, but it was also before I knew how to do object-oriented design, so I can't say I particularly made a mistake.) And so the Murkon's Refuge project began. I pursued it with a passion, completing the basic design of the game, the majority of the "in-town" stuff (much more detailed, complete, and clean than that old "Swords & Sorcery" attempt, too), and the beginnings of the dungeon stuff. And then, for personal reasons, I quit suddenly and didn't touch it again for two years.

I had kept the code, of course -- I keep everything I do -- and in early 1995 I was inspired to pick up the project again and finish it off. I refamiliarized myself with the code and plugged away at it. Before long, but after a great deal of work, I had a completed game. And what a thrill that was. I made it available for my friends to play, polished off a couple of bugs that slipped through, and there it was, my proudest programming achievement to date. Beyond the satisfaction of having written a CRPG was the fact that the game turned out to be addicting for me to play. I had been writing games of various kinds almost straight for the ten years prior. The satisfaction for me generally comes from writing them and having other people play them; I rarely want to play my own games because I know all the secrets and how to solve them. But Murkon's Refuge turned out to be a game I actually got addicted to playing. I played it through to completion three times in the months that followed. (The second time through, the lead character was named "Dog," which ultimately led to the odd discovery of how fun it can be to shout "DOG!" whenever Dog did something cool, or, better yet, as a complete non-sequitur.)

In December 1997, RinkWorks came along, and my then newfound and now longstanding passion. In the years to follow, new features for RinkWorks were a blend of brand new creative efforts and ports of older ones. After Adventure Games Live brought one of my other favorite games of old to the web, then Enchanted Forest doing the same for yet another, it was inevitable that the idea occurred to me to do the same for Murkon's Refuge. At first, I dismissed the idea, because I couldn't imagine how anyone would want to play a CRPG with a web page loading delay between every move. But then I started thinking about how I could make improvements on the number of page loads required, starting first by shrinking the size of the dungeon levels. Besides that, more and more people were getting faster lines, cable modems, and the like.

I always wanted to write a CRPG engine in C++ anyway, since not so very long after I finished it. By the end of 1995, I had learned about object-oriented design and realized how much cleaner and more powerful a CRPG engine written in C++ with a proper object-oriented design could be. My initial thoughts were of writing a new, more powerful engine, with a more elaborate, detailed, and flexible system of monsters and equipment. But graduate work kept me busy, and then RinkWorks kept me busier. When thoughts occurred to me to put the game on the web, the plan reverted back to porting just the game I had, and ideas about gameplay improvements were necessarily postponed. But I was concerned about the viability of a web port of the game, and in the Site Journal entry for December 17, 1998, I even came right out and said not to expect it. But the idea wouldn't go away, and the next month, during the development of the Classic Games feature for RinkWorks, I started thinking about rewriting Murkon's Refuge, from scratch, using object-oriented C++ and an eye on designing it with future expansion in mind. I posted on the RinkWorks Message Forum about it (message #1336), asking for suggestions. I completed most of the data types -- the modeling of characters, monsters, items, dungeon levels, towns, and so on -- but got stuck on the best way to tie those together with control code, the user interface, and the saving and loading of games.

Again, personal reasons made me set the project aside, this time for about a year. In February 2000, I picked it back up again and slogged through the design for the backbone pieces of the game. Finally I got things working to the point where the complex saved game mechanism worked (complex because it supports auto-saving at any point in the game, even in the middle of combat) and I could make moves in the game (just in town, by that point). The backbone turned to be less problematic than I had feared, but there was still a great volume of work ahead of me. Until that summer, I did almost nothing but work on the game. During that time, I completed work on the in-town stuff (barring bug fixes) and got so I could navigate the labyrinth.

About there, I got stuck again. The code for all the labyrinth stuff and especially combat was looming over my head as a very large, hopelessly complex design nightmare. Granted, I had written the same functionality once before, but making it work in as a CGI program that only runs during individual moves was daunting.

Ultimately, I put the project aside for another year and a half. From time to time, I would pick at it; during that year and a half I got traps working and treasure chests mostly working. But it wasn't until January 2002 that my picking managed to breach the combat problem. Once I got a round of combat to work, I was on a roll, and it was downhill from there. Again, I started working on it furiously, upwards of ten hours a day, seven days a week, until early March, and then came hours upon hours of furious testing. It was put into beta testing on March 8 and released to the public two weeks later, on March 23. The web port is almost the same game as the original, but it was renovated from the inside out. This time I'm happy with the design of the internals, too, and the reward of having it actually available for people to play is wonderful.

Back to The Making of Murkon's Refuge.