Skip to Content
JFG-StudioProject format

Project format

A Studio project is a folder ending in .jfgproj. Every file is plain JSON (sorted keys, one-space indent) so projects diff cleanly in git. Studio checks every file against its schema when it opens a project and lists all problems at once in the Console.

The folder

PathHolds
project.jsonid (the mod id), version, name, authors, description, minimumRecompVersion, dependencies
levels/<name>/level.jsonThe level’s name, track, sky, music, ambient and header fields (fog, clear colour, world, tune, fov, lights…); planet for the planet’s region; base for an edit of a stock level
levels/<name>/objects.jsonThe level’s objects: uid, name, type, pos, size, fields, and for exits a target
planets/<name>.jsondisplayName, entryLevel per hero; a disc, routes, galaxy and unlock, or replaces a stock map point
galaxies/<name>.jsonname (shown at the top of the map) and home
geometry/<name>.glbLevel models from Blender; the Water tool adds water planes here
music/<name>.oggMusic, with optional LOOPSTART / LOOPLENGTH comments
kinds/<name>.json, kinds/<name>/<slot>.pngReskinned types: base, scale, textures
triggers.jsonThe Triggers window’s triggers
weapons.jsonThe Weapons window’s values
scripts/*.luaYour Lua scripts
build/<mod id>.nrmWhat Build pack writes

File and folder names use lower case letters, digits, _ and -.

References

Projects never contain game data. They name it:

ReferenceMeans
stock:objtype/0x78An object type of the player’s own game (here the BlueAnt)
stock:level/21A stock level (Goldwood’s Forest First)
pack:track/landingThe project’s own geometry/landing.glb
pack:kind/fire_antThe project’s own kind
pack:music/zephyra_landingThe project’s own OGG
othermod:level_xContent from a dependency

Categories: level, track, objlist, objtype, kind, model, texture, anim, sound, music, text, world, mappoint, disc, weapon. Numbers may be decimal or 0x hex.

What the build writes

The .nrm is a zip with mod.json and the pack files: jfg_assets.json with the pack’s entries and patches, jfg_world.json for planets and galaxies, jfg_music.json, jfg_scripts.json with your scripts plus the compiled triggers and weapons, and the data, music and script files. A take-over planet adds a patch.bps.

Outside the project

Settings live in your user config folder (settings.json). The catalog made from your ROM, exported stock tracks and models, and Studio’s logs live in your user data folder. None of it belongs in a project or a pack.

Last updated on