Use spare gigajoules to teleport shipments of items!
Intended to have real costs, pros and cons, and not be a boring cheat. Feedback appreciated, especially on balancing.
Teleport cycles are deliberately expensive to run in order to be not too much of a cheat compared to trains. Once operating at scale teleport networks pretty much require their own dedicated nuclear supply, and massive accumulator buffers help when many teleport cycles run concurrently. Make use of those unloved efficiency modules and power switches to protect the rest of the grid from power spikes!
Distance extends the teleport cycle duration by 2 seconds per kilometre, which indirectly increases electricity consumption. This will probably eventually be rebalanced or turned into a mod setting.
Teleporters require an incoming circuit network signal to identify their network. Easiest way is to hook up a constant combinator. Only virtual signals are checked.
- 0-9 A-Z signals create networks
- red signal pauses teleportation unless a cycle has already started
- green signal immediately teleports a shipment regardless of size
- blue signal marks Rematerializer as high priority
The red signal is the nice way to stop. Flipping a power switch is more definite :)
Sub-nets are available: The number value of a virtual signal is taken into account. A(20) is a different network to A(17) and A(1000) etc.
Teleporting a shipment
Dematerializer tries to teleport a shipment when:
- Output buffer inventory is full, or
- Green signal is received
Dematerializers then choose a target rematerializer based on:
- Target is in one of their networks
- Target is of the same tier (size, speed, power consumption, etc)
- Target is not already running a cycle
- Target has free space in its output buffer (at least 75% of shipment size)
- Target does not have a red signal
When multiple targets qualify the one with the most free space is chosen.
When a shipment doesn't entirely fit in a rematerializer's output buffer it will be partially (up to 25%) "cached in the energizer matrix" ;-P and stream into the output buffer as space becomes available. This was easier to code, also more performant, than trying to be accurate about item stack sizes and free space checks on every target.
UPS impact is quite light. Teleporters are checked once a second at most, and less frequently if a cycle is in progress. Any feedback on performance is welcome.