The folder
eggox.json, a folder per room, a file per thing. Nothing in a game lives outside this shape.
eggox.json the game: its name, API version, its rooms
rooms/<Room>/room.json one room: size, view, chat; its rules; what stands where
rooms/<Room>/<file>.lua the room's script files, compiled in name order
things/<Thing>.lua the script on a thing (every one of it, in every room)
things/<Thing>.json the bricks on a thing
A thing is a mint the game holds in its stock. Rooms place it by name, as many times as they like. What is set on a thing, its script and its bricks, holds for every one placed. A placed thing can carry bricks of its own on top (a sign's text, a spawn's team); it cannot carry a script. A room has settings, rules (the bricks on the game) and its script files. The game is the root room and the rooms made inside it.
eggox.json
{
"name": "Ninja Skybound",
"api": 1,
"id": "room:tpi_room_…",
"rooms": ["Skybound", "Belt Island"]
}
| field | meaning |
|---|---|
name | the game's name, as its door shows it |
api | the scripting API version every room runs on |
id | the game's id, written by a pull; a push needs it |
rooms | the rooms in order, root first; folder names under rooms/ |
Names
Rooms and things are named by their names in Eggox, made safe for a file name: letters, digits, spaces, - and _, at most 40 characters. Two stock items with the same name are told apart as Name, Name 2, Name 3, oldest first. eggox stock shows the exact name of every thing.
What is not in the folder
The voxel art of a thing is the mint's, made in the blueprint Studio and held in the game's stock; the folder only names it. Players' saves and leaderboards are the game's data, not its definition. Both stay where they are when you push.
This page as markdown: /project/folder.md