I've always loved video games, ever since I first played them on a friend's computer in the afternoon after elementary school. There's something almost magical about the fact that we can move images around and interact with virtual worlds, a living fantasy presented for us to interact with however we please. I've also always wanted to make games myself but, until recently, did not have the technical knowledge to do so. Now, I'm a second year software engineering student, so if I were not able to code a game without too many dramas there'd be something drastically wrong. But what about the common person: the person for whom the term 'memory leak' conjures up images of their grandfather, 'pipeline' is where the water flows, and 'blitting' is unheard of? Well, everyone can get in on the game creation process, and you do not even need to learn 'real' programming to do so.
So where do games start? With an idea. Games, like all fiction, require an idea to be successful. Sure, in the same way you can just sit down and write a story without foresight, you can jump on and slap a game together. However, unless you get ridiculously lucky, the best works are usually the ones that have been well thought out beforehand.
There are two methods of planning a project. You can start from a known technological standpoint and build your project on top of that or you can just go for the design, add as many features and ideas as you like, and then remove the ones that you can not use when you've decided on the technology you're going to implement the game with. In general, the second type is probably the best one to go with when designing games. When you're first starting out however, the first option will save you many headaches.
So, for a first game you're going to want a pretty simple idea. Do not get me wrong, crazy-go-nuts game ideas are fantastic, and there should be more of them out there, but you're not going to be able to create a real world simulator with fifty billion virtual people all interacting real time with your actions having a butterfly effect on the future of the virtual universe when it's just your first game. Really. Many people try it; none that I know of have succeeded. Imitation is the best way to start out. Simple games such as 'Space Invaders', 'Tetris', 'Pacman' or even 'Pong' are great places to start. All are largely simple to create but have some inherent challenges. 'Pacman' for example, requires path finding for the ghosts. I recommend that you start even simpler than that for your very first attempt. 'Space Invaders' is a nice point to jump in. You can make a simple, complete game without much effort and it's almost infinitely extensible.
If you're stuck for an idea, pick a genre that you enjoy. Do you love adventure games such as 'Monkey Island', 'Grim Fandango', 'Space Quest', 'King's Quest' etc.? Design one of those. Are you into fighting games like 'Street Fighter', 'Tekken', 'Soul Calibur', 'Mortal Kombat' and so on? Come up with an idea for that. Do you like first person shooters such as 'Quake', 'Half Life' or 'Doom'? I do not recommend it as a first project, but you can always give it a go. Feel free to be as generic as you like, this is a learning experience after all.
Now that you have your idea it's time to flesh it out. Do not worry about the technology or the fact that you may not know how to actually implement a game just yet, just grab yourself some paper and a pencil and go crazy with ideas. Describe the main characters, game play, goals, interactions, story, and key mappings, anything you can think of. Make sure you have enough detail so that someone can read through the notes and play through the game in their head with relative accuracy. Changing game design during the coding process is almost always a bad idea. Once it's set, it should remain set until the tweaking phase (I'll go into this more later) or you're likely to enter 'development hell', where the project goes on and on; more and more work is done with less and less output.
At the end of this period of your game creation, you should have the following:
- A written outline of the game's characters and possibly a sketch or two (be they space ships, yellow circles, cars or the prince of the dark kingdom of Falgour, you need to know who or what they will compete against)
- A written outline of the story (if there is one, this is not too vital for 'Space Invaders' or 'Tetris', but for 'Uber Quest: An Adventure of Awesomeness' it's a really good idea)
- A description of game play, written or storyboarded. Storyboards are visual representations of ideas. Draw your characters in actions, with arrows showing the flow of action and short written descriptions detailing the events occurring in your image (because some of us are not fantastic artists and our images can be a little ... open to interpretation ...)
Now that you have a fleshed out idea, it's time to work out how this will all get put together. If you've gotten to this point and are worried that you're going to have to spend years learning complex programming languages in order to implement your idea, fear not! Others have already done the hard yards for you. There are many RAD (Rapid Application Development) Tools available for game creation, a number of which are available for free online. Some of them still require you to learn a 'scripting language' (a simplified programming language made for a specific task) but in general this is not too complicated or involved. I've compiled a brief list of some of these I have found at the end of the article. The free ones are listed first, organized by game genre.
Well, that should be enough to get you started in the creation of your game. The most important thing to remember once you've gotten this far is that you need to complete your game. Many people start a project and then lose interest and it fails, or they keep moving on to one new project after another without finishing anything. Start small, build a working (if simple) game that is, above all else, complete. When you get to this stage you will always have a huge number of things that you wish to change, fix etc. but you'll get a great feeling from knowing that it is, in its way, finished.
From this point, you can start the tweaking phase. Play your game a few times and ask others to do the same. Take note of what is not fun or could be better and change things here. At this stage, it is more important than ever to keep backups of previous versions so that if a change does not work you can go back and try something different without losing any of your work. It is at this point that you can add all new features, improve graphics and sounds, whatever you please, safe in the knowledge that you're working on a solid foundation.
When you're happy with your game, why not share it with the world? There are many cheap or free places out there for you to host your files on and then you can jump on link lists and forums and let everyone know about your creation. Well, I hope that this has been a helpful introduction into the art of creating games. It's a great deal of fun, and can open whole new avenues of creative expression for you to explore. Jump in and have fun!
(Games such as Monkey Island, King's Quest, Space Quest etc.)
Adventure Game Studio: [http://www.bigbluecup.com]
3D Adventure Studio: http://3das.noeska.com/
ADRIFT (for text adventures): http://www.adrift.org.uk/
(Games such as Street Fighter, Mortal Kombat, Tekken, Soul Calibur etc.)
MUGEN (unfortunately the site is large in French): http://www.streetmugen.com/mugen-us.html
(Games such as the 2D Mario Games, Sonic the Hedgehog, Double Dragon etc.)
The Scrolling Game Development Kit: http://gamedev.sourceforge.net/
There are many others available as well. One particularly useful site for finding game creation tools is: http://www.ambrosine.com/resource.html
Also of note, although not freeware, are the excellent game creation tools available by Clickteam at: [http://www.clickteam.com/English/]
Klik and Play and The Games Factory in particular are the programs to have a look at and download the free demos of.
If you really want to do things right and program the game yourself, there are some excellent programming resources available at the following locations:
Visual Basic Game Programming: