Many of the resources for popular development platforms are scattered to the winds – it’s hard to know where to even start researching how to create objects, how to code, where to find inspiration.
Consider this a jumping off point, a directory of sorts of the resources data viz and game developers have found useful. Have an idea or a question? Discuss it in the comments below or send us an email.
Even though many commercial engines are out of the price range of most developers, it never hurts to take a look at where the cutting edge is moving to. The video below compares CryEngine, Unity, and Unreal 3.
The following (growing) list describes a number of video game and data visualization engines.
| Name | Price | Description |
| Unity3D | Free / $1500 (Pro) | Used by nearly half a million developers, Unity has become one of the fastest growing game engines available. Unity allows users to create games once and then compile for desktop, web, mobile (iPhone and Android) and the big three consoles (Wii, PS3, XBox). “The best game engine this side of a million dollars” as the Unity folks like to say. |
| Unreal Engine | If you have to ask… | Perhaps the best known game engine. Unreal is the engine used to design the big games you’ve either played or heard of (and that don’t have their own custom engines) – check out the Wikipedia list. From cutting-edge shaders to GPU interfacing, you’d be hard pressed to find a more powerful engine. |
| UDK | Free | The Unreal Development Kit, a (mostly) free version of Unreal Engine (UE) – there are some licensing issues to be aware of, as this post discusses. This is the full Unreal Engine, minus any access to the engine’s source code and ability to modify it. |
| CryEngine | You don’t want to know | A relatively young game engine, CryEngine has delivered consistently stunning graphics. It has been used as the backend to very few games to date, but one to note is Blue Mars, a new competitor to Second Life. |
| Google Earth | Free | Seemingly a strange fit for this list. It’s possible to create applications for google earth that build meshes on the fly, giving realtime interactivity that’s akin to a game. See the GIM Tool, which was developed by some friends of ours at NOAA and interfaces Google Earth with Flash. Additionally, the latest version of Google Earth moves more into the gaming realm with features like a built-in flight simulator. |
| Flash 3D | $0 – $3000 | Undoubtedly the most ubiquitous gaming / visualization tool out there. If you’re not familiar with Flash, get thyself to Wikipedia. While the Flash / Flex frameworks are free, designers most often rely on 3rd party programs like Adobe’s Creative Suite to create flash programs. |
| Java | Free | The corporate workhorse is also used to make a variety of games for different platforms. One of the perks of Java is that it runs in a virtual machine on any system – meaning you can be sure that the game you write in Windows will work on Mac. Java ME was a popular last-generation platform for building mobile games and applications, though nothing similar is yet available for the newest smartphones and tablets. |
| Second Life / OpenSim | Free* | A virtual world platform, where anyone can create a ‘sim’ or ‘Island’ that other SL users can visit. SL is a more closed platform, but probably the easiest for beginner developers to get into. SL boasts a built in community of tens of thousands of regular visitors and thousands of fellow developers. It’s easy for educational and government groups to find support, since SL / OpenSim have been used extensively by these communities. The * in the price signifies that, while entry to SL is free, developing anything requires money, from creating a sim to advertising your created goods. Be warned that assets created in Second Life can be very hard to get out later. |
| Ogre3D | Free | A fully open source, community driven rendering engine. Ogre3D is a rendering engine only, meaning it only does the graphics parts – it doesn’t have internal physics, sound, networking, etc. Ogre3D is typically used as a starting point for game developers – you can connect a physics engine like Havok and customize to your heart’s content, but you’ll need to be a very experienced game designer for this to be a viable option. |
It’s almost impossible to create a game completely from prefabs, so at some point you’re going to need to do some object creation of your own. The following is a list of modeling tools, from free to $5000 a pop, used to create pretty much every object you’ll see in a game.
The Second Life website has a great list of 3D modeling software, from free to thousands of dollars, if you’re looking to see what’s out there.
Looking for examples to get you off the ground, or simply don’t have time to develop every piece of your game? The list below is for you.
Not to be forgotten when creating models is texturing. My opinion is that mastering the art of texturing, not just textures themselves but normal maps, specularity, reflections, and lightmapping, is more important than modeling. I’ve seen beautiful models, with hundreds of thousands of vertices, that look fake and plastic when brought into a game, and hundred-vert rocks that look photorealistic because of the texturing. Video games do not need to be as detailed and realistic as life – they just have to look like they are.
The list below is from the Second Life website, but it’s applicable to any game engine. We personally use GIMP, Adobe CS5, and Filter Forge, and we swear by them.
http://wiki.secondlife.com/wiki/Texture_Tools
Texture Libraries
If you’re simply looking for pre-generated or photographed textures, you can check the Prefabricated Objects websites above, or use one of many texture library sites. A few are listed below.
| Site | Price | Type |
| CGTextures | Free (Low Qual) / Pay (High) | Photo |
| Filter Forge | Free (Med Qual) / Pay (Customizable) | Rendered / Create Textures |
| Maxwell Render | Free w/ Registration | Rendered |
| Texture Vault | Pay | Photo / Rendered |
| Allegorithmic MapZone | Free | Create Textures |
If you’re at all serious about high-end texturing, you need to understand shaders, which are the bits of code that render textures. Shaders work on the surfaces of objects to give them different properties – they calculate the shininess, the softness of the lights and shadows, the transparency, reflection, refraction, and all the rest. A good shader makes rubber look like rubber, and not like plastic or ceramic. Shaders also have a significant effect on performance, which is the bane of any serious texturer’s existence. A shader that tries to replicate water, with its bending light, ripples, and caustics, is going to be orders of magnitude more (time) expensive to use than a simple diffuse shader that only calculates lights and darks relative to nearby light sources, which is going to be orders of magnitude more expensive than a lightmap-baked diffuse shader.
Wikipedia: 3D Rendering
Unity3D Built-in Shaders (a must-read)
Unity3D Image Effects (think of these as full-screen shaders that act after other shaders)
Unity3D How To Write Shaders (advanced)
Intro to ShaderLab – A fantastic series of videos that go through all aspects of shader programming, each building on the last.
I’m going to spend an extra moment talking about lightmapping, because it’s a particularly difficult skill for people to grasp. Lightmapping is a means of precalculating lights and shadows, and creating a light and shadow texture. Imagine that you have a scene with a great hall, filled with chandeliers and perhaps a hundred distinct light sources and one hundred objects to be lit, each with one hundred faces. With realtime lighting, you’re looking at a million calculations (actually much much more) to find the total light and shadow on each surface – but for realism and smooth lighting, we need to further subdivide each face into many parts, and the calculations grow exponentially.
What lightmapping allows us to do is precalculate all the lighting when the objects aren’t going to be moving. We can then do this massive calculation just once, and create a number of black and white textures that give us the light and dark on every object. Now, when we want to render each of our objects, we don’t have to look at every light and every face – we simply drape our lightmap over the object and use it to lighten or darken our underlying texture (stone, perhaps, or a tablecloth).
If you’d like to learn a bit more about lightmapping and lighting, check out the resources below
Wikipedia: Lightmapping, Ray Tracing
Textured 3D models are beautiful, but you don’t have a game until you make them move.
The following is a list of some major programming languages that are used in a wide variety of game engines.
C# and JavaScript are two languages supported by the Mono framework (described below). If you’ve worked in one and are interested in learning / transition to the other, here are some links that might help you.
Unity3D Forums – The Unity Forums are a fantastic place to learn about designing in Unity. The Unity coding documentation is excellent, but other parts of the documentation are a bit spotty – so the forums are full of people of all skill levels discussing the finer points of lightmapping, or how to create realistic looking clouds. Additionally, there are a fair number of community-supported projects that have grown out of the forums – see the Community Ocean Shader for an example.
UnityAnswers – A thriving question & answer community related to all things Unity3D
Then, if you’re looking for code snippets ready to drop into your project, check out the Unify Community Wiki.
3DBuzz has an hour long introduction to Unity.
Some handy resources:
Script Reference – Unity has, by and large, a very good script reference. Many items in the API include examples in both JavaScript and C#.
API Timeline – shows when various methods and features were introduced.
ShaderLab, Unity’s high level language for programming shaders, is well documented, with tutorials and its own reference docs. Also check out the introduction to ShaderLab and Cg from the 2008 Unite Conference archives – look for ‘Unite 08 – Shaders’.
Speaking of shaders, BurgZergArcade has a series of excellent videos that introduce some basic and advanced features of shader creation.
While Second Life definitely has many upsides (the largest being a built-in community of tens of thousands), it can act as a ‘walled garden.’ What this means is that it’s hard to get assets in and out of Second Life. SL has texture limitations – no bump, spectral, or other maps – and model limitations, through Sculpties and more recently limited mesh support, as well as script limitations (no pre-compiled scripts, all scripts written in SL’s LSL scripting language). An additional factor for developers is SL’s permissions system, which can be a blessing (creating a thriving marketplace for virtual goods) and a curse (making it harder to set up and manage your content in SL).
The Second Life Marketplace is a great place to start getting an idea of what is possible in SL.
SL and OpenSim tend to be a bit more closed than other platforms – they allow primitive objects and sculpties, but not true mesh models. Thus, the 3D modeling programs above can be of limited use to SL developers. A great list of Second Life modeling tools can be found on the SL website.