The editor
The Ragnavoxel Editor: the project file, the modeling workbench with the engine's own viewport, edits that keep your files as you wrote them, the MCP server that lets an AI assistant work on the same models, and its tests.
The engine’s own editor is a modeling workbench for the TOML models a Ragnavoxel game is made of, an MCP server so AI assistants can work on the same models, and the build and packaging tools.
build/release/ragnavoxel/editor/ragnavoxel_editor # open the editor on the project here
build/release/ragnavoxel/editor/ragnavoxel_editor --help # every mode and option
The project file
The editor finds ragnavoxel.project.toml in the current folder or one above it (or takes --project FILE). Any game on the engine opens in the editor by writing one. A shortened form of LostVale’s:
[project]
name = "LostVale"
version = "0.1.0"
[content]
materials = ["assets/materials/geology.toml", "assets/materials/life.toml"] # loaded in order
voxel_types = ["assets/terrain/rocks.toml"] # global [voxels.*] files
[editor]
stage_ground = "turf_sward" # the preview stage's ground (a global voxel type)
[[models]] # one entry per collection of models
format = "voxel" # voxel: one microvoxel model per file
path = "assets/models" # a folder (searched recursively) or one file
label = "Flora, fungi, fauna, rocks"
[[models]]
format = "prop" # prop: [[model]] shape models, many per file
path = "assets/decor/models.toml"
label = "Furniture and decor"
generated_by = "tools/gen_decor.py" # the editor warns that the generator rewrites it
[build]
dir = "build/release"
configure = ["cmake", "--preset", "release"]
build = ["cmake", "--build", "build/release"]
run = ["build/release/game/lostvale"]
[package]
executable = "build/release/game/lostvale"
resources = [
{ from = "assets", to = "assets" },
{ from = "game/assets", to = "anim", include = ["*/Unreal-Godot/*.glb"] },
{ from = "build/release/shaders", to = "shaders" },
]
exclude = ["*.blend", "*.fbx", "*.pyc", "__pycache__"]
runtime_libs = ["libstdc++.so.6", "libgcc_s.so.1", "libgomp.so.1"]
output = "dist"
arch = "x86-64-v2" # every x86-64 CPU from about 2009 on
Modeling
The window is the asset browser and part outliner on the left, the viewport in the middle, the inspector on the right and the live TOML source underneath.
- Everything is one click or one key. Click a part in the viewport to select it; drag its handles to move points and radii (Shift snaps, Ctrl keeps to one axis). Every field drags with the mouse and takes typed values on double-click. Ctrl+P opens any model by a few letters of its name, Ctrl+K runs any command, and
@in quick open jumps to a part. - What you see is what the game grows. The viewport is the engine’s own renderer, lighting and materials, and voxel models are instantiated by the engine’s
AssetLibraryexactly as the world does. R grows another instance, G shows a 3 × 3 field of variations, and V turns and scales the main instance as the game would. - Nothing in the file changes that you did not change. The editor keeps each file as text and rewrites only the values you edit: comments, blank lines, number spelling and layout survive. Edits made elsewhere (a text editor, a generator, the MCP server) reload at once.
- Ranges are first-class. A value that varies per instance is
[lo, hi]; the<>button beside any number turns it into a range or back, and Alt-drag moves both ends. - Undo everything. Ctrl+Z and Ctrl+Y; a drag or a burst of typing is one step.
- Hide, solo, reorder. The eye beside a part hides it from the preview (H; Alt-click shows only that part). Drag parts to reorder them: parts stamp in file order.
- Voxel art by hand.
layersparts get a painter: pick a legend character, paint cells with the left button, erase with the right. Layers stack along y with the one below shown faintly. - Fields you have no widget for still edit. Keys the schema does not know (a game’s own lights, seats, work spots) are listed with editors by their TOML type, and any key can be added.
F1 lists every shortcut.
The MCP server
ragnavoxel_editor --mcp --project /path/to/ragnavoxel.project.toml
speaks the Model Context Protocol over stdio. To add it to Claude Code:
claude mcp add ragnavoxel -- /path/to/ragnavoxel_editor --mcp --project /path/to/ragnavoxel.project.toml
(Help, Connect an AI assistant in the editor copies this, or a JSON config, for you.)
| Tool | Does |
|---|---|
project_info, list_models, get_model, describe_format |
read the project and its formats |
list_voxel_types, list_materials, validate_model |
read the content and check a model |
set_model_toml, set_fields |
write a whole model or some of its values |
add_part, remove_part, duplicate_part, move_part, change_part_type |
edit parts |
add_voxel_type, create_model, rename_model |
add content |
render_model |
a PNG rendered by the engine, so the assistant can see what it made |
build_project, package_project |
build and package |
Edits keep comments and layout, are validated with the engine’s loader before they are saved, and show up in an open editor window straight away.
Build and package
The Build & Package tab (or --build, --package) runs the project’s build command with live output, runs the game (one copy at a time), and packages it. See Shipping.
Tests
ragnavoxel_editor --selftest # every content file round-trips byte for byte; edit operations
ragnavoxel_editor --validate # every model loads with the engine's loader
Written from the engine's headers and source as of commit 02e81b2 (2026-11-01).