Make your own UNDERTALE mod
A beginner-friendly look at how UNDERTALE mods work and how to make a simple one that changes the game's text.
UNDERTALE was made with GameMaker. All of the game (its code, text, rooms and sprites) lives in one big file: data.win on Windows and game.ios on Mac. A mod is just a set of changes to that file.
The three kinds of mods
- Script mods (.csx): small C# scripts that UndertaleModTool runs against the game. They describe the change ("replace this line of text"), so they work on any version, Mac or Windows, and several can be stacked. Best for most mods.
- Patches (.xdelta): a byte-by-byte diff from the original file to the modded one. Easy to share, but tied to one exact game file.
- Asset swaps: UNDERTALE's music is plain .ogg files next to the game, so a music mod can be as simple as a replacement .ogg.
Your first mod: change some text
Here's a complete example mod. It rewrites the first line of the intro:
// mymod.csx
int changed = 0;
foreach (var s in Data.Strings) {
if (s.Content != null && s.Content.StartsWith("Long ago^1, two races")) {
s.Content = "Long ago^1, a kid on a Mac&wanted to mod&UNDERTALE^1. \\E1 ^";
changed++;
}
}
if (changed == 0) throw new Exception("Couldn't find the intro text.");
UNDERTALE's text uses a few special codes: & starts a new line, ^1 is a short pause, and / or /% at the end means "wait for Z" or "close the box".
Packaging it
Put your script in a folder with a mod.json file so Determination knows its name:
{
"name": "My First Mod",
"author": "You",
"version": "1.0",
"game": "undertale",
"description": "Changes the first line of the intro.",
"steps": [ { "type": "script", "file": "mymod.csx" } ]
}
Zip the folder and you have a mod anyone can drag into Determination. A mod can also include music: add "files": { "mus_ruins.ogg": "music/my_song.ogg" } to replace a song.
Not into code?
Use Determination Studio: see every room, click a character, type their new lines, and press TRY IT. See making a mod without code.