Releases / v0.97.1

v0.97.1 Square On

2026-09-24 Engine Latest

A patch for rays that hit map meshes and models. The hit point and distance were always right, but the normal often was not: a ray straight down onto a floor built with the map tool could report a sideways normal, and a ray straight at a wall could report the floor's. Cube, Sphere and Capsule colliders were never affected, which is why a test course made of primitives worked and the same course built as a map did not.

Rays report the face they hit

raycast against a map mesh or a collidable model now returns the normal of the face the ray struck, facing back toward where the ray came from. That is true head-on, at an angle, and from either side of a face. A ray that lands exactly on an edge or a corner reports one of the faces that meet there, and never one that faces away from the ray.

Anything that reads hit.nx, hit.ny or hit.nz on level geometry gets the right answer now: wall checks (math.abs(hit.ny) < 0.3), ledge tops (hit.ny > 0.7), slope limits, footstep surfaces, decals and cover. A ray cast straight down from a character's centre is exactly the case that used to go wrong, so ground checks on map floors are the biggest change.

spherecast with a radius of zero behaves the same way.

Characters stand on their feet on map floors

A capsule's feet check the floor straight below, and on map meshes that check usually read a flat floor as too steep to stand on. The capsule then rested on its rounded bottom instead. It stands on its feet on map floors now, as it already did on primitives and terrain.

Upgrading

Nothing to change. If your game works around bad normals on map geometry, for example by casting extra rays and taking a cross product, the workaround still works and can come out.

Floptle Hub

Linux x86_64 7.9 MB Download → sha256 b42285d3b466e8f3c34dd8026434cc7e22545ddb2367774cf5ed947bfbdf65db
macOS Apple Silicon 5.9 MB Download → sha256 d225f23877b09f654fb9c34707976143757bdbfb37c2ebe6d1eb7250009dddd7
macOS Intel 6.4 MB Download → sha256 ede057a9fd16bc2d834dcc2431dae36f06107caa77df292f589156af97e6ddd9
Windows x86_64 7.3 MB Download → sha256 8de67004ef99a712a8571f982392fea7f71d3bd33d8150e5b5b78bbbe5784b7c

Engine

Linux x86_64 34.2 MB Download → sha256 bf698c262be9e8a197a0c48f91f57576d76889be5984a90e02b46580a4eedf0e
macOS Apple Silicon 27.8 MB Download → sha256 9e7ae9bb79280e41cc7eba62e9c6964f7e92658cdd89ec85946e4a6f78684332
macOS Intel 30.0 MB Download → sha256 a115ad50355d432b27e70a5dbbb635142809769ae7a762ff2137648d35f5c455
web 4.4 MB Download → sha256 d70b5ffddcd1c3bb287bab8ff975ca5eb244abfb5715b4f5ea5653937ddbdb4a
Windows x86_64 33.9 MB Download → sha256 8f2e56f57fea7c367aceecf095783da748fb7cd90a0fd15c339e4f13be8e671a

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.