Creating Roll Playing Games
From Scratch

by Thomas Ward

Jul. 15, 2009

Like many modern game players I enjoy a well designed roll playing game complete with grand adventures, lots of magic weapons, the ability to learn and train new skills, a large game world to explore, etc. However, it never occurred to me how much time and effort goes into creating a well designed roll playing game from scratch. Most of the big name roll playing games we know of such as Dungeons and Dragons, Heroes Might and Magic, and final Fantasy have entire teams of people devoted to those projects. Therefore it should come as no surprise why they are so addictive and interesting to play. At times big name roll playing games such as Dungeons and Dragons can seam near endless when it comes to new content and adventures. Yet, what would it take to create a custom roll playing game from scratch? Well, I have discovered firsthand that creating a roll playing game from scratch is no easy matter. At first I assumed that creating my own Dungeons and Dragons style roll playing game should be fairly easy. After all, i had lots of story ideas floating around in my mind, and it should be easy enough to use them as a starting point for my custom roll playing game. Plus, I have more than ten years experience as a software developer, and I figured if I could create a FPS game engine, a side-scroller, a racing game, etc writing a roll playing game adventure system would be a piece of cake. That idea quickly was dispelled when I actually realized what was involved in creating a full fledged roll playing adventure system. First, thing I discovered as a game developer I had to create a rather comprehensive story for the game. Actually, more like several short stories held together in the context of the main story. I had to put considerable thought into the who, what, when, where, why, and how aspects to draft the main story. Like any good story it requires supporting people, places, and things of interest. That ends up being a very large task in and of itself. The next step was to convert the game's story and adventures into a paper and pen game book. This was easy enough to do. Rather than create custom rules, character classes, etc I decided to just go ahead and borrow the official Dungeons and Dragons character classes, rules, spells, etc. This saved a considerable amount of time and energy since the Dungeons and Dragons rules are widely used by similar roll playing games anyway. Finally, I was ready for the hard part. Converting the paper and pen game into some kind of computer game. As I mentioned above at first I thought this would be fairly straightforward and easy. As it turned out I grossly under estimated the complexity involved in creating a fairly in depth roll playing game. A roll playing game such as Sryth certainly is no small feet for a single developer. The first decision was weather or not to create the game as an internet based game or as a stand alone game. Both options have their own advantages and disadvantages. A lot depends on weather the developer intends the game to support player verses player style game play, wishes to use a central game server, store items and stats in a database, use Sapi support, etc. With a stand alone game it is certainly much easier to add sound effects, background music, Sapi speech support, and other such features to the game. Not to mention as a stand alone game it would not require a constant high speed internet connection to play. However, by the same token that would exclude features such as online adventure parties and player verses player style game play which are quite popular in current online roll playing games. If I decided to build an internet based roll playing game I would then have to decide between a web based game book style adventure such as Sryth, or design the game as a mud. Given the two options a web based game book style adventure would certainly seam more preferable as it would be more user friendly. All of the options or choices could be standard buttons, links, and would be easier to design using perl or php. While I believe I could create a mud server from scratch it seams as though it would be a lot more work, and I've never especially liked typing long commands into mud style games anyway. Therefore I decided it definitely wouldn't be a mud. The next thing I had to do was decide on a programming language. Since I wasn't overly concerned with multiplayer online style game play I chose to create a rough draft of my ideas in C++. I used SDL for sound and input support, and use Sapi for speaking menus, reading the adventure introductions, etc. As it turned out again I grossly underestimated what I needed to create a game world of any size. My first problem was finding enough sounds to make the game sound realistic. I needed sounds for swords, spears, daggers, knives, bow and arrows, and various other weapons. Then, there were the sounds for each enemy creature I planned in using in the game such as goblins, orcs, skeletons, zombies, dragons, etc. Basically, I needed more sounds than I could afford or find on the internet for free. If I were to actually pay for all of the sounds I wanted or needed to use it could get extremely expensive. The second major issue I encountered was a logistical one. Almost immediately after starting to convert my roll playing game to C++ I realized I needed a realistic way to manage hundreds of pieces of weapons, armor, and various other items found throughout the game world as well as track the stats for each. That isn't exactly something that can be done manually. If I took all of the time to code each piece of weapon or armor into the game itself it would take months to complete. There are certainly easier ways to do it. Ordinarily, the way a programmer would handle this sort of logistical problem is by storing all of the game's items in a database. I could create a new table in the database for each store in the game listing all of the items with their prices, stats, and quality. Then, have the game query the database for that information as needed. However, most people don't own and use databases such as MySQL, MS SQL, Postgresql, Oracle, etc. So given the likelihood such software isn't even installed on the end users computer that would require them to install that before even using the game. The alternative method is to create what is called a flat database. Basically, it is a text file containing items separated by commas. While this method would work it is, in a sense, rather crude. It lacks the ease and power of using a real database system such as MySQL. Therefore I didn't feel it was a practical solution either. It soon became clear to me that there was a definite advantage in creating an internet based game rather than a stand alone game for this reason. With a commercial web account, such as mine, I have full access to an online MySQL database. All I would need to do is use a php script to access the MySQL database. Plus, if the game were online the end user's would never have to download and install dependencies for the game to run. All they would need is a web browser to play.
The third issue I encountered was in designing the user interface.
In a web based game like Sryth the game screen is divided into three sections. One displays the action, the second displays the player's stats, and the third contains a table of buttons to click on. However, since I wasn't using a web page to display my game user interface I had to perform the same thing by using hot keys, menus, and presenting the information to the user via Sapi. As it turned out this was a serious pain to do. it wasn't so much difficult as extremely time consuming. If I had 10,000 game screens I'd have to program keyboard input, text messages, etc for all 10,000 game screens. With a web interface such as Sryth the task is much easier by far since all of the interaction with the game is performed through a web browser. With all of this in mind I decided to put my ideas to the test. I installed MySQL on my Linux PC, configured Apache web server, and wrote a test application in php. Then, I created a simple MySQL database to keep track of stats, items, and various other things. As it turned out the test was a success. I was able to enter a shop and buy, sell, and trade weapons and armor with relative ease. On a larger scale it would be very simple to expand upon the entire store idea by simply adding more items to the database and have the php script list them. The user interface problem was solved since I only had to write the text messages in a script and I didn't have to worry about presenting the same text via speech, all input was handled by the web browser itself, and of course I could show both the store and the items in my inventory at the same time on the screen. In addition, since php is designed to be extremely modular it would make expanding and building upon a game much easier. Instead of having to add hundreds of new functions to a traditional C++ application, recompiling it, redistributing it, etc none of that is necessary with a game written in php. With a game written in php all the developer would really have to do is create new php scripts and link them to the main game. This is obviously a much easier solution than the alternative. Finally, there is the issue of supporting operating systems besides Windows. With traditional C++, Java, and .NET applications there is always the issue of trying to develop a game using common libraries between Linux, Windows, and Mac. That is certainly something easier said than done. With a web based game, written in php, that problem is mute. If you have a web browser like Safari, Firefox, or Internet Explorer you can play regardless of what operating system you might be using at the time. Which is another plus for web based gaming. IN the end based on my research I have discovered designing a custom roll playing adventure system along the lines of Dungeons and Dragons, Sryth, etc is very challenging. In my opinion the only realistic way to do it is to create an online web interface written in php, use a MySQL database for tracking stats and items, and you can take advantage of html to present your game's story with a high degree of professional presentation. Not only will your roll playing game be accessible to sighted and blind game players alike it will be fully multiplatform as well. It is easier to maintain, and its online nature allows you to create either a single player or multiplayer style roll playing game environment. It is even possible to stream midi music in the background if you wish to supply background music in your own custom roll playing games. This is what I believe is what it takes to create a custom roll playing game from scratch.

Gamers mailing list __
If you want to leave the list, send E-mail to
You can make changes or update your subscription via the web, at
All messages are archived and can be searched and read at
If you have any questions or concerns regarding the management of the list,
please send E-mail to

Reply via email to