Import Tool Documentation

From Valve Developer Community
Jump to navigation Jump to search
English (en)Deutsch (de)Suomi (fi)Русский (ru)Українська (uk)中文 (zh)Translate (Translate)

Import Tool Documentation

As part of CS2’s Workshop Tools, we have included a Python script for helping content creators to quickly port maps and assets over to Source 2. Before getting started there is some preparation work which must be done.

Note.pngNote:This guide originally pointed to 🖿Steam\steamapps\common\counterstrike source 15\csgo, which seems to be an internal name for 🖿Steam\steamapps\common\Counter-Strike Global Offensive\csgo
All paths in the guide have been modified to reflect what most users have in their file system.


Prerequisites

Precompiled Content

Precompiled content (such as any custom vmt, vtf, mdl, etc.) must be located in the 🖿Steam\steamapps\common\Counter-Strike Global Offensive\csgo folder. For example:

  • 🖿Steam\steamapps\common\Counter-Strike Global Offensive\csgo\materials
  • 🖿Steam\steamapps\common\Counter-Strike Global Offensive\csgo\models
Note.pngNote:Any custom content archived in a .bsp will need to be extracted into the appropriate folders before importing. The import tool also requires a vmf, so if you only have a bsp for your map, you will need to decompile it to a vmf. Finally, do not copy .vmf files to the above folder as it will confuse the import tool.


Source Map Files

Your map files (vmfs) can live anywhere outside of 🖿Counter-Strike Global Offensive as long as they are in a 🖿maps folder. Any prefab or instance vmfs referenced by your map must be in whatever subfolder structure is expected by the map. For example:

  • 🖿c:\mymapfolder\maps\mymap.vmf
  • 🖿c:\mymapfolder\maps\prefabs\mymapprefab.vmf
  • 🖿c:\mymapfolder\maps\instances\mymapinsstance.vmf


Source Texture Files

If you have uncompressed source files for textures, (tga, psd, etc.) the import tool will try to use those when importing materials, otherwise it will fall back to converting and recompressing vtf files (which can decrease texture quality). For this to be successful, make sure your source files are in a mirrored location of the vtfs in 🖿\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\materials. For example:

  • 🖿C:\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\materials\mymaterial\mytexture.vtf
  • 🖿C:\mymapfolder\materials\mymaterial\mytexture.tga


Getting Started

1. Installing Python 2.7.14

To run the import script you will need to install Python 2.7.14 which you can grab here: https://www.python.org/downloads/release/python-2714.


2. Setting Environment Variables

Next you will need to set two environment path variables so that Windows knows where your python installation lives and other import libraries in the 🖿Steam\steamapps\common\Counter-Strike Global Offensive\game\bin\win64 folder:

Press the Win+X to access the Power User Task Menu.

  • In the Power User Task Menu, select the System option.
  • In the System window, scroll to the bottom and click the About option.
  • In the System > About window, click the Advanced system settings link at the bottom of the Device specifications section.
  • In the System Properties window, click the Advanced tab, then click the Environment Variables button near the bottom of that tab.
  • In the Environment Variables window (pictured below), highlight the Path variable in the System variables section and/or click the New button.
  • Add a path variable with the Value being the path to where you installed Python, and the path to your 🖿Counter-Strike Global Offensive\game\bin\win64 folder , separated by a semicolon. e.g. 🖿C:\python27; 🖿C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\game\bin\win64
  • Do this for both User Variables and System Variables:

Maps import environment variables.png

Note.pngNote:To be sure that the Path variables are applied properly, it may be necessary to restart your computer.


3. Installing the Colorama Extension

Next you will need a Python extension called colorama. To install this, simply open up a command prompt (search for cmd in Windows Start Menu) and type

python -m pip install colorama

Maps colorama ext.png


4. Creating a new Addon with the Workshop Tools

Before running an import, you will need to create a Workshop Tools addon so that the imported content has a valid destination. To make a new addon, simply launch the game with Workshop Tools, and from the UI click "Create New Addon" and take note of the name for later.

Maps create addon.png


5. Locating the Import Script

First up is locating the python import script, which can be found in the following folder: 🖿(YourSteamInstallFolder)\Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\import_scripts

Maps import script.png

Once you have located the folder, you will want to open up a command prompt here. This can be done by simply typing "cmd" in Windows Explorer address bar and hitting enter:

Maps open command.png

Note.pngNote:There is also an experimental GUI called 🖿import_map_community_gui.exe more info on this can be found at the end of this document.


6. Running the Script + Parameters

Now you are ready to run the script by entering the following:

python import_map_community.py <s1gameinfopath> <s1contentpath> <s2gameinfopath> <s2addon> <mapname> -usebsp


Script Parameters

Backslashes(\) are used for paths on Windows 11, otherwise FileNotFoundError will occur during the import process.


<s1gameinfopath>
Path to folder containing CS:GO's gameinfo.txt, this MUST be the path that contains the compiled CS:GO model and material content you want to import (e.g. .mdl, .vmt).


<s1contentpath>
Path to folder containing source content, (.vmf .psd .tga etc.). As mentioned above, for the importer to successfully find and use source texture files, make sure they are in a mirrored location to that of the .vtfs (see example above)
Note.pngNote:The S1 content path cannot have spaces in it.


<s2gameinfopath>
Path to folder containing CS2's gameinfo.gi


<s2addon>
The name of CS2 Workshop addon that you created earlier. This is where your assets will be imported to.


<mapname>
This is the map name (.vmf) without extension, e.g. de_examplemap that you wish to import. If your map sits under a subdirectory of the 🖿maps folder in <s1contentpath>. Be sure to add this path before your map name. For example: 🖿my_maps/de_examplemap


-usebsp
This runs the map through a special vbsp process to generate clean map geometry from brushes, removing hidden faces and stitching up edges, making the CS2 version easier to work with in Hammer. It preserves world (vis) brushes and func_detail brushes for compatibility with Source 2. This parameter will also merge all func_instances in your map. Note that the final geometry will be triangulated, but cleaning it up is a fairly simple process, which will be explained in another guide.


-usebsp_nomergeinstances
Use this instead of -usebsp if you wish to both generate clean geo and also preserve func_instances. Note that this takes a little longer as it has to run through the import process twice. The final geometry will also be triangulated.


-skipdeps
Optional: skips importing all dependencies/content and only generates the vmap file(s). This provides a 'quick' import when iterating entities for example. Do not run with this if you are importing for the first time.


Example:

python import_map_community.py "C:\Steam\steamapps\common\Counter-Strike Global Offensive\csgo" "c:\map_sources\" "C:\Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo" de_example_cs2 de_examplemap -usebsp


7. Post Import Fixup

After your level has been imported, review the Post Import Fixup steps

Experimental GUI

In 🖿(YourSteamInstallFolder)\Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\import_scripts we have included an experimental GUI for the map importer which might help streamline the import process somewhat called 🖿import_map_community_gui.exe

This GUI has the advantage of useful tooltips, easily selectable import options and it will also remember your settings between sessions. Note that you will still need to complete the prerequisites and steps 1-4 above for this to work correctly. We have also included the source python scripts for the community to customize as they see fit.

Maps import.png

Troubleshooting

  • You may get the following error on import if you're using a non-default skybox. Change your skybox to sky_dust and try again.
FAILED: vpk:c:\program files (x86)\steam\steamapps\common\counter-strike global offensive\csgo\pak01.vpk:materials\skybox\sky_csgo_night_flatrt.vmt
  • The following error indicates that your <s1contentpath> has spaces in it. Change the path to something without spaces.
Prepping bsp for S2 import! Command line "./bin/vbsp.exe" "-game" "C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\csgo" "-prepfors2" "c:\my" "project/content/map.vmf
  • The following error may be solved by renaming the file vpk.signatures in "counter-strike global offensive\game\bin\win64" to something else (like vpk.signature.bak) and trying again.
C:\Program Files (x86)\Steam\steamapps\common\counter-strike global offensive\csgo\pak01.vpk

Failed to load file (invalid)! Error running:

>>>source1import -retail -nop4 -nop4sync -usebsp -src1gameinfodir "C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\csgo" -src1contentdir "C:\map_content\maps" -s2addon "s2addon_name" -game csgo maps\map_name.vmf
  • Missing gameinfo.txt File Error:

If you receive an error stating that the `gameinfo.txt` file is not found, this may occur if you do not have the legacy version of CS:GO game files installed after the CS2 update occurred. Ensure that you are participating in the csgo_legacy beta (see CS2 - Opting into Beta depots), and verify that the `gameinfo.txt` file is present in the specified `<s1gameinfopath>`. If the file is missing, installing or verifying the integrity of the game files through Steam may also resolve this issue.