by Cornelis Robat
(read note 1 first)
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.
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:
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.
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
It can be played via the internet/cable, point to point via a local network,
or stand alone.
point and shoot
real world economics
gamers profiles:: merciless, ruthless, cheating, forgiving humane
An aspect can take any role when starting and change roles while in the game, can have multi roles.
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.
|Last Updated on July 13, 2004||For suggestions please mail the editors|
Footnotes & References
|1||This text is not intended to replace any textbook or reader on your college but aims to give you, or anyone else, in very large steps some insight on how software is created. Therefor this story will have some lapses and white spots. But in all it tells the story of creating software for any one to understand.|
La 13 July, 2004