User:SirYodaJedi/Porting IdTech 3 maps to Source/en
This page attempts to document the fiddly process of converting a map from a id Tech 3 game to a Source game. This guide will demonstrate it by porting the Wolfenstein: Enemy Territory map "Würzburg Radar" to Day of Defeat: Source, as the two games core game modes are similar, the original map sources are officially publicly available, and most of the necessary auxiliary assets are provided with GTKRadiant.
Getting started
Skills required
This article assumes some familiarity with the following skills:
- Mapping
- Basic 3D model editing
- Image manipulation and conversion
- Audio conversion and looping a sound
- The command-line interface
Installing tools
Required tools:
- The original game (duh)
- J.A.C.K. - Can convert the Id Tech 3 map files to GoldSrc format, as well as export as VMF
- GtkRadiant - has a lot of models and material information that aren't present in the games' files, due to being baked into the BSP. It also includes Q3MAP2, which can decompile maps you don't have the source MAP files for.
- NetRadiant-Custom - it's fork of Q3MAP2 may be preferred for decompiling maps, as it supports Valve220, allowing for more accurate texture mapping. Additionally, it can convert IdTech 3 maps to OBJ, instead of only MAP or the ill-supported ASE.
- Blender - Can do necessary fine-tuning to the converted models, as well as do the conversion itself with the proper plugins. The following plugins are used:
- Blender Source Tools - SMD import and export support
- RtCW:ET Blender Model tools - MD3, MDC, MDS, and MDM/MDX import and export.
- GIMP - Assorted texture manipulation. Photoshop can also be used, but this guide focuses on the free option.
Additional useful tools
- TrenchBroom - Can export the unconvertible patch meshes to OBJ, which can be used as a prop_static.
- Noesis - Can open most relevant models, except MDC. SMD export has flipped UVs and lacks animation; use FBX instead.
- Half-Life Quake3 Map Converter - can allegedly be used instead of Jack for map format conversion, but is older and untested, and creates a MAP instead of a VMF (not to mention, is Windows-only).
- 7-Zip (or WinRAR) - Preferable for extracting PK3s. Much faster than using Windows's built-in ZIP extractor, and doesn't require renaming the file extension.
Preparing workspace
To start, it will be necessary to decompress the PK3 archives containing the game assets.
- Create a new folder which will house the assets. This should be separate from the game installation, for example
D:\Applications\IdTech 3 Modding\Wolfenstein Enemy Territory\
. - Inside the newly-created folder, create a folder with the same name as the game's PK3s are contained in. For example
D:\Applications\IdTech 3 Modding\Wolfenstein Enemy Territory\etmain\
. This will be henceforth referred to as the source asset directory. - If the game has any subfolders inside the folder containing the PK3s, copy those folders to the source asset directory.
- Extract all the PK3s from the original game to the source asset directory.
- In the GTKRadiant folder, navigate to the
installs
subdirectory. This contains the "game packs" which have the necessary auxiliary assets.
- Note:GTKRadiant 1.6 is missing the Jedi Outcast game pack. This will need to be downloaded separately; it can be found in GTKRadiant 1.4.
- Todo:
Decompiling maps
It is preferable to work from source map files, when available. Compiled id Tech 3 maps don't (usually) have lighting entities, and lightmapped models are embedded into the map's mesh data. When a map is decompiled, the embedded models are removed, no lighting data is available, .
Nonetheless, map sources are frequently not available, leaving no other option. Fortunately, Q3MAP2, the same compiler used to compile id Tech 3 BSPs, can also decompile them! The following command will decompile the map into a format that can be properly edited:
q3map2 -game xxxx -convert -format map mapname.bsp
As this doesn't include embedded models, it often is also necessary to convert the BSP to a 3D model. NetRadiant-Custom's Q3Map2 supports converting the BSP to OBJ, as such:
q3map2 -game xxxx -convert -format obj mapname.bsp
Keep static prop lighting limitations in mind if doing this; consider prebaking lightmaps into the $basetexture or a Modulate overlay if not using .
Converting uncompiled map files
- Using Jack to create a VMF with the brushes and entities, and a MAP file with just the patch meshes
- Using Q3Map3 from NRC to convert the patches-only MAP directly to OBJ (which does work, unlike BSP to ASE/OBJ)
Converting materials
Converting textures
Choosing the right image format
- IdTech 3 supports texture compression, but not all versions used pre-compressed textures, instead using JPG, TGA, and sometimes PNG.
- Not all GPUs supported texture compression back in 1999, so it was done on-the-fly and is able to be disabled. Most people disable it nowadays, as VRAM is much more plentiful.
- Some games used DDS. If it is necessary to use a DDS texture as a source, use the same image format as the original texture if possible.
Selecting material parameters
See User:SirYodaJedi/Porting_IdTech_3_maps_to_Source/Shader2VMT
Converting models
- Use Noesis to convert the MD3 and ASE models to FBX.
- Noesis can export directly to SMD, but the UV map will be flipped.
- Confirm: Do animated props need to be converted via a different method?
- Import to and export from Blender. Editing can be done, if necessary.
- For static props in Source 2013 Multiplayer, it may be desireable to redo the model's UVs so that everything is on one texture, and no UVs are overlapping or tiled. This allows model lightmapping to be properly used, as model lightmaps use the same UVs as the $basetexture.
- Write QC files.
- Compile.
- Crowbar can be used as a handy frontend for compiling.
Converting sounds
For the most part, sounds from id Tech 3 games can be used in Source without much hassle as long as they are converted to a compatible format (if they aren't already). The exception, of course, is looped sounds. Unlike id Tech 2 and Valve's engines, id Tech 3 does not require WAV cue points for looped sounds. This means that cue points must be added, and non-WAV sounds that are looped must be converted to WAV, which greatly increases file size.
Converting map content
Entities
A few common engine entities in IdTech 3 have analogous entities in Source 1.
id Tech 3 entity | Source entity | Notes |
---|---|---|
func_group |
N/A | Func_group brushes should be untied from entities and returned to worldspawn, as VBSP lacks func_group support. |
misc_model |
prop_static |
Unlike prop_static in Source 1, misc_model in IdTech 3 can be lightmapped in the same way as brushes. This is done sparingly, via spawnflag 2 "force meta", as it basically converts the model into trisoup brushes. Most small or medium-sized misc_models are lit about the same as prop_static (with Q3Map2 doing bounced lighting on them like CSGO). Workaround: There are ways of improving lighting, depending upon the engine branch. These are more expensive, however, and should only be done if the default vertex lighting is unsatisfactory.
|
misc_gamemodel |
prop_dynamic |
Source 2013 doesn't completely support arbitrary vertex animation, so animated MD3s or MDCs will need to be re-animated with a skeleton. |
info_notnull |
info_target |
Works the same way; Valve decided to rename the entity in GoldSrc. |
Terrain
Patch meshes
- Use models
- Recreate as displacements (if possible)
- Convert to brushwork, using OBJ2MAP or similar (if practical)
External links
- Porting Quake 3 Maps to Source on the Momentum Mod documentation (only covers map geometry and textures; does not cover patch meshes)
- Pcpie' tutorial on porting Quake 3 Maps to Source on GameBanana (only covers map geometry and textures; does not cover patch meshes)
- Q3Map2 manual - Discusses how to compile a model from a MAP; essential for porting patch meshes, which cannot be ported directly, and instead need to be either recreated as displacements (when possible) or static props.