The example world: Zephyra
Zephyra is Studio’s example project and the best template to learn from. It’s a galaxy of its own, the Zephyra Expanse, with three planets, five new levels and an edit of a stock level. It uses nearly every feature: squads that lock doors, a key door, a reskinned enemy, talkers, a finale, custom music, weapon tuning and planets that appear one after another. All of its geometry, textures and music are drawn and synthesized by a script, so it contains no game data.
Open it
The project is in Studio’s repo at samples/zephyra.jfgproj. Open it with File › Open project…, or:
jfgstudio gui samples\zephyra.jfgprojTo play it straight away (from the Studio folder):
studio.bat test samples\zephyra.jfgproj --level forest_portalThat starts the game in Goldwood’s first level with only this pack loaded; the portal is just ahead. Use
--level landing, caverns or arena to start in the world’s own levels, and --start-point 1 for the far end of
a level.
To make your own pack from it, copy the whole folder, change id and name in project.json (your own mod id), and
start changing levels. The generator script samples/make_example_world.py rewrites the sample from scratch, so edit
your copy, not the sample.
What’s in the project
| Folder | In Zephyra |
|---|---|
geometry/ | landing.glb, caverns.glb, arena.glb, glacia.glb, nimbus.glb: the five levels’ models |
levels/ | Six levels: the five above, and forest_portal, an edit of Goldwood’s stock Forest First |
kinds/ | fire_ant: a BlueAnt with fiery textures |
galaxies/ | expanse: the Zephyra Expanse, home planet Zephyra |
planets/ | zephyra, glacia, nimbus |
music/ | Three OGG tracks |
triggers.json | Twelve triggers: intros, a talker, a finale, the planet completions |
weapons.json | Weapon 0 (the starting gun) fires faster with faster bolts |
scripts/ | zephyra.lua, a hand-written script that logs how long you take |
The route
Forest First (stock, edited)
The pack adds an exit to Goldwood’s first level without replacing it: a portal with a blue glow, a light just
ahead of the new-game start point. In Studio it’s the level forest_portal, made with Edit a stock level… (its
own objects show in a dim blue and can’t be selected). See Change a stock level.
Zephyra Landing

- A river with a stone bridge, and crystal outcrops for cover.
- East: a ramp up to a plateau with a chest (the machine gun) and a scout’s note: a talker that tells its story
a line at a time (a
talktrigger with alinesaction). - West: a long ramp up to a ledge with the yellow key, needed in the next level.
- North: a BlueAnt squad holds the gate. The gate opens when all three are dead.
- A small glow by the pad is the portal home to Goldwood.

Ember Caverns

- A Fire Ant squad on the plaza: the pack’s own enemy kind (below), and a ZombieAnt squad on the far shore.
- A chasm with a deadly drop (a
killfloor) and a narrow bridge. - The north door needs the yellow key. Crates for cover, orange lights, the lava slowly flowing (a texture scroll).
Sky Arena
- A floating arena over a deadly drop. A stone screen hides the entry, with cover walls and four pillars.
- A BigShieldAnt squad and a Cyborg squad both lock the final gate. When it opens, a
door openstrigger shows a message, changes the music, and spawns full health next to you. - Behind the gate, the victory exit completes Zephyra and leads on to Glacia.
Glacia and Nimbus


Every level has a way back: start point 1 is at the far end, by the exit that leads back.
How the pieces are built
The galaxy and its hidden planets
The three planets are on the pack’s own galaxy, the Zephyra Expanse. On the planet map the player switches to it with R and back with L.
| Planet | Opens | Entry level |
|---|---|---|
| Zephyra (home) | discovered: once its level was entered (through the portal) | Zephyra Landing |
| Glacia | once Zephyra was completed | Glacia |
| Nimbus | once Glacia was completed | Nimbus |
Each planet’s levels are its region (the levels’ Planet), so the Sky Arena’s victory exit, Glacia’s pad and Nimbus’s way home show the game’s stats screen before the next planet, and each planet greets the hero with its name. Zephyra’s three levels share one region: moving between them shows nothing.
A world counts as completed when a trigger’s complete planet action runs: Zephyra’s is the victory trigger at the
arena’s exit, Glacia’s the pad on the rise. See A galaxy of your own.

The Fire Ant

A kind is a stock enemy with your textures at your size. The pack carries only the ten PNGs; the port builds the
model and definition from each player’s own game. The caverns’ squadron spawns Fire Ants because its kindFields
name the kind. See A new enemy look.
Triggers and the finale

| Trigger | When | Then |
|---|---|---|
| the portal | level start, Forest First | message |
| landing intro (and one per level) | level start | message |
| scout’s note | talk, by the chest, every time | lines (one per visit) |
| fire ants | enter an area in the caverns | message |
| both squads down | door opens (the arena’s gate) | message, music, spawn full health by the hero |
| victory | enter the exit area | message, complete planet Zephyra, fade the fog |
| glacia complete, nimbus complete | enter the finish areas | complete planet |
Thin air: the weapon tweak

A script of its own
scripts/zephyra.lua sits beside the triggers: it logs each level and how long you take to reach the arena’s finale.
Open it in the Scripts window.
