Overview
This mod contains data of the most complicated modpack in Factorio, randomized.
What is this?
This Factorio mod is a preview of a potential method toward compatibility between exfret's Randomizer and the Pyanodon's mod suite. It is not an actual integration of the two, but instead contains precomputed data that it then applies in order to recover a randomized run that was generated on my own computer. The reasons for generating this separately are listed below, in limitations.
What is new
Randomizer has already had an almost mod-compatible logic for a while. Additionally, the main randomization - item randomization - has already been in use in its modern form since December. However, refinements to the algorithm along with a unified randomization approach that runs all randomizations at once allows the algorithm the level of flexibility to complete on even the most complicated modpack in Factorio (also one of the most complicated modpacks in any game).
Why you should care
Maybe you don't want to actually play this (I don't blame you), but at the very least I think the technical feat cannot be understated. I'm biased, of course, but being able to effectively randomize thousands of progression points that are highly intertwined demonstrates an impressive level of extendability in the algorithms I developed for this mod. I hope this proves its potential worth as a core randomization algorithm for other games, or multiworld randomizers in general at some point. Or maybe this can just stand on its own, a testament to the sheer dedication and beauty of the Factorio modding community.
Limitations
Although this is a proof of concept that makes me fairly sure that general compatibility is possible, that stage hasn't been reached quite yet.
Pregeneration
The data here was pregenerated, which differs from most randomizer runs, which can be customized beforehand to one's liking, and which can be paired with many other non-content mods before the playthrough starts. Instead, the run has already been fully generated; not even light QOL mods may be added, as the factorio data is just erased completely and reset with the pregenerated data anyways. I tried to be generous about the QOL mods included for this reason. There are a few reasons why this is necessary at this point, listed roughly in most to least important:
- Generation takes a while. My machine is above-average and it still took an hour.
- Even with patience, testing has been limited. I only briefly tried out this seed, and letting people run wild with all the possible seeds I haven't tried is just asking for issues.
- Even if people were patient and somehow other seeds/settings did not have errors, this uses a new randomization process that is made for specific settings. Customization is inherently limited with this new algorithm, which is the tradeoff for more power and adaptibility.
There may eventually be the option for Pyanodons seed generation in the future, but more likely seeds will be pregenerated as there is interest. This is just more practical.
Softlocks
New logic for the special mechanics in Pyanodon's mods was painstakingly added. However, it is easy to forget some small new mechanic that the randomizer needs to know about, leading to softlocks. "Normal"/base game softlocks should not be possible ("item A requires itself to craft"), but it's recommended to still be comfortable using editor mode/cheats to overcome possible logical obstacles.
I did notice too late that despite including logic for it, I miswrote my function for testing if a building needs special py modules. Thus, you will need to cheat in animals/plants needed to get a building going. I researched about 20 automation science techs and encountered no other softlocks, though admittedly that wasn't very far in the game.
Completeness
Along those lines, the logic still seems to be failing somewhat; it is not able to find a way to utility science. Thus, that is the end of how far you can get, even if everything else is fine. I am currently investigating. If you're eager for some reason to get to the very end of pyanodons with randomizer enabled, you'll unfortunately have to wait.
Balance
I only briefly played through this... experience. I deemed what I got through as "balanced enough" to be bearable by a veteran Factorio player (in some sense of the word), but it is still easy for randomizer to find ways to make something completable only by technicality. If it were to put assembling machines past even the second science, for example, the amount of manual crafting would just be unbearable. I tried to account for all "soft" failure cases where I could, but these are even harder to account for than the hard softlock failures.
Recipe randomization
While recipes themselves are randomized in a sense, the fundamental structure of the recipe tree is not changed. This is not due to lack of possibility; this was tried and honestly it wasn't fun, not even in a painful way. Trust me.
In particular the recipe structure is pretty much vanilla, leaving the game feeling not too different in my experience, but hopefully still different enough. I may introduce more randomizations, but I'm also wondering how it feels already.
In the future, I may do "partial" recipe randomization, like randomizing only some recipes, ingredients, or switching recipes around in limited ways. Feel free to let me know if you have ideas in this direction.
Technology tree rebuild
For reasons I could explain better if you wish to contact me on my discord, it's basically a no-go to preserve the original technology tree. It could technically be done, but a lot would have to be sacrificed in terms of algorithmic robustness (which is already stretched to its limits with py) and randomization flexibility. Thus, each recipe is instead given its own technology after randomization. This will also be the case in the final product. It's less a limitation and more a way to do randomization better, to be honest.
UX issues
Still, many other fixes need to be made before I am satisfied with the process as well, many of which aren't even algorithmic. For example, recipe icons still aren't replaced well, which also isn't always a trivial task. Those sort of things could definitely use some help so that I can focus on making the algorithms correct and efficient, if you know how to code and are willing to contribute!