Quick start
1. Download & launch
Download the latest release. Unzip anywhere. No installer needed. Launch WorldSlate.exe.
2. Create a project
From the launcher, pick one:
- New Project — name it, define biomes, point at a sprites folder (or skip and use the bundled 1200+ SVG library), set up zones.
- Open Project — load an existing
.worldslatefile. - Template — load a bundled starter and explore immediately.
3. Design your world
On the World Gen screen, the sidebar groups every knob by topic — Quick Start (a starter preset), then World, Distribution, Biome Shape, Rivers, Lakes, Features, Outer Rings, Zones, Draw Order, Size. Pick a preset to begin, dial in the details tab by tab. Click Generate to roll the world; click again any time to reroll with the current settings.
Tip: keep the Size pill at its defaults while you're dialing in biome rules and partition styles — bigger canvases mean slower regens. Crank it up once the design feels right; deterministic seeds preserve your intent when you scale.
4. Place biomes by intent
For each biome, set a weight (relative frequency) and a spatial bias (N/S/E/W/diagonals/Center/Edge). The sampler honors your intent across every seed. "Ice in the north" stays in the north no matter how you reroll.
5. Hand-place landmarks
Switch to the Editor screen. Use the manual layer for boss arenas, towns, story locations. These survive seed changes; authored, not generated. Use brush, fill, stamp, and path tools to scatter or place individual obstacles.
6. Open in your engine
File → Export (Ctrl+E). Pick "Open in Godot" or "Open in Unity." A complete runnable starter project appears with a walkable player, chunk streaming, world map, and minimap with fog-of-war pre-wired. Press F5. You're walking around your world.
The runtime arrives as .gd (Godot) or .cs (Unity) source, not a binary plugin. Read it, modify it, ship it inside your game. Licensing summary →
Project file (.worldslate)
One file per project. JSON throughout, version-control friendly. Carries every world-gen knob, biome palette + rules, layer list, hand-placements (POIs, paths, paint strokes), zone catalog, and asset-folder references. Edited entirely through the WorldSlate UI. No manual JSON tweaks needed.
Key fields
| Field | Purpose |
|---|---|
world_gen | Every world-gen knob (canvas size, continent shape, partition mode, river / lake / boundary / center / outer-ring config, seed, etc.). |
biomes | Biome palette: stable id → { name, name_key, ground_color, … }. Renaming changes the friendly name; the id stays stable. |
biome_rules | Per-biome distribution rules: weight (0–100), bias direction, bias strength. |
boundary_rivers / free_rivers / outer_rings / zones | World-gen feature lists authored on the World Gen screen. |
layers | Layer definitions. Each has a key, name, behavior (algo or manual). |
layer_data | Per-layer placements (chunk-keyed). Hand-placed obstacles, fills, stamps, etc. |
poi_markers / custom_paths / paint_strokes / biome_paint | Hand-authored vector content from the Editor screen tools. |
zone_types | Editor-side zone-type catalog (id, name, color, default radius, behavior). |
asset_sources / asset_overrides | Sprite-folder references and per-variant bake overrides. Managed via the Asset Library screen. |
cell_catalog | Heatmap-in-OBB data driving algorithmic scatter at Apply time. |
scatter_seed / lock_scatter_to_world | Determinism state for algorithmic scatter. |
The generator
One unified generator. No swappable engines, no plugin maze. The same pipeline produces every world; what changes is the partition mode and per-biome distribution rules.
Partition modes (5)
Partition mode decides how the world is sliced into cells. Biome rules decide what goes in each cell.
| Mode | Description |
|---|---|
| CVT cells | Centroidal Voronoi Tessellation. Organic, equal-area cells with smooth edges. Default. |
| Radial wedges | Angular slices from the center. River-sector layouts. |
| Horizontal bands | Strip layout running east–west. Latitude-style worlds. |
| Vertical bands | Strip layout running north–south. |
| Concentric rings | Disc plus annuli. Moat/island compositions or center-out difficulty curves. |
Biome distribution
Per biome, you set:
- weight (0–100) — relative frequency. 0 excludes; default 1.
- bias_dir — N / S / E / W / NE / NW / SE / SW / Center / Edge / null.
- bias_strength (0–1) — 0 disables bias, 1.0 strong skew.
The sampler picks per cell from a weighted pool, modulated by a spatial-match score against the bias direction relative to the world bounds. Knob slides reshuffle partition cells; biome intent stays intact because bias is in world space, not cell index.
Rivers, lakes, boundary
Boundary rivers (spokes + spans) and free rivers (cartesian endpoints) are independent authoring surfaces. Lakes have count, size, wobble, and river-lake percentage knobs. The boundary supports moat width, island radius, corruption width, and void width.
Draw order
When overlays collide (ocean covering lakes, lakes covering rivers, custom biome paint over either), the Draw Order pill in the World Gen sidebar decides who wins. Biomes higher on the list draw above biomes below. Drag to reorder; + Add Biome brings any biome into the list. New projects ship with ocean → lake → river (ocean wins, lakes above rivers); biomes not listed render unconditionally and can be overwritten by later passes.
Algo vs manual layers
Layers split into two behaviors:
- algo — obstacles authored via brush/fill/stamp tools. Algorithmic scatter learns the density pattern from your brushed examples and reproduces it across every matching biome cell. Ships in v1 marked experimental; toggle on in Settings → Experimental.
- manual — absolute placements with explicit positions. Seed-independent. Wins all conflicts at runtime.
New projects ship with one of each by default. Add more of either kind any time.
Export formats
| Format | Output | Use case |
|---|---|---|
| Open in Godot | Complete Godot project with the runtime shell + generator as .gd | One-click playable starter game |
| Open in Unity | Complete Unity project with the runtime shell + generator as .cs | Same, native C# |
| WorldSlate Project | .worldslate — world recipe + every placement (POIs, paths, paint strokes) in a single file | Share with collaborators; re-open and remix in WorldSlate |
| Biome PNG | Indexed image of biome regions | Visual reference, prints, custom pipelines |
| Placement CSV | Flat tables | Spreadsheet or custom tooling |
What ships with your game
"Open in Godot" and "Open in Unity" don't produce a sealed export. The complete world generator ships as readable source in your project, alongside the runtime shell. You can read every line, modify any pass, and rebuild.
Godot — addons/worldslate/
shell/— player, camera, chunk view, minimap, tab map, map reveal (fog-of-war), POI / zone indicesworld_gen/— generator (compose + 9 passes: canvas, boundary, zones, partition, classify, outer ring, lakes, rivers, center)math/— noise, Voronoi, Delaunay, splines, polygonize, geometrydata/— recipe loader, world-data adapter, sprite resolverruntime/— cell catalog, scatter, scatter math (deterministic algo placements)render/— paletteskins/— four bundled skin.tresfiles (Loom Dark / Light, Atelier Dark / Light)
Unity — Assets/Plugins/WorldSlate/
Shell/— player, camera, chunk view, minimap, tab map, map reveal, POI / zone indicesRuntime/— recipe loader, world-data adapter, sprite resolver, plusRuntime/WorldGen/(the full generator) andRuntime/Scatter/(cell catalog + deterministic scatter)
Players can hit "new world" in your shipped game; the live generator runs with a fresh seed.
Runtime shell
Every export ships with the same runtime shell:
- Walkable player — placeholder controller, drop in your own.
- Chunk streaming — regions load and unload around the player automatically.
- World map — press Tab, see the whole world.
- Minimap with fog-of-war — corner reveal as the player explores. Persists across sessions.
- Zone flags — query
worldslate.is_in_zone(pos, "no_spawn")from your code. - POI markers — query by name or kind for landmarks and quest hooks.
Keyboard shortcuts
| Key | Action |
|---|---|
| B | Paint tool (scatter brush) |
| V | Select tool |
| G | Fill tool (Poisson-disc circle) |
| P | Path tool (waypoints) |
| M | Biome paint (raster) |
| K | POI tool (point markers) |
| T | Stamp tool (prefab clusters) |
| R | Region fill (flood-fill biome region) |
| 1–9 | Switch active layer |
| Tab | Toggle UI chrome |
| Ctrl+Z / Ctrl+⇧+Z | Undo / Redo |
| Ctrl+S | Save |
| Ctrl+Shift+S | Save As |
| Ctrl+E | Export dialog |
| Ctrl+A | Select all (in Select tool) |
| Ctrl+D | Deselect |
| Ctrl+0 / Ctrl+1 | Fit to view / actual size |
| Del | Delete selection |
| MMB drag | Pan |
| Scroll | Zoom (cursor-centered) |
Every shortcut is rebindable from Settings → Keyboard Shortcuts. Overrides save to your user preferences and survive restarts.
Roadmap
Solo-dev pace. The items below are committed work; bigger v2 ideas get hashed out in the Discord.
v1.0 — launch
What ships now: five screens, five partition modes, eight editor tools, runtime shells for Unity and Godot, 1200+ public-domain SVG sprites, English + Spanish UI, Windows-only editor.
v1.1 — quick wins (first weeks)
- More starter templates. Adding to the sixteen that ship at launch. Community-requested themes get queued first.
- Bug-fix passes driven by launch feedback.
v1.2
- Linux build.
- Algorithmic scatter graduates from experimental. Once it's hardened against more workflows it stops being gated behind the Experimental menu and ships default-on for new projects.
- More partition modes. Candidates under evaluation: hex grid, Perlin-warped CVT, hybrid bands + rings.
- Ground textures and shaders. Per-biome surface material fills (procedural noise, gradient, grain) plus per-biome shader parameters.
v1.3+
- macOS build.
- Free Lite tier.
- More export formats. Candidates: GameMaker, Defold, Phaser, Tiled
.tmj. Priority follows which engine communities show up first. - Tutorial set + cookbook. Short videos and written walkthroughs covering the common end-to-end flows.
- Algorithmic fill (knob-driven). A new high-level screen for the algo pipeline. Density knobs per (biome × placement type) drive a world-wide fill in one pass.