# Structure

### Mod Structure <a href="#mod-structure" id="mod-structure"></a>

When creating a REDmod, there is a certain structure that you will want your mod to be in when sharing it with others so that it can be easily used by others. You will want to have a folder that is the name of the mod and in this folder you will have a file named `info.json` along with some other folder(s) which contain the animations, tweeks, sounds, or archives as you see fit. The structure will look somewhat like below

```
 * root_folder
 * | -📁 mods
 * | |-📁 <Mod Name>
 * | | |-📁 archives
 * | | |-📁 scripts
 * | | |-📁 tweaks
 * | | |-📁 customSounds
 * | | |-📄 info.json
```

#### Subfolders <a href="#subfolders" id="subfolders"></a>

Whether you are doing [Animation Modding](https://wiki.redmodding.org/cyberpunk-2077-modding/modding/redmod/quick-guide#animation-modding), [Script Modding](https://wiki.redmodding.org/cyberpunk-2077-modding/modding/redmod/quick-guide#script-modding), [TweakDB Modding](https://wiki.redmodding.org/cyberpunk-2077-modding/modding/redmod/quick-guide#tweakdb-modding), [Audio Modding](https://wiki.redmodding.org/cyberpunk-2077-modding/modding/redmod/quick-guide#audio-modding), or other mods (archive mods), you will need at least *one* subfolder for the mod files to go into. This subfolder should be located on the same level as the `info.json` file, and be nested directly inside the folder with the mod name.

#### info.json <a href="#info.json" id="info.json"></a>

For a REDmod to be recognized as such by the game engine, the primary requirements incluse this `info.json` file. This file sits in the root folder of the mod's folder. There are two required entries and a few optional entries that can be in this json file. At minimum a `name` field and a `version` field are needed:{"name": "MODNAME","description": "Description for the mod.","version": "1.0.0","customSounds": \[ ]}In the above:

* The `name` field is the mod's name and will generally be the same as the folder the `info.json` file sits in.
* The `version` field is the mod's version. The version should generally use "Semantic Versioning"
* The `description` field is optional for *all* mods, but it is generally suggested one should include it so other tools have something to display for a given mod.
* The `customSounds` field is semi-optional. It *is* required for [Audio Modding](https://wiki.redmodding.org/cyberpunk-2077-modding/modding/redmod/quick-guide#audio-modding).

> INFO - Semantic Versioning is a method of versioning where each number gives meaning for a release based on their position. It uses the format `MAJOR.MINOR.PATCH` where a `MAJOR` release change is one which will break workflows, `MINOR` could break a workflow but is generally safe and might introduce deprecations, and a `PATCH` is a small non breaking change that all users on the same `MAJOR` and `MINOR` can update to without any issues.

### Animation Modding <a href="#animation-modding" id="animation-modding"></a>

#### Animation Modding - WolvenKit Integration <a href="#animation-modding-wolvenkit-integration" id="animation-modding-wolvenkit-integration"></a>

The REDmod animation import tool can be used as a Plugin in [WolvenKit](https://github.com/WolvenKit/Wolvenkit).

* Add the `.re` animation file you wish to import to your **/Raw** folder in your mod project
* Add the `.anims` animation set file from the game with the *Asset Browser*
* Click View > Import/Export tool
* In the Import/Export tool, navigate to *Import*: a list of all `.re` animation file in your **/Raw** folder will appear
* Double click the entry to change the import options:
  * Select the `.anims` animation set file to import from the dropdown
  * Select the *animation name* you wish to override from the dropdown
* Click *process*

> INFO - It is best to name `.re` animation correctly even if you replace an existing animation, because the imported animation will always have the filename of the `.re` file.

> INFO - You need to have the `.rig` file used by the `.anims` animationset present in your WolvenKit project.

![](https://820263885-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4gzcGtLrr90pVjAWVdTc%2Fuploads%2Fgit-blob-5c4fc7dff2637699ef613cd0ef1525539211851d%2FWolvenKit_animationmodding.jpg?alt=media)

#### Animation Modding - Manually <a href="#animation-modding-manually" id="animation-modding-manually"></a>

> See also: **Import Command**

The `import` command imports an `.re` animation file into an existing `.anims` animation set file.Optional parameters include specifying an existing animation name to rename inside the animset file (otherwise the filename of the `.re` animation file is used) or specifying a different output path (default is overwrite).

> INFO - It is best to name `.re` animation correctly even if you replace an existing animation, because the imported animation will always have the filename of the `.re` file.

> INFO - You need to have the `.rig` file used by the `.anims` animationset present in your depot path.

### Script Modding <a href="#script-modding" id="script-modding"></a>

To make a script mod in REDmod:

1. 1.make a new mod and create a new folder here: `<Cyberpunk 2077>/mods/MODNAME/scripts`
2. 2.copy the `.script` file(s) you want to change from `<Cyberpunk 2077>/tools/redmod/scripts`❗*preserving the folder structure!*
3. 3.add an `info.json` file to `<Cyberpunk 2077>/mods/MODNAME/scripts` with some mod info

{"name": "MODNAME","description": "Description for the script mod.","version": "1.0.0","customSounds": \[ ]}​✅Done. To test, launch the game with REDmod.

### TweakDB Modding <a href="#tweakdb-modding" id="tweakdb-modding"></a>

To make a tweak mod in REDmod:

1. 1.make a new mod and create a new folder here: `<Cyberpunk 2077>/mods/MODNAME/tweaks`
2. 2.copy the `.tweak` file(s) you want to change from `<Cyberpunk 2077>/tools/redmod/tweaks`❗*preserving the folder structure*!
3. 3.add a `info.json` file to `<Cyberpunk 2077>/mods/MODNAME/tweaks` with some mod info

{"name": "MODNAME","description": "Description for the tweak mod.","version": "1.0.0","customSounds": \[ ]}​✅Done. To test, launch the game with REDmod.

### Audio Modding <a href="#audio-modding" id="audio-modding"></a>

#### Audio Modding - WolvenKit Integration <a href="#audio-modding-wolvenkit-integration" id="audio-modding-wolvenkit-integration"></a>

The REDmod animation import tool can be used as a Plugin in [WolvenKit](https://github.com/WolvenKit/Wolvenkit).

* Add the `.wav` sound files you wish to import to your **/customSounds** folder in your mod project
* Click View > *Sound Modding tool*
* In the Sound Modding tool, choose which to mod from the list of game sound events
* Adjust the parameters
* Click *Save*

![](https://820263885-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4gzcGtLrr90pVjAWVdTc%2Fuploads%2Fgit-blob-4f36b304a8f56f1a5c6060dffdf24ba377143a04%2FWolvenKit_soundmodding.jpg?alt=media)

#### Audio Modding - Manually <a href="#audio-modding-manually" id="audio-modding-manually"></a>

Place raw `.wav` audio files inside `<Cyberpunk 2077>/mods/<name>/customSounds`. Include a **info.json** file with your mod (`<Cyberpunk 2077>/mods/<name>/customSounds/info.json`) where you sepcify how to use your custom sounds.

**Example**

{"name": "newmodtest","version": "1.0.0","customSounds": \[{"name": "amb\_bl\_eq\_medical\_electronics\_small","type": "mod\_skip"},{"name": "w\_gun\_revol\_power\_overture\_fire\_suppressor","type": "mod\_skip"},{"name": "w\_gun\_npc\_dian\_reload","type": "mod\_sfx\_2d","file": "are\_you\_sure\_about\_that.wav","gain": 1.0,"pitch": 0.1}]}

#### Parameters <a href="#parameters" id="parameters"></a>

* **name** - the game audio event to override
* **type** - the sound type. Options are:
  * mod\_skip: do not play this sound event
  * mod\_sfx\_2d : will be played without any positions / attenuation
  * mod\_sfx\_city : has a longer attenuation that is suitable for city sounds
  * mod\_sfx\_low\_occlusion : has a long attenuation that isn't occluded much e.g. a VO or quest sound that you don't want to be muffled
  * mod\_sfx\_occlusion : medium attenuation with normal occlusion
  * mod\_sfx\_radio : needs to be tuned to a broadcast channel (e.g. radio)
  * mod\_sfx\_room : has a shorter attenuation suitable for something that can be heard across a room
  * mod\_sfx\_street : has a medium attenuation, good for something to be heard down a street
* **file** - the `.wav` file to use (inside `/customSounds`)
* **gain** and **pitch**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://solaartw.gitbook.io/developer/documentation/utilities/redmod/reference-sheets/structure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
