Campaign & Worlds

The main hub, twelve theme worlds with 64 missions, the bonus world, how missions unlock and how every world is built.

The campaign has the original's structure and the original's numbers: 78 worlds, each a hand-authored 3D design that teaches what the same-numbered world of Speedy Blupi teaches. All of them are built, and each has a scripted playthrough; all 78 passed on 2026-11-06. The whole campaign in one run from a new game last reached the ending on 2026-11-01; a later run stopped early at a script check in world 021 (that mission passes alone), so a full run is not claimed for the build of 2026-11-10.

Structure

World fileWhat it is
world001The main hub. The original's machine shaft becomes a stepped machine ziggurat: seven tiers, each a jump above the last, the twelve world signs in niches paired per tier as the original pairs them per level, and on the summit a tunnel of twelve gold bars before the exit to the bonus world.
world010 … world120The twelve theme hubs, one per world, each with one sign per mission.
world011 … world125The 64 missions: mission k of world N is number N×10 + k.
world199The bonus world, the original's final world rebuilt in 3D as one journey (rebuilt on 2026-11-06). Its red arrow ends the game with the Win screen.
world999Galaxy Eggbert's showcase of the mechanics, reached by its own portal on the main hub's bottom tier; used by several tests and the golden frames.
world998The gallery: every block, object and big decor in one place (its map: plans/audit/gallery_map.md). The editor gives it a slot of its own.
title.vwrThe scene behind the main menu.

All 81 files live in worlds3d/. A world's mission number is stored in its header, and VerifyShippedWorlds checks that it matches the file name.

The twelve worlds

The themes, mission counts and last missions are the original's; tools/campaigncheck.py checks them against the shipped files. The first mission's title is the one of its design brief in plans/briefs/.

WorldThemeHubMissionsGolden key inFirst mission
1Blue machinesworld010011-014 (4)014The first lesson
2White palaceworld020021-025 (5)025The palace garden
3Villageworld030031-034 (4)034Birds over the rooftops
4Cheeseworld040041-046 (6)046The helicopter caves
5Space stationworld050051-058 (8)058The station and the cistern
6Slimeworld060061-066 (6)066The slime chasm
7Toysworld070071-075 (5)075The jeep and the toy tower
8Machine works in the skyworld080081-084 (4)084The sky steps
9Clay clodsworld090091-095 (5)095The climb out of the clods
10Grey cobblesworld100101-107 (7)107The dynamite caves
11Hangar of blue machine panelsworld110111-115 (5)115The hangar shaft
12Brick houseworld120121-125 (5)125The brick house

Missions 11-14 carry the original's training hints. The inventory of every world (the original's objects and tiles beside the 3D world's counts) is plans/inventory/worlds.md.

How hubs unlock missions

The hubs work as the original's Decor::AdaptDoors, read along X and Z in 3D (HubDoors, include/GalaxyEggbert/HubDoors.hpp):

  1. In the main hub every world sign is open from the start. Walking into a sign makes Blupi wave goodbye and loads that world's hub.
  2. In a theme hub, mission 1's sign is open; every later mission's sign sits behind a blue bar (tile 182) one or two cells away. Winning mission k opens the bar of mission k+1: Blupi comes back to the hub just outside it and watches it slide up.
  3. The world's last mission ends at the golden key. It leads back to the main hub, where the world's sign shows it finished and one more gold bar (tile 183) slides up, the lowest first. Blupi arrives beside the sign of the world he last played.
  4. With all twelve worlds finished the gold bars are gone and the main hub's red arrow leads to world 199. Its own red arrow is the ending.

Pause's Back returns from a theme mission to its hub and from a theme hub to the main hub. Progress is kept per player (A, B, C) in savedata.txt; see Save Data & Resume. The opendoors cheat opens every bar while it is on.

How the worlds are made

Every world is a .vwr file: a 100 × 100 × 100 grid of blocks in 10 × 10 × 10 chunks, whose block numbers are the original's tile icons, plus sparse records for objects, big decor, hint zones and turns. The format is described on The .vwr Format.

Hand-authored true 3D

The original's 2D maps give a world its identity, theme, mechanics, difficulty and order, and nothing else. No map is converted, extruded or traced; a side-view 2.5D conversion was tried and rejected on 2026-10-25. Each world is its own design, using only the original's tiles and objects as the original uses them.

Python generators

Each campaign world is the output of a script in tools/worlds/ (world001.py … world199.py, gallery.py, title.py) built on tools/worldkit.py and the theme kits (kit.py, palace.py, village.py, cheese.py, station.py, slime.py, toys.py, skyworks.py, clods.py, cobbles.py). Re-running a script reproduces the committed file byte for byte:

python3 tools/worlds/world012.py            # writes worlds3d/world012.vwr
python3 tools/vwr_inspect.py worlds3d/world012.vwr   # header, block counts, objects

The showcase world999 has no Python script: the C++ tool GenerateSampleWorld3D writes it. Each world has a brief in plans/briefs/worldNNN.md: what the original teaches, the 3D design and the checks that were run.

Checks

ToolChecks
tools/levelcheck.py, tools/flightcheck.pyEvery goal is reachable on foot, and with the helicopter.
tools/campaigncheck.pySigns, mission counts, one red arrow or golden key per mission.
tools/watercheck.pyNo pool Blupi cannot climb out of.
VerifyShippedWorlds (CTest)Every shipped world loads and carries its own mission number.
tools/autoplay/Scripted playthroughs of all 64 missions, each world's chain from its hub to the main hub, world 199 and the whole campaign (Testing).

The in-game editor

Worlds can also be built in the game's 3D world editor, which writes the same format. Typing xnjttjpo in play opens the world being played in it. Each player can also build a galaxy of their own with the campaign's hub rules. Step-by-step authoring: Modifying Levels.

Jumping to a mission

For development and checks, the desktop build starts straight in a world, skipping the menus. Run it from the build directory, where the assets are:

./GalaxyEggbert --mission 12                   # mission 012
./GalaxyEggbert --mission 999 --spawn 34,1,6,0     # showcase, Blupi at raw cell 34,1,6 facing 0 degrees
./GalaxyEggbert --galaxy --mission 11              # mission 11 of the selected player's galaxy

--spawn x,y,z[,yaw] takes raw grid coordinates (0-99, Y up), the ones vwr_inspect.py and the editor show. In play, Pause's Restart starts the current mission again. More options: Running the Game.