Git-like version control mod for Factorio

Place to get help with not working mods / modding interface.
undercouves
Manual Inserter
Manual Inserter
Posts: 1
Joined: Wed Feb 18, 2026 7:23 pm
Contact:

Git-like version control mod for Factorio

Post by undercouves »

Hello, I was thinking of developing a mod that gave the user the power to control a portion of the factory using git-like version control.
My main motivation is to use this is multiplayer to keep track of what your friends fucked up did during your absence.

Here's a (digital!) pencil sketch of what the UI would look like inside Factorio:
Untitled.jpg
Untitled.jpg (250.98 KiB) Viewed 165 times
To make use of the mod, the user would:
  • Select a region on the factory to track;
  • Add desired entities;
  • Commit (using the UI);
  • Any subsequent changes could be highlighted using a diff view that would color entities based on their status (untracked, modified, deleted);
  • Optionally synchronize it with an external service and use usual VCS features (push, pull, branches, etc.).
However, I am facing a few technical issues:
  1. No network access for mods means it cannot create a shared repository;
  2. Would have to implement some (basic) version control system myself, since I haven't found any library in Lua to help me out.
I can still implement this mod without remote storage, of course, but each repository would be constrained to a single map and all users had to share the same state.
Any chance to overcome the issues and/or suggestions to implement this on a mod?
eugenekay
Smart Inserter
Smart Inserter
Posts: 1019
Joined: Tue May 15, 2018 2:14 am
Contact:

Re: Git-like version control mod for Factorio

Post by eugenekay »

Blueprint strings are compressed/base64-encoded JSON strings; they can be version-controlled fairly easily.

Blueprints can be exported from a running game by writing to script-output using write_file. You can also use send_udp and recv_udp for arbitrary data import/export to a local helper service. Use the special value "0" for player_index to run only on the Multiplayer Server instance. These functions can be run inside of a savegame's control.lua without requiring the usage of a Mod by all players connected to the Multiplayer server.

Good Luck!
Post Reply

Return to “Modding help”