Mods
- Mods' own graphics: in a modded game Zenith now draws each mod's item, recipe and signal
icons, its ground (tiles) and its decoratives, and its names from the mod's own language files.
The bridge lists every picture when the game loads and Zenith reads them from your mods folder,
zips included. A modded building without a 3D model is drawn as its own picture on a card facing
Factorio's camera (Settings > Graphics > Animate modded buildings runs its loop while it works;
off by default). Nothing is drawn as a box any more. Checked with Space Exploration's 25-mod pack. - Modded saves load with their mods: Load game on a save made with mods starts the server with
exactly the save's mods at the save's versions, taken from your own Factorio mods folder. If one
is missing, or there at another version, Zenith names it (Factorio itself only says "unknown
error"). Checked with a Space Exploration save. - Mods' windows are used in Factorio for now: Zenith can read the windows mods open, but its
copies didn't match Factorio's layout and their buttons missed, so they aren't drawn (Settings >
Interface > Show mods' windows, off). The Factorio button at Zenith's top left (or Ctrl+F9)
swaps to the same game in Factorio's window, and the Zenith button (the gear) among
Factorio's own mod buttons, or Ctrl+F9 there, swaps back. With the setting on, Informatron's
pages and buttons work through its own script interface. - Factorissimo: walking in and out of a factory building no longer stalls for seconds: the
chunks you left come back from what Zenith kept, and the bridge answers kept chunks without
waiting its turn. - Space Exploration's watermark (its version in the bottom corner) is drawn faint, as in
Factorio, instead of as a box. - Mods hear what you do: when Zenith plays your own character (single-player, or your player on
a server), building, mining, rotating, pasting settings and opening machines go through your
player, so other mods see them as yours and Factorio's own reach rules apply. Far Reach works this
way in single-player. A new map setting, "Act as the player for other mods", is on by default.
What hybrid costs
Playing through your own Factorio window (hybrid) is how mods that need a real player work: Far
Reach, mods that track who built what, and mods' windows in Factorio's own window. Measured with the same test
on a big base, standing at its busiest belts, against a headless server:
| Server | Hybrid | Hybrid, Factorio minimised | |
|---|---|---|---|
| Game speed | 59.3 UPS | 58.8 UPS | 57.9 UPS |
| Zenith frame time, middle | 6.3 ms | 6.5 ms | 6.4 ms |
| Zenith frame time, slowest 1% | 11.7 ms | 11.8 ms | 11.8 ms |
| Zenith frames over 16.7 ms (per 75 s) | 1.5 | 5 | 4.5 |
About 1 UPS and a few more slow frames; minimising Factorio made no difference in this test. On a
PC with less to spare Factorio's window competes with Zenith for more. The user guide's "Playing
with mods" says which mods need hybrid and which work on a server.
Ctrl+F9 from Factorio
Factorio's "Show in Zenith" key (Ctrl+F9) now starts Zenith when it isn't running, and Zenith
minimises Factorio when it comes to the front. Factorio keeps the game running at full speed while
minimised. It works on Windows. Set it up once in Steam: Factorio's launch options become
powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\ProgramData\Zenith\factorio-with-zenith.ps1" %command%
(RUNNING.md has the details; Settings → Other → Copy launch options puts that line on the
clipboard). The line is the same on every PC: Zenith keeps its launcher in C:\ProgramData\Zenith, so open
Zenith once first. If Zenith hasn't been opened on this PC yet, a window
says so and links to the downloads. If Factorio wasn't started that way, Ctrl+F9 opens a window in
Factorio saying what to set up, with the line to copy: only the steps that are missing (get Zenith,
or set the launch options). Every press says in Factorio's chat what it is doing ("Switching to
Zenith", "Opening Zenith"), Zenith's window comes forward with its loading screen at once, and a
Zenith that was open when the save was made isn't mistaken for one still running. With Zenith
already open in its menu, Ctrl+F9 brings it to the front. Settings → Other → Minimise Factorio in Zenith turns the minimising off.
Report a bug
Report a bug in the main menu and the Esc menu packs Zenith's recent logs and the server's into
one zip, opens GitHub's bug report page with your versions filled in, and opens the folder with the
zip so you can drag it into the report.
Building feels instant
A building you place shows at once, where the game will put it, and stays until the game's own
building is drawn. If the game refuses it, it goes. R turns a building at once too, the way Factorio
turns each kind. On a fresh local map this hides one to three frames. It matters more on a busy save
or a slow server.
Items on belts (temporary)
These belt changes are a stopgap. They make big bases cheaper to run, and they lay the groundwork
for a larger belt upgrade coming in 0.1.4, in which Zenith runs Factorio's own belt rules itself. On
some bases belts may look rougher than in 0.1.2 until then.
- Zenith moves full belts itself: a packed belt lane (one kind of item, close together, stopping
and starting as machines take items) is sent once, and Zenith moves its items; after that the game
only says how far it moved. A full line creeping on is sent where it stands and one flowing at belt
speed is seen moving, so neighbouring belts stay in step instead of sliding apart into holes and
bunches at their joins. - Drawn by the graphics card: each item on a belt is a small record the shaders move along its
lane, so Zenith keeps up with many more moving items. - Fewer jumps: items are drawn as far behind the game as Zenith's work on them takes, and an
update's work never reaches the screen before the moment it was planned for, so items keep
moving instead of jumping ahead and standing. - Undergrounds: items going under the ground are no longer drawn standing on the belt they pass
under. - Settings: the belt item settings are down to three: Belt item distance, Moving belt
items (was Belt updates; Automatic by default, which follows your frame rate and the game's
speed, and keeps the game's belt reading within its share of each tick) and Items in 3D (how
many belt items are drawn as models, nearest first, the rest as icons). Your old values carry over.
Stacked belt items are piled as in 0.1.2, and far belt items on curves follow the curve.
Performance
0.1.2 and 0.1.3 were put through the same test, each with its own bridge mod and the same settings:
a copy of a big real base, the windowed client running laps round the busiest belts and then
standing there, two runs each, the versions taking turns (tools/bench/compare_builds.py). The
figures are the middle of the runs. Your PC will give different numbers.
Running laps round the busy belts
| 0.1.2 | 0.1.3 | Change | |
|---|---|---|---|
| Frame time, middle | 6.4 ms | 7.7 ms | 19% more |
| Frame time, slowest 1% | 13.8 ms | 14.0 ms | the same |
| Worst frame | 79.7 ms | 83.2 ms | 4% more |
| Frames over 16.7 ms | 37 | 15 | 59% less |
| Frames over 33 ms | 8 | 3 | 65% less |
| Game speed | 59.2 UPS | 59.4 UPS | the same |
| Zenith's bridge, per tick | 10.3 ms | 9.0 ms | 13% less |
| Bridge, slowest 1% of ticks | 85.4 ms | 32.5 ms | 62% less |
| Bridge, worst tick | 128.8 ms | 66.1 ms | 49% less |
| Bridge ticks over 16.7 ms | 468 | 326 | 30% less |
| Reading belt items, per tick | 5.0 ms | 4.0 ms | 20% less |
Standing at the busy belts
| 0.1.2 | 0.1.3 | Change | |
|---|---|---|---|
| Frame time, middle | 5.3 ms | 6.0 ms | 12% more |
| Frame time, slowest 1% | 10.7 ms | 10.2 ms | 4% less |
| Worst frame | 63.0 ms | 84.6 ms | 34% more |
| Frames over 16.7 ms | 6 | 2 | 67% less |
| Frames over 33 ms | 3 | 1 | 67% less |
| Game speed | 57.9 UPS | 60.0 UPS | 4% more |
| Zenith's bridge, per tick | 7.9 ms | 11.6 ms | 46% more |
| Bridge, slowest 1% of ticks | 111.8 ms | 38.4 ms | 66% less |
| Bridge, worst tick | 142.2 ms | 50.1 ms | 65% less |
| Bridge ticks over 16.7 ms | 63 | 116 | 85% more |
| Reading belt items, per tick | 4.2 ms | 5.6 ms | 33% more |
What this shows: 0.1.2 read all the belt items for an update in one tick, so every so often one
tick took over 100 ms; 0.1.3 spreads that reading over the ticks between updates, so the bridge's
long ticks are gone, far fewer frames run long, and the game holds its speed. Not all better: standing at the
belts the bridge does more work per tick on average and more of its ticks run a little long, the
middle frame takes a little longer in both tests, and the single worst frame was longer.
What changed:
- Belt reading spread out: each update's belt reading is spread over the ticks between updates
instead of one long tick. - The bridge's jobs take turns: the jobs that can wait a few ticks (machine states, the wire
check, fluids and power, plants, trains, the search for moving things) wait for a tick with room
instead of landing on the same tick. - The minimap is Factorio's: only the map, players, trains, stations and tags.
- Chunks are kept: chunks you walk away from are kept for 10 minutes (up to 1,500), and the
game only sends them again if something in them changed. - Closed windows stay idle: the crafting panel no longer rebuilds its recipe list while shut.
The character
- A more natural run: the feet plant where they touch down instead of sliding, the hips drop and
sway over each step, the shoulders turn against the legs and the body leans into speed. At
exoskeleton speed the stride lengthens rather than the legs spinning faster, and stopping lets
the legs finish their step. - The mech armour flies: over water and cliffs it takes off, hovers with its legs tucked, flies
along and lands, with smoke and flame at the feet, at the height the game has it.
For modellers
- A models folder: put a
.glbnamed after a Factorio entity (transport-belt.glb,
inserter-east.glb...) in themodelsfolder beside Zenith, and Zenith uses it in place of its own
model of that name at its next start; Zenith's own models are used for everything else. Settings >
Graphics > Your models says how many are in use and opens the folder;-- --no-custom-modelsstarts
Zenith with its own models only. MODELLERS.md, beside Zenith, has every name. - A model's texture filtering follows its file: Blender's Image Texture set to Closest is drawn
crisp, texel by texel (still smooth far away); Linear as before (docs/MODELLERS.md).
Fixes and changes
- Factorio's own settings and keys: Zenith starts from the settings and key bindings you set in
Factorio (volumes, UI scale, v-sync, the minimap, belt building and more) (issue #14). - Quickbar: the page in use is the top row, as in Factorio.
- Rail planner: a new line can fork off an existing one (issue #15).
- Trains: pipette picks trains and wagons, blueprinted trains face their way, train ghosts face
their way and go when built (issue #13), and the train placement preview is green on rails and red
off them (issue #12). - Q over a turret: with no rockets in your inventory, nothing to build (issue #2).
- Saves kept between versions: a download now keeps its worlds and server data in Zenith's user
folder, so unpacking a new version doesn't lose them. - Tall windows scroll: a machine screen taller than Zenith's window (a big chest's grid with its
requests below) scrolls instead of running off the screen. - Fixed: the client froze now and then when loading a game or quitting (on 4-thread CPUs).
- Fixed: a cargo pod waiting in a silo's rocket was drawn on the ground beside the silo.
- Fixed: trees a little way off cast no shadow from their crowns.
- Hills (Terrain Elevation add-on): Alt-mode icons and modded building cards sit on the hills
instead of at floor level. - Multiplayer and saves: fixes for multiplayer desyncs, saves from older versions that stopped
the game, and server data that grew without bound; console commands are for admins only in
multiplayer. - Modded things drawn: modded vehicles, units and ghosts with their own pictures, and other
mods' planets with theirs.