Sunday, 26 June 2011

Step 3 : Start creating

Now, as you are ready to start creating your game, the most important step is to actually start doing something. It is doubtful that one person alone would have all the skills required to create a game, unless you are starting small as I have mentioned you should try doing. If you are not, I am assuming that you have some experience, in which case you may consider searching for a team of sorts.

First of all, I will introduce some of the basic concepts you may wish to know before you begin.


Static meshes:
Static meshes are basically objects that make your game look better, but usually not actually serving any purpose, except perhaps to block the player's path. These include houses, pipes, rubbish, glassware, tables, chairs etc. These objects usually do not serve a gameplay-related purpose and are simply there to make the scene look life-like, as well as potentially contributing to the story. To create a static mesh you should first create the model in an external modelling package such as 3DS Max. Common techniques are poly-modelling (manipulating individual polygons and geometric figures to look like the thing you are hoping to represent) and sculpting (using a program that essentially simulates clay, allowing you to sculpt in details similarly to how a traditional artist would). The latter is generally best done with a graphics tablet. How to do this is beyond the scope of this tutorial, but is widely documented online. When you are done, you should get working on the UV map, and any textures you may need.
   Textures are essentially images that are applied to the 3D geometry you have created to add extra realism. You might decided to use/create a proper texture (detailing the specific intricacies of the object you are texturing) or simply a basic material, such as perhaps metal, to apply. Both can be used depending on the type of model you have. For example, a rock may only require a generic 'stone' texture, while a building would require something more specific.
   How a texture is applied to the 3D model is controlled by what is called a UV map. A UV map is basically the 3D model flattened onto a 2D plane, where each polygon represents the corresponding polygon in the final 3D product. Essentially the idea is to conform this flattened object to the texture you have designed. If you do not wish to suffer the pain of UV manipulation, you may wish to consider using a tool such as Mudbox, which allows you to automatically generate a UV map and essentially paint directly onto it using digital brushes. However, this approach has its own disadvantages, such as the inability to tile textures (as in, repeat the same image multiple times.
   My approach to creating a UV map is this: add a UV map (usually a box) to the model, unwrap the UV map, load in the texture you have designed, and begin conforming the UV map to the image. I am specifically thinking of 3DS Max, but the approach should be similar for other software. It is by no means a perfect solution, but I found it to be reasonably effective. Alternative you may be presented with an option to render the UV Map to an image file, and create a texture that fits to the UV map you have created, essentially working in reverse. If this is confusing, the don't despair. It is much clearer when you actually attempt to do it with the help of more specific tutorials detailing a suitable approach for your software of choice. If you do not apply a proper UV map, any texture you apply to the model will look stretched and generally strange.

   When models are imported into a game engine, the textures also need to be imported and made into materials. The materials are basically a combination of your textures (Diffuse, Normal Spec etc...) with additional properties and effects. They can be adjusted to suit what you need, and end up usually much more than simple images. Materials may be made reflective (to an extent), refractive, glowing, pulsating, etc. These materials are then to be applied onto the appropriate objects. Collision is applied/generated. Static meshes by then are ready to be used in your level, while other objects may require animation to be applied, programmed, have sound effects associated with them, etc.


Characters:
Characters are generally more difficult to create than mere static meshes.  They would require extra programming, and probably animation. To create a character, both main and NPC, you first have to prepare the model as described in the Static Mesh section, but then you also need to create what is called a skeleton to go with your character. The skeleton basically tells the engine (and your animation program) how to move the limbs in order to give them a realistic look, deriving its name from the fact that it often resembles the bones of an actual skeleton. Without it, the computer would simply interpret your model to be a basic set of polygons. After this is completed, different animations should be created, such as walking, running, turning left etc. Animations are generally done using key frames, which let you specify a specific position in space for something at a particular time. These positions are then interpolated to result in smooth movement. Perhaps the final step would involve programming the character: giving instructions such as: 'Play THIS animation of THAT button is pressed', or 'Ragdolize if health reaches 0'. This step would mostly depend on the game engine you are using, as different game engines provide different interfaces to program your game.
   If you have decided to create a first person game, then the playable character is generally much easier to create, only requiring hands and perhaps a weapon. Most importantly, less time may then be spent on player animation, which can be a quite difficult thing to accomplish well.

   Naturally, not all games would have a human as a main character. Many may not have humans at all. Some may have spaceships, while others cars. What animation you create, if any, would truly depend on the context.

Level Editor:
Game engines often allow you to edit the scenes in your game directly using a level editor. A level editor allows you to place objects into the world, rotate and scale them, change their materials, add animation that you have pre-defined, etc. It is basically where you would generally compose all of the assets you have created into each level, resulting in the final game. If not using a high-level game engine, one may want to program their own level editor to save time in the long run.

Lighting:
Lighting is very important for games, as it is one of the main factors in determining how well the game looks. Pre-baked lighting is when light is basically 'painted' onto the world once, and then never changed. This can allow for realistic effects without any performance loss, since the lighting would be pre-generated, but requires that affected objects never move. If objects do need to move, then pre-baked lighting is often not applicable, and realtime lighting must be used. Realtime lighting is generated for each frame by the player's machine, and thus has a greater impact on performance. However, it can allow for a variety of interesting effects, such as beautifully moving shadows.

Post Processing:
This is when special image effects are applied to the game after it has been drawn to the screen before being presented to the player. These effects may range from simple colour-correction to faked shading (such as SSAO or SSDO). The latter is possible because unlike with traditional images, games often generate depth data, allowing some quite useful effects. Deferred shading is using this to apply lighting itself as a post-processing step, which has a number of benefits (most notably, better performance with a large quantity of lights). 

While there are many more concepts that can be discussed, they are quite broad in span and can often be very specialised to the game engine you are using. To gain a more comprehensive understanding, I advise you to explore the engine of your choice, pursuing tutorials specific to those engines. Either way, the following information should also help.



General steps to creating a game:
While the process can vary greatly depending on the type of game and style of development, here is what I imagine may be a good starting point:

   You should begin designing your story, planning the general outline and establishing your desired game mechanics. This was covered in the previous section. However, you should not delay in the following steps, for they may yield vital insight.
   You should perhaps create a few models for the game. To begin with, you should keep them very general, not focusing on the details of the world as much. While at it, you should begin programming the game, unless the gameplay is so generic that most of your needs are already satisfied by the game engine's default character (if one exists). This should be done in accordance with the story.
   You should proceed this way, and you will see your game develop into something actually playable. You may wish to change parts of the story, and make adjustments to what you have created. 
   When you feel you are nearing completion, you should integrate proper sound into the game, adding music and whatever else you may prepare, as well as voices, subtitles, and essentially anything else you feel your game needs.
   At this stage you may wish to consider getting other people to test your game. Bugs and mistakes will undoubtedly be found, which you will need to fix. Then parts of the game may simply be boring, which may force you to redesign them.
   Well, that's pretty much it. After you do the last step a number of times, you should hopefully have something presentable! Sounds easier than it actually is, for a large game may be composed of thousands of assets. The general routine, however, is often comparatively simple.

9 comments:

  1. Have u finish this or not beacuse it looks like u havent

    ReplyDelete
    Replies
    1. *You, finished, you, haven't*

      Delete
  2. u have helped me out alot

    THANKS and if i do make a game i will mention your name in it

    ReplyDelete
  3. Ah. People are still interested in this. I will try to finish it now, thanks for reminding me.

    ReplyDelete
  4. Ah. Finally. Appears to be finished enough.

    ReplyDelete