3D World Editor
Build and change worlds inside the game: fly a free camera, aim at cells, place the game's own blocks, objects and scenery, then play-test at once.
The editor follows the editors of Speedy Blupi and Eggbert 2: the same palette groups in the same order, the same variant cycling, the same automatic re-tiling of rock edges, the same lift speeds. Because it works in 3D it adds tools of its own: a free-fly camera, 3D box selection, copy and paste, quarter turns, backups and thumbnails. This page describes the state as of 2026-11-10.
Opening the editor
| Way in | What opens |
|---|---|
| Main menu, 3D World Editor (above Play) | The world screen of the selected player. |
| World screen, Galaxy | The player's own galaxy; see Your Own Galaxy. |
Typing xnjttjpo during play | The editor on the world being played (Speedy Blupi's XMISSION cheat). |
The world screen
Each of the three players has ten world slots, shown as a grid of five by two. An occupied slot opens; an empty one creates a new world there, a small playable starter (a 3x3 board of rock, a treasure chest, an exit arrow and Blupi's start). A slot's bin deletes its world after a second click. Slot 1 is seeded once with the showcase world, and the gallery (every block, object and scenery piece in one world) goes into the next free slot. Worlds outside the ten slots and shared worlds are listed under "Other worlds": a click copies one into a free slot. Back (or Escape) returns to the main menu.
Editing a campaign world: xnjttjpo
Typed during play (no Enter), the cheat opens the editor on the mission's own world file. Saving writes the
shipped world itself, the versions before it kept in customworlds/campaign-backups/; Stop returns
to the mission, started again with the edits. Afterwards Pause shows an Original button: after
"Sure?" the world as shipped comes back and the mission restarts. On the web the shipped worlds live in the
page's data, so each edit is kept in the browser's storage and laid over them at every start. Like every typed
cheat it needs a build with cheats enabled and is blocked by fairplay; see
Cheats & Diagnostics.
Camera and aiming
The camera flies freely: W/A/S/D move, Ctrl rises, Shift or Z descends, the right mouse button held turns the
view, the mouse wheel zooms. A ray from the cursor through the voxel grid finds the aimed cell
(VoxelRaycast):
- the cyan outline is where Place will add a block, beside the aimed face;
- the red outline and tint mark the edit target, the thing that Turn, Variant and Remove act on, with its coordinates in the status line;
- in an empty world the ray falls onto the ground plane, so the first block can be placed.
NumPad 4/6 (X), 8/2 (Z) and 7/9 (Y) move the placement cell away from the aimed one; that coordinate stays fixed while the camera moves, until NumPad 5 aims with the cursor again. The world's bounds carry its axes: X red, Y green, Z blue.
The palette
The icon palette has the ten groups of Eggbert 2's editor in its order, then one group of Galaxy's own. A group mixes terrain blocks, objects and big scenery (BigDecor) as the original's menus did. An entry the game cannot place yet stays in its original position and shows "Not yet implemented."
| # | Group | Entries | What it holds |
|---|---|---|---|
| 1 | Scenery | 11 | Mostly BigDecor families (trees, palms, plants, houses, machine and toy backgrounds); the marine plant, a support and a web are cells |
| 2 | Technical blocks | 8 | One representative tile from each of the original's technical tables |
| 3 | Rock and terrain | 10 | Terrain tiles |
| 4 | Buildings | 10 | Building tiles, among them the brick wall and the flight barrier |
| 5 | Hazards | 12 | Patrol and following enemies, lava, a fan, spikes, the drip, the saw, the inverter, the lightning, the crusher |
| 6 | Moving mechanisms | 13 | The lift at four speeds, the conveyor lift, fish, bird, wasp, the large creature, spider, enemy Blupis |
| 7 | Treasures | 9 | Treasure chest, extra-life egg, lollipop, shield, drink, ammunition, charge, the personal mine, dynamite |
| 8 | Keys and progression | 10 | A key, doors, the hub door, a teleporter, a spring, temporary blocks, bridges, the crate and the secret crate (camouflaged as the selected terrain) |
| 9 | Vehicles | 5 | Overcraft, helicopter, skateboard, jeep, tank |
| 10 | Characters and goals | 8 | The exit, the four coloured Blupi starts, posts, signs, the golden key |
| 11 | Background (Galaxy) | 32 + 11 | The 32 sky regions as live thumbnails, then the music: none or tracks 1-10 |
Placing and changing
- Place: left click, Space or the PLACE button puts the selected entry in the cyan cell.
- Variants: clicking again on the cell just placed cycles through its variants; Ctrl+click places without cycling (and picks a random member of a tree, palm or house family). V cycles the aimed block through its variant family, or through the edge pieces of its re-tiling family.
- Re-tiling: placing or removing a block re-tiles it and its four neighbours, as the
original's
AdaptBorderdoes, so rock and slime edges follow what borders them. - Turn (O): a quarter turn of the red target. A plate, fan or wind tile changes its axis; a window, sign or saw faces another side; models and Blupi starts turn too.
- Remove: Delete, Backspace or the middle button removes the red selection.
- One exit: placing a red exit arrow or the final golden key replaces the previous exit, as in the original editor.
3D selection, box fill, copy and paste
- Shift + NumPad (or Shift + arrows, Home, Page Up) extends an inclusive 3D selection from the aimed cell, its size shown while selecting. Place fills it with the selected block, Remove clears it, Escape cancels. The whole fill is one Undo.
- F on two corners fills the box between them.
- C on two corners copies a box: its blocks, their turns, and the objects and BigDecor anchored in it. P turns pasting on and off; Q turns the copy a quarter, X mirrors it; a click stamps it with its corner at the preview (Ctrl+click keeps what lies under its empty cells). One Undo takes a stamp back. The copy is kept across the worlds of one session.
Undo and redo (U and R) cover every edit: blocks, objects, BigDecor, sky, music, Blupi starts, turns, object ends and timings.
Objects, routes and lifts
A lift or creature from the moving mechanisms is placed, then the next click sets the end of its route (the editor prompts for it); Escape or a click on it again leaves it still. The four lift entries are one lift at the original PC editor's four speeds, in 20 Hz ticks per cell: slow 20/20 with a rest of 20, normal 10/10/10, fast 6/6/3, and fast-up/slow-back 5/22/2.
- G picks an object or a Blupi start; T sets the picked object's end; Tab steps through its timing fields (advance, recede, rest at the start, rest at the end) and +/- change the value; Delete removes the object.
- Routes are drawn as numbered open cubes, 1 at the start and 2 at the end, for every lift, fish, moving mine, bird, wasp, creature and enemy Blupi whose ends differ. Opaque terrain hides them.
- Lifts move along their routes in the editor, with their waits and return trip, by the same routine as in play. This preview is never saved into the world.
The four Blupi starts
Characters and goals holds four independent starts: yellow, orange, blue and green, each drawn in its colour. Moving, turning or removing one leaves the others alone, even when two share a cell. Yellow is the single-player start, and its heading is the one Blupi faces when the world begins.
Sky region and music
The Background group's thumbnails choose the world's sky region (its background picture); the Left and Right arrows step through them too. Its note entries, or the M key, choose the world's music: none or one of the original ten tracks.
Saving and play-testing
- Enter (or Tools > Save, a gamepad's Start) saves. The first save after a world was opened keeps the file as it was as a backup, three generations deep.
- Every save also stores a 64x64 thumbnail of the editor's view, which the world screen shows on the slot.
- The dice saves and starts a play-test; Pause's Back returns to the editor with the same world.
- The Stop sign (F10) returns to the world screen. With unsaved changes it needs a second press.
Backups, export and import
On the world screen, Backups turns a click on a slot into a restore of its newest backup;
clicking again steps further back and comes round to where it began. A deleted slot keeps its world the same way.
Export turns a click on a slot into a copy in the shared folder (A-world-3.vwr for
player A's slot 3, replacing an earlier export of that slot); on the web the file is also downloaded.
Import opens the browser's file picker on the web; elsewhere it tells you where to put files.
Shared worlds are listed first among the other worlds, newest first.
| File | Path in the player's folder |
|---|---|
| Slot K of player N (N = 0, 1, 2) | customworlds/gamerN/custom_00K.vwr (custom_010.vwr for slot 10) |
| Its backups | customworlds/gamerN/backups/custom_00K.1.vwr (newest) to .3.vwr |
| Its thumbnail | customworlds/gamerN/custom_00K.png |
| Shared worlds | customworlds/shared/ |
| The galaxy | customworlds/gamerN/galaxy/ |
Campaign worlds edited with xnjttjpo | customworlds/campaign-backups/, campaign-edits/, campaign-originals/ (the last on the desktop; the web keeps the originals in memory) |
The player's folder is the system's per-user folder on the desktop (~/.local/share/Galaxy Eggbert
on Linux, %LOCALAPPDATA%\Galaxy Eggbert on Windows, or --user DIR), /save
in the browser's storage on the web, and the app's private storage on Android. World files are ordinary
.vwr files; see The .vwr format.
Controls
Keyboard and mouse
H shows these keys on the screen.
| Input | Action |
|---|---|
| W A S D | Fly |
| Ctrl / Shift or Z | Up / down |
| Right mouse button held, wheel | Look, zoom |
| Left click, Space | Place in the cyan cell (click again on it: next variant) |
| Ctrl + click | Place without cycling; when pasting, keep what is under the copy's air |
| Delete, Backspace, middle button | Remove the red selection |
| V / O | Next variant / quarter turn |
| NumPad 4/6, 8/2, 7/9; NumPad 5 | Offset the cell in X, Z, Y; aim with the cursor again |
| Shift + NumPad | Extend a 3D selection |
| F / C / P / Q / X | Box fill / copy a box / paste / turn the copy / mirror the copy |
| U / R | Undo / redo |
| G / T / Tab / + / - | Pick an object or start / set its end / next field / change the value |
| Left / Right arrows, M | Background, music |
| Enter / Escape / F10 | Save / cancel / Stop |
Touch
Touch editing needs no keyboard. The Move pad flies horizontally, the Up/Down buttons change height, and dragging the world with another finger looks around. Palette entries and PLACE are tapped as buttons. Tools > Select 3D replaces holding Shift, and six X-/X+/Y-/Y+/Z-/Z+ buttons extend the selection.
Gamepad
| Control | Action |
|---|---|
| Left stick / right stick | Fly / look |
| RT / LT | Up / down |
| A / X / B | Place / remove / cancel |
| D-pad, LB / RB | Offset the cell in X and Z, and in Y |
| Y | Switch between flying and an on-screen cursor (sticks move it, A clicks palette and Tools) |
| Start / Back | Save / Stop (with the unsaved-change guard) |
The menus and the world screen use the cursor automatically, so a whole session can start and end on a gamepad; the mouse keeps working while one is plugged in.
The Tools menu
For touch and gamepad, the Tools menu lists every command with its keyboard equivalent
(EditorDeviceControls): Save (Enter), Undo (U), Redo (R), Select 3D, Cancel (Escape), Remove
(Backspace), Turn (O), Variant (V), Pick object (G), Set end (T), Next field (Tab), Value + and Value -, Delete
obj (Delete), Copy box (C), Paste (P), Turn copy (Q), Mirror (X), Box fill (F), Keep (Ctrl's place without
cycling), Reset XYZ (NumPad 5), Music (M), Help (H) and Stop (F10).
For developers
The editor lives in src/GalaxyEggbert/Editor/, namespace GalaxyEggbert::Editor.
| Source | Role |
|---|---|
WorldEditor.hpp, WorldEditor.cpp, WorldEditorUpdate.cpp | One editing session: camera, aiming, placement, history, saving. See WorldEditor. |
EditorDeviceControls.* | Touch and gamepad front end; it only produces the keyboard and mouse input the editor already understands. |
PaletteCategories.*, EditorPalette*.* | The groups in Eggbert 2's order, and the palette's input, layout and drawing. |
VoxelRaycast.*, BoxRegion.*, Clipboard.* | Aiming, 3D selections, copy and paste. |
EditCommandStack.* | Undo and redo. |
AutoTile.hpp, EditorVariants.hpp | Re-tiling and variant families. |
ObjectPathRenderer.*, ObjectPathMarkers.hpp, PlayerStartColor.hpp | Route cubes and the coloured starts. |
CustomWorldStorage.*, EditorBrowserScreen.*, GalaxyBrowserScreen.*, PlatformFiles.* | Slots, backups, thumbnails, sharing, the web's download and file picker. See CustomWorldStorage. |
Tests: VerifyGEWorldEditor, VerifyGEEditorDevices, VerifyGEEditorPalette,
VerifyGEEditorStorage, VerifyGEEditorObjects. The comparison with the original editors,
row by row, is plans/audit/editor_parity.md (ED-0001 to ED-0013).
Verification status (as of 2026-11-10)
- Desktop: every approved editor milestone (through EDITOR-130) is complete, with live checks of placing, play-testing, backups, copy and paste, thumbnails and the coloured starts; touch editing (including a touch-only 3x2x8 fill) was checked with direct touch events and gamepad editing with an SDL virtual gamepad.
- Web: export and import checked in headless Chrome (2026-11-06);
xnjttjpoedits kept over a reload (2026-11-09). - Not verified: a physical gamepad or touch screen; editing on Android.