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
Create the folder to hold the character files at: Mod Downloads
Copy the texture .dds files into the newly created folder
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)
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 verticesSize of Texcoord per vertex
Copy the value from
Number of verticesinto VertexCountData.py and copy the value fromSize of Texcoord per vertexinto TexcoordByteSizeData.pyAdd 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