OVERLOAD TO SOL CONTINGENCY (UDK / UNREAL TEXT, .T3D) LEVEL CONVERTER Author: Maximilian Schulz (Discord: madmax1998.) http://sol-contingency.com Version: 3 - January 26, 2026 Purpose ------- To convert .overload files (generated by Overload Level Editor) to Unreal Text (.t3d) files, importable into Unreal Development Kit (Unreal Engine 3) as used by Sol Contingency: Proving Grounds. Open source and modifying ------------------------- This PowerShell script is free to be studied and modified as you see fit. If you want to make improvements to the conversion, please let me know about your modifications so they can be included in the official source. Before modifying, delete the signature block at the bottom of the file since it will be invalidated. Be aware that invalidating or removing the signature then requires PowerShell's ExecutionPolicy to be set to Unrestricted to allow running of unsigned scripts. Technical --------- .t3d files are text-based instructions for the Unreal Editor to build a map from. They can be imported inside Unreal Editor via File -> Import -> Into New Map. You will need to build the geometry, lighting and paths for the map to become visible and playable. Textures (materials), lights or entities may be missing and need to be added inside Unreal Editor before the map can be saved and played; see the notes below. The conversion is segment-to-brush only. No meshing or decals are converted. The main purpose of this converter is to give map builders familiar with the Overload Editor a fast way to create cubic geometry to make a map for Sol Contingency. Unreal's tools are much slower when building a level from brushes and usually it expects you to use meshes for the majority of the map, making the creation of 6-DoF maps more complex than the Overload Editor. By building the layout of the level in the Overload Editor and converting to Unreal, you give yourself a head start. Recommended workflow is to import the .t3d into an empty Unreal map, apply materials to the brushes, place lights and decorate with meshing, or use the brush layout as a guide to fully mesh out the map. (Some) weapons, doors, entity lights and player starts are converted to Sol-C or Unreal equivalents. Light decals are not converted. The entities are: LIGHT/POINT = PointLight LIGHT/NO_SHADOW = PointLight LIGHT/SPOT = SpotLight LIGHT/SPOT_NO_SHADOW = SpotLight SPECIAL/PLAYER_START = SDOFPlayerStart ITEM/FALCON = SDOFPickupFactory_MissileDumbfire_TriPack ITEM/HUNTER = SDOFPickupFactory_MissileSeeker_TriPack ITEM/MISSILE_POD = SDOFPickupFactory_MissileAtlas_TriPack ITEM/NOVA = SDOFPickupFactory_MissileCerberus_Single ITEM/REFLEX = SDOFPickupFactory_IonCannon ITEM/DRILLER = SDOFPickupFactory_GatlingCannon ITEM/CRUSHER = SDOFPickupFactory_DispersionCannon ITEM/THUNDERBOLT = SDOFPickupFactory_MAC ITEM/SHIELDS = SDOFPickupFactory_Shields ITEM/ENERGY = SDOFPickupFactory_Energy ITEM/AMMO = SDOFPickupFactory_GatlingAmmo ITEM/INVULN = SDOFPickupFactory_Invulnerability ITEM/CLOAK = SDOFPickupFactory_Cloak DOOR/ = SDOFDoor_Lunar The Unreal map will be untextured by default unless you specify a target texture package to be used in the Unreal Editor. If you do, the Overload texture names will be written to the .t3d file as material names, with the package name as their path: .Materials._MAT In the Unreal Editor, create a package of the same name and import the textures into it, creating a material for each texture inside the group "Materials" and named "_MAT". Upon import of the .t3d file into Unreal, any materials found in the target package matching the names in the .t3d file will be applied to the map. The converter will attempt to transfer source texture alignment using a basic algorithm that is error-prone, especially if a surface has non-parallel edges. This mostly affects texture rotation, so be prepared to correct wrongly rotated textures in the Unreal Editor. IMPORTANT NOTE: segments with warped/sheared sides, as often generated by the Tunnel Builder tool, will be split by the converter since Unreal cannot handle non-coplanar surfaces. Unfortunately the collision on these surfaces can become messed up, with invisible walls blocking players' paths. Consider removing the problematic brushes in the Unreal Editor and replacing them. WARNING: the converter allows you to control the surface-splitting sensitivity or forego splitting altogether. I do not recommend this unless you have a good reason since the results will not be better or more precise. The default parameter values have been tuned for the best possible results. If you want to learn more about the Unreal Text format, you can look at the contents of the included file T3D_Documentation.t3d. It's an example of a simple conversion of a few segments, with # comments in it. Usage ----- Run the PowerShell script OL2UDK.ps1 from your PowerShell or (Windows) Terminal console window: .\OL2UDK.ps1 (from script directory) [path]\OL2UDK.ps1 (from another directory) You may need to set your PowerShell system to allow signed scripts to be run. Use the Set-ExecutionPolicy command: Set-ExecutionPolicy RemoteSigned Or, alternatively, use the batch file (see below). Enter (or copy-paste) the path to your source .overload level file (with extension) and hit ENTER. Optionally, run the script and specify these script parameters instead: -SourceFilePath [.overload file] -OutFilePath [.t3d output] -MapName: the internal name the Unreal map will have in the engine and editor (default "OverloadMap"). -ScaleFactor: the multiplier of the vertex coordinates when converting from Overload to Unreal (default 64.0). Essentially how big the level is gonna be. -RoundDecimal: the decimal place to round vertices by; greater number means more precise conversion (default 3). Not very useful to change. -SplitThreshold: amount of surface warp/shear to allow before splitting it, ONLY touch if you know what you are doing (default 0.0025). -NoSplit: use this parameter to prevent surface splitting. Will result in errors in Unreal Editor on any non-coplanar (warped) surfaces. -NoEntities: no entities will be written to the .t3d file. -MaterialPackage: specify the texture target package to write into the .t3d file. Use this if you want to transfer the source texture names to UDK. -GetTextures: does not perform conversion, but lists the texture names found in the source level (useful to make a texture set for UDK). At your PowerShell prompt, you can type Get-Help .\OL2UDK.ps1 (from script directory) to see an explanation and the possible parameters. Batch file: OL2UDK.cmd ---------------------- This batch file runs the PowerShell converter script without parameters. It can be executed from File Explorer via double-clicking and does not require modification of your ExecutionPolicy (it temporarily sets it before running the script). This is the easiest way to run the converter. Enter (or copy-paste) the path to your source .overload level file (with extension) and hit ENTER. The script will generate the output .t3d file in the input path. Conversion runs with default parameters. Feel free to edit the batch file to add parameters as noted above. Output and logging ------------------ During the conversion, the script will output useful information about the process and the results. Scroll through the output in your command line to get a clue about what the converter has done. If you want even more information about the segment conversion, start the script with the -Verbose parameter. The script uses the PowerShell transcription function to log the output to a file called OL2UDK_Log.txt. If you need to recall the output later, look at it. ---------------------- Questions? Contact me on Discord (madmax1998.). You can find me in the official Sol Contingency server and the "6DoF Online" server, or email me at madmax1998@gmail.com