How to Create a Remap

Attention

Due to the project constantly changing, there is a possibility that this page may become outdated.

Important

This guide will only show a high-level overview on how to create a remap.

We will not go over very specific details since going over every detail will take too long and each character remap have their own unique quirks.

Generally, the parts to add for a character’s remap will follow the same repetitive patterns seen in the referenced module files of this guide.

It is expected that those who are willing to make their own remaps to actually read the source code.

Tip

If you do not know the general idea on how to make a change to the project, it is recommended that you read How to Make Changes to the Project first



1. Register the name of the characters to remap

Add the names of the characters to remap at ModTypeNames.py



2. Add the Hashes/Indices for the Characters

You can go to GIMI Assets and find the characters you are trying to create a remap for. The hashes and indices are located in a file called hash.json

Add the hashes and indices into HashData.py and IndexData.py respectively.

Tip

Don’t just get the latest hashes/indices from GIMi Assets . Try to get the historical changes for the characters’ hashes/indices by checking the commit history of some characters within GIMI Assets



3. Add the necessary Textures Files and Model Binary Files to the Mod Downloads

This step requires to have the downloaded collected dump assets for the character

  1. Create the folder to hold the character files at: Mod Downloads

  2. Copy the texture .dds files into the newly created folder

  3. Generate the proper .buf and .ib binary files for the character by running the corresponding Jupyter Notebook at Dump To Mod Converter

    In the Notebook, you would most likely need to specify the folder location of the dumped assets and the folder location for the output (the folder you just created)

  4. Get some basic analytics on a mod by running the corresponding Jupyter Notebook at Mod Analyzer

    In the Notebook, you need to specify the output folder location from step 3c. After running the analyzer, take note of the following values:

    • Number of vertices

    • Size of Texcoord per vertex

    Copy the value from Number of vertices into VertexCountData.py and copy the value from Size of Texcoord per vertex into TexcoordByteSizeData.py

  5. Add the reference to the files at FileDownloadData.py



4. Add the Vertex Group Remap for the Characters

Find the vertex group remap by comparing the vertex group indices of the character to map from vs. the character to map to (see How to Find a Vertex Group Remap for details on how to find the vertex group)

Once you have the remaps, update them at VGRemapData.py



5. Add the Position.buf Editor for the Characters

Rarely any characters actually edit the Position.buf file, so most of their values are None

You can fill in the info for the editor at PositionEditorData.py



6. Add the .ini Parser for the Characeters

This part indicates how the .ini files of a character will be parsed. How certain .dds texture files are editted are also indicated here.

Add the necessary parser and its arguments/keyword arguments at IniParseBuilderData.py



7. Add the .ini Fixer for the Characters

This part indicates how the .ini files of a character will be fixed.

This section also includes:

  • some basic logic on how the registers within the .ini file should be editted

  • creation of some new .dds texture files

Add the necessary fixer and its arguments/keyword arguments at IniFixBuilderData.py



8. Specify the Construction of the Overall Mod Type for the Characters

The mod type of a character will include all the data from the previous steps.

API users will use this construction method if they want to get a brand new copy of a certain mod type that is not referenced by the software.

Add the construction of the mod types at GIBuilder.py



9. Register the Mod Type to the Software

Go to ModTypes.py and add in new enumeration entries for the new characters that uses the construction method from Step 6.

This enumeration is used by:

  • The software

  • Convenience for API users if they know they will not be changing up the mod type



10. Register the Character Names into the .ini Classifier

Go to IniClassifierBuilder.py and specify how software will identify whether some .ini file belong to the characters