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 __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gam...@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.