Factory-Connectors

Factory connectors are Satisfactory’s system for transferring items from one machine to the next. Conveyors also utilize factory connectors to transfer items from a machine into its internal buffer (the belt).

The Factory-Connector-System is a pull-based system. That means if a machine has an empty internal buffer and wants to get filled by a factory connector, the machine requests (via a Grab call) an item from the given connector. The connector can then reply with nothing (if there aren’t any items) or the item it transfers. If it returns something, the caller (the machine) needs to make sure it does something with that item, else the item just disappears. The Factory-Connector itself asks its connected Factory-Connector or it’s outer object to return an item. A machine (AFGBuildable) contains a Factory-Connector which contains a reference to a connected one, and that one will grab the item from the connected machine (belt).

This is a flow example of a machine output of the Grab calls.

A conveyor which has a free space → FactoryConnector in the conveyor which is connected to the machines connector → Factory-Connector of the machine which is connected to the connector of the conveyor → Machine

This is a flow example of a machine input of the Grab calls.

Machine → Factory-Connector of the machine connected to the connector of the conveyor → Factory-Connector of the conveyor connected to the connector of the machine → Conveyor

If the machine just want to know what it can grab without actually transferring any items, then it can use the Peek functions. An example use case of this is filtering what it allows on the input side. These Peek functions work mostly the same as the Grab functions, except they don’t actually cause a item transfer to happen.

It is highly recommended to do item transfers, peeks, etc. in the Factory Tick call so that they are optimized for multiple cores.

Grab & Peak

The FGBuildable adds two functions.

FactoryGrabOutput

This function gets called by FGFactoryConnector`s which have the `mForwardPeekAndGrabToBuildable option enabled. Information about what connector wants to grab is passed and the function returns what actually gets grabed.

If you interact with a inventory or what ever, you need to make sure that you have removed the item from it, else the component could grab indefinetly, and that’s not what we want.

FactoryPeekOutput

This function works just like FactoryGrabOutput but there you should not remove the item from your inventory or what ever. This function is only used to allow the output to check what it can grab if it wants to.

FGFactoryConnection

A UFGFactoryConnectionComponent is a USceneComponent used to implement a Factory-Connector. Use this directly as a component for you AFGBuildable.

  • M Connector

    The material type of connection. (Solid, Liquid, or Gas)

  • M Direction

    The I/O direction of the factory connector. If it receives items or if it sends items.

  • M Connector Clearance

    The distance after which the connected conveyor is allowed to bend.

  • M Forward Peek and Grab to Buildable

    If the grab and peeks should get redirected to the owner (just FGBuildable works)