Conveyor system explained (push & pull concept)

http://forums.keenswh.com/post/explanation-of-pull-push-principles-in-conveyor-system-6877337?pid=1282618600

This text is purely illustrational and cannot be taken for a design document or hard-coded rules that won’t ever change. On the contrary - as we keep working on the game and making it better, a lot of the information here might become obsolete.

Conveyor Push-n-Pull principles:

Some of the blocks (e.g. assembler, turrets, etc.) that can be connected to the conveyor system can automatically “push” or “pull” items to/from the conveyors. This works as follows:

  1. If the block is set to use the conveyor system, it checks certain conditions when it is necessary (which are different for each block type) that say whether it should send a push/pull request.

  2. If the conditions for the request are met, the block finds another block with inventory that can satisfy the request.

    2a) Push request:

    If the block sends a push request, it finds a suitable remote inventory,
    which has the CanReceive flag set. Once the inventory is found, the
    request is fulfilled by sending the requested items to the remote
    inventory. If the remote inventory does not have enough free space, only
    a part of the request is fulfilled and the request continues by searching
    for another remote inventory.
    

    2b) Pull request:

    If the block sends a pull request, it finds a remote inventory with the
    CanSend flag set. The remote inventory also has to contain the desired
    items. If these conditions are met, the request is fulfilled by
    transferring the items from the remote inventory.
    

Inventories with CanSend flag:

  • Cargo container inventories
  • Assembler output inventory
  • Refinery output inventory
  • Ship drill inventory
  • Ship grinder inventory
  • Collector inventory
  • Connector inventory

Inventories with CanReceive flag:

  • Cargo container inventories
  • Assembler input inventory
  • Refinery input inventory
  • Reactor inventory
  • Turret & gun inventories
  • Connector inventory

Requests of the individual block types:

  • Assembler:
    • If the input inventory is less than 60% full, the assembler issues a pull
      request for the needed materials according to the current blueprint
    • If the output inventory is more than 75% full, the assembler issues a
      push request for its contents.
  • Refinery:
    • See assembler; Refinery works similarly
  • Collector:
    • Sends push requests for all of its contents
  • Reactor:
    • If the fuel inventory is less than 60% full, sends pull request for some
      small amount of fuel
  • Turrets and ship guns:
    • If their inventories ar less than 50% full, they send pull requests for
      ammo
  • Ship drill & ship grinder:
    • Send push requests for all of their contents