← News

Tallow November update: faster compiles, a smarter code editor and the ECS engine

Both engine series got a large update this month. The standard engine (0.1) now has the ECS engine’s code editor and compile speed-ups, with no API changes. The ECS engine (0.2) brings the new core, much faster AI and leaner networking. Downloads are on the Downloads page.

Standard engine (0.1 series)

Existing projects open and build unchanged: no API was removed or changed.

Code editor

  • Completion, parameter help, hover info and go to definition (F12), answered by the Beef compiler, on unsaved edits too.
  • Symbol rename across files, with a preview and a single undo.
  • Compile errors are underlined in the code. Clicking one in the Console opens the file at that line.
  • Compact File / Edit / Navigate menus and right-click commands in the Scripts window.
  • The Console groups repeated messages and has a details toggle for stack traces.
  • Warnings for code that would break network prediction, such as unseeded random numbers or reading the keyboard inside OnTick.

Faster script compiles

  • Script reloads use a Beef compiler that stays loaded, on Linux and Windows.
  • On Linux, games link with mold or lld when one is installed.
  • Unchanged compiled files are reused, and saves that change only formatting skip the build.
  • Method-only edits are patched into the running game. Each project can choose automatic, structural or manual reloads.
  • Pressing Play waits for a running compile, so stale code never runs.
Edit (Linux, Debug) Before Now Faster
Method body edit 4.8 s 0.6 s 8×
New script added 6.4 s 0.55 s 11×
Saved with no change 4.8 s 0.5 s 10×

Editor

  • Rename objects in the Hierarchy in place (F2 or a second click).
  • Drag an object from the Hierarchy onto a Project folder to make a prefab.
  • Delete acts in the panel where you press it: assets in Project, objects in the Hierarchy and Scene view.
  • Create → Script has templates: Basic, Movement, Timed Action, GUI/HUD and Networked Script.

Rendering

  • Vulkan is now the default renderer on Linux (--renderer opengl still works).
  • Fixed decals reading depth from the wrong texture slot, and Vulkan errors when drawing reflection probe cube maps.

ECS engine (0.2 series)

Built on Flecs 4.2. Scripts keep the familiar component style, and the engine stores and runs everything as ECS data underneath. It also has all of the editor and compile changes above.

  • Every GameObject is an entity, and the built-in components (lights, cameras, renderers, audio, particles, physics bodies, animators…) are ECS data.
  • One Update(TickInput input, float deltaTime): per network tick when the object has a Network Identity, per frame otherwise. OnLocalUpdate() handles local per-frame work.
  • Optional systems and queries for bulk work, including entities with no GameObject at all.
  • Navigation and behaviour trees run as ECS systems on worker threads.
  • Window → Flecs Explorer inspects the live world.

Networking

  • The engine chooses each object’s network settings itself, and an Advanced foldout overrides them. The Network window shows what was chosen, why, and the bytes per client.
  • Changes are sent as differences from what each client has confirmed, prioritised under a bandwidth budget, and each client only gets objects near it. With 4,096 networked props this cut bandwidth from 801 KB/s to 419 KB/s per client (−48%).
  • Input forwarding, rollback limited to the affected objects, and input delay.
  • An optional lockstep mode (ten-minute runs with zero mismatches between Linux and Windows clients), and a desync debugger that finds the first field that differs.

Performance

One GameObject per cube with a Mesh Renderer and a script (Release, Ryzen 9 7900X, RTX 3070, Vulkan):

Objects Frame before → now Change
10,000 1.41 → 1.30 ms −8%
50,000 15.7 → 9.0 ms −43%
100,000 36.5 → 19.6 ms −46%

AI with a behaviour tree and a navigation agent on every object is about 8× faster than before the ECS: 4,000 agents take 5.2 ms a frame, down from 42.3 ms.

Get it

Tallow v0.1.62-beta and v0.2.9-beta are out now, with Tallow Manager v0.1.21-beta. See Downloads, or the release notes on GitHub.