Quake3-16px.png
This article's documentation is for anything that uses the Source engine. Click here for more information.

User:SirYodaJedi/Porting IdTech 3 maps to Source

From Valve Developer Community
Jump to navigation Jump to search

Icon-essay.png
This is an essay.
It contains the advice or opinions of one or more of the Valve Developer Community's contributors.
This page is not an encyclopedia article, nor is it one of the Valve Developer Community's policies or guidelines, as it has not been thoroughly vetted by the community.
Some essays represent widespread norms; others only represent minority viewpoints.
Icon-under construction-blue.png
This is a draft user page. It is a work in progress open to editing by anyone.
Remember to check for any notes left by the tagger at this article's talk page.
Info icon
This page documents information about an engine not developed by Valve. This information is documented here because it has technical and/or historical relevance to Valve's engines.

This page attempts to document the fiddly process of converting a map from a id Tech 3 id Tech 3 game to a Source Source game. This guide will demonstrate it by porting the Wikipedia icon Wolfenstein: Enemy Territory map "Würzburg Radar" to Day of Defeat: Source 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 (with the missing ones found in this repo).

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. J.A.C.K. - Can convert the Id Tech 3 map files to GoldSrc GoldSrc format, as well as export as VMF
  • GtkRadiant 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 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 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:
Icon-Important.pngImportant:For plugin compatibility reasons, this guide uses Blender 3.1.1. Any version between 2.92 and 3.1.1 should work, but newer versions may have issues.
  • GIMP GIMP - Assorted texture manipulation. Adobe Photoshop Photoshop can also be used, but this guide focuses on the free option.

Additional useful tools

  • TrenchBroom 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).
  • Wikipedia icon 7-Zip (or Wikipedia icon WinRAR) - Preferable for extracting PK3s. Much faster than using Windows's built-in ZIP extractor, and doesn't require renaming the file extension.
  • Blender BSP Importer - Can import and export IdTech 3 BSPs, MD3s, and Axial Projection MAPs.

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.
  • 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.
  • The Wolfenstein: Enemy Territory game pack is missing several map prop models; this can be found separately.
  • The Star Trek: Elite Force II gamepack can be found separately.
  • [Todo]

Decompiling maps

It is preferable to work from source map files, when available. This is especially the case if the map was compiled using modern compilers, as modern versions of Q3Map2 will by default strip lighting and misc_model entities from the compiled BSP.

Note.pngNote:
  • While the lighting entities can't be used in Source 1, and should be recreated anyway, their placement can be handy when determining where to place the Source 1 lighting entities.

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
Note.pngNote:xxxx is the game abbreviation, as defined in games.cpp.

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
Note.pngNote:For other versions of Q3Map2, replace obj with ase, and use Noesis to convert the resulting file to OBJ or FBX (Noesis's SMD exporter results in flipped UVs).
Tip.pngTip:This can also be used to bake the vertex coloring and texture blending into megatextures for terrain models, as id Tech 3 id Tech 3 uses a much different method for blended textures compared to the displacements used by Source Source.
Keep static prop lighting limitations in mind if doing this; consider prebaking lightmaps into the $basetexture or a Modulate overlay if not using Source 2013 Multiplayer.
Note.pngNote:Neither setting includes patch meshes; a Quake III BSP importer for Blender should be used to recreate these.
Todo: Provide such an importer.
Note.pngNote:
  • Q3Map2 does not support BSP files from Call of Duty, which uses a slightly modified version of RtCW's BSP format. CoD BSP Decompiler can decompile CoD 1+2 BSPs. Unlike most IdTech 3 BSP formats, CoD BSPs don't embed static prop geometry in the compiled map.
  • Q3Map2 does not support BSP files From Elite Force II, which uses a modified BSP format. Use 005 Decompiler 005 Decompiler instead.

Converting uncompiled map files

Todo: Cover stuff:
  • 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

Tip.pngTip:Having the Quake III Shader Manual (and the newer Q3Map2 version [1]) at one's fingertips is essential to ensuring the converted VMTs are as accurate to the original Quake III "shaders" as possible.

Converting textures

Choosing the right image format

Todo: Discuss a bunch of stuff
  • 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, and the benefits of disabling are apparent on low-res textures.
  • In RtCW, WolfET, and possibly other games, textures with resolution of 128x128 or lower are never compressed.
  • 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. For example, VRAD has a bug where it can't read the alpha channel from DXT3 textures for generating texture shadows, so it will be necessary to use DXT5 instead.
    • In Medal of Honor: Allied Assault, the DDS versions are allegedly higher resolution than the TGA/JPG versions; I don't have MoA:AA, so I can't confirm this.

Selecting material parameters

See User:SirYodaJedi/Porting_IdTech_3_maps_to_Source/Shader2VMT

Replacing tool textures

IdTech 3 Source Notes
common/caulk tools/toolsnodraw
common/nodraw tools/toolsinvisible
common/hint tools/toolshint
common/skip tools/toolsskip
common/trigger tools/toolstrigger
common/areaportal tools/toolsareaportal
common/origin tools/toolsorigin Deprecated; preferably delete and set the origin KV.

Converting models

MD3, MDC, MDS, MDM/MDX

  • In a version of Blender from 2.92 to 3.1.1, install RtCW:ET Model tools v1.0.0_rc3 and Blender Source Tools v3.2.5.
  • Open a new workspace in the selected version of Blender. Delete the default cube.
  • Press N to open the sidebar, then switch to the "RtCW/ET" tab.
  • In the import section, select the source format and file path, then press the import button.
  • For each mesh, select it, right click, and choose shade smooth.
  • Check the skin file and check if any skins are set via mesh name, instead of via material name. If so, reassign materials accordingly.
  • Export the collection as SMD. This will convert split edges to sharp edges, to make things easier to edit.
  • Open a new workspace, then reimport the SMD.
  • Unflag sharp edges as desired. The importer generates accurate normals, but the normals of vanilla models aren't too pretty to begin with.
  • When writing the QC file, put $origin 0 0 0 270 so that the model is rotated correctly.

ASE, LWO

Todo: Theres several ways to do this, but the easiest is probably using NRC's Q3Map2 to convert to OBJ.

MDR, GLM

Todo: Using FBX results in models being really tiny when imported into blender; can this be fixed?
  • Use Noesis to convert the models to FBX.
    • Noesis can export directly to SMD, but the UV map will be flipped vertically (I reported this bug to the creator, but he refused to believe the current behavior was incorrect).
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 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 Crowbar can be used as a handy frontend for compiling.

Skin files

Unlike the baked index tables in Source, IdTech 3 uses loose .skin files to change a model's skin.

Skin files are formatted similarly to CSV files. Each line contains an internal name, followed by the material (or opaque texture) to remap to. Confusingly, the internal name can refer to either an actual material (or opaque texture) name, or a mesh name.
Occasionally, skin files will also be used to define what model to put at an attachment. This is usually only used on character models, and the actual attachment names (from a TAG file; see the documentation for the RtCW:ET blender tools) aren't always used, but instead are set via game code.

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

See User:SirYodaJedi/Porting IdTech 3 maps to Source/Entities}}

External links