Bulk Teleporters

by dorfl
Use spare gigajoules to teleport shipments of items.
a day ago
0.17
3460
Owner: dorfl
Source: N/A
Homepage: https://forums.factorio.com/viewtopic...
License: MIT
Created: 4 months ago
Latest Version: 0.1.20 (a day ago)
Factorio version: 0.17
Downloaded: 3460 times

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.

Electricity consumption

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!

Range multiplier

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.

Teleport networks

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

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.