Home/Blog /Engine

What's new in GANDER: particles, enemy navigation, 16 km worlds and cloth

We listed what our Unreal games used that GANDER couldn't do, and built it: effects, navigation, lighter downloads, sound spaces, desktop graphics, streamed worlds and cloth. Then we ported one of those games and built what that turned up.

When we launched GANDER last week we said that for a big open-world 3D game, Godot or Unreal was still the better choice. Then we went through the three Unreal games the studio has made so far and wrote down everything they used that GANDER couldn't do. The list was shorter than we expected, and mostly not about world size. It was particles, lighting, enemies that can find their way around a level, and a few things you only notice when they're missing, like a cape.

We've now built all of it. This post covers what's new, in the order we built it, with screenshots from the test scenes the engine is checked against. None of these features needs anything from you: you describe the game, and the agent uses whatever fits.

What's new in GANDER?

  • Effects: particles, decals, lamps and torches that cast shadows, and a full set of post effects.
  • Navigation and animation: enemies and NPCs that path around a level, take cover and move as a crowd, plus additive animation, clip events, root motion and clips shared between rigs.
  • Lighter games: compressed textures, simpler meshes in the distance, trees drawn as cards far away, and models that download while the game runs.
  • Sound and atmosphere: reverb in halls and caves, sounds muffled behind walls, fog lit by the sun and by lamps, and sun shafts.
  • Pro graphics in desktop exports: temporal anti-aliasing, ambient occlusion, reflections, volumetric fog and bounced light.
  • Big worlds: maps up to 16 km across that stream in as you travel, with towns and props that load in cells.
  • Cloth: capes, flags, banners, curtains and tarps that move in the wind.
  • A newer Goose: the language GANDER games are written in moves 127 commits forward, with pools for things that spawn and die and clearer errors.
  • What porting an Unreal game taught us: blend spaces, retargeting between rigs that rest in different poses, a tool that puts one character's skeleton on another's body, cloth that wraps a character's limbs, windows that show the sky, fog volumes, depth of field and cached shadows.

What effects can a GANDER game use now?

This was the biggest gap. Our Unreal agents built smoke, sparks and muzzle flashes by hand, and GANDER games had to do the same with meshes. Now there's a particle system with ready-made looks: fire, smoke, embers, sparks, steam, dust, debris, shockwaves, muzzle flashes and rain. Each system is a single draw, so a burst of a few thousand sparks costs about what one model does, and smoke is lit by the scene's lights like everything else.

Alongside it:

  • Decals project bullet holes, scorch marks, blood, stains and road paint onto models and terrain. Up to 64 can be on screen at once.
  • Shadowed lamps. Point lights and spotlights can now cast shadows, so a torch-lit hall or a flashlight in a corridor looks right. Before, only the sun did.
  • Post effects: colour grading, film grain, chromatic aberration, blur, a damage vignette, wobble, night vision, CRT and thermal modes, and auto exposure that adjusts as you walk from daylight into a cellar.
A long stone hall lit by wall torches, with pillars on both sides throwing shadows and a warm haze hanging in the air.
Torch-lit hall: every torch is a lamp that casts its own shadows, and the haze is fog lit by the lamps.

Yes. Before this, an agent writing a shooter had to hand-roll pathfinding, and the results were what you'd expect. GANDER now builds a navigation mesh from the level, using Recast and Detour, the same library behind a lot of commercial games. From that the game gets paths, crowds of agents that keep their spacing, cover points behind walls from a given threat, and line-of-sight checks. The mesh is split into tiles, so a door closing or a wall being blown out only rebuilds the tiles it touches.

A top-down view of a walled maze with the navigation mesh outlined in cyan, a group of agents gathered at one end, and a yellow path line threading through a gap in the walls.
Navigation: the navigation mesh in cyan and a path in yellow. Closing the gap in the middle wall rebuilds only that tile, and the agents route around it.

Animation got the parts melee and shooter games kept asking for:

  • Additive layers, for a hit reaction or breathing on top of whatever else the character is doing.
  • Clip events, so the game can ask "did the swing reach its hit frame this frame?" and time damage and footsteps to the animation.
  • Root motion, where the clip moves the character instead of the code guessing a speed.
  • Retargeting, so a walk made for one rig plays on another. Clips from our own rigging, from Mixamo and from other common skeletons all share.

There's also slow motion and hit stop, a third-person camera that pulls in instead of clipping through walls, and a projectile helper that can't skip through a thin wall at high speed.

Do GANDER games load faster now?

They download less and draw less, which on a phone amounts to the same thing. Four changes, all of them automatic:

  • Compressed textures. The build re-encodes model textures into a GPU format (KTX2) that the graphics card reads directly. In our test scene a 15 MB model file came down to 7.1 MB, and texture memory went from 82 MB to 30 MB with no visible change.
  • Simpler meshes at a distance. Detailed models get two lighter versions when they load, picked by how big they are on screen. A crowd of 100 characters went from 5.1 million triangles a frame to 2.0 million.
  • Trees as cards. Far trees and rocks are drawn as flat cards baked from the real model, lit the same way. On a 2 km landscape with trees out to 900 m, that took a frame from 9 million triangles to 1 million.
  • Models on demand. Anything the game only needs later can download while it runs instead of before the first frame.
A low sun over rolling hills covered in trees, with long tree shadows across the grass in the foreground and forest fading into haze in the distance.
Forest to the horizon: nearby trees are full models; past about 120 m they become cards, which is why the forest can reach the horizon in a browser.

What about sound and atmosphere?

Sound now knows where it is. A game can mark out audio spaces, a cave, a hall, a corridor, underwater, and sounds pick up that reverb as the player moves between them, with a short crossfade at the edges. Sounds behind walls are muffled and quieter, judged by rays through the level each frame. All of this runs inside the game's own mixer, so it works in the browser exactly as it does on a desktop. That's not true of our Godot web builds, which can't run audio bus effects such as reverb in the browser.

Light got the same treatment. Fog is now lit by the sun, glowing around it when you look toward it, and by lamps, so torches in a misty courtyard sit in their own halo. Sun shafts break through gaps in walls and trees. The torch hall above and the forest both use it.

What does a desktop export get that the browser doesn't?

Pro graphics. When you export a GANDER game for Mac, Windows or Linux, it renders with a heavier set of effects that a browser tab can't always afford:

  • Temporal anti-aliasing, which smooths edges, thin railings and foliage over several frames.
  • Ambient occlusion, the soft darkening where objects meet the floor and walls meet each other.
  • Screen-space reflections in glossy floors, water and metal.
  • Volumetric fog, shadowed by the scene, so sunlight through a slatted wall shows as beams.
  • Bounced light: a red wall tints the floor beside it.
Two crops of the same courtyard side by side. On the left, coloured spheres float on a flat grey floor. On the right, the spheres sit in soft contact shadows and are reflected in the glossy floor.
Standard on the left, Pro on the right. The spheres sit on the floor instead of hovering over it, and the floor reflects them.

It's automatic. The game code is the same, the web build and phones keep the standard look, and the agent checks the game both ways before it finishes a turn. This is the same idea as Pro mode for Godot games, where the browser build is the preview and the desktop build is the full picture.

You don't need a gaming PC to see it. On a 3D GANDER game, the studio's Game pane has Play desktop build: it runs the real Windows export on a cloud GPU and streams it into your browser, with your keyboard, mouse and gamepad going back. Share makes a link someone else can play it from for up to two hours. The first session after a quiet spell waits a few minutes for a machine to start; after that it starts in seconds.

A sunlit courtyard seen through a railing, with gold, chrome and red spheres on a glossy floor, a slatted wooden wall behind them and beams of light falling through the slats.
Pro graphics in a desktop export, the test courtyard the effects are tuned against.

How big can a GANDER world be now?

Up to 16 km across. Before, a map topped out at 8 km and the whole thing downloaded and sat in memory before you could move. Now the map is split into 1 km regions of about 1.2 MB each, and only the ones around the player are loaded: nine in the browser, 25 on a desktop. A coarse version of the whole map draws the horizon, so the land never ends at the edge of what's loaded, and ground collision streams in with the regions.

The agent writes the landscape the same way as before and runs one command to bake it. An 8 km world bakes in about half a minute. Our 8 km test world downloads 9.8 MB before the first frame, and only what's near the player after that.

Towns, forts and loot go in a world file that loads in 128 m cells around the player. Scenery is drawn by the engine with no game code at all. Anything the game cares about, a villager, a chest, a quest giver, comes through as an event when its cell loads and again when it unloads, so the game can spawn the character and remember that the chest was already opened. Past the load distance, scenery is drawn as cards, so a village shows on the skyline long before you reach it.

Grassland dotted with leafy trees, with two dark hive-shaped huts among them and wooded hills stretching to a hazy horizon.
A streamed 8 km world: the huts are part of a village in the world file; the hills behind are regions that haven't loaded yet, drawn from the overview.

Large maps used to have one more problem: precision. Far from the centre of the map, 3D positions lose detail and models start to shimmer. GANDER now draws everything relative to the camera, and 12 km from the centre a test scene renders the same as it does at the centre.

Can a GANDER game have cloth?

Yes: capes, flags, banners, curtains and tarps, simulated with the soft bodies in Jolt, the physics engine GANDER already uses. Wind blows with gusts and ripples that travel across a flag. A cape follows a running character and stays out of their back. A tarp dropped on crates drapes over them.

A yard with a striped flag streaming from a pole, a red banner hanging between two posts, a green curtain on a frame, and a canvas tarp draped over a crate.
Cloth in the wind: a flag, a banner hung from two corners, a curtain that a ball has just flown through, and a tarp dropped on a crate.

A cape can also wear capsules on its wearer's bones (thighs, shins, arms, a sword), so it drapes over them as they move rather than passing through.

Cloth is pushed by everything but blocks nothing. A player walks through a curtain and shoves it aside, and bullets and line-of-sight checks pass straight through, so a banner never makes a doorway unwalkable. It's cheap enough for a few pieces per scene: a cape costs about a tenth of a millisecond a frame in the browser, a 2 m curtain about 0.6 ms. Desktop exports use a finer grid, so folds are smoother.

A woman sprinting with a long red cape streaming out behind her, and another standing further back with her cape hanging straight.
Capes: the same cape on a runner and on someone standing still.

What did porting an Unreal game to GANDER teach us?

A list of gaps is one thing; a real game is another. So we took one of our Unreal games, a third-person sword fight through a raided keep on a winter night, and had the agent port it to GANDER, working only through the MCP. Its brief had one extra line: whenever the engine lacks something the original relies on, write it down, with the workaround and the API it would want. The first port came back playable start to finish, with 17 entries on that list. We built every one, and the list grew by three more while the agent worked on walking and running.

  • Animation that a fighting game needs. Blend spaces mix walk, jog, sprint and strafes by speed and direction, with every cycle on one phase so the feet stay in step. Eight layers instead of four, and masks that can leave an arm out (the stance on the body, the sword arm free for the swing). A layer can be posed at an exact clip time the fight code works out, and clips carry named markers, so a swing lands its hit on the frame the clip says, even after it's been retargeted to another rig.
  • Retargeting between different rigs. Clips now move between rigs that rest in different poses and face different ways, such as a T-pose rig facing one way onto an A-pose rig facing the other. Before, that case folded the legs into a kneel.
  • A skeleton onto a new body. gander rig transfer gives an unrigged body another character's skeleton, fitted to its height, its build and its pose, with skin weights and every clip. A bulkier second fighter got the first fighter's whole move set this way, and armour pieces come along skinned to stay rigid.
  • Cloth that wraps a body. A cape can now drape over its wearer's legs, arms and sword instead of passing through them. In our test it cut the cape samples found inside a limb by 95%.
  • Looks the keep relied on. Windows that show the sky outside as you walk past them, leaded glass included. Soft fog volumes for smoke under a roof. Colour grades that change by area, so the courtyard is colder than the hall. Depth of field for dialogue shots. Stone that reads its soot, worn edges and damp from the model's own vertex data.
  • Speed. Whole models drawn many times in one go (a feast table's plates and goblets), parts of a model shown per character (each raider his own helm), and lamp shadows that are kept from frame to frame and redrawn only where something moved. Talking heads download at about half the size, with nothing lost.
A dark stone hall with three tall leaded windows: a night sky shows through the left one, a cloudy painted sky through the middle one, and warm smoky haze hangs under the roof.
Windows and haze: the glass shows the sky by where you stand, the lead lattice is lit like metal, and a fog volume fills the roof with warm smoke.
A broad, untextured male figure in a deep lunge with one arm swung back, wearing a greave on one shin and a vambrace on one forearm.
One fighter's moves on another body: an unrigged body given another character's skeleton and clips by gander rig transfer, with armour that stays on through the swing.

Building these turned up bugs we hadn't known about. The IK that puts a hand or foot on a point missed it by up to 30 cm when the elbow or knee was asked to bend toward a point off to one side, and checking whether a swing had reached its hit frame could miss it on some frames. Both are fixed, so games that already use them now get what they asked for.

After each round the agent played the port again on a real GPU, desktop and phone, and kept adding to the list. Three more rounds came out of that:

  • Lamp shadows that keep the room. A point light now keeps the still room in its own copy of the shadow and draws only what moves over it each frame: the fighters, and also the swords and shields in their hands and the cloak on a back. In a 13-second hall fight the room itself was redrawn on 34 of 780 frames instead of every frame, and a second shadowed fire costs almost nothing. The desktop browser build went from no shadowed fires to two, and desktop exports have all three.
  • No first-time stalls. Every pipeline a scene can need, shadows and depth of field included, is built on the first frame, behind the loading screen. The 145 ms pause the first time a dialogue shot focused (370 ms on a phone) is gone. Perf reports now also list anything the GPU had to build mid-game, with the frame it landed on, so a one-off hitch names its own cause.
  • Smaller fixes the fight needed. A guard raised again while the last one is still fading now eases back up instead of snapping. The texture size limit now covers every texture, not just models. See-through particles such as snow are sorted with a faster sort, and lip sync reads a baked track without decoding the whole line first.
  • Characters that keep their shape. Close up, the rebuilt raiders looked wrong: the backs of their heads were warped and their helmets sat crooked. The rig transfer tool had fitted the skeleton to the new body but rested each bone along the old body's direction, so the mesh sheared a little at every joint, by up to 26 cm at the chest. The tool now rests each bone where the fit put it, so only whole limbs turn, and a new gander rig reseat stops the shearing in rigs made before the fix.

Some of the gaps weren't the engine's. The port has no MetaHuman hair, because it doesn't export, and the original's banquet food came from an asset pack the port didn't have. The agent recorded those too, so the list was a fair account of what moved between engines and what didn't.

A stretch of grey ashlar stone wall with two stone pilasters, each block a slightly different shade, darker soot toward the top and faint damp patches.
Stone from vertex data: one material for a whole wall, with per-stone tint, soot and damp patches read from the model.

What changed in Goose?

GANDER games are written in Goose, the compiled language from Wouter van Oortmerssen. We pin one version of its compiler and only move it once every game still builds and plays the same. This update moves it 127 commits forward. Three changes matter for games:

  • Pools for things that come and go. Bullets, sparks and pickups are created and destroyed all game long. A slot pool hands a freed slot to the next one instead of growing a list forever, so a long session doesn't slowly use more memory.
  • One home for a level's state. A level's enemies, shots and pickups can live together in one value that the game passes around, instead of in a scatter of separate lists.
  • Clearer mistakes. A check that can never fail, such as asking whether a texture's id is below zero, is now flagged. When something goes wrong inside the language's own library, the error points at the line in the game that called it, so the agent fixes the right line first.

Before moving, we checked every GANDER game in the arcade with both compilers. The errors and warnings came out identical, and our test scenes for effects, cloth and streamed worlds built and ran with the same results in the browser and on desktop. The agent's reference now covers the pools and the new warning, so new turns use them where they fit.

What still isn't there?

  • Loading can still hitch. Browsers give a game one thread, so a region arriving costs up to about 20 ms on the frame it lands. You'll notice it on a slow laptop.
  • Terrain edits don't save yet. Roads and craters the game makes on a streamed map stay while their region is loaded, but they aren't written into save files.
  • Bounced light is screen-space. It only knows about what's on screen. It is not Lumen, and an Unreal game still lights interiors better.
  • Cloth doesn't tear, and it's always a rectangle: no cloth cut from an artist's mesh yet. A very fast move can still push a cape a few centimetres into a limb.
  • Phones can't afford shadowed point lights yet. One shadowed fire puts a mid-range phone over its frame budget, so phone builds keep their lamps unshadowed.
  • Pro graphics are desktop only. A browser or phone gets the standard look; streaming the desktop build is how you check it from anywhere.

So the advice from last week mostly stands, with one change. For an existing Godot game, stay in Godot. For MetaHumans, Lumen and Unreal's asset library, Unreal is the answer. For a new 3D game, including a big outdoor one, GANDER is now a real option, and it's the one that starts fastest in a browser.

How do I use these features?

Describe the game. "A castle courtyard at dusk with banners in the wind and guards that patrol and take cover" is enough for the agent to reach for cloth, navigation, lamps and lit fog. Pick GANDER as the engine when you start a new game in the studio, or pass engine: "gander" to create_game through the MCP.

Existing GANDER games pick up the compressed textures, mesh levels, tree cards and Pro graphics on their next build. The rest are things the agent adds when a turn asks for them: ask for a cape, and you get one.

Frequently asked questions

What's new in GANDER?

Particles, decals, shadowed lamps and post effects; enemy navigation and new animation features; compressed textures, mesh levels of detail and tree cards; reverb zones, sound occlusion and lit fog; Pro graphics in desktop exports; streamed worlds up to 16 km across; and cloth for capes, flags and banners.

Can GANDER games have enemies that path around a level?

Yes. GANDER builds a navigation mesh from the level with Recast and Detour, and games get paths, crowds that keep their spacing, cover points and line-of-sight checks. The mesh is tiled, so a closed door or a broken wall rebuilds only the tiles it touches.

How big can a GANDER map be?

Up to 16 km across. The map is split into 1 km regions of about 1.2 MB that load around the player, nine in a browser and 25 on a desktop, while a coarse version of the whole map draws the horizon. Placed objects load in 128 m cells, and far scenery is drawn as cards.

What are Pro graphics in GANDER?

A heavier set of effects that desktop exports render automatically: temporal anti-aliasing, ambient occlusion, screen-space reflections, volumetric fog and bounced light. The game code is the same, and browser and phone builds keep the standard look.

Does GANDER support cloth?

Yes. Capes, flags, banners, curtains and tarps are simulated with Jolt soft bodies, move in gusting wind, and are pushed by players and objects without ever blocking them, bullets or line-of-sight checks. A cape costs about a tenth of a millisecond a frame in a browser.

Can I see Pro graphics without a gaming PC?

Yes. On a 3D GANDER game, Play desktop build in the studio runs the Windows export on a cloud GPU and streams it to your browser, with keyboard, mouse and gamepad. Share makes a link others can play from for up to two hours.

What changed in Goose for GANDER games?

GANDER moved to a Goose compiler 127 commits newer. Games gain slot pools for objects that spawn and die, root structs that keep a level's lists together, an overlap-safe copy between slices, a warning for comparisons that can never fail, and library errors reported at the game's own line. Every GANDER game in the arcade checked the same under both compilers.

What did porting an Unreal game to GANDER add?

The agent ported a third-person sword fighting game through the MCP and listed every gap it hit. Built from that list: blend spaces with phase-synced cycles, eight animation layers with masks that can leave a limb out, clip markers for hit frames, retargeting between rigs that rest in different poses, gander rig transfer for putting a skeleton on a new body, cloth capsules on a wearer's limbs, windows that show the sky, fog volumes, colour grades by area, depth of field, vertex-colour material layers, model instancing, cached lamp shadows and gamepad rumble.

Can GANDER put one character's animations on another body?

Yes. gander rig transfer fits a rigged character's skeleton to an unrigged body (its height, build and pose, and which way it faces), copies skin weights from the nearest points of the rigged body, and brings every clip. Armour pieces can be skinned with a couple of bones each so plates stay rigid.

Do existing GANDER games get these features?

Some of them, on the next build: compressed textures, mesh levels of detail, tree cards and Pro graphics in desktop exports. The rest, such as cloth, navigation or streamed worlds, are added by the agent when you ask for them in a turn.

Should I use GANDER, Godot or Unreal?

Keep an existing Godot game in Godot. Choose Unreal for MetaHumans, Lumen lighting and Unreal's asset library. For a new 3D game, including a big outdoor one, GANDER is now a real option, and it starts fastest in a browser.

Keep reading

Related articles

Engine

GANDER: our own game engine, and no human will write a line of code for it

We built a game engine for one reader: the agent. It runs in the browser and on desktops, builds in seconds, tests its own games, and loads a fraction of the size of the same game in Godot.

10 min read
Feature

Pro mode: desktop games with Godot's full graphics

Tick Pro and the studio builds your game for Windows, macOS and Linux on Godot's desktop renderer: real-time global illumination, volumetric fog, reflections. The browser version stays as the preview you test with.

8 min read
Feature

Performance checks: the agent measures your game's frame rate, then fixes it

The studio can now profile a game on a cloud GPU in real time: frame rate, the 1% low, the worst frames and where each frame's time goes. We gave two games one performance turn each. One had a ten-second freeze nobody had seen.

8 min read