Zenith Bridge


The bridge for Zenith: streams the game over localhost UDP to the Zenith client (a separate program that draws it in 3D) and plays a character for it. Needs Factorio started with --enable-lua-udp <port>; on its own it changes nothing in the game.

Localizations
29 minutes ago
2.1
258

Changelog

Version: 0.2.0
Date: 2026-11-12
  Features:
    - Takes the client's view as a square of up to 101 x 101 chunks, sent as rows, and only touches the chunks that came or went (view distance up to 50 chunks).
    - A screenshot can ask for every chunk its camera sees, and /f3d-debug hold slows the game to its slowest speed while one is taken (single-player too), back by itself if the client goes.
    - /f3d-debug for the client's debug menu: the time of day, freezing it, the game's speed and pausing.
    - Sends each planet's day length and time of day for the planets in a space platform's sky.
  Bugfixes:
    - A building by a chunk's edge sends again the decoratives of every chunk it covers, not only its own.
Version: 0.1.4
Date: 2026-11-11
  Features:
    - Sends where a rocket silo's rocket is in its launch (doors, rising, lift-off), for the 3D client to draw Factorio's launch.
    - Sends train stops' colours, and repaints as they happen.
    - Sends which belts and loaders the circuit or logistic network switches off, so the client stops them; splitters count as working while items pass through.
    - Things a script removes or makes without an event are caught: the chunks round the client are counted in turn and sent again when one changed.
    - Mods' windows are only sent to clients that draw them.
    - Sends where a cargo pod coming down will land, so the client drops it straight onto that spot.
  Optimizations:
    - A splitter's working check counts for what it costs in the work budget (it reads up to 8 lanes).
  Bugfixes:
    - A step or event handler of the bridge that fails is logged and listed in /f3d-status, and the game goes on.
    - A save made with an older version of the bridge starts clean: its old clients and half-done jobs are dropped instead of failing.
    - A belt round that was already cut short isn't cut again.
Version: 0.1.3
Date: 2026-11-07
  Features:
    - Lists every prototype's icons, tiles, decoratives and pictures (with their animations) for the 3D client, so modded games are drawn with their mods' own graphics.
    - Sends the windows mods open for the player, for the 3D client to draw (in hybrid single-player the client clicks their buttons in Factorio's window); Informatron's buttons are pressed through its own remote interface. The client doesn't draw them by default for now.
    - Sends whether the character is flying in mech armour, and how high, for the 3D client to draw its flight.
    - A Zenith button (the gear) among the player's top-left mod buttons does what Ctrl+F9 does (per-player setting "Zenith button").
    - Acts through the player's own character when it plays one, so other mods hear the player's building, mining, rotating, pasting and opening ("Act as the player for other mods", on by default).
    - Ctrl+F9 in Factorio starts Zenith when none is connected (with server/factorio-with-zenith.ps1).
    - Belt lanes packed with one kind of item are sent once as a group, then only how far they moved.
    - Chunks the client kept are answered "unchanged" instead of being sent again.
    - Kept and ungenerated chunks are answered without waiting their turn (walking in and out of Factorissimo's buildings).
  Optimizations:
    - Smooth belt items read each update over the ticks between updates instead of in one tick.
    - Periodic jobs that can wait a few ticks wait for a tick with room, each with a cost learned on the base.
    - The search for moving things runs after the focus moved 4 tiles or every 8 ticks, not on every step.
  Bugfixes:
    - Train ghosts face their way and go when built.
    - Ctrl+F9 or the Zenith button with no Zenith connected and no launcher running did nothing: after 0.75 seconds without the launcher's answer, a window says what is missing (Zenith itself, or the launch options), with what to copy.
    - Ctrl+F9 and the Zenith button right after loading a save raised the Zenith the save was made with, long gone: in single-player a loaded game raises no Zenith until one says hello after the load, and a raised Zenith that doesn't answer in 1.5 seconds falls back to the launcher.
    - Every press of Ctrl+F9 or the Zenith button says in chat what it is doing.
    - A full belt lane creeping on is sent where it stands, not carried on at full belt speed (neighbouring belts had drifted apart).
    - A full belt lane flowing at belt speed checked a whole number of item gaps after its last check is sent as moving, not taken as standing.
Version: 0.1.2
Date: 2026-11-04
  Features:
    - Stacked belt items (stack inserters' stacks) are sent with their size, for the 3D client to draw them as piles.
    - Alt-mode icons travel with each building, on every loaded machine (no 400-machine limit); requester and buffer chests show their first four requests (issue #9).
    - Alt-mode's inserter, pump and machine arrows: the fluid connections a recipe uses and the recycler's output (issue #9).
    - The client chooses how many belt items move (Belt updates, or Unlimited) and how far; the bridge's own 6,000 cap and the entity distance no longer limit it.
  Optimizations:
    - Belt lanes that didn't change aren't read or sent again: the bridge's belt cost at a busy base fell from 12-15 ms to about 3-5 ms a tick.
    - Alt-mode costs the bridge the same as when it is off.
  Bugfixes:
    - Right-click mines trains, wagons and cars with their fuel and cargo, not the rail under them (issue #10).
    - Full belts that flow were sometimes held still for seconds and then jumped.
    - Belt lines that moved on by whole slots are read along their length, splitters and undergrounds included, so belts no longer show an item short or double.
    - The edge of the moving-items area no longer goes back and forth while standing still.
Version: 0.1.1
Date: 2026-11-02
  Bugfixes:
    - Items hand-crafted through Zenith count in the production statistics, so research triggers such as crafting a lab (which unlocks red science) work (issue #7).
  Info:
    - Licence changed from MIT to GPL-3.0 (version 0.1.0 stays MIT).
Version: 0.1.0
Date: 2026-10-27
  Features:
    - Streams the world near the 3D client's camera over localhost UDP: chunks with their tiles and entities, changes as they happen, moving things, items on belts, on the ground and in inserter hands, fluids, power, day and night.
    - Plays a character for the client: walking, mining, building (with fast-replace, rails, quality and ghosts), crafting, inventory, quickbar, shooting, driving, picking up.
    - Machine screens: inventories, recipes, filters, limits, combinators, circuit and logistic conditions, turret priority targets, train schedules and stops, logistic chests and roboports.
    - Blueprints, books, deconstruction and upgrade planners, copy and paste, wire tools.
    - Research, map and map tags, production and kill statistics, chat, Factoriopedia data, the armour's equipment grid.
    - Space Age: space platforms, the other planets (demolishers, lightning, Gleba's plants and spoiling, Aquilo's freezing), cargo pods.
    - Factorio's alerts worked out for a character without a player.
    - Several 3D clients on one server, each with its own character.
    - Single-player (hybrid) mode plays the player's own character; on a server it can stand in for a player while they're away.
    - Console commands /f3d-status, /f3d-selftest, /f3d-platform, /f3d-player, /f3d-profile.