Almost every major game released these days is made in 3D or uses a heavy amount of 3D assets. While there are still many games made in 2D, even platforms like Flash are now integrating 3D. In this bumper-length article I am going to explore what separates games from other mediums that use 3D art, and cover some of the important topics to consider when making 3D art for games.
In this article I am going to be discussing a lot of different topics, but it's important to know that this article will not be a good first look at 3D modeling. If you have never touched 3D before in your life this isn't the article for you. I also won't be discussing how to use any one specific tool, or what file formats different game engines require you to use.
The primary purpose of this article is to give someone who has some foundation in 3D an idea of what they should learn or focus on if they want to transition into games.
3D in Games
These screenshots are of models from Starcraft 2 and UDK with their wireframes turned on so you can see how complex they are:
Games are a very unique medium to work with, both in general and as an art form, because unlike almost every other form of expression, games are interactive. This means that no matter how much planning you do, and no matter how much time you spend trying, you will never be able to predict every possible thing a player can do at any given moment. Because of this, games run on game engines which take in the actions of the player and output the results, and specifically they use Real-Time Rendering to create the 3D graphics you see when you play.
Real-Time Rendering is when a computer system generates the images or outcomes of an action for the viewer/player as they occur. Movies, TV Shows and still images are all rendered beforehand so that the viewer will have the exact images or experiences the creator wanted. Because these mediums are not rendered in real-time, the creator is free to make the piece as complex as they want.
Take for example the movie Toy Story 3. Toy Story 3 is a beautiful looking movie and the artists who worked on the film put a lot of time and energy into making the models and textures in that movie incredibly detailed and complex. While this made for a great looking movie, it also came at a cost: rendering time. I read in an interview about the movie that the least complex scenes in Toy Story 3 took a minimum of 8 hours to render each frame - and (in case you're not into animation) there are 23-30 frames in each second of a video. Can you imagine playing Starcraft 2 or Call of Duty and having to wait eight hours to see the result of your mouse click, or the impact of your bullet? No one would ever play games if that was what it took, so keeping down render times for your game is important.
Because of how many characters are in this image, just rendering this individual frame probably took upwards of 15-20 hours.
While it's true that as technology becomes more and more advanced the line between high-end games and movies becomes thinner, there are still major markets such as tablets, smart phones, and hand-held consoles which have substantial restrictions on what they can handle.
When making 3D art for games it is important to understand what the restrictions are, and how to work within them to create high-quality, usable art assets. On top of that, even though the restrictions might not be as tight as they used to be, understanding what the restrictions are, and how they work, can help you work within game engines more effectively, and can allow you to create much more versatile assets.
Modeling: Polycounts and Optimization
The first stage any 3D art asset goes through, after all of the concept art has been finalized, is the modeling stage. The modeling process in games is very similar to the modeling process in other mediums, but when modeling for games the most important thing to consider is the polycount of your model, and keeping all of your polygons in Quads or Triangles.
First let's look at polycounts. The polycount of your model is the total number of triangular polygons it takes to draw your model in 3D space. The higher the polycount is for your model, the longer it takes for the system to render it - and as I mentioned earlier, render times are very important.
Technically, render time can be affected by a lot of different factors and it's not always the case that if you have low-poly models you will also have low render times. However, if your game engine is optimized well, the art assets would be the next main reason for slowdown.
The first method I want to look at for keeping down your polycount is focusing on your model's silhouette.
Keeping an eye on the silhouette of your model can be very important in preventing it from getting too complex. When making 3D models for games I like to always consider the importance of a detail in helping the player identify or understand an object, before I start adding it to a model. For example, let's look at these images of a camera.
If we look at the silhouette of the camera it is easy to see which details are important, the shape of the light which comes out just over the back of the lens, the length and size of the lens relative to the camera, and the way the viewfinder just out of the back. These details are important because they allow the viewer to immediately see what the object is, or how it is built, and because they are not what I call "interior details": things such as the texture of the grip, or items that are not flush with the camera but which also don't contribute a discernible shape to the silhouette.
Looking at the original image you can see there are a bunch of little details which seem obvious and important, but would have little impact on the model or the player's ability to identify it. This includes the ridges that go around the lens and allow the user to adjust the focus, the buttons and switches all over the camera, and the notch on the side which allows the user to open the SD card slot and USB port. These details are unimportant for the modeling stage because they don't add anything substantial to the model, and don't make it any easier for the viewer to understand what they are looking at.
When making models for any production it's important to notice which features need to be on the model and which should just be on the texture, but in games you have to make sure that there is no "wasted space" on the model, and that every polygon you use is worth it.
Another helpful way to keep your polycount down is to remove unseen polygons from your model. There are some scenarios where it will be impossible for the player to see certain parts or sides of a model, because of the way it is being used in the game. Since the player will never see these parts of an object, it would literally be a waste to use polygons on them.
A concrete example of this is guns in an FPS. In most FPS games the engine uses a higher detail model of a gun for the first-person view than it does for when the player is watching enemies with the same gun from a distance. It does this because the first-person model will be in front of the player for extended periods of time and thus needs to look as high-quality as possible. To make this work even more effectively, modelers will often remove the parts of the gun which are too obscured or low down on the screen for the player to ever see, since it allows them to make the rest of the gun look that much better.
If you look at the above images of the Link Gun from UDK you'll see the the third-person model (left) has parts the first-person model (right) doesn't. Since the player would never see these parts from the angle the gun is held and animated in first-person, they were removed from the final version.
While removing unseen parts and pieces can be helpful in staying under your polygon limit, you should also be careful when doing so as it can cause issues later. For example, if your game was heavily physics based, and the player could pick up and move any objects they wanted, then you would have no way of knowing which faces, if any, should be removed, since it would be easy for the player to put the object in a position you aren't expecting.
Similarly if you have an object like a tree or a barrel which will be used in a lot of different places, it's often best to leave them primarily intact since they too can end up being at a lot of different positions and angles depending on how your level is built.
As long as you use common sense, and don't go crazy trying to cut down your polycount in this way, you should be okay.
Triangles and Quads
The other main thing I wanted to discuss about modeling is keeping your polygons in Triangles and Quads.
When your model is brought into the game engine you are using, or exported from the 3D application it was made in, every single polygon in your model will be triangulated (turned into two or more triangles) for easier calculations when rendering. The system does this by creating new edges to connect existing vertices on your model.
Triangulating a polygon is a simple process, but the more sides the polygon has, the more ways it can be triangulated. This is important because depending on how a polygon is triangulated, it may end up becoming more complex than it needs to be. If your model is already triangulated, the system won't have to do anything, and you will have more control over how your final model looks.
If your model is made entirely of Quads this also wont be a major issue since Quads can only triangulated in two unique ways.
As you can see from this image, there are no other ways edges could be added to this shape that would create triangles from the given quad.
Once your polygons start having more than 4 sides things get complicated quickly. Look at this Pentagon (Pent), for example. Technically there are only two ways to use edges to triangulate it:
The problem is that every vertex on the Polygon is a completely separate object. This means that the first method of triangulation actually represents five unique methods of triangulation, and thus a Pent can be triangulated in six different ways.
This problem only worsens as the edges increase, and eventually it can be a huge issue for the model and the rendering system. The bottom line here is you need to keep an eye on your polygons and make sure that your final model is built entirely out of Quads and Tris. This isn't specific to games - it's generally a bad idea to have polygons which are not Quads and Tris no matter what you are working on - but I still felt it should be brought up here since it can be even more important in real-time systems.
Finally, before I move on from discussing modeling, I want to mention LOD (Level of Detail) Models. LOD Models are when you provide multiple models for the same object which are of varying levels of complexity and display different models depending on the object's distance from that camera - this way, the farther the model is from the camera, the lower its polycount will be, and the less it will take for the system to render it.
Having different models for different distances allows you to draw more on screen at once, and it makes processing easier for the system since it doesn't have to render high-detail models for things that are only barely able to be seen.
Below is an image of the Manta's LOD Models from Unreal Tournament 3 (UDK). For your convenience I've outlined some of the spots where the difference in the complexity of each model is rather obvious. If you look closely you'll see that some shapes on the model have been greatly simplified, and others seem to have been removed entirely.
Texture Types and Uses
Once your model is finished it's time to move onto texturing. Texturing is an important aspect of the art pipeline no matter what you're working on, and games are no exception. Like modeling, texturing for games has a lot of overlap with texturing in other mediums, but there are some things which are very common in games and are helpful to know about. In this section I'm going to discuss the most common texture types in games, the use of tiling textures, and the use of decals.
In games there are many different texture types used, but some get much more attention than the others. The texture types that are most important to know about are Diffuse Maps, Normal Maps, Specular Maps, and Alpha Maps. Knowing what each texture type or map is, and how it can be used, is important, but they are also relatively universal across all 3D art so I'm not going to spend much time discussing them; I'll simply give a short explanation of each, with an example.
A Diffuse Map is just the flat colors for your object. A diffuse map is really just a picture wrapped around your model without any special effects applied. There are few scenarios where you would have a model without a diffuse map.
This is the Manta from UDK with the just Diffuse, just Normals, and both combined. (Click for full size.)
A Normal Map is a type of texture that is blue, pink, and green, and is used to give the illusion of greater detail on your model. If is similar to a bump map but much more powerful.
If you go back to the example of the camera model from before, the normal map would be used to give the illusion that the ridges going around the lens are actually there on the model and are not just a texture. Normal maps are used on most objects as well, since they give the illusion that the objects in your scene have many more fine details than they actually do.
A specular map is used to add specularity, or "shininess", to an object. A specular map is usually black and white or greyscale. Specular maps are not always used, but whenever you have an object that is highly shiny or reflective in some areas, but not in others, you would definitely use a specular map since it allows for a strong level of variation in specular intensity across a single model.
This is a basic box I made with a red and white checker pattern. In the image on the right you can see I've used an alpha map to make the white areas semi-transparent.
An alpha or transparency map is used to make parts of an object more transparent. Like specular maps they are usually black and white or greyscale. Alpha maps are also not always used but are relatively common.
The two most common scenarios you would find alpha maps would be if you had a window model, where one would be used to make the glass transparent or semi-transparent, or if you had a plant with a large number of leaves so you could make the leaf models themselves much simpler.
Games also make regular use of tiling textures, or textures which can be repeated infinitely in one or more directions without an issue. This is because things like the ground and large walls are often hard to texture by hand and it would be incredibly time consuming if every wall in every level of every game had to be textured individually. To solve this issue, tiling textures are used so that only one texture needs to be made for all the walls of a given type.
This is a brick wall texture which tiles correctly vertically and horizontally and an example of it being tiled.
It's also not uncommon for texture artists to create multiple variations of the same tiling texture so that it doesn't look exactly the same in all scenarios. Sometimes they will even have special versions for unique scenarios. So, maybe they have the same brick texture but they have one version for when it is on the ground, one for when its in the middle of a wall, and one for when it is at the top of a building. The different variations can then be stitched together in multiple different ways to make for a much more interesting look than just repeating the same texture hundreds of times.
This is a basic example of the same texture as above but with added variation in the version of the texture which touches the ground and the version which would be at the top of the building.
The final thing I want to talk about here is decals. Decals are textures which are applied to walls or objects to add extra effects. For example, whenever you shoot a wall in a game and there are bullet holes in the wall, the bullet hole is a decal which has been applied to the wall texture dynamically based on where you hit the wall.
Decals are used in a lot of different scenarios such as for blood splatter, pools of water in a rainy level, or even as graffiti in a dark alley. The idea of a decal is similar to that of a decal in real-life, it can be applied to most surfaces to add variation to an otherwise boring wall or floor. Decals are often not square objects so in most cases they use at least a diffuse map and an alpha map.
Once you have all your textures you usually have to build a shader for your game or engine to use those textures, like you would in most 3D modeling applications. This process involves combining all of the different texture types together into one "object" known as a Shader or Material so that they work together to give your model the look and feel that you want.
I'll discuss these programs in more detail later in the article, but Marmoset Toolbag, UDK, and Unity are great tools to try building shaders in, and all of them are real-time engines so they can give you a good idea of how your model and textures will appear in an actual game.
Animation in Games
Now that we've discussed textures and modeling I want to cover the last major step for most models: animation. 3D animation in games is very similar to animation in many other mediums; just like in most TV and movies, your models will be rigged to skeletons and will be animated with key-framing. Unlike in movies, though, games have a much higher need for canned animations and looping animations.
Canned animations are animations which represent a specific action or movement of the character. The goal is for it to be a one-off animation which can be played when the player performs a given action. For example, if you were making a shooter you would probably have to make a "reload" animation and a "throw grenade" animation and those would both be considered canned animations.
While the "jump" animation above does loop and could be considered a looping animation, I would consider it a canned animation since normally it wouldn't be intended to loop when being used in a game.
A looping animation is an animation which can be looped multiple times without the player noticing. This would be a walk cycle or a character firing a gun. These are used for actions which can go on forever without stopping, or actions that the player will be performing multiple times in a row on a regular basis.
It's also not uncommon for game systems to have ways of combining multiple looping animations and/or canned animations into one animation. So, going back to the shooter example, let's say your game had twelve different guns in it, and every gun had a different firing and reloading animation. Let's also say your player can stand still, walk, or run while firing. If you had to make a different version of each firing animation for every state the player could be in while firing, you would need to make a lot of animations, and most of your work would simply be you doing the same animations you already, while the feet move differently. To solve this problem animators will often animate the upper body and the lower body separately. The animations are then combined dynamically in the engine while you are playing so that your standard firing walk-cycle could be used with any gun-firing animation.
In this image from the WoW Model Viewer you can see how the user has the ability to change what items are equipped to what slots on the right. What it's actually doing is attaching the models for the equipment the user picks to the character model on the appropriate part of the skeleton:
Another thing which many games do is allow bones on the skeleton to be used as "sockets". Essentially a socket is a bone which serves a secondary purpose within the game system or engine as an emitter for bullets or particle effects or a place to attach secondary models to an existing model.
In shooting games, guns will often have sockets which are used as the point a bullet is shot from when the player fires the gun. 3D RPGs often use sockets for weapons and armor that the player is wearing. This allows the game engine to dynamically attach all of the items a player has equipped to the player's base model, instead of having to have a separate model for every possible combination of weapons and armors.
Neither of the systems I mentioned above will have much impact on how you do your modeling, but it's always good to understand how your assets will be used within the system itself so you can create them as effectively as possible.
Tools to Check Out
There are a lot of great tools out there that you can use to either speed up your workflow or to test different aspects of your models. While I can't cover them all, I will mention a few that I like.
Marmoset is a great tool for testing 3D models and textures. Marmoset is a real-time rendering engine without a game engine attached. This means you can see how your model renders and behaves in a real-time setting without having to have a game to go with it. If you are making portfolio pieces such as props and don't have an actual intended level or game, or if you simply want to do a quick test to see how a model or texture works, Marmoset is a great tool to use.
UDK is a free 3D game engine based on the popular Unreal engine. Like Marmoset, it can be a great place to see your models and textures in action. On top of that it has a great system for importing animations, and has a lot of great tools for level design and game design. If you want to supplement your 3D skills by learning how to design levels or by learning a scripting language, then UDK is a great choice.
Unity is similar to UDK in what it does and why you would use it. The big difference between Unity and UDK is that UDK is geared heavily towards FPS games, and Unity starts as a blank slate so it can be more easily used for other game types. Because of this, though, Unity doesn't come with as many pre-built features as UDK does so it may be a little harder to get a playable result.
Filter Forge is a tool which can be used to create just about any texture you could ever want or to create filters for Photoshop. It's a bit challenging when you first start out with it, but the results can be downright incredible if you learn it. It's also fantastic for making tiling textures. If you've ever created shaders or materials before you may have an easier time getting the hang of it.
NDo is a Photoshop Plugin which is used to make Normal Maps. It is incredibly powerful and can be a huge help in quickly pumping out or baking normal maps based on diffuse maps. The creators also recently launched another tool called DDo but I have never used it. NDo is completely free but DDo and NDo 2 must be paid for.
Steam Workshop isn't a specific tool but rather a sort of "initiative" that was started by Valve to make it easier to mod games on Steam. Various games on Steam including DOTA 2, Portal 2, Team Fortress 2, Dungeon Defenders, and a few others have given players the ability to develop and distribute custom items, weapons, armors, and so on to the game's community as a whole.
Many of the Valve ones even include the ability for your items to go on sale for real-world money, and thus you can make a profit off of your work through this system. Currently there are only 24 games that are part of the workshop, but new ones get added on a semi-regular basis.
Game Art Communities
Finally I want to mention three online forums and communities which are specifically for game artists and 3D artists. All of the communities I will mention are home to both professionals and hobbyists and hold regular competitions or challenges to help you improve.
Polycount is a fairly big community. It's great because many of the members are incredibly active, they all have lots of wisdom to share, and the site often holds competitions where they partner with major game companies and the winners get their items or things put into the final product. On top of that, they regularly update the site with articles about the latest and greatest game art tools.
Game Artisans is another incredibly strong community. It puts a much stronger focus on showcasing the work of the users than Polycount does and even has a Portfolio section. Game Artisans also has a strong tutorials section for a number of different tools.
This community is not specific to game art but it is still an incredibly strong digital art community. Like with Game Artisans, there is a strong focus on showcasing user work here. This is probably the biggest of the three communities I've mentioned, but it's also not as specialized as the previous two so it may be harder for you to find the exact advice or information you want.
Those are all of the areas I wanted to cover with this article, but there is a whole lot more you could explore if you take the time. I hope this article gave you some useful information about what separates games from other 3D mediums and about what to consider when making 3D art for games.
If you want to learn more about 3D within games, or in general, I find its best to just go out there and do it, so head to some of those communities I mentioned above, or download some of those tools, and get to work.