Go Back

3. Stages of program development

by Cornelis Robat

(read note 1 first)

Related Articles

Program Development

Introduction to software history part 1

Related Resources




Do you want to create a game?

A game that will smash the world's gamers with awes and oh's. And you expect to get rich quick and never have to work for your boss again. Right?


Well, OK, one in a million will strike the gold all right.

But most of us will have to keep on going, tapping the keys, eating pizza's at late hours, striking the tablets and writing scenarios. But don't underestimate the effort in writing software, there is no doubt, programming is a craft (1) only to be learned by practice, hard working and working long long days. And while doing that with all your hearts content a day will come that your boss will tell you to quit programming and do something else.
However programming is the finest craft to be learned, trust me. It is the highest intellectual challenge a professional could experience. Since there is virtually no limit to one's creativeness but the limitations of your fantasy. There is no limit than the dungeon of your mind.

OK, I got carried away a bit.



Not until long ago, to create a game you had to be a programmer and by having some knowledge about the most common video cards it would do fine and knowing a bit of programming was convenient. Mostly it was the idea that sold your game.

Temptation was in writing a game that had no jaggy movements, changed scenarios fast enough so the player did not have to get a coke, lurk it and return at his leisure to the console and waited a bit more.

If the story (Leisure Suit Lary) was attractive and the game was not solved too quickly, or if the shooter did not die too quickly it was OK. Colors in the very beginning of games was not an issue. But the scene was changing rapidly. For starters it were the office applications (word processor, spreadsheet, database and presentation software) that drove the color hunger, storage capacity, and printing power. Only when games became more complicated, needing faster colors, more storage the torch was passed to the gaming industry to push for faster machines and more advanced graphic and sound interfaces (cards) But being a simple (smart) programmer was no longer sufficient. From the 1990's and on games did not only became much more complicated though. To display nice graphics and realistic sound one needed again a more powerful computer. Faster memory, processors and larger harddisks.


But lets go!

As said, creating and producing software is no longer a single person's task.

And when at least a game has to be interesting and tantalizing, or better, addictive to the players, one needs extensive knowledge of graphics, networks, game theories and level designing, storytelling, animation and who knows what other professional skills that are needed to create a modern game.

In short: one single programmer can not do the job on its own anymore.

So to illustrate the above lets create a project.

And for the sake of the length of this article let's confine our selves to the creation of the software alone and cut some corners too in the process.

Before we start out. Something you have to keep in mind while designing software is the Life Cycle of Software. Let's have a look at what stages the software goes through during its lifetime.




In the above figure you see: Analisys, Design, and Creation.

Before you do anything else all information about the possible working of the software and its place in the organisation or use by your clientele should be analysed and written up in a report: Information Analysis. In this essay we go from a new situatiion: there exists nothing, no organisation nor an old programme that needs to be changed. But magine that in an existing situation things can get quite complicated like a big jigsaw puzzle in several dimensions: up, down, back, front, multi layered. Politics, economic interests, personal feudes and petty projects can also play a role in this proces.

Design can be split in two parts: functional and technical. A functional design tells you which functions should be in the software and Technical tells the programmer what to do, how it should look like etc. And before that you should again analyse the needs of the user and translate that in working functionality of the program.

Decisions about what environment to create the program in is often made before the whole proces of analysis takes place. For example your company creates software in COBOL, Delphi, Java, or C++ and the environments that come with it (RAD or anything else that let you create software) But ideally the environment is chosen after the analysis is done.


Now let's set up shop

You are the new projectleader of Tellmewhatagameyouwant.com

And you start hiring a person who can talk to your customer: Selladarngoodgame.com.

Let's call this person an: Information Analyst, she is Pixie.

And you tell her that your customer Selladarngoodgame.com wants a game and you want Pixie to talk to them. So Pixie flies to a sunny place and starts talking to our customer.

What Pixie is going to do is called: Information Analysis

Meaning to define the functionality/working and the place in the organization of the program. And Pixie does this by interviewing future users, commercial and financial people, heads of departments and their analysts and other experts. In case you would be the enduser this part of the job would be finished in a few days otherwise it can take quite a long time, also depending on a lot of other factors. When the inventory of whishes and functionality is ready and arranged in a logical order then you're ready for the next step.

Pixie flies home and delivers her report, and of course everone is stinking jealous seeing Pixies golden tan.

This is what is in Pixies' back to office report:


Information Analysis


The name of the game is not known at the time of writing this analysis, but the working name will be "The Globe"

The Globe will have a high contents of real world trading combined with social and political elements that will, in a certain way, mirror the real world's events. The information (the feed) for that is retrieved from the internet via specific info-robots that harvest information to be analyzed by (a kind of) datawarehousing mechanisms. The game will have no limits in players or servers it can run on. Anyone that can run a server can place a license of this game on its machine. The Globe will seek automatically other copies of itself and interact with it. Other copies will be regarded as separate universes.

The goal of the game is to become master of the world or become one of the highest ranking players in credits and power to be able to build one's own world.
Since the game will combine a multi role and multilevel immitation of the real world the ranking of a player will be expressed in lifetime, a combination of credits, power units and absolute lifetime.

Each player will have a limited liftime that will be influenced by its credits and power units. A gamer will die in the game eventually. If it is lucky (re: rich) of old age.

By enough killing and cheating a gamer will gain credits and power faster but a gamer does not neccesarely have to do so to survive. Dodging professional murderers is also a way to survive.

So far nothing new

A gamer can establish a dynasty or clan to ensure its eternity (each kid cost credits and power), when it dies the player's assets (power and credits) are inherited by its next of kin, otherwise it turns back into the game master's treasure chest (void) But a gamer can make up a will to decide what money goes where (ally, gaming friend etc.)

A clan or dynasty can be created by merging with other players, marriage, or just simply buy new life's and thus gamers to play with.

From this, one can conclude that by entering the game one is born into the game. The gaming engine will decide in what role you are born. And by luck in which clan you are born, a gamers is not born by default into a clan. But each new sibling will get a standard amount of life, credits and power. Enough to get started in the game.

However the gaming engine tries to keep a certain balance in power to keep it attractive: disaster events like wars, typhoons, hunger, strikes, invasion of other universes or worlds etc. can wipe out entire clans or people.


Functional Analysis

There are 5 basic roles, but any role can be defined by the players

The game must be able to be played via the internet, local networks or stand alone. Via the so called info robots the information is fed into the gaming engine.

Processing of data will be done in multi engine level. When a player is on the net his CPU will also be used when gaming is idle

The second phase is the actual design of the program. That is to say creating a data model, screen layouts, logic and program flow of different business processes. This expresses itself in Bachman diagrams, sometimes Nassi Schneider diagrams and other techniques to make visible what will be going on inside the prgram


Technical analysis


It can be played via the internet/cable, point to point via a local network, or stand alone.



point and shoot
players: unlimited
real world economics
gamers profiles:: merciless, ruthless, cheating, forgiving humane
roles: unlimited

An aspect can take any role when starting and change roles while in the game, can have multi roles.

- datastructure

- infrastructure

The game itself will be run from a central play engine via the internet, local networks that have connection to the internet and on stand alone machines that also have possibilities to connect with the internet.

During and as a result of all these conversations and interviews Pixie tries to identify how the information flow takes place within the program, what data are important and how these data will be input and/or output.

Pixies job is now done, you fire her and a new star is born: Djeepeg, a functional analist

Djeepeg is awarded a large and cool office and start writing his Functional Analysis and design. This is what it looks like.

The next stage is to create the program by coding it. This can be done by simple typing in the code with a word processor often called editor. Editors can be very simple like Multi Edit to very complex like Word. As long as it generates native ASCII.

There are also special programs that combine editing, translating properties into code at the same time checking on syntax and make executables in one single environment. These environments are often characterized as RAD (Rapid Application Development)

The code, called source code, is written in some kind of undecipherable mixture of words and numbers for laymen at least. This is how a programming language often looks like to outsiders.

The next stage is by having the source code worked over by another program:

a) by an interpreter

b) by a compiler

Both programs translate the source code in a language a computer can 'understand'

The fifth stage is by using a linker wether or not in combination with an optimizer (see compilers) that puts all objects in the right order and link the whole thing into an executable program (somthing that can run on a computer. An excutable is sometimes called a binary. An executable can run by itself without any other supporting software and can be used over and over again.

Note: an interpreter goes through the works of compiling and optimizing over and over again each time the source is loaded into the machines memory, contrary to a compiler. This is also the reason why a program that runs through a interpreter is usually slower than an executable made by a compiler.

Like this we make programs that can run on computers. Mind you computer programs made for PC's can not run on a mainframe, thus the compiled program can only run on the machine for which it is compiled.







Go Backback to software index Last Updated on July 13, 2004 For suggestions  please mail the editors 


Footnotes & References




La 13 July, 2004