But first I need to clear up some confusion about what Clusterio is. Clusterio 2.0 is a Node.js backend for Factorio servers that allows in-game lua code to talk to JavaScript code running outside the game. The Clusterio project started out as a Factorio mod + Node.js program to teleport items between servers using giant teleoporter chests. Since then the focus of Clusterio has shifted from being a teleporter chest mod to being just the backend that allows mods like the teleporter chest mod to work. So to avoid more confusion from this change in direction the in-game Clusterio mod that provides those teleporter chests is therefore being renamed to Subspace Storage.
With that out of the way, the things I want to hear about is what you want out of the cross server toolbox that is Clusterio. Right now the things that I have (re-)implemented into Clusterio 2.0 is
- A Factorio server process manager that handles starting, stopping, connecting to the RCON interface, and reading the stdout of Factorio servers.
- Slaves that connect to the master server of the cluster and can run multiple Factorio servers called instances for the cluster.
- Centralized management of instances in the cluster. The master server controls what instances to start, and what configuration to use for them. Management is currently only available through a command line tool, but a more user friendly web interface is also planned.
- Plugin system that allows JavaScript modules to be loaded by Clusterio, with hooks for lifecycle events, and APIs for sending RCON commands as well as sending data to other instances running on the cluster.
- WebSocket based communication layer between slaves, the master and the command line tool that gives an efficient bi-directonal transport between them.
- Save patcher that puts lua code packed into modules into the level/scenario, making it easy to to "soft" mod freeplay games with lua code from a selection of pre made modules and/or custom written ones.
- Actual documentation. As sad as it is to say, the documentation for Clusterio before 2.0 was next to non-existent. I still have a long way to go before I would call the documentation for great, but be sure to check out the Developing for Clusterio and Writing Plugins documents in the docs/ folder of the repository for what I have written up to now. Needless to say, this is a work in progress.
Please note that Clusterio 2.0 is still a work in progress alpha, and the APIs provided are subject to breaking changes