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

2.8 KiB

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 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

Mod Types

  • Textures Pack
    • Some texture might not be possible to change yet, but most of them can be changed.
    • link
  • Custom Tracks (CT)
    • Custom tracks are reserved for advanced users. We plan to simplify the process in the future.
    • link
  • Custom Characters
    • Custom characters can only replace existing characters for now. We plan to allow to add new characters in the future.
    • link
  • Custom Audio
    • Only custom sequences are supported, not custom samples (like voices or sound effects).
    • link
  • 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 with component model 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.