Inspired by map_batch_updater by ficool2
This program is a configurable CLI wrapper for bspzip.exe that can handle multiple maps in one go with the option of uploading them to the workshop if they already exist.
This tool has only been tested on Team Fortress 2 maps, however it should work for all other Source 1 games.
- The
settings.jsonfile contains settings which will affect all bsp configs - Within the
configs/folder you will findexample.json. You may create as many configs as you'd like in this folder. - Make sure that
steam_api64.dllandsteam_appid.txtare both in the same folder asMultiMapPackerAndUploader.exe - If you intend on uploading maps to the workshop, make sure
steam_appid.txtcontains the game app id that your maps were made for- The app id for Team Fortress 2 (440) is there by default
- Run
MultiMapPackerAndUploader.exe - You'll be asked to confirm that all settings which were read from your configs are correct
- If
"uploadMapsToWorkshop": true, you'll be asked to confirm the upload of all maps found from your workshop items- If maps with
"upload": truehave an invalid workshopid, you'll be asked to confirm and continue the upload of maps that were found on the workshop
- If maps with
All keys must be specified unless (optional)
-
Within
settings.jsonunder thesettingskeygameinfoPath- The directory path that contains yourgameinfo.txtbspzipPath- The absolute path tobspzip.exeoutputPath- The location of bsps will be placed after operationsforceMapCompression- Force all maps to be compresseduploadMapsToWorkshop- All maps with their workshop settings properly configured will go through the upload processverboseLogging- Iftrue, print and log extra information about assets to consoleextensionWhitelist- File extensions that aren't specified in this array will be ignored unless this array is emptybspConfigFileNames- Add the names of all the configs within yourconfigs/folder that you'd like to operate onglobalAssets- Assets listed here will be packed into every map
-
Within each config within your
configs/folder under themapskeyname- The name of the outputted map ("name": "example"will outputexample.bsp)enabled- Iftrue, operations will be performed on this mapcompress- Iftrue, the map will be compressed. This option can be overridden byforceMapCompressioninsettings.jsonsourcePath- The absolute path to the map which operations will be performed on- (optional)
ignoreAssets-falseBy default, iftrue, ignores all assets in theassets,sharedAssets, andglobalAssetsarrays- This option can be used to solely upload maps to the workshop without packing assets
- (optional)
assets- An array of absolute asset paths- You must include a pair of either
//or\\to denote which files/folders you want to pack into the map - This example will pack the
materialsfolderC:/dir//materials - This example will pack all files/folders within the
materialsfolderC:/dir/materials// - This example will pack
asset.txtinto the map without a folderC:/dir//asset.txt
- You must include a pair of either
- (optional)
workshop- An object for configuring workshop upload settingsid- The map's ugc id on the workshop (can be found in the workshop page url)upload- Iftrue, this map will go through the upload process after all other operations are completedvisibility- Ranging from [0,3], 0 = Public, 1 = Friends Only, 2 = Private, 3 = Unlisted- (optional)
changelog- Self-explanatory, you may use newlines, will upload a blank changelog by default
- Within
sharedAssets- Same rules apply here as with the
assetsarray within a map - These are assets which will be packed into all maps unless the map's
ignoreAssets: true - This array must exist in the config, but including assets here is (optional)
- Same rules apply here as with the