You need to design the game content as well as the game's implementational structure.
Game content design
- Write out the game content concept. Answering these questions will help you design your game.
- Have you fleshed out your game idea?
- Express your game idea in one sentence. If you can't, it is too complicated: Redesign it.
- What's the hook? Why should anybody want to play your game? Is it funny, exciting, thrilling, challenging, emotionally complex...?
- Who's the target group? Is it the gatherer (master of highscores, wants to excel himself), the hunter (master of hand-eye-coordination, wants to beat an opponent) or the adventurer (plays for the story and the solving of a puzzle, wants to beat the game designer), or ...?
- Define starting points: What resources are given? (budget, equipment, situation)
- Define winning the game: Exactly when is the goal achieved? (death of all enemies, survival for a certain time, completion of a mission?)
- Define the rules (gambits): What can the player do in your game? How to get from the starting point to the goal? How will he manipulate the given resources?
- What type of game do you go for?
- What's the genre? real-time, turn-based, or pause-and-effect game?
- What's the category? Action, strategy, sport, shooter, role playing, adventure, card game...?
- What's the setting? Past, present, future, alternative reality, fantasy, science fiction, steam punk, cyber punk, gothic, war, apokalypse, vampires, anime...? Is the setting well-known or will you have to provide background information? (special vocabulary)
- If applicable, how much time and space do you want the plot to cover? One day, one year, one lifetime? A room, a city, a planet?
- Can the game be played repeatedly without becoming boring?
- Good gameplay is a sequence of interesting challenges. What challenges does your game offer? reflexes, hand-eye-coordination, general knowledge, strategy, tactics, pattern recognition, memory, competition, puzzle, conflict/dilemma, economy; lateral, logical or spacial thinking? (choose one or more)
- Are the individual challenges dependend on each other? If yes, is the game still playable when they interact? Are the challenges plausible?
- How will the player interact with your game world?
- What role does the player play?
- What's the perspective? first-person, third-person ("avatar"), text-based...?
- If the player controls an avatar, how does the avatar reflect different states he is in visually? (clothing, equipment, color, size, texture)
- What input devices will be used? Mouse, joystick, keyboard...?
- Hardware, software, resources
- What platform(s) are you writing for? Win/PC, Macintosh, Linux? Are preparations necessary to port your code to other platforms?
- Which programming language will you use? C, C++, Java, Cocoa, ...?
- Where do you get graphics and textures? e.g. free textures
- Where do you get sound files? e.g. free sound samples
- Where do you get background music? e.g. Critters: algorithmic composition
- Now, write down your background story, describe NPCs and places.
- Visualize your game world and its style. Draw pictures: What do your characters, objects, places, architecture... look like?
- Define the levels; create maps; decide on AI strategies; flesh out missions and puzzles.
- Decide on the module structure you need to represent your game world in your programming language.
- Design GUI elements; design objects/classes/data structures to represent your game world data; design methods/functions to interact with your game world.
- Write the game engine (and maybe even an editor to go with it) or decide on a third-party game engine you want to use. Writing a 3D-engine is covered by step 2-14 of 14 Steps to a 3D-Game Engine.
- Write a simple demo application. Its only purpose is to initialize the GUI and integrate the game engine (that is, load, display and save sample game data).
- Write a demo level your avatar can already walk around in.
- Add object interaction to your demo level (dropping, picking up, using, creating and destroying stuff).
- Write the full first level, including artificially intelligent NPCs and a mission. Some tips for improvement:
- Output: Provide enough high-quality feedback about the state the game is in -- otherwise the player will feel blind and deaf and give up.
- Input: Test the interfaces's responsiveness -- if it behaves irratically, the player will feel bound and paralyzed and give up.
- Feeling of succes: Give hints whether the player is looking for the solution in the right direction or not. Reward him visibly as soon as he succeeds.
- If possible, offer different ways of solving the problem.
- Don't generate events and "treasures" completely at random -- nor generate them completely regularly.
- Make sure your game is balanced: There must be a counter-meassure for each attack. But also make sure that it is not too balanced: Do not grant all players access to all the resources at the same time. Every skill, item, ability... must have advantages and disadvantages.
- First level up and running? Now you have the alpha version. Make lots of test runs and debug errors before you continue.
- Create the rest of the levels. Create video sequences and splash screens, etc. Optimize your code.
- Now you have the beta version. Woot! Time to relax a bit and send out your app to friends for beta testing. Collect their comments, debug errors they encounter and improve the interface until they never ever wanna stop playing your game.
- If your game runs several hours without crashing, you can consider the master (omega) version finished. Congratulations! Publish your game and move the version numbering up to v1.
More good advice and actual examples can be found in Mu's Unbelievably Long and Disjointed Ramblings About RPG Design.