Files
SpaghettiKart/docs/modding.md
T
coco875 02ad54ca72 Refactor yaml and remove segment (#531)
* move yaml (still need to fix header path)

* fix header

* change kart to karts and add migration

* fix include

* Update migration.py

* fix common_texture_debug_font extraction

* Update torch

* update torch and header

* unduplicate texture for tumble

* Update torch

* Update migration.py

* put the sort by default

* fix replace_segmented_textures_with_o2r_textures

* Update torch

* fix yamls

* add manual_segments in data of course

* comment out replace_segmented_textures_with_o2r_textures and segment 3

* remove segment 5

* (wip) remove segment 6

still plenty of thing to do

* more vtx

* more change

* Update torch

* small fix

* Update BansheeBoardwalk.cpp

* fix blockFort

* Delete test.yaml

* fix bowser castle and simplify track sections

* fix choco mountain

* clean banshee

* fix dk jungle

* fix double deck

* fix macos

* fix error

* fix macos ci

* Update torch

* Update torch

* fix frappe snowland

* fix kalimari desert

* fix koopa troopa beach

* fix luigi raceway

* fix mario raceway and simplify thing

* fix moo moo farm

* fix rainbow road

* Update torch

* Update torch

* hopefully fix windows error

* fix a small error

* fix royal raceway (and podium in theory)

* fix sherbet_land

* fix skyscraper

* fix toads turnpike

* fix wario stadium

* fix yoshi valley

* update torch

* more clang tidy rules

* REMOVE totally SEGMENT (sorry for the PR)

* remove unused field in course and props and unused packed asset

* fix kart texture

* fix particle

* fix track section and transparency

* try fix mode extra

* fix macos build and render

* fix collision in extra

* small change and try fix windows error

* a little of clean

* more cleanup

* forget header and more clean up

* Update Makefile

* fix credits

* fix kart texture offset

* remove LoadTextures and add Unload

* fix definitevely mirror mode

* add unload but it's not perfect

* revert a bad fix

* clean no longer used python script

* fix crash with player

* being able to load the same course twice

* add a comment on DrawWater

* fix render of transparent object

* better hack

* add a proper migration instruction

* fix number

* add basic modsmanager

* add meta/mods.toml

* Update EditorMath.h

* Update ModsManager.cpp

* basic modManager (maybe I should rename it ModLoader)

* use range on dependencies

* add information about mods.toml

* fix coment

* some rename around

* Delete beta-to-v1.md

* Update migrations.md

* Update textures-pack.md

* Update modding.md

* Update modding.md

* clean yamls_old

* move to mods in engine

* rename ModsManger to  ModManager

* move init and unload at the top

* rename ModsMetadata to ModMetadata

* fix header

* Update ModManager.cpp

* put core mods at top
2025-12-07 07:34:53 -07:00

61 lines
2.8 KiB
Markdown

# Modding
* Very focused on ease of modding without weird formats or obscure tools.
* Early stages of modding and as such some features are not fully implemented yet
* SpaghettiKart does not use Retro
## General Structure
Mods in SpaghettiKart are packaged as `.o2r` or `.zip` archives, or as folders placed in the `mods/` directory.
```
mods/
├── MyTexturePack.o2r
├── CustomTracks.zip
└── MyDevMod/ <- Folder-based mod for development
├── mods.toml
└── textures/
```
Every mod **must** include a `mods.toml` file at its root. This file contains metadata about the mod (name, version, dependencies). See [mods.toml File Structure](mods-toml.md) for details.
### Supported Formats
| Format | Extension | Description |
|--------|-----------|-------------|
| O2R Archive | `.o2r` | Recommended format for distribution |
| ZIP Archive | `.zip` | Standard zip file |
| Folder | - | Useful for development |
| Disabled | `.disabled` | Renamed archives are skipped |
### Mod Loading Order
Mods are loaded in dependency order. If mod A depends on mod B, then B will be loaded first. Mods loaded later can override resources from earlier mods.
## Getting Started
* [mods.toml File Structure](mods-toml.md) - Required metadata file for all mods
* [Migration Guide](migrations.md) - Migrate existing mods to the new structure
## Mod Types
* Textures Pack
* Some texture might not be possible to change yet, but most of them can be changed.
* [link](textures-pack.md)
* Custom Tracks (CT)
* Custom tracks are reserved for advanced users. We plan to simplify the process in the future.
* [link](custom-track.md)
* Custom Characters
* Custom characters can only replace existing characters for now. We plan to allow to add new characters in the future.
* [link](custom-characters.md)
* Custom Audio
* Only custom sequences are supported, not custom samples (like voices or sound effects).
* [link](custom-audio.md)
* Scripting
* Add logic to the game are not possible yet but we plan to add support for scripting in the future. We will use [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) with [component model](https://component-model.bytecodealliance.org/) this will allow you to choose your language (Rust, C, C++, Python, JS, etc.) and compile it to WebAssembly.
* 3D Models For Characters
* Custom 3D models for characters are not supported yet. Put high quality character can be really close of 3d model but easily add a lot of size to the mod. We plan to add support for custom 3D models in the future.
* Custom Sounds
* Custom sounds are not supported yet. We plan to add support for custom sounds in the future.
* Custom Menus
* Custom menus are not supported yet. We plan to add support for custom menus in the future.