Releases / v0.80.0

v0.80.0 Mind The Gap

2026-08-28 Engine Latest

Characters stop treating every ledge as a wall. The navmesh now works out where they can drop down and jump across, on its own, from the shape of your level.

A navmesh is a surface, and a surface stops at every edge. Until now the only way to say "and you can get down here" was to place a Nav Link by hand — one per ledge, in a level with hundreds, all of them moving the moment you moved the geometry. So nobody placed them, and characters walked the long way round a knee-high step or gave up entirely.

Drops and jumps, found for you

The Nav Mesh node has two new numbers under how the ledges are joined up:

  • drop height — the tallest ledge a character steps off deliberately. Any ledge between the step height and this gets a one-way link off the edge.
  • jump distance — the widest gap it will clear. That gets a two-way link, because a gap you can jump you can jump coming back.

Both are on by default, at a metre and a half and two metres. Set either to 0 to switch that kind off and go back to placing every crossing by hand.

On a real 23,000 m² level, this found 651 drops and 55 jumps where there had been none.

The bake will not invent a character that climbs: ground above a ledge is still a wall, and a ladder is still a Nav Link you place. It also will not hop over a wall, and it will not cross ground you carved out with a Nav Area — carving is you saying nothing may walk there, and a tool that argued with that would be worse than no tool.

A character that does not leave the floor refuses a whole kind of crossing in the question rather than by needing its own bake:

lua
local cart = nav.agent(node, { filter = { canJump = false, canDrop = false } })

While an agent is crossing, agent.linkKind is "drop", "jump" or "placed" — so one rule picks the fall animation, the vault and the ladder climb, rather than six hundred link names.

The overlay answers the question it is for

The one thing a navmesh picture is for is are these two pieces of ground joined? — and it was coloured by how the bake grouped the floor, before any link was counted. A balcony and the floor its drop lands on came out two colours while a character walked freely between them.

It is coloured by what a character can actually reach now. Ground you can get around is one colour; ground you cannot is another. Links are drawn as arcs whose shape is the crossing: a drop leaves the ledge flat and falls away, a jump bows over its gap, a ladder goes straight. Amber for a drop, green for a jump, blue for one you placed, red for one whose end missed the floor.

Agents follow the same curve they are drawn on, so a character dropping off a ledge falls instead of sliding down an invisible ramp.

"N separate areas" in the Inspector counts the same thing — pieces with no way between them at all — and now says how much of the walkable ground the biggest piece holds. A count on its own could be a level with 150 cupboards in it or a bake that has shattered; the share is what tells them apart.

Specks are thrown away

A real level bakes hundreds of scraps of walkable ground — a window sill, the top of a crate, a triangle of floor behind a pillar. Nothing can reach any of them, every one is an island in the count, and each is somewhere a character can be dropped by mistake when you ask for the nearest point on the navmesh.

smallest patch (1 m² by default) throws them away. The biggest piece is never thrown away, however small it is, so a bake of a small level is still a bake of that level. The level above went from 494 separate pieces to 156.

The overlay stopped getting stuck

Turning gizmos off used to leave the navmesh drawn on screen, frozen in place, until you deselected the node. It clears with everything else now.

Big levels also draw far less: anything off screen is skipped rather than sent to the graphics card every frame, so looking closely at a navmesh no longer costs more than looking at all of it.

Settings that quietly did nothing now say so

Two of the new numbers have a threshold below which they are exactly equivalent to zero, and neither is visible from the slider. A drop height inside the step height finds nothing, because the lip is walked over. A jump distance under twice the agent radius finds nothing, because erosion has already pulled the walkable surface back by the radius at each side — jump distance is measured between the edges of the navmesh, which is what you see in the overlay, not across the hole in the floor.

Both are named in the Inspector and the Console, with the number to beat.

Baking a navmesh without opening the editor

floptle bake nav [PROJECT] [--scene S] [--json]

No window and no graphics card needed. It was the one bake with no way to run it from a script, which meant a level whose geometry is generated could never have its navmesh generated too.

Upgrading

Your navmesh is baked again, once, the first time you open each scene. The format changed to carry what kind of crossing each link is. The editor does it for you and says so; nothing is lost.

Two defaults change what an existing level bakes, and both are sliders on the Nav Mesh node if you want the old behaviour:

  • Drops and jumps are on. Routes that used to go the long way round a ledge now take it. Set drop height and jump distance to 0 for none.
  • Patches under 1 m² are dropped. If your game deliberately puts characters on something smaller than that, set smallest patch to 0.

Floptle Hub

Linux x86_64 7.5 MB Download → sha256 6e9536b53c19e01070c0286e6a756e0e8813dc55d749be963c7d621da0e91fb0
macOS Apple Silicon 5.7 MB Download → sha256 30d1f9ffee9abab8f871dcaea3ce65d54c15f9679fe82d89984d47a96f8cef53
macOS Intel 6.2 MB Download → sha256 ba5e555b750084e663cb6bc766216aaf6d656e365c390b2307926b066e84516f
Windows x86_64 7.1 MB Download → sha256 990209d07110bfe33bbd06772fd46058a185f19bb46444b58e98863f03aaafd7

Engine

Linux x86_64 20.8 MB Download → sha256 82c52f465f273e3890d72cd30c81a815fcae0a1beb749afab4adb6ae9d8d3f3c
macOS Apple Silicon 16.8 MB Download → sha256 137d3bb2ee1777a60f851206fa00c91c3af87fbfd92f5b98398b1a9affe1e362
macOS Intel 18.2 MB Download → sha256 2c3c92019e4f58655336d724692b8da0adebbd21d0ff5bd0ff7201ff398a1ccd
Windows x86_64 20.6 MB Download → sha256 0ae540155564fac4551b6a6bcc11344bdd0deb3c64a6cc80fbcfcb4f8902ba5a

The binaries are not signed yet. On macOS, right-click the app and pick Open the first time. On Windows, if SmartScreen appears, pick More info then Run anyway.