There was an exercise I used to do when I was learning how to draw and paint, "copying from masters". I would choose an artist that I admired or wanted to learn from. I would find a drawing/painting that contained certain elements I wanted to improve upon. I would then re-create the drawing. I would break down the drawing or paintings into shapes, line quality, color or values. I would try to understand why the artist chose to add detail in certain areas, why the shadows were a certain color; where the light was coming from and where the vanishing points were. I would reverse engineer the artwork. Copying from masters forced me to dig deeper and find techniques of how to become a better artist.
Similar principles of reverse engineering can be applied in level design and game environment art. By looking at game environments or level designs, you can begin to break them down and work backwards from how the work was completed. You can reverse engineer individual elements and figure out how they were constructed. You can break down complex systems of level design and game environment art into basic step-by-step process.
In the following tutorial you will learn:
- What is reverse engineering?
- How does it apply to level design and game environment art
- How to reverse engineer in UDK, CryEngine 3 SDK, Source, and other game engines or level editors
- How to reverse engineer models, textures, material setups, scripting, optimization
- How to learn and apply techniques from reverse engineering
- My personal workflow and techniques of how I reverse engineer level designs and game environment art
Wikipedia's defines reverse engineering as "the process of discovering the technological principles of a device, object or system through analysis of its structure, function and operation. It often involves taking something apart and analyzing its workings in detail to be used in maintenance, or to try to make a new device or program that does the same thing without copying anything from the original."
Reverse Engineering level design is taking already completed map file or game environment model and breaking it down in how it was constructed.
Many game engines and level editors that you use, come with a set of example files or map files that you can begin to reverse engineer.
Lets cover some of these in more detail as it applies to specific game engines and game environment art creation workflow.
UDK/UNREAL ENGINE LEVEL EDITOR
In order to create a full functionable game environment using UDK (Unreal Development Kit, you can download UDK here) you have to know how to model assets, texture, optimize those assets, export/import, create material setups, generate and paint landscape, use kismet (scripting language in UDK) and optimize for best performance. These are just a few of the production pipeline processes. That is a lot to learn and do.
You could spend a considerable amount of time focusing on each process of the pipeline, reading and watching tutorials. But if you combine that with reverse engineering you can speed up the learning and implementation process.
In UDK you can reverse engineer kismet setups, modeling optimization, world properties of maps, gameplay and new map template set-ups to name a few.
UDK already comes with a handful example map files, models, textures and materials. You can open up any of these in UDK level editor.
You can find these examples in C:\ UDK\ UDK Version\ UDKGame\ Content\ Maps\ folder in UDK installation.
Lets use VCTF-Necropolis map as an example that comes bundled with UDK. You can find the map file in C:\ UDK\ UDK Version\ UDKGame\ Content\ Maps\ UT3.
Lets say you wanted to know how set up Vehicle Capture the Flag. Begin by looking at various actors within the map.
Where are the spawn points? Which actors define those spawn points? How are capture the flag areas defined in the map? Which actors are used near each base? What are the world properties in this map?
By going to World Properties --> World Info --> My Map Info. You can see where to enter min/max player count. Music for the map.
If you scroll down to Game Type and under Game Types Supported on This Map, you can take a look at what Epic used to set up VCTF gametype.
Another useful property to look at in UDK is Show Only Modified Properties. Here you can see only what Epic changed and modified. This can be used for any actor in UDK.
Lets say you want to insert a Dominant Directional Light (which acts as a sunlight in UDK). Instead of trying to figure out which values to modify in the properties, open up any of the example map files and take a look at Epic's modified properties for Dominant Directional Light.
You can see which values were modified so you know which values you need to focus on yourself for your map. You can do the same for fog actors, static mesh actors or sound actors.
By flying around the map, you can see how the map was constructed. How static meshes were used together and how the world was designed. You can select any static mesh or any actor within the map and by pressing F4, you can see the properties of each selected actor.
If you wanted to reverse engineer materials in UDK, you will need to open the material editor. Flowing water is a very complex material. You can reverse engineer how water was set up. Open up the Content Browser and search for water. Filter only by materials. Find a water material and double click on it.
Take a look at the material editor nodes that were used to create the water surface in UDK. You can start taking apart the water material set up and seeing how Epic did it.
Certain materials are documented a bit better and come with notes to help you.
Make sure you don't save over original map file when you exit UDK. If you want to tweak values and mess around with settings, save the original map file under a different name so you always have a back up.
You can do the same thing for Kismet setups and Matinee sequences. Access kismet setups by open up any example map file and hit the Kismet icon in the toolbar.
If you open up any of the example maps, you can look at the Kismet setups for that map file. You can also open up Matinee sequence that Epic created for that particular environment. There is a lot of information you can reverse engineer from just by looking at Kismet and Matinee setups.
By focusing on a specific aspect in the environment, you can begin to reverse engineer the set ups and processes Epic artists used.
In addition to UT3 style maps in UDK, you have 3 other folders with file examples.
As of March 2012 build there are Examples, Mobile, and Showcases folders. Each contains wealth of setups and examples that you can reverse engineer.
In Examples folder you will find:
If you are using UDK for mobile development, take a look in Mobile folder where you will find 5 file examples. These will be the key files to getting started UDK for mobile game design. These files include:
In Showcases folder you will find:
These 2 map files will help you with foliage and how to set up night and day cycle in UDK.
If you are using old school Unreal Tournament 3 level editor or Unreal Tournament 2004, Unreal Engine 2.5 build, you will be happy to know that you have even more options of which map files are available. Using UT3, you can open any official map files that the game ships with as well as any custom created ones you download.
If you are interested in getting started with UDK and Unreal Engine, take a look at full set of WoLD tutorials here.
CRYENGINE 3 SDK
CryEngine 3 is an extremely powerful engine that is capable of producing expansive outside worlds. It could be very daunting when you are presented with a blank map in CryEngine. All you see is a flat untextured terrain plane and water.
CryEngine 3 SDK comes with Forest.cry map file. This is the foundational map file that you should use to reverse engineer CryEngine 3 environments.
If you have access to Crysis 2 and its level editor (Crysis 2 level editor download), you may have more example map files to choose from.
Forest Map contains a full game environment created using the materials, terrain and gameplay properties to get you started. Here you can start to reverse engineer each individual section of the map or break down terrain layers, lighting, materials and model properties.
You can take a look at how the terrain was created, how it was painted.
You can break down the vegetation and see how Crytek detailed the foliage of the world. You can take a look at each object properties by selecting the object and right clicking to select Properties.
You can also take a look at the Asset Browser and examine each model for triangle count and material set ups.
You can reverse engineer Terrain Texture Layers as well as study material set up using Material Editor and browsing through numerous material set ups.
As well as you can take a look at how to create caves and light interior environments.
ForestCry map is the only example file that is currently available with CryEngine 3 SDK, but it is enough. The map contains a wealth of information and resources to deconstruct.
If you are going to modify the original map file, make sure you create a backup of the Forest map so you always have the original.
If you are interested in getting started with CryEngine 3 SDK, take a look at the set of WoLD tutorials here.
Source Engine has been around for about a decade and it is still going strong. Games such as Left 4 Dead, Left 4 Dead 2, Team Fortress 2, Half-Life 2 and its episodes, Counter-Strike Source, Day of Defeat Source and Counter-Strike: Global Offensive have been created using Source Engine.
If you are mapping for any of the above games you will be using Hammer Source level editor.
No matter what game you are mapping for in Hammer Source, each will come with example map files.
If you navigate to C:\ Program Files\ Steam\ SteamApps\ UserName\ sourcesdk_content you will find a handful of folders and example files. For example I currently have the following folders cstrike, dod, generic, hl2, hl2mp, portal, tf.
Inside each folder you will find mapsrc, materialsrc and modelsrc folders, each containing example files. Below is HL2 mapsrc folder with its content.
Inside cstrike folder, and mapsrc folder there are map files for cs_militia, de_cbble as well as example files for lightmaps, water and 3d skybox.
Using the map files for de_cbble and cs_militia you can successfully reverse engineer hostage and demolition game types as well as learn how to properly optimize, how to set up buy zones, lighting and detail the world.
For Counter-Strike: Global Offensive there are a handful of example files for updated and new maps that you can open in Hammer. Browse to C:\ Program Files\ Steam\ steamapps\ common\ Counter-Strike Global Offensive\ sdk_content\maps. There you will find .vmf map source files.
Since all these games use the Source Engine and the foundational principles for mapping are the same across L4D, L4D2, TF2, HL2, CS and DoD are the same, you will find inside C:\ Program Files\ Steam\ SteamApps\ UserName\ sourcesdk_content\ hl2\ mapsrc even more important example files that pretty much will set you up to create your own map by reverse engineering each element of the example files.
For L4D1/2. You will find example files in C:\ Program Files\ Steam\ SteamApps\ common\left 4 dead 2\ sdk_content
Inside Deadline2 mapsrc folder you'll find scavenge and survival example files, as well as all the info you need to set up your own custom campaign folder structure and all needed addoninfo.txt files.
You can open any of these example map files through Hammer Source editor for each game.
Open up Hammer Source, go to File --> Open and navigate to the mapsrc file to open any of the .vmf file types.
OTHER LEVEL EDITORS
The above examples are from some of the most commonly used level editors and game engines. If you use other games to map for such as Radiant or Unity3D engine, take a look at some of the file examples that each editor comes with.
Begin to reverse engineer what developers already figured out and gave to you.
OBJECT PLACEMENT AND DETAILING
Common questions about object placement and detail that you will encounter are:
- How much detailing do you include in your map?
- Where is the line between too much and not enough?
There are many factors that go into this such as where is the playable areas, how close the player will be to these objects, will they interact with these props or are they distant set dressing? Is what you are creating a playable map or is it a game environment to admire that a player will never walk through?
You can get a sense of object placement, detailing and optimization by looking at finished game environments.
For example if you map for Modern Warfare multiplayer load up one of the maps and run around looking at objects and detailing of the environment. If you know the flow of the map, and know where majority of action takes place, look at how much detail the designer included in those areas. You can do this for any of the games you map for. Level designers already optimized and tested these maps.
Modern Warfare 3 object placement and detailing:
CS:GO object placement:
By looking at already completed professional work you can get an idea what current game engine games are capable with their detailing work and ideas for prop/asset placement.
Important thing to note that how much detailing you include will vary from game engine to game engine. If you are mapping for Crysis 2 or using CryEngine 3 SDK, it would be a good standard to measure yourself to by looking at the environments that were designed using CryEngine and how much detailing was used to create the environments. Same goes for any Source Engine or Unreal Engine based games.
This is a good way to get started as you learn more about the specific engine you are working with and their optimization pipelines.
GAMEPLAY, FLOW AND PACING
You can learn how gameplay flow was created for a map. The best way to do that is to play the map a lot and wear a level designer "hat". This means you play actively and try to understand why the layout was created.
Ask a lot of questions, such as:
- Why are the spawn points placed in these locations?
- Where are main pathways that players use to get to the map's objective?
- Are there more then one ways to get to the objective?
- Does the map cater to specific player type (sniping, close-quarters)?
- How are the players using the paths?
- Do they prefer one to the other?
- Which weapon dominates this map?Why?
- Does the map favor one side over the other?
- Is the map balanced?
- Does one side has advantage over the other? If yes, why?
- Is the flow linear or circular?
Instead of figuring out what makes a good multiplayer map, play a lot of multiplayer maps and reverse engineer each one for gameplay, flow and pacing.
Another helpful way to learn gameplay, flow and pacing is to pick up any of the gameplay guide books. Many of them provide top down layouts of maps and pathways that you should take, all the spawn locations, weapons and objectives within a map.
Lately I've been studying Modern Warfare 2 and Black Ops's players guide on how the developers used a single map, one type of layout and created 5 different gametypes. In both of these games you will find the same map is used for DeathMatch, Team Deathmatch, Demolition, Capture the Flag, Headquarters, Sabotage, Search and Destroy and Domination. Each time you play the map in different gametype, location is the same but objectives are different. I wanted to learn how the layout was designed to support all of these objectives.
Another recent walk-through guide I purchased was for Portal 2. It includes really nice layouts and all of the puzzles deconstructed. You can reverse engineer the gameplay puzzles Valve did by looking at what is already completed, why it works and how could you apply this to your work.
If you play Counter-Strike: Global Offensive, at the beginning of each map start you get to see a top down layout of the map you are about to play. Complete with player spawns and objectives marked. This is very helpful of studying the layout of the multiplayer map. Grab a screenshot and study what makes that map successful.
click on image to view full size
Links to Amazon.com:
MODELS, TEXTURE, MATERIALS
Many level designers release their work and make it available for others to see how something was done. Many game environment artists post model wireframes, texture shots of diffuse, specular and normal maps, material set ups and lighting. You may not get step-by-step tutorials but by looking at completed game environments you can begin to deconstruct how a certain level designs or game environment props were created.
Another great way is to browse through level editor's models to get a better understanding of wireframed models; collusions and polygon count as well as topology.
Source: For Source you can use model viewer. Look at the wireframe and the topology. Look at the triangle count and if you modeling your own props for Source, try to aim for that poly count yourself.
You can use the Model Viewer to browse models in Source.
Topology view in Model Viewer in Source.
Or use the prop_static properites to browse through the model selection.
click on image to view full size
CryEngine 3 SDK: Take a look at Asset Browser and various models and props within CryEngine.
Take a look at the wireframe, triangle count, and level of details.
Open up the forest map and click on many of the models in the environment. Select one and look at the properties on the right hand side under Brush and Entity Parameters. How were they set up? What were the input values that Crytek used to define that model within its environment? This will give you a lot of insight into how you can do the same.
UDK: If you are using UDK, you have access to the Content Browser, Static Mesh Browser and Material Editor. You can open up any materials and see their set up.
You can use the Static Mesh Browser to look at different LODs and how they were set up. Take a look at objects collision, uv channel count, uv layout for textures and lightmaps, triangle count, vertices count, lightmap resolution to just name a few. You can use this information to get a sense what you need to do to set up your own custom models.
click on image to view full size
Many of these model and material setups will depend on the type of environment you are creating but this will give you a general guideline to aim for. Which is a great standard starting point for your own work.
PORTFOLIOS, FORUM WORK, FINAL SHOWCASE WORK
Start visiting portfolio work of game environment artists, showcased final work and work in progress on various forums. You will often find wireframe examples of models, along side with high poly mesh and low poly mesh examples, textures of diffuse, specular and normal maps.
By looking at how something was done, which texture maps were used, how the wireframe is laid out on a low poly model and how the UVs are laid out in order to use maximum UV layout space can teach you a lot to use for your own workflow pipeline.
HOW I REVERSE ENGINEER LEVEL DESIGNS AND GAME ENVIRONMENTS WORKFLOW
The following are steps at how I reverse engineer game environments and level designs. When I am trying to figure out a process or technique that I don't know how to do or I need to get better at. This is what I do when I deconstruct something.
First I define what it is that I need to reverse engineer and learn the process of. This could be materials set-ups, lightmapping UVs, lighting, map optimization or L4D2 scavenge set up. I open up the level editor and go through their example maps. Looking at specific examples that are relevant to what I am reverse engineering.
I get a notebook or sketchpad and begin to write out everything I notice. If it is a material setup or I/O (input/output) system in Hammer Source. I begin to re-create it on paper. Copying it to my notes.
This may seem tedious at first, why would I need to copy something that I see on screen. But this allows me to connect important elements of the process that I may not get just by looking.
During this step I often begin creating mindmaps. Mindmaps are visual outline. It helps me to connect ideas and elements visually.
After I go through seeing how a particular element was created and I have taken detailed notes. I copy the map file or copy the elements of what I am deconstructing into a new map file so I don't mess with the original. If it is a material setup, I begin to modify values of the nodes, plug/uplug various nodes to see what they do. I start tweaking values and see what everything does. During this step, I often go through some of the tutorials I find online or read through the official documentation (Official Docs for UDK, CryEngine 3 SKD).
Once I get a good understanding what it is that I am dealing with, I start a test map and try to re-create it from scratch. I often look through my notes and see if that is enough. Sometimes I open back up the original file and look through at things I may have missed.
By going through and creating the setups from scratch, it helps me to remember it better and it becomes part of my process.
Going through these steps and reverse engineering maps and certain production processes have been of the most helpful techniques I've found to speed up my skill in any workflow of level design and game environment art.
By taking a very complex setup you can begin to break down to its individual element and see why and how something was put together. This is a lot easier to understand and figure out then to try to learn everything from scratch and put it together yourself.
Break everything down into individual elements and re-create it, noticing what each component does and how they relate to each other.
I can't recommend reverse engineering enough for beginner or advanced level designers and game environment artist.
Have you used reverse engineering process? What have you learned from taking apart map files? Has it helped you ? Share your story and process and comment here.