Modding The Engine - Softcoding
No matter what you do, editing the ./assets/ folder is not recommended, as it's used as your Backup folder / Mod if assets or data cannot be found, it will use the ./assets/ as a saftey catch. You should only make Mods in the ./mods/ folder.
There is also an ./addons/ folder which is somewhat similar to the way ./mods/ works, but it has it's own set of rules and best practices to follow.
TODO: Add a link to know how to make an Addon.
THIS IS NOT A GUIDE FOR SOURCE MODDING!!
If you want to know how to make a Mod in Source, [TODO: Write a Doc.md for seting up a Source Project and link it from here!]
How should I structure my folders
For starters, this is what an average Mod Folder will contain. We will go over some folders that require more explanation later.
Click to expand
└─ 📂 My Mod/
├─ 📂 data/ # Usually contains configuration, or information you want to store.
│ ├─ 📂 characters/ # Contains your Character's XML data.
│ ├─ 📂 config/ # Configuration stuff.
│ │ └─ 📄 modpack.ini
│ ├─ 📂 dialogue/
│ │ ├─ 📂 boxes/
│ │ └─ 📂 characters/
│ ├─ 📂 events/ # Contains your Custom Events.
│ │ ├─ 📄 Example Event.hx
│ │ ├─ 📄 Example Event.json
│ │ └─ 📄 Example Event.ui.hx
│ ├─ 📂 library/ # This is where you put Scripts for ScriptedAssetLibrary! We Will go over this later.
│ ├─ 📂 notes/ # Custom NoteType Scripts (And adds them in the Charter!)
│ │ └─ 📄 Example Note.hx
│ ├─ 📂 splashes/
│ ├─ 📂 stages/ # Where your Stage `.xml` and/or `.hx` file for your stage is located.
│ ├─ 📂 states/ # Scripts that run when States are switched to, or when loading a ModState!
│ ├─ 📂 titlescreen/
│ ├─ 📂 weeks/
│ │ ├─ 📂 weeks/
│ │ │ ├─ 📄 Example Week.xml
│ │ │ └─ 📂 characters/
│ │ ├─ 📂 characters/
│ │ │ └─ 📄 Example Character.xml
│ │ └─ 📄 weeks.txt
│ └─ 📄 global.hx # This script runs all the time, above any state switching, and never deloads (unless you switch mods).
├─ 📂 fonts/
├─ 📂 images/
│ ├─ 📂 characters/ # Contains your Character Spritesheet `.png` and `.xml` Animation.
│ ├─ 📂 game/ # Stuff usually found for global PlayState graphics.
│ ├─ 📂 icons/ # Where your Character's icons will be located.
│ └─ 📂 stages/ # Images of your stage can go here, but it's not required.
├─ 📂 languages/ # Custom Languages support for your mod!
│ └─ 📂 en/ # The language you want to edit / create
│ ├─ 📄 config.ini
│ ├─ 📄 Editors.xml
│ ├─ 📄 Main.xml
│ └─ 📄 Options.xml
├─ 📂 music/
├─ 📂 shaders/
├─ 📂 songs/ # Where songs are located, along with charts, events, scripts, audio, meta, etc.
│ ├─ 📄 Example Global Song Script.hx # Scripts inside the `./songs/` folder will load for every song.
│ └─ 📂 example-song-here/
│ ├─ 📂 charts/
│ │ └─ 📄 hard.json
│ ├─ 📂 song/ # Supports `Inst.ogg` / `Voices.ogg` and suffixes like `-bf`. Also supports difficulties.
│ │ ├─ 📄 Inst.ogg
│ │ ├─ 📄 Inst-hard.ogg
│ │ ├─ 📄 Voices-bf.ogg
│ │ ├─ 📄 Voices-bf-hard.ogg
│ │ ├─ 📄 Voices-dad.ogg
│ │ └─ 📄 Voices-dad-hard.ogg
│ ├─ 📂 scripts/ # Scripts loaded for this specific song.
│ ├─ 📄 events.json
│ └─ 📄 meta.json
├─ 📂 sounds/
├─ 📂 source/ # Custom Classes go here.
└─ 📂 videos/
NOTE!
This might not be EVERYTHING, but it's a good chunk of the folders Codename Engine interacts with.
Don't be scared by the amount of folders, usually you only mess with the ./songs/, ./data/, and ./images/ folders most of the time.
It's good to have a reference of what you can do at least, so this will be updated from time to time with new updates (hopefully 😭).
Sections
These areas will split up into their own sub-pages, and they will explain to you what each folder is for, what files you can add, and how to effectively use them.
- Configuration
- What is a "AssetLibrary"?
- Scripting
- Editors Introduction
- Using hxvlc for Videos
- Intro to Advanced Topics
All of those above are for Softcoding, if you want to learn how to mod Source, you can check out the Introduction here