Everything the VS Code extension does goes through the veduta tool, which works just as
well in a terminal. Run commands inside a project folder (or pass --project DIR); add
--json for machine-readable output. veduta help <command> lists a command's flags.
Making and playing
Command
Does
veduta init NAME
creates a Lua game project in a new folder
veduta new KIND NAME [--in FOLDER]
writes a new scene, world, map, prefab, model, material, texture, scenario (--scene S or --world W: where it starts) or script that builds as it is; --in puts it in a folder of its kind
veduta sim [--scene S | --world W --at x,z] [--seed N]
plays the game in the simulator window (Windows), from the scene given or the project's default; saving a file reloads it in place
veduta run [--scene S | --world W --at x,z] [--seed N]
plays the game on a Linux framebuffer (the console, a text console)
veduta build
checks every script and compiles the assets; errors with file, line and column
veduta cook
compiles changed assets ahead of time (--force for all)
veduta refs FILE… or veduta refs KIND NAME
lists what names these files or folders (an asset, a PNG, a script) in the sources, veduta.json and the Lua scripts, with file, line and column: what breaks if they go
veduta move SOURCE… DEST [--dry-run]
moves files and folders into the folder DEST (one source and a new DEST: renames it), changing everything that names them; a texture takes its own PNG along
veduta rename KIND NAME NEW [--dry-run]
gives an asset a new name, its file and everything that names it; sprite renames a texture with the material and the prefab of its name
veduta duplicate KIND NAME NEW
copies an asset beside it (a texture with its PNG; a sprite's copies name each other)
Testing
Command
Does
veduta test
runs every scenario and compares goldens (--update-golden records them)
veduta simulate --scenario FILE
runs one scenario: verdict, events, contact sheet
veduta simulate --scene S --ticks N [--seed N] [--input FILE] [--screenshots 0,60]
runs a scene with optional scripted input
veduta fuzz --scene S --games N --ticks T
random play against the invariants; writes a minimal failing scenario
veduta render --scene S [--tick T] [--mode M] [--out f.png]
draws one frame
veduta bench --scene S --ticks N (or --scenario FILE)
times update and drawing against the 50 ms budget
veduta diff A.png B.png
compares two images
Assets and worlds
Command
Does
veduta inspect model|texture|scene|prefab|world|map NAME
reports problems and writes contact sheets
veduta world map|query|place|terrain|vegetation|remove NAME
describes and edits a world
veduta query
asks which entity is at a pixel of a rendered frame bundle
Shipping
Command
Does
veduta deploy [CARD]
copies the game to the console's SD card
veduta publish [vX.Y.Z]
builds the release archives and uploads them to the Veduta server, where the MARKET lists the game
veduta release vX.Y.Z [--dry-run]
checklist, changelog, tag and push; CI publishes the archives to the server
veduta doctor
checks the tool, the project and its readiness for the console
The tool itself
Command
Does
veduta version
the tool's version
veduta update [--channel stable|beta] [--check]
updates the tool from the Veduta server
veduta login / veduta register
logs this machine in to the Veduta server (updates and publish need an account)
veduta whoami / veduta logout
the account the stored token belongs to; forgets it
veduta extension [--install] [--out FILE]
fetches the VS Code extension released with the tool (checksum verified); --install puts it into VS Code
veduta upgrade
moves the project to the tool's engine version and refreshes editor files
veduta dap
the debug adapter VS Code starts (not run by hand)
veduta mcp
serves the tool to an AI agent (Claude Code) over MCP
Working with an AI agent
Every project has a CLAUDE.md and a .mcp.json. Opened in Claude Code, the agent reaches
the same commands as tools (simulate, render, inspect, test, the docs of every
format) and can build, look at frames and test the game it is changing.