Factorio API Docs

1.1.65 <>

Global

In the context of Factorio, the term "global" refers to two different things:

  • Global variables in Lua, meaning variables that are defined without the keyword local are global: https://www.lua.org/pil/14.2.html.
  • The global table each mod has access to, which is a table with the name global, declared as a global variable that is persisted between saves and loads.

During the lifetime of a mod, it will frequently want to save mutable data. Although mods are free to store such data in any variable, the game will not persist it between saving and loading.

To address this, Factorio provides the global table: a Lua global variable that is serialized and persisted between saving and loading of a map. Each mod has access to its own instance of this table, so there is not need to worry about namespacing. Circular references are handled properly as well.

Only specific data can be stored in global:

  • Basic data: nil, strings, numbers, booleans.
  • Tables, with limited metatables:
    • The metatable itself will not be saved.
    • Metatables that are registered with LuaBootstrap::register_metatable will be recorded by name and automatically relinked to the registered table on loading.
    • Any other metatables will be removed; tables with unregistered metatables become plain tables when saved and loaded.
  • References to Factorio's LuaObjects.

Functions are not allowed in global and will throw an error when saving.

|<

Classes

Events

Concepts

Defines

Builtin types

>|