Nanoforge basics

This page goes over how to install Nanoforge and it's basic features. This article only goes over the basics of each feature. See the other guides for more detailed explanations.

Download
Nanoforge releases are posted on github. Multiple releases will be listed. You should always download the most recent release. To download it, look for the  button(1), click it, and download the first zip file listed under it(2).



Install

 * Unpack the zip file you downloaded anywhere and run Nanoforge.exe
 * You should now see the start screen. On the left side it has the data path and the recent projects list. On the right it has the changelog. Nanoforge with attempt to auto detect your RFG install. If it says that your data path is invalid click the  button and select your RFG data folder.

Features
This section gives a quick rundown of each of Nanoforge's features.

Projects
Nanoforge uses projects to track edits made to game files. The idea is to use a single project per mod. You only need to create a project if you're editing files. You don't need one to view and export files. To create a new project click  in the start page or   on the main menu bar. Fill out all the info on the popup and click. Below are each of the fields to fill in:
 * Name: The name of the project. Used to name the project file and as the name in any modinfo.xml files it generates.
 * Path: Path to the folder that the project should be created in.
 * Description: (Optional) Description of what the mod is. Used in the description field of modinfo.xml.
 * Author: (Optional) Author(s) of the mod. Used in the author filed of modinfo.xml.
 * Create project folder: If unchecked then the project files are placed directly in the folder chosen for path. If checked a folder with the entered name will be created in that folder.

File explorer
The file explorer lets you view the contents of vpp_pc and str2_pc files without extracting them manually. You can double click supported file formats like textures to open them. If you single click a vpp_pc or str2_pc file it will expand to show it's contents. Extra info about the file will be shown in the properties panel for some files when single clicking them.



Search
You can use the search bar to limit which files are shown in the file explorer. By default it will only show files with names that contain the search term. You can also use some special characters to specialize your search behavior:
 * Start your search with *: Will only show files with names that end with whatever comes after *
 * End your search with *: Will only show files with names that start with whatever comes before *

If you prefer regex you can check the regex search option. Note that the regex search option is much slower than the default one.

Properties panel
The properties panel sometimes will show additional info about files selected in the file explorer. It also may be used by other UI panels to show additional info. For example, it can list object properties when viewing territories (see map viewing section below).



Textures
You can open texture files by double clicking them in the file explorer. Textures are split into two files. Either a cpeg_pc and gpeg_pc file pair or a cvbm_pc and gvbm_pc file pair. You can double click any of these to open a texture. A single RFG texture file can contain multiple textures, which we'll refer to as subtextures. Info about the selected subtexture will be shown below the subtexture list.



Above is an example of what you might see if you open a texture file. On the sidebar to the left there a few things, in order:
 * The subtexture list. Click on one to see more info about it below.
 * Texture info. This is info about the selected subtexture.
 * Header info. This is general info about the cpeg/cvbm file.

Exporting textures
Textures can be exported to files you can edit with common image editors like Paint.NET, GIMP, or Photoshop. Currently textures can only be exported as .dds files. You can export single subtextures by right clicking one of them and clicking. You can export all subtextures at once with the  button.

Editing textures
Textures can be edited by imported textures you've edited externally. Currently it can only import .dds files. You do this by right clicking a subtexture, clicking  and selecting the file you want to replace the subtexture with. Once you do this it's critical that you press the  button above the subtexture list to save your edit. This edit will be automatically saved to your current project when you click. See Nanoforge Texture Editing for more info.

Meshes
Nanoforge supports viewing and exporting .csmesh_pc (static mesh) and .ccmesh_pc (character mesh) files. Just like textures, meshes consist of two files. Every csmesh_pc file is paired with a gsmesh_pc file, and every ccmesh_pc file is paired with a gcmesh_pc file. You can click any of them to open a mesh. When you open a mesh you'll first see a blank space. Meshes are loaded on a background thread so it may take a few seconds for the mesh to be loaded and for it's textures to show up. Before its textures are found or if the textures cant be found you might see textures from previously loaded meshes applied to the mesh.



Above is what you might see if you open a mesh file. There's a few parts of the UI to note, in order:
 * The camera button. This lets you control camera settings like speed and location. You can move the camera by holding down the right mouse button and using WASD to move around. If this doesn't work try left clicking on the mesh 3D view. Only the most recently selected mesh reacts to camera controls so if you have several open it'll only move one camera.
 * The scene button. This has some rendering settings for the mesh such as scale and lighting color/intensity.
 * The info button. This shows some additional info about the mesh such as vertex format, and the LOD slider for meshes with multiple levels of detail.
 * The export button. This lets you export the mesh and it's textures to a .obj file, which can be imported into tools like blender.
 * The status bar. This shows the loading status and percentage. It will show  once loading is complete.

Exporting meshes
To export a mesh:
 * Wait for it to finish loading. The status bar will show  and 100%.
 * Click the export button. Top left of the document, button furthest to the right.
 * Select a folder to export the mesh and it's textures to and click.

A single gltf file and the meshes textures will be exported. Each lod level is labelled in the gltf under their own subnode. Currently these gltf files don't look right as is when imported into Blender. This is because GLTF uses a different rendering model than RFG. Typically meshes have a diffuse, specular, and normal texture. Their names end with _d, _s, and _n respectively. You'll need to make the following changes to the textures in the Blender shading tab:
 * Diffuse -> Set color space to linear, attach texture color to "Base Color" on the BSDF
 * Specular -> Set color space to linear, attach texture color to "Specular" on the BSDF
 * Normal -> Set color space to SRGB, attach texture color to "Normal" on the BSDF

In the near future an extension will be made to automatically patch the shader graph.

Camera movement
To move the camera hold down the right mouse button over the 3D view and use WASD to move around. Holding down shift while moving will cause the camera to move faster. Pressing Q and E will move the camera directly up and directly down respectively.

Mod packaging
Once you're done editing textures you can use Nanoforge to repack the editing files and generate a modinfo.xml for you. To do this, simply click  on the main menu bar. Once it's done go to the "Output" folder inside your project folder to see the modinfo.xml and any files that it relies on. These are ready for use with the re-mars-tered mod manager.

Map view
Nanoforge has partial support for viewing maps like the main campaign map. We'll be referring to them as territories as that's how RFG groups together many zones. See RF:G Map organization for more details on how RFG maps are structured. To open a territory via  on the main menu bar. Terr01 is the main campaign map territory. A new document should appear when you open a new territory. Camera movement is the same as the mesh viewer. See camera movement. Terrain is loaded in the background so you'll see separate blocks of terrain pop into view as they load. Bounding boxes are drawn for zone objects. With a territory open you should see new information on the zone panel and the zone objects panel. You can dock panels by clicking and dragging on their titles. It's recommended that you dock the zone object list below the zone list so you can see both at once.

Below is an annotated image of information you can view about territories plus descriptions for each annotation.




 * First, in the top left is the zone list. Territories are made up of one or more zones which in turn have many zone objects. Click a zone to see its object in the zone objects panel (bottom left). By default the zone with the most objects is selected. In this case that's . Note that each zone corresponds to a rfgzone_pc file. So, for example,   is really terr01_04_06.rfgzone_pc.
 * Next, bottom left is the zone objects list. This lists the objects inside the selected zone. Click an object to see its properties in the properties panel. Some objects have child objects, denoted by having a triangle in front of their name which you can click to expand them. You can filter objects by type inside the filters header. By default some very common objects like navpoints are hidden.
 * Finally, in the top right is the properties panel. This shows the properties of the selected zone object.

Object Flags

 * Flag 0 (Persistent): Unknown, any objects with this flag have a separate copy stored in a second  file with its name prefixed with   So, for example, Crescent has two   files.   and  . The objects with the persistent flag are stored in both zone files, while objects without that flag are only stored in  . It's consistently used on player spawns, on most siege objectives and on most   on Siege maps. It's recommended you don't enable or disable this flag on maps if you're using the Terraform Patch as it contains fixes for missing objects that incorrectly used this flag or were missing it; doing so will cause objects to vanish.
 * Flag 1: Unknown
 * Flag 2: Unknown
 * Flag 3: Unknown; might be related to how the game saves/loads map data from save files (requires more investigation)
 * Flag 4: Unknown; seems to always get converted to the runtime flag, most   and   have this flag. If you're using the Terraform Patch it's recommended you don't disable this flag as it applies it to all objects since it was used most of the time and objects missing it were assumed to be an error by Volition. (They also made mistakes with the gamemode and persistent flags)
 * Flag 5: Unknown; seems to get converted to the runtime flag
 * Flag 6: Unknown
 * Flag 7: Unknown
 * Flag 8: Spawns in Anarchy
 * Flag 9: Spawns in Team Anarchy
 * Flag 10: Spawns in CTF
 * Flag 11: Spawns in Siege
 * Flag 12: Spawns in Damage Control
 * Flag 13: Spawns in Bagman
 * Flag 14: Spawns in Team Bagman
 * Flag 15: Spawns in Demolition

Chunk Flags

 * Applies to  &.
 * When editing their properties in the inspector it's possible to change the.
 * You can also use  to apply these flags and change  . If you're using the Terraform Patch a new   named   is added which also can be used to make objects indestructible.
 * Eg:  will make the object indestructible. Full list of flags below:
 * child_gives_control: Unknown.
 * building: Unknown.
 * dynamic_link: Unknown.
 * world_anchor: Unknown.
 * no_cover: Might be where EDF can't take cover behind objects.
 * propaganda: EDF propaganda billboards you destroy for the achievement in singleplayer have this flag in . Probably used so the game knows to track the players progress and reduce EDF control of the sector.
 * kiosk:  has this flag in  . Probably used so the game knows its a special object that plays propaganda videos.
 * touch_terrain: Unknown, no  entries use this flag and it's missing from the table description.
 * supply_crate: EDF crates you destroy for the achievement in singleplayer have this flag in . Probably used so the game knows to track the players progress.
 * mining: Ores you mine for salvage and the achievement in singleplayer have this flag in . Probably used so the game knows to track the players progress.
 * one_of_many: Unknown,,   &   have this flag in  . Might be related to one of the side activities where you have to destroy multiple targets.
 * plume_on_death: Unknown.
 * invulnerable: Makes an object indestructible.
 * inherit_damaga_pct: Unknown.
 * regrow_on_stream: Unknown.
 * casts_drop_shadow: Object will cast drop shadows.
 * disable_collapse_effect: Unknown.
 * force_dynamic: Unknown.
 * show_on_map: Most objects in . Most likely means the object will show on the minimap in singleplayer.
 * regenerate: Unknown.
 * casts_shadow: Object will cast a shadow map.

Object Info

 * = Defines the wind speed, terrain file name & . If you move its location the terrain will no longer have collision.
 * = Multiplayer siege target.
 * = Multiplayer damage control target.
 * = Causes object to start off with initial damage, used on damage control targets or maps like crash site, ruins & remnant where they put a hole in the wall.
 * = Camera view at start of match and end of game. If a map doesn't have a least one of these it will crash.
 * = Camera view exclusively for players using the spectator mode, recommended to just ignore adding them and use  instead.
 * = Killbox that can be set to a mine or cliff.
 * = Buildings, backpack racks & more.
 * = Explosive barrels and the  objects for example.
 * = Spawn point, can be set to Neutral, EDF or Guerilla.
 * = In multiplayer the bag for bagman is set to  "multi_object_bagman_flag" and references.
 * = Weapon spawn,  determines which weapon will spawn and references.
 * = Visual effect, eg the fire on Nordic Bonus.
 * = Multiple uses, in multiplayer the  can be set to ,  ,  ,  ,   &.
 * = Probably where NPCs can navigate, similar to navmeshes in other games.
 * = Probably where squads spawn and references various  files.
 * = Probably where NPCs can drive vehicles.
 * = Probably where vehicles can spawn like walkers found around the SP map.
 * = Seems to be only be used in singleplayer, unknown why.
 * = Probably where you can start a side activity like demolition master for example.
 * = Related to the house arrest side activity.
 * = Probably where EDF patrol.
 * = Probably where you can start a main mission.
 * = Probably where the EDF will attack on sight and you will get an alert level in SP.
 * = Seems to be for attaching the backpack to the player when they spawn, DO NOT TOUCH IT ALL OR THE MAP WILL CRASH WHEN SPAWNING.
 * = Probably where you can start a main mission.
 * = Probably where the EDF will attack on sight and you will get an alert level in SP.
 * = Seems to be for attaching the backpack to the player when they spawn, DO NOT TOUCH IT ALL OR THE MAP WILL CRASH WHEN SPAWNING.
 * = Seems to be for attaching the backpack to the player when they spawn, DO NOT TOUCH IT ALL OR THE MAP WILL CRASH WHEN SPAWNING.

Object Properties

 * references.
 * references.
 * references.
 * references.
 * references.
 * references  or.
 * references.
 * references  (not included in the game for some reason) however there is.

Spawn Points

 * can be set to,   or.
 * When making a CTF map and you don't want players spawning at the opposing base ensure you disable the Flag  for any Neutral spawn points.
 * Unknown if the  and   booleans do anything in multiplayer.
 * boolean is probably left over from Saints Row since all of RF:G is technically outdoors and no spawn points use this boolean.
 * &  are only used in singleplayer.
 * Foward X axis (blue line) determines player spawn direction.

Spawn Nodes

 * Camera views at the start of match or when a player dies and is spectating.
 * Foward X axis (blue line) determines player camera direction & view.
 * If a map doesn't have at least one  it will crash when loading.

Spectator Cameras

 * Believed to be similar to a  but used exclusively by players using the spectator option in matchmaking. Recommended to just ignore adding these since the community only plays custom games and adding   to your map will serve the same purpose.
 * Foward X axis (blue line) determines player camera direction & view.
 * These camera views are also shared with  at start of match or when a player dies and is spectating.

Mover Types

 * Applies to
 * When editing their properties it's possible to change the  field to the corresponding numbers
 * Fixed = 0 (default)
 * Normal = 1 (unknown)
 * Lite = 2 (unknown)
 * Ultra Lite = 3 (unknown)
 * World Only = 4 (no collision but you can still destroy it with a hammer for example)
 * No Collision = 5 (no collision)

Damage Control Targets

 * 1) Deep clone.
 * 2) Move MPDCT_MAPNAME_XXX to the location of your choosing.
 * 3) In object properties for the parent change   to whatever you want your new damage control objective to be called.
 * 4) If you're making a map that doesn't already have a damage control target you can open it in another tab and use the deep clone feature. If you're using the Terraform Patch the majority of Wrecking Crew maps will already have the asset along with all Siege maps.
 * 5) It's also possible to have only   target & more than  . The limit before the game will crash is a total of   targets when tested solo. The limit might be lower when played with other people but needs to be tested more.
 * 6) It's also possible that using the same   name for each target can introduce instability.
 * 7) The only valid value for the   property is  . If you change the team to   or   and disable the   child so the target starts off intact it will belong to that team but not score any points until it's destroyed and repaired.
 * 8) You can disable the   child so the target starts off intact instead of destroyed like it is by default.
 * 9) Any object can be used for a target if you add the ,   and offset them correctly from the parent. See Stratosphere if using the Terraform Patch for how to do this; shipping containers are the targets added on that map in the patch.

Siege Targets

 * 1) Open a siege map in one tab, open a regular map with the same objects in another tab.
 * 2) Deep clone the siege target to the regular map.
 * 3) Move the added siege target to the exact same location as the existing matching object on the regular map.
 * 4) Disable all the gamemode flags for the added siege target except for "Spawn in Siege" including its children.
 * 5) Delete all the children of the siege targets (usually spawns that will be outside the map since they were deep cloned from the siege map), after they are all deleted make sure to "orphan children" of the child to ensure it doesn't have ghost children.
 * 6) Disable the   flag on the matching original map object.
 * 7) You need to update   so the map is selectable in siege.
 * 8) Ensure the siege target and its child have the persistent flag.
 * 9) The   property for the   child determines which siege objects are unlocked to destroy, eg if you set it to   it would be the first target the attackers can destroy, you can have multiple targets unlocked by using the same number and if you wanted to have targets unlocked one at a time you would use ,  ,   and so on. If you use a value of   they are also unlocked at the same time.
 * 10) You must use an existing string in the game for the   property on the child or the map will crash.
 * 11) If you mess up the offset of the child the map will crash.

Backpack Racks

 * Make sure you deep clone them when adding new racks, the child  is required for it to work properly.
 * Ensure that when moving the rack to a new location you only move the parent (the child will follow and be offset correctly), they will be named  for example if you're using the Terraform Patch.
 * When editing the child  determines which backpack will spawn, most are the same as their in game names with the exception of Firepower   & Concussion  . These names are from.
 * When editing the child you can change the number of backpacks on a rack, edit  and change it from a value ranging from , although   would mean the rack is empty and useless.
 * When editing the child it's possible to make it team exclusive, this means only the EDF or Red Faction can pickup backpacks from that rack during team game modes. Edit  and enter either   or  . In game that rack will have a green glow around it if your team can use it.
 * The  boolean in the object properties for the   child doesn't seem to do anything.
 * It's possible to make Backpack Racks destructable by changing  to  . During team game modes teams can fight for control by destroying racks and repairing them so only their team can use them. Racks you're able to use will glow green and racks you can't will glow red if you're using the Terraform Patch.
 * The maximum number of Backpack Racks you can have on a map before it causes issues is.

Capture the Flag targets

 * The EDF and Red Faction have their own unique flag stand placed near their team spawns on regular multiplayer maps.
 * Make sure you use deep cloning and only move the parent when placing or moving them so the child is offset correctly.
 * Objects are called  &.
 * If you attempt to add more than two stands to a map, the extras will not work as capture points and only the asset will appear.
 * is not a valid value for.

Bagman Objective Spawn

 * Object is an  type referencing.
 * Ignore the varying bounding box sizes when positioning the bag spawn, the XYZ axis position is what matters (the red, blue & green lines).
 * The  boolean doesn't do what you expect, the bag will still return to the original spawn point regardless if it's enabled or not.
 * You can't place more than one bag on a map normally, only one will spawn. However you can have different bag locations in Bagman and Team Bagman by using the gamemode flags.

Weapon Spawns

 * You should clone other weapons to add new ones, if you make them from scratch and don't get the bounding box correct for certain weapons it can cause duplicate weapon spawns in some cases.
 * determines which weapon will spawn and references.
 * The  boolean needs more testing but you can disable weapons in certain game modes by disabling the game mode flags anyway.
 * The  boolean will cause the weapon to not re-spawn again during a match after it has been picked up for the first time.
 * Ensure the bounding box is slightly above the ground/floor when positioning weapons.

Trigger Regions

 * In multiplayer & singleplayer these are used to prevent the player from going out of bounds.
 * can be set to a  or a  . A cliff will cause the player to fall to their death, while a mine will explode and kill the player; this is also reflected in the killfeed message in multiplayer.
 * In singleplayer the  can be changed so the trigger isn't enabled during missions and/or activities. Eg.   will disable it during a main mission,   would disable it during a side activity and   would disable it during both.
 * The  boolean allows mappers to enable/disable the region.
 * The  can be set to a   or  . However Nanoforge cannot render spherical bounding boxes yet.
 * might control the size of the region, but this is untested.

Object Effects

 * Plays an effect such as smoke, fire, explosion, sparks, etc. Also can play sounds if the effect has one in  and the sound string is used.
 * = Unknown.
 * = The name of the sound in
 * = The name of the effect in
 * = Controls if the effect will play once or continuously.

Shape Cutters

 * Used to damage or cut holes into destructible objects ahead of time.
 * might control the size of the cutter, but this is untested.

Maps with names different from their in-game names

 * wc1 - Complex
 * wc2 - Watchtower
 * wc3 - Scrapheap
 * wc4 - Vista
 * wc5 - Fortress
 * wc6 - Factory
 * wc7 - Gulch
 * wc8 - Cascade
 * wc9 - Transmission
 * wc10 - Pipeline
 * wcdlc1 - Ruins
 * wcdlc2 - Repercussion
 * wcdlc3 - Imperial
 * wcdlc4 - Expansion
 * wcdlc5 - Frost
 * wcdlc6 - Abandoned
 * wcdlc7 - Stratosphere
 * wcdlc8 - Invasion
 * wcdlc9 - Nordic Bonus
 * mpcx_crossover - Doubletime
 * mpcx_assembly - Outpost
 * mpdlc_landbridge - Equilibrium
 * mpdlc_islands - Haven
 * mpdlc_minibase - Complex
 * mpdlc_overhang - Gradient
 * mpdlc_ruins - Remnant

Maps with similar terrain

 * Crash Site/Complex/Nordic Bonus
 * Rift/Factory
 * Remnant/Ruins
 * Broadside/Invasion
 * Wasteland/Gulch
 * Outpost/Framework
 * Radial/Transmission
 * Sand Pit/Division/Watchtower
 * Tutorial Area/Pipeline
 * Pinnacle/Fortress

Misc Notes

 * Deep clone objects if you want to keep the children of an object and use regular clone if you just want to clone the parent. Only move the parent when deep cloning and the children will follow and be offset correctly.
 * If you see anything that looks like XML inside  or   files you can ignore that as we're 99% sure it's junk from their file packer reusing memory without zeroing it out.
 * Zone file format docs - Describes the zone format used by RFG in more detail.

Localization strings
While Nanoforge is only in English at the moment it can view localized strings used by RFG. RFG uses placeholder strings in many xtbls which are replaced with their localization at runtime. These are shown automatically in the xtbl editor. You can also view a list of all localized strings via. You can search by placeholder by checking "Search by identifier". You must fully enter the identifier without typos for this to work since it's comparing it to a hash of the identifier stored in the games localization files.



Scriptx viewer
RFG uses an xml based scripting system called scriptx for some mission logic. The viewer is an attempt at making it easier to read scriptx files which can be difficult to understand. It's a low priority feature so it likely won't see changes for a while but was enabled in case it's useful to people editing scriptx files. You still need to edit them by hand but it can help make it clearer what a script is doing. You can access it via.