What motivated the development of this mod?
The inspiration for creating this mod stemmed from the challenges faced while playing large overhaul mods, like PY, SE, etc. In the late game stages, players often suffer from delays caused by low Updates Per Second (UPS) when operating tens of thousands of machines and hundreds of trains. Many abandon their games due to the frustrating experience of low UPS. The situation is exacerbated by the fact that such mods typically involve lengthy procedures where speeding up the game is a crucial need. Low UPS inhibits the ability to fast-forward time effectively. Consequently, I developed this mod with the aim of significantly enhancing UPS and the overall gaming experience without compromising game balance.
How does it work?
It continuously monitors all crafting machines within the designated area, calculating the net input and output during this phase. After placing the MPF, a script is executed every minute to check whether each MPF (a massive container) has sufficient input. If confirmed, it removes the input and inserts the output, making this system highly efficient in terms of UPS.
Why not create a large machine with a specialized recipe that processes aggregated input to produce output? It seems more intuitive.
Unfortunately, I can't implement that due to the game's constraints. The game's mechanism prevents dynamic alterations to the entity and recipe definitions during gameplay; they must be predetermined during the data.lua step.
Why not simply read the computation result of a planner mod like Helmod or Factory Planner?
There are two primary reasons. First, it would require modifying the code of another mod to facilitate communication between the mods. I'm uncertain if I'm permitted to do so and then publish it. Second, and more importantly, computing the result doesn’t necessarily translate to easy implementation. I believe the most enjoyable and challenging aspect of the game lies in this phase. If players could directly transfer computed factory planning results into an MPF, it might render the entire gaming experience somewhat monotonous.
Can I monitor multiple areas simultaneously?
No, the mark/monitoring/pack procedure operates on a single thread.
Can I have more than one MPF in one game? What is the limit on the number of MPFs I can build?
Absolutely, you can have multiple MPFs in a single game. Currently, there is no explicit limit to the number of MPFs you can construct. Although I haven't tested the upper limits, the system is designed to be highly UPS efficient, potentially supporting hundreds of MPFs with ease.
Do productivity modules work?
Absolutely. The system accounts for productivity bonuses with high precision.
What about liquids?
Recipes incorporating liquids are acceptable as long as there is no net liquid input. Net output of liquids is permitted but will be discarded. If necessary, use full barrels for input. Water is an exception; the mod disregards it in the net input. If the net input contains other liquids, MPF placement is restricted as MPFs lack a liquid box.
Can it uncompact a factory (for machine upgrades, module additions, etc.)?
Yes, simply mine the MPF to retrieve all components and construct a new one. Consider saving the blueprint before placing the MPF.
Also, some GUI would be nice...
I'm not adept at GUI design, but I might explore this later. Your assistance would be greatly appreciated.
Can you compact solar panels and accumulators?
Currently, the system doesn’t consume energy, so compacting isn’t necessary. This will be addressed in future versions, although I don’t plan to include electricity-generating entities.
Can you nest compacted factories?
No. The mod employs a script to transfer items into a container, simulating the production process, which isn’t captured by the monitoring function.
Can I move the location of MPF?
Unfortunately, no. The MPF entity is script-generated, with no item placement option. If mined, it’s lost. The script attempts to transfer the buildings to your character’s inventory once. Failure in this transfer means the items cannot be recovered.