v0.1.21 (Early Access)
Added
Cabling
- Cables can now run under the floor. A cable duct sits beneath the raised floor along the ends of the rack rows, with a drop-in vent at each row end. Route a cable down into a vent and it travels hidden under the tiles to wherever you bring it back up, so a long run between distant rows no longer has to drape across the aisle or climb over the tops of the racks. Further improvements will be coming in this area, but this is a start!
- Racks now have rear side openings for rack-to-rack and under-floor runs. A cable routed through a rear side opening rides the rack's cable manager down the back channel like any other cable, then crosses straight into the neighbouring rack's matching opening, or drops into the floor duct. A run to a rack further along the row threads through the openings of the racks in between, replacing the old trip up out of one rack's roof and back in through the next.
Incidents
- An incident now names the machines it's about. The card told you which rack the fault was in and which tenants were hurting, but never which servers, so working out what to actually walk up to meant cross-referencing the customer list against your own memory of where their machines live. There's now an "Affected machines" card on the incident, listing each server by name along with which of the affected tenants have workloads sitting on it. A failed server names itself even when nothing was running on it, a tripped rack breaker lists the whole rack, and a fabric fault lists the servers that lost their path. Faults that genuinely have no single machine behind them (a flood, a saturated uplink) show no list rather than pointing at innocent hardware, and where the affected set is very large the card says how many it's showing out of the total instead of quietly truncating.
Changed
Customers
- A customer's contract requirements now show what you're actually meeting, rather than only what they asked for. Before, every requirement a tenant signed with (multi-zone, data residency, a private network, and so on) carried the same amber "needs attention" mark whether or not you were satisfying it, so a page full of amber told you nothing about what was really wrong. Each requirement now reads its true state: a green tick when you're meeting it (spread across zones, sitting in the required region, running on a dedicated segment), an amber mark when you aren't, and a plain neutral dot for the ones the game can't yet check either way (compliance certifications, audit logging, CPU architecture, GPU). At a glance you can now tell a tenant that's fully looked after from one that's quietly slipping.
- You can now see exactly which machines a customer is running on. The customer page had a "runs on" line, but it was a bare comma-separated list of server names with no numbers against them, it was worked out from a rough "does this server serve this tenant" flag rather than from where their workloads actually sit, and it showed nothing at all for a tenant whose only footprint is object storage, a CDN or a load balancer. It's now a proper list: one row per server, named, with a breakdown of what's on it ("4x Virtual machines", "1x Object storage"), the rack it sits in, and a marker when that server is currently unreachable or powered down. Rows lead with the server carrying the most, so the machine with the biggest blast radius reads first, and a tenant whose workloads are spread thin across many servers now looks visibly different from one with everything stacked on a single box. This is the answer to "where is this customer, and which machine do I go and look at?"
Prospects
- The "can you serve it?" check on a prospect now weighs the whole contract, rather than only spare compute. Before, the verdict looked only at CPU, memory and GPU, so a prospect that needed a CPU architecture you don't own, a region you don't operate in, more than one availability zone, or more storage than your fleet can hold could still read "Comfortable", and a storage-only or database-only customer showed an unhelpful "No VM load". You could sign them and then watch them fail to place or walk straight back out. The card now names the real blocker up front ("Needs multi-AZ, add a second availability zone", "Out of storage, add disk or a Storage host", "Needs a compliance certification this site lacks", and so on), so you only sign the tenants you can genuinely serve, and a storage or database prospect that does fit now reads a proper verdict instead of a blank.
Fixed
Cabling
- Cables running to racks across a large site no longer report a false wiring error. Racks far from where you're standing are unloaded to keep big sites running smoothly, and the equipment inside them goes with them. Every cable heading into one of those racks then looked, to the game, like a cable plugged into nothing, so a large multi-zone site would fill its log with alarming "could not resolve endpoint" complaints about perfectly good cabling. That noise made genuine problems harder to spot when sending in a bug report. The game now tells the difference between a rack that is simply too far away to be loaded and equipment that truly can't accept the cable, and only complains about the second. Nothing about how your cables are drawn, or how the network behaves, has changed.
Incidents
- A cause the game has identified no longer disappears off the incident. An incident would name what was wrong, "this server is packed too tight and its tenants are fighting for CPU", and then, a while later, drop it and go back to "no physical cause pinned yet" while the incident was still open and the customer still unhappy. The one fact that explained the whole thing was shown to you and then quietly taken away, leaving a card that was impossible to read. The reason is that a customer's slowest-response figure is a rolling average over their recent traffic, so it keeps reading high for a good while after whatever caused it has gone, which means the complaint routinely outlives its own cause. The game was rebuilding the list of suspects from scratch every few seconds out of the faults that were live at that moment, so the instant the overloaded server came back under control, the cause vanished from the card. Causes are now kept. When the fault behind one ends, it stays on the incident marked "cleared" instead of being deleted, the timeline records the moment it cleared, and the advice changes from "go and fix this" to telling you the cause is over and the tenant's numbers are still catching up. Nothing left to repair now reads as nothing left to repair, rather than as a mystery.
- An incident now always shows how busy the customer's server is. Server load only appeared on the card while it was pegged, which is exactly backwards: you would catch "100%" once if you happened to be looking, and every glance after that showed an incident with no mention of CPU at all and no way to tell whether it was still the story. The card now carries a standing reading, whether it's 30% or 140%, for the busiest machine that tenant is running on, with how much of the machine is being asked for, how many other customers share it, and the same healthy/warm/contended wording the server itself uses when you walk up to it. You can now watch it climb into trouble and walk back down again, and see for yourself that the recovery is happening.
Object storage
- An object store that's out of disk now tells you to add storage, not compute. When a photography or backup tenant's bucket grew past the free SSD on the servers that hold it, the incident read "every server is full, add compute", which pointed you at the wrong fix: buying a compute server does nothing when the shortfall is disk. It now reads "out of storage, add disk or a Storage host" and shows roughly how much you're short, so the remedy on the card matches the real problem, and the same customer no longer opens a second, contradictory incident about the same thing. (This is separate from the single-rack durability false alarm fixed on the 22nd; this one is about genuinely running out of raw disk.)
Performance
- Big, multi-zone datacenters simulate more smoothly, and large saves load lighter. A round of behind-the-scenes optimisation cut the cost of the work the simulation repeats every tick as your fleet and network grow: working out which servers can reach the internet and route to one another, sampling the traffic that crosses between availability zones, and rebalancing where machines sit. Route lookups that used to be recomputed over and over across an unchanged network are now worked out once and reused, and several per-tick passes that grew with the square of your server count were brought down to scale in step with it instead. You'll feel it most on large, multi-zone sites and when loading a big save. None of it changes how the game plays out, and existing saves load straight in.
- SLA breaches now tell you why. If a customer's contracted machines couldn't be placed, their uptime fell and the incident said nothing useful. The game knew the reason and threw it away, so it read as "something feels wrong" with no cause you could act on. Those breaches now open with the real reason attached ("you've contracted machines this fleet can't place"), and existing saves carrying the old cause-less incident get it reopened properly named on load.
- Fixed frame stutter on faster machines. Two independent causes, and both got worse the better your hardware was. The game was making a blocking request to the simulation engine on every rendered frame, so a high-framerate PC made hundreds per second, and each one that collided with a simulation tick stalled the frame; that now happens once a second instead. Separately, high-end graphics cards were being auto-detected straight onto the Ultra preset, which renders the game at 125% resolution with 4x anti-aliasing on top. Owning a fast card shouldn't silently opt you into supersampling, so auto-detect now tops out below Ultra and Ultra is an explicit choice. There's also a frame cap when VSync is off, so the game stops rendering hundreds of frames nobody sees.
- Balance changes now reach saves you've already started. Retunes were only ever landing on brand-new games: sandbox saves kept whatever balance shipped the day they were created, and campaign saves quietly reverted a Hard run to Standard every time they loaded. Balance now refreshes on load, while your own settings are preserved: sandbox configurator choices, your fleet overcommit, your difficulty.
- Fixed a crash that could hit while the world was being drawn. A reference-counting mistake in the snapshot path could abort the game outright. It never fired in normal play, but it was one call away.
- The game no longer hitches four times a second on a large site. This was the big one, and it had nothing to do with your graphics card. Four times a second the game asked the simulation for an update and then stood completely still until the answer came back, and when it did, it redrew everything the answer touched in that same instant. On a full colo that added up to a stall of roughly a sixth of a second, every quarter second, which read as a constant judder no matter how many frames your machine was capable of. The game now sends the request and carries on drawing while the simulation works, collecting the answer on the next beat, and spreads the redraw across the frames that follow instead of doing it all at once. The stall dropped from about 37 milliseconds to under 3, which is comfortably inside a single frame. The simulation itself is unchanged and runs at exactly the same rate; it simply no longer holds up the picture while it thinks.
- Cables stopped rebuilding themselves while you walk. Cables switch to a simpler shape at distance to keep big rooms cheap to draw. The switch-over points were hard lines, so any cable sitting near one flipped back and forth every few steps you took, rebuilding its geometry each time. In a packed colo that was hundreds of cables churning as you walked down an aisle. There is now a margin either side of each switch-over point, so a cable has to genuinely move away before it changes shape.
- The world update stopped re-sending things that hadn't changed. Roughly every two seconds the game refreshed the entire world, most of which was servers, switches and cables the client already had and knew were unchanged. On top of that, every action you took, buying, cabling, hiring, renaming, triggered a second full refresh on top of the one the action had already scheduled, so a single click paid for the work twice. Live readings like customer latency and server load now travel with the ordinary per-tick update as they change, the two-second refresh only carries what the update doesn't, and the duplicate refresh after an action is gone. Panels and screens you aren't looking at also stopped redrawing every frame.
Networking
- Ports no longer report more traffic than the cable can physically carry. A 25 Gbps link could read 37 Gbps, which is not a thing a 25 Gbps link can do. Two separate faults were behind it. The simulation deliberately tracks offered load — everything wanting to cross a link, including whatever it has to drop when there isn't room — because that surplus is exactly what tells it a link is saturated and how much customer traffic to fail. That figure was being shown to you as though it were traffic that got through. On top of that, a security appliance's port was borrowing the throughput of the entire switch on the other end of the cable, rather than the traffic on that one cable. Port readings now show what actually crossed the wire, capped at the link's negotiated speed; the shortfall between that and what the fleet was trying to push is the drop the simulation was already applying. Bonded links divide the load across their members first and cap each member individually, so a pair of 25 Gbps links still reads as a 50 Gbps bundle. Nothing about how traffic is simulated, dropped, or charged for has changed.
- A port's hover tooltip and its console row disagreed. Walking up to an appliance or a carrier handoff and looking at a port showed "0 bps" while that same port's row in the device console showed real traffic. The tooltip and the console were reading two different places, and the tooltip's source had never been filled in for those two device types. Both now read the same figure.
- Empty router ports claimed to be carrying traffic. A router port with nothing plugged into it showed a share of the router's total throughput when you hovered it, so a four-port router with one cable in it appeared to have four live links. The reading was divided evenly across the ports rather than measured per cable, and an empty port was being counted as connected. Unused ports now read zero, which is what they are.
Security
- The security consoles were adding up numbers that cannot be added. The fleet-wide "packets dropped per second" reading was summing two unrelated measurements: the packet rate a firewall blocks, and the bandwidth a DDoS scrubber absorbs. Those are different units, so the total meant nothing, and the label was wrong on top of that. Firewall blocking, scrubber absorption and intrusion detection are now three separate readings, each carrying its own unit, on both the operations console and the wallboard.
- Switching off a gateway's built-in firewall used to hide the consequences. The threat table only listed traffic a device was actively defending against, so turning the firewall off made those rows vanish rather than showing the traffic now arriving unfiltered. The moment you most needed to see your exposure was the moment the screen went blank. The rows now stay, showing what is getting through, and separately mark whether the device was ever built to defend that kind of traffic at all.
- Application-layer floods were invisible. An L7 flood was filtered out of every security screen while still degrading the tenants it hit, so you could be losing customers to an attack that appeared nowhere in the game. It is now shown, and marked as something no on-site appliance defends against, so you can tell "I am missing hardware" from "no hardware would have helped".
- Routers no longer claim to do deep packet inspection. The gateway console showed an inspection meter and an inspection ceiling, but a router has no inspection engine. That number was really its forwarding capacity reduced by whatever add-ons were fitted, and the two halves of the display were reading from different places, so the bar could sit comfortably below full while the same panel warned you the router was saturated. It now shows a single honest forwarding figure with the add-on cost stated alongside. Dedicated security appliances keep their real inspection readout, which is precisely the difference between the two kinds of device.
- The wallboard and the operations console showed different numbers under the same label. The wallboard counted only rack-mounted appliances and ignored gateways entirely, so a site defended by its routers reported zero blocking on one screen while the other showed the true figure.
- A meter that was not measuring anything. The network map's security indicator filled to one of three fixed amounts depending on status, rather than reflecting any real quantity. It now shows actual pressure against capacity.
- Missing readings no longer look healthy. A device that reported no inspection state was drawn as a green "Active", so an absent reading was indistinguishable from a working one. It now reads as unknown.
- Smaller readout fixes. Absorbed traffic below 100 Mbps rounded away to "0.0 Gbps" and now switches to Mbps; the mitigated column was the only one missing its unit; scrub headroom that had gone negative displayed as "0 bps" rather than showing how far short you were; a device blocking more than its rated budget is now labelled as such instead of silently pinning its bar at full; and the four screens that each had their own private definition of "leaking" now agree on one.