Ideas are the starting point of any program - game or not. Some ideas are more original than others - Doom clone anyone?
Originality is great, but you need a good game. Despite the latest in modern gaming I had to offer, my flatmates most popular game was DX-Ball, an arkanoid clone. (They were playing DX-Ball because they were bored with freecell!)
I may seem to be arguing with myself in the two previous paragraphs, but this is merely friendly discussion. I propose that originality of the individual idea is not required as long as you think you can implement that idea better than those before you have.
So what I am saying is;
- Intermediate, beginner level programmers should come up with an original idea to be successful - people don't want clones that aren't as good as the real thing.
- Expert programmers can afford to release Slamm III and Slapshot 98, just a bit more advanced than last years version for a proven market.
What Are Ideas Anyhow?
Well don't worry this is not a metaphysical discussion - here is David's definition of ideas;
"what you think you're going to do - before you do it."
Ideas form the blueprint for your game. These ideas may include plot or character sketches, action moves, diagrams of puzzles, interface concepts, dialog, even a specific programming technique to exploit.
How Do I Get Them?
If you are anything like me, you will probably have way to many ideas, both for projects to do, and for aspects of those projects. But lets face it you are better off finishing 1 game than starting 30. (I really should learn from that)
Here's a simple three step process to better abs... ideas, (too many American infomercials) you can repeat as many times as you require;
- Stimulation (e.g. play other games, watch videos, movies, read books, music whatever)
- Scribble (write down a bunch of stuff you are thinking of so you can remember it later)
- Discuss (brainstorm - with a group of people to refine your ideas and come up with new ones)
Just hope that the people you brainstorm with aren't too critical of your lame ideas, even the most stupid suggestion may surprise you. Who would have thought a game with odd shaped falling blocks would take the world by storm (Tetris for those of you who don't remember the 8-bit days).
The Real World...
With these wonderful ideas firmly in mind you go about implementing your program. You will probably find it's just not possible to do it the way you had planned, or you come up with better ideas along the way.
This is probably a good thing, if you were able to achieve your ideas exactly you would have to be a master at planning. It is almost inevitable that as you develop your game you find your ideas were perhaps a bit ambitious or you think of a new idea or twist (within reason say the schedulers among us).
Now You Have Ideas, What Makes A Game?
For more on this topic see Greg Costikyan's article "I Have No Words & I Must Design"
What's Not A Game?
- Puzzles
- puzzles are static, not interactive. Good games probably have puzzle elements, but they should not be JUST a puzzle.
- Toys
- toys are interactive, but have no goal. e.g. playing with blocks, sim-city.
- Stories
- stories are linear, games are not. Any presentation of narrative should still allow for the user to make their own decisions.
What Is A Game?
- Decision Making - Interaction in itself does not make a game, the interaction must have outcomes. Hence the player makes a decision about what action to take which results in an outcome.
- Goals - There needs to be goals in a game so players can mark their progress - the quality of their decisions. E.g. points, survival, increased functions.
- Opposition - It is no fun playing with yourself. Remember it should be a struggle, it is also no fun to win too easily.
- Managing Resources - Part of the decision making progress is management of resources. E.g. should you use the extra ammo?, the health shield?, send those extra troops to the front?, spend the money on new tyres?.
- Information - A player needs information to make decisions. Information adds to the experience and realism of the game, also as a player becomes more experienced the information can be understood at greater levels of subtlety resulting in better tactics. E.g. use the wind meter when making the golf shot, listen for screams round the corner in an action game, read up background biographies in an adventure game.
What Can Make A Better Game?
- Diplomacy - Multi-player games should encourage diplomacy (read social interaction). e.g. gang up on someone, go easy on a new member, perhaps help another group in an RPG although the long term goal may be different.
- Art - Not just graphic art, but the art of presentation. Anyone prefers a game with atmosphere that looks and sounds great - and plays easily (read good user interface).
- Simulation - This is taking real (or fictional) situations which people are familiar with and handing them the controls. This immediately gives you a basis of communication - famous characters or objects, the history and background, and the basic premise. E.g. fly a plane, control a city, command an army...
- Variety - Well this stands to reason, tic-tac-toe won't keep people interested for long. You can provide variety in several ways, a) variety through random elements e.g. bonuses, good fortune, luck, b) through complexity of environment, c) progressive gameplay, e.g. the game changes as you progress
- Role Playing - Role playing is not simply presenting the player with a persona to assume e.g. batman, duke nukem, but putting the player in a social environment were they play a role in respect to their interactions with other players. E.g. the player is Barry the barbarian or Tracy the ruthless tycoon.
- Socializing - It is an interesting aspect that most computer games have been a solitary pass time, yet other forms of games are almost all social in nature, e.g. sport, cards, board games… The Internet is now making multiplayer gaming a technical possibility, but I would suggest they will really take off when the social aspect is exploited. I don't know about you, but after my first game of Net Doom with my friends, the big difference I noticed was not the improvement over computer AI (infact charging the enemy.. or walls with rocket launchers seemed very popular) but the social aspect (never yelled over a computer game before).
- Tension - Just like at the movies, the key element of an exciting story is to keep the tension rising until reaching the dramatic ending. Try and save the toughest problems for last, e.g. beat the end of level bad guy, disarm the bomb, save the world.
Basic Game Categories...
Games generally fall into basic categories. You should keep these in mind as far as implementing your game, but you may choose to mix and match parts of each genre.
- Platform Games - Run, Jump and Avoid e.g. Mario, Jazz Jackrabbit, Prince of Persia. Can be non-violent and non-threatening.
- Shooting - If it moves shoot it, you know doom, quake...
- Adventure - Multiple locations, objects, characters and actions aimed at a goal in a specific carefully defined world. Kings Quest, Sam and Max...
- RPG - Multiple locations, objects, characters and actions in a more free form exploration of a usually larger less defined world. Ultima...
- Strategy - Combination of planning, analysis resource management or logic. Chess, Tetris, Civilization, Command and Conquer...
- Fighting - Spinning back kick to the jaw, Mortal Kombat, Street Fighter...
- Simulation - General term to describe "real world games", flying, driving, sports...
Two Basic Implementation Techniques
You can generally divide the graphics of games programming into two distinct areas (although a game may combine aspects of both.)
- 2D - Sprites, scrolling, bitmaps, video and animation - FLAT
- 3D - Free viewpoint, textured polygons - NOT FLAT
That may seem simplistic, but basically 2D and 3D graphics are very different techniques.
We will cover the basics of 2D graphics later on. Its basically a fairly straightforward concept - images (like paper cut-outs) are located where you want on the screen...
3D games meanwhile involve a lot more work (and maths!). Luckily (?) there are all sorts of people trying to develop 3D API's for you to use.
I will be including some samples of Microsoft's Direct3D Retained Mode interface (the easy one) and have a look at OpenGL (despite Microsoft's claims, a competing API). Thanks to Patrice Scribe for the wonderful type libraries that make this possible.