github Zenith-3D-Team/Zenith v0.1.2
Zenith 0.1.2

4 hours ago

Download the zip for your system, unzip it anywhere and start Zenith (START HERE.txt inside says the rest). You need your own copy of Factorio 2.1 on the same computer; Space Age is optional.

  • Zenith-0.1.2-windows.zip: Windows (x64)
  • Zenith-0.1.2-linux.zip: Linux (x64)
  • factorio-3d-bridge_0.1.2.zip: the bridge mod alone, for Factorio's own mods folder (the downloads above already have it)
  • Unsupported: Zenith-0.1.2-macos-unsupported.zip, Zenith-0.1.2-linux-arm64-unsupported.zip, Zenith-0.1.2-windows-arm64-unsupported.zip: never run by anyone; UNSUPPORTED.txt inside each says how Factorio runs beside it.

Every download comes with two add-ons already in its addons folder:

  • Cinematic camera 0.2.0, switched on: a free camera, timelapses and recording. Its releases
  • Terrain Elevation 0.1.4, switched off: hills under the factory, drawn only (the game stays flat). Turn it on in the Add-ons menu. Its releases

Performance

Every number was measured on the same laptop (RTX 5060 laptop GPU), on a copy of a big real base
(about 380,000 entities), with the windowed client. Each "before" is the 0.1.1 code and each
"after" is 0.1.2, run back to back, two runs each, averaged. Your PC will give different numbers.
The changes should be about the same. Every change below is an improvement: less time (ms) for the same work, or more frames (fps) and game speed (UPS).

The game's speed (UPS) at a busy base

Standing by the busiest belts, Hold the game at 60 UPS turned off so the raw cost shows.

0.1.1 0.1.2 Better by
Game speed, High 27.8 UPS 43.4 UPS 56% more
Game speed, Ultra 33.5 UPS 47.5 UPS 42% more
Zenith's bridge, per game tick (High) 27.9 ms 18.0 ms 35% less
Reading items on belts, per tick (High) 15.0 ms 5.2 ms 65% less
Reading items on belts, per tick (Ultra) 11.9 ms 4.7 ms 61% less
Reading items on belts, per tick, walking 7.1 ms 2.7 ms 62% less

The bridge no longer re-reads belt lanes that haven't changed. On a busy base most of them are
backed up and still.

Frames standing still

0.1.1 0.1.2 Better by
Frame rate, High 77.5 fps 93.5 fps 21% more
Slowest 1% of frames, High 34.0 ms 21.8 ms 36% less
Frames over 33 ms, High 1.25% 0% 100% less
Frame rate, Ultra 82 fps 85 fps 4% more
Slowest 1% of frames, Ultra 23.2 ms 21.3 ms 8% less
Minimap and map redraws, slowest 1% 12.9 ms 4.3 ms 67% less
Ambient occlusion (now off by default) 6–7 ms of GPU 0 ms 6 to 7 ms less

Zoomed out over the base

0.1.1 0.1.2 Better by
Frame rate, Ultra 43 fps 63 fps 47% more
GPU time, Ultra 22.7 ms 15.0 ms 34% less
Draw calls, Ultra 4,270 3,165 26% less
Frame rate, High 68 fps 88 fps 29% more
GPU time, High 13.7 ms 10.7 ms 22% less

Belts that are small on screen are now drawn with a few triangles instead of about 1,450 per tile.

Walking through the base

0.1.1 0.1.2 Better by
Slowest 1% of frames, Ultra 42.0 ms 34.7 ms 17% less
Frames over 33 ms, Ultra 3.8% 1.5% 61% less
Worst frame spent choosing chunks 10.8 ms 2.7 ms 75% less
Worst frame spent building a chunk 14.6 ms 9.2 ms 37% less

Alt-mode

0.1.1 0.1.2 Better by
Slowest 1% of frames with Alt-mode on 84.5 ms 28 ms 67% less
Bridge cost of Alt-mode 0.32 ms per tick about 0 (the same as off) 100% less
Machines showing their Alt-mode icon 403 801 (all of them) 99% more

Smoother while moving

Running round the busy belts at exoskeleton speed (about 31 tiles a second), High and Ultra, Hold
the game at 60 UPS on and off. "Before" here is 0.1.2 without this work (everything above already
in both), so these gains come on top of the walking ones above. Each figure is the middle of the
runs' range.

Before 0.1.2 Better by
Slowest 1% of frames, running 36.5 ms 30.5 ms 16% less
Slowest 1% of frames, main thread only 34.0 ms 27.0 ms 21% less
Frames over 33 ms, per 84 s run 135 24.5 82% less
Slowest 1% of frames, standing 26.0 ms 21.0 ms 19% less

Zenith's background work (loading chunks, messages, wires, far belts) now shares one time budget a
frame instead of each taking its own slice, the game's messages are read on a thread of their own,
and machine sounds and glows only look at what's near you.

Belts drawn correctly

0.1.1 0.1.2 Better by
Belts shown an item short or doubled, per update (busy base) 2.5 0 to 0.02 99% less

Keeping whole belt lines in step costs the bridge about 0.7 ms more a tick on the test base, with the
game still at 60 UPS.

Up next for performance

  • Belts moved as groups: a run of items moving together (a full belt, a backed-up queue) is
    sent as one group and moved by Zenith itself, starting and stopping together. The game is only
    checked where items can come or go (inserters, side-loading, splitters, undergrounds, loaders),
    not every belt along the way. Expected: far fewer checks for the server on long belts, much less
    network traffic, and belts that stay smooth even when the game is busy.

Items on belts

  • Stacked belts: a stack inserter's stacks (up to 4 items in one place) are drawn as piles, as
    Factorio draws them. On the test base, 2.4 times as many items now show (394,801 items in 161,599 stacks; before, one item per stack).
  • New settings: "Belt item distance" sets how far items on belts are drawn. "Belt updates"
    sets how many of them move (1,000 to 24,000, or Unlimited). They replace "Belt items in full" and
    "Belt items far away", and your old far distance carries over.
  • No more hidden limit: the distance you choose holds.
  • Full belts no longer freeze: a full, flowing belt could look still for seconds and then jump.
  • No more splitting: big updates are drawn whole, so lanes don't split into moving and stopped
    pieces.
  • Steady hand-over: the edge where moving items become icons no longer goes back and forth
    while you stand still. Items stay until their icons replace them, in the same frame, so belts are
    never bare or drawn twice.
  • Belts stay in step: a belt line that moved on is updated along its whole length, splitters and
    undergrounds included, so belts no longer show an item short or one too many.
  • Missed items keep moving: an item an update misses glides on along its belt instead of
    stopping and jumping.
  • Far belts are drawn as full as they are again (stacked belts showed gaps).
  • Far plates (iron, copper, steel) no longer vanish far from the camera.

Fixes and changes

  • Trains and wagons: right-click mines them, with their fuel and cargo (issue #10).
  • Alt-mode icons: they show on every machine, not only the nearest 400 (issue #9). Requester
    and buffer chests show their first four requested items, each a quarter of the icon.
  • Alt-mode arrows: Factorio's inserter, pump and machine arrows, as three settings with
    Factorio's defaults. Machines show arrows on the fluid connections their recipe uses, and
    recyclers show their output arrow (issue #9).
  • E key: it opens only your own inventory, never what's under the mouse.
  • The see-through effect on trees and buildings near the mouse is gone (and its shortcut).
  • Shadow distance: new setting under Settings → Graphics.
  • Graphics settings: short descriptions, with a (?) for the full explanation.
  • Ambient occlusion: off by default. It stays in Settings as a work-in-progress option with a
    high GPU cost.
  • Linux download: the program and scripts are now marked runnable when unzipped.

Unsupported downloads (new)

macOS (Apple Silicon and Intel), Linux ARM64 (issue #8) and Windows ARM64. Nobody has
run these, and each zip has an UNSUPPORTED.txt explaining how Factorio runs beside it.

On macOS the app isn't signed by Apple. Right-click Zenith.app and choose Open the first time.

Don't miss a new Zenith release

NewReleases is sending notifications on new releases.