Files tools¶
Project settings, packaging the game as an app, running it in the real player, and the legal notices.
4 tools in the files category. Badges: read-only tools never change the project; mutating tools are undoable and attributed; open-world tools reach outside the engine and MCP clients ask before running them.
| Tool | Summary |
|---|---|
game_settings |
Read or change the project's shipping settings in game.json: startScene, window {width,height,fullscreen,resizable,vsync}, quality (low|medium|high|ultra), renderScale, quitOnEscape, pauseOnFocusLoss, icon (a PNG, 1024x1024 recommended), bundleId (reverse-DNS), version, copyright, plus include/exclude globs for packaging, and the description fields (id, title, genre, mood, pitch), and mounts: shared folders outside the project addressed by a top-level name, e.g. |
game_build |
Package the project as a standalone macOS app (Name.app): the player runtime, the scenes, the assets they reference (computed from scenes, prefabs, materials and Wander scripts; all_assets ships everything), scripts, the project's native module (compiled now), Info.plist, an icon made from the game.json icon, and an ad-hoc code signature. |
game_run |
Start the standalone player on the current project as a separate process to try the game like a player would (real window, real input, audio). |
legal_info |
Skywalker's Terms of Use, Privacy Notice and license: their versions and effective dates, MCP resource URIs (skywalker://docs/legal/TERMS, skywalker://docs/legal/PRIVACY, skywalker://docs/LICENSING), whether a person has accepted the current versions on this computer (status current, outdated, not_recorded), and a verified summary of data practices (no telemetry; data leaves the computer only to the AI provider or download URL the human chose). |
game_settings¶
Game settings (game.json) mutating
Read or change the project's shipping settings in game.json: startScene, window {width,height,fullscreen,resizable,vsync}, quality (low|medium|high|ultra), renderScale, quitOnEscape, pauseOnFocusLoss, icon (a PNG, 1024x1024 recommended), bundleId (reverse-DNS), version, copyright, plus include/exclude globs for packaging, and the description fields (id, title, genre, mood, pitch), and mounts: shared folders outside the project addressed by a top-level name, e.g. {"mounts": {"kit": "../_kit"}} makes kit/characters/guard.prefab.json resolve into ../_kit (assets, prefabs, materials and animations load from it; game_build copies what the game uses), and saves {version, maxSlots, compress, migrate} for save games (docs/SAVE_GAMES.md). get returns the effective settings, the resolved start scene and validation problems. set merges the given fields (null removes one) and validates them. Example: {"operation":"set","settings":{"title":"Sky Dash","startScene":"scenes/main.sky.json","window":{"width":1280,"height":720}}}
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
operation |
string | get (default) or set | get set |
|
settings |
object | Fields to merge into game.json (set only) |
game_build¶
Build the game as a macOS app mutating open-world
Package the project as a standalone macOS app (Name.app): the player runtime, the scenes, the assets they reference (computed from scenes, prefabs, materials and Wander scripts; all_assets ships everything), scripts, the project's native module (compiled now), Info.plist, an icon made from the game.json icon, and an ad-hoc code signature. Settings come from game.json (see game_settings). Returns the app path, size, file count by type, and warnings (missing assets, no icon). dry_run reports what would ship without writing anything. The app runs on this Mac; distributing it needs a Developer ID signature and notarization (docs/SHIPPING.md). Example: {"out":"/Users/me/Builds","release":true}
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
out |
string | Folder to write <Name>.app into (outside the project is best; ~/Desktop, ~/Builds) | ||
name |
string | App name (default: game.json title) | ||
icon |
string | PNG path (absolute or project-relative); overrides game.json icon | ||
version |
string | Game version like 1.2.0; overrides game.json | ||
bundle_id |
string | Reverse-DNS bundle identifier; overrides game.json | ||
scene |
string | Start scene override (project-relative) | ||
release |
boolean | Strip the player's symbols for a smaller app (default false) | ||
all_assets |
boolean | Ship every asset in the project, not only referenced ones (use when scripts build paths at run time) | ||
sign |
boolean | Ad-hoc code sign (default true) | ||
build_native |
boolean | Compile and ship native/*.cpp (default true) | ||
dry_run |
boolean | Only list what would ship |
game_run¶
Run the game in the standalone player mutating open-world
Start the standalone player on the current project as a separate process to try the game like a player would (real window, real input, audio). It runs the saved scene file (save first); without scene it uses the open scene or game.json's start scene. Returns the pid and a log file. status shows whether it is still running and its recent output; stop ends it. With capture the player renders one frame to a PNG after frames frames and exits (a screenshot of the real player output). seconds closes the game by itself. app runs a built .app instead. Example: {"action":"start","scene":"scenes/level2.sky.json","width":1280} or {"capture":"/tmp/shot.png","frames":120}
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
action |
string | start (default), stop, or status | start stop status |
|
scene |
string | Scene to start in (project-relative); default: the open scene | ||
app |
string | Run this built .app instead of the project | ||
pid |
integer | stop/status: which player (default: the latest) | ||
fullscreen |
boolean | Start fullscreen | ||
width |
integer | Window width in points | ||
height |
integer | Window height in points | ||
quality |
string | Quality preset override | low medium high ultra |
|
seconds |
number | Quit after this many seconds | ||
capture |
string | Write one frame to this PNG and quit | ||
frames |
integer | With capture: frames to run before the capture (default 90) | ||
wait |
boolean | Wait for the player to exit and return its output (default true with capture/seconds) |
legal_info¶
Legal documents and acceptance read-only
Skywalker's Terms of Use, Privacy Notice and license: their versions and effective dates, MCP resource URIs (skywalker://docs/legal/TERMS, skywalker://docs/legal/PRIVACY, skywalker://docs/LICENSING), whether a person has accepted the current versions on this computer (status current, outdated, not_recorded), and a verified summary of data practices (no telemetry; data leaves the computer only to the AI provider or download URL the human chose). Use it to answer licensing or privacy questions, or before advising on shipping. document (terms, privacy, license, licensing) adds that document's full text. Nothing waits for acceptance; a person accepts in the editor or with skywalker legal --accept, never an agent. Example: {"document": "privacy"}.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
document |
string | Include this document's full text: terms, privacy, license (the LICENSE file) or licensing (plain-language summary and third-party notices) | terms privacy license licensing |