DETERMINATION

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

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.