This chapter will walk you through the process of creating a functioning, fully compatible Friday Night Funkin' mod, using the game's official systems for loading custom content and scripts. Once your mod is complete, you will be able to place it in the mods folder in your game install and use its content in-game without overriding the base game content and still maintain compatibility with other mods.
This chapter goes over adding new Sticker Packs to the game, and telling the game when to use them for songs.
How to create Custom Sticker Packs
Sticker Pack Assets
In order to create your own sticker pack, you will need graphics for the stickers you want to use. The ones included in the base game are generally around 300x300 in size, with some variation.
Sticker Pack Data
A custom sticker pack requires creating a new JSON file in the data/stickerpacks folder.
Below is the "default" sticker pack JSON file assets/data/stickerpacks/default.json1
{ "version": "1.0.0", "name": "Default", "artist": "PhantomArcade3K", "stickers": [ "transitionSwag/stickers-set-1/bfSticker1", "transitionSwag/stickers-set-1/bfSticker2", "transitionSwag/stickers-set-1/bfSticker3" ] }
Let's break it all down.
-
version: The version number for the Sticker Pack data file format. Leave this at1.0.0.- This will increase if the data file format changes, and tell the game whether additional processing needs to be done for backwards compatibility.
-
name: The readable name for the sticker pack, used in places like the Chart Editor. author: The author of the sticker pack, aka the artist who created the assets.-
stickers: A list of all the paths for all the stickers to use, as strings.- You cannot currently specify any additional arguments, such as scale, offsets, texture smoothing, or animations.
Modifying an Existing Sticker Pack
You can use the JSONPatch feature to add or remove stickers from an existing sticker pack.
For example, to add to Boyfriend's standard sticker pack, you can use the following JSON Patch file (placed in mods/mymod/_merge/data/stickerpacks/standard-bf.json, use a different file path to patch a different sticker pack):
[ // Add an asset path to the end of the sticker list. { "op": "add", "path": "/stickers/-", "value": "path/to/custom/sticker" }, ]
Using a Custom Sticker Pack
There are two ways the game defines a given sticker pack to be used:
- Each Playable Character defines the
stickerPackvariable, which specifies the sticker pack to be used by songs containing that character. For example,bfuses thestandard-bfsticker pack. You can define a sticker pack to be used for your custom playable character by setting thestickerPackvalue, or modify which sticker pack is used by other playable characters by using JSONPatch to modify thestickerPackvalue of that character. - Each song has a value in its metadata to define which sticker pack is used. Set the
playData.stickerPackon a song (or use JSONPatch to modify metadata of an existing song) to override which sticker pack it uses.
The game checks and uses sticker packs in this order:
- The sticker pack chosen by the song.
- The sticker pack chosen by the playable character.
- The
defaultsticker pack (which displays only Boyfriend). If you see only Boyfriend during a sticker transition, then you know neither the song or the playable character defines a sticker pack, and you should fix the issue.