Jump to content

Improve mod ecosystem robustness


Recommended Posts

Currently, every game update breaks a lot of mods. I don't know why for Oxygen Not Included way more mods break on every post-release update than for Factorio. But it would be nice if the game could become a bit more backward compatible now that it isn't early access anymore.
Also it would be nice if there would be more than just a single prior version available via Steam.

I came back after a month and did indeed try to go back to the previous version as suggested by everyone - but there seem to have been two updates in just a month so the previous verison is tainted with massive mod breakage too.

Link to comment
Share on other sites

I'm not sure how does modding work in Factorio, but I can explain ONI modding situation:

ONI allows mod devs to look into game's code and modify any one method there. To do it, we must specidy method's name, localization, and often - arguments used by it. That system allows us to do really complex things, making modding really fun experience. But if ONI code changes in the areas we specified while making our mods, they no longer match game code and everything crash.

ONI devs can work in a way those things hapen rarely - sometimes they add more complex code just to preserve mods from breaking, to work around existing things. But sometimes it just cannot be done. Some game improvements are so basic that everything else rely on them and there is just no way to preserve old code.

So sometimes, devs have to choose - do we want to improve our game, or preseve mods? And that is not really a choice, the main game will, and should, be more important. So if you want to have big changes to the game, you must accept they will come with more mods breaking. The only way to prevent it would be to update the game with more of the same: just another plant, just another critter, just another decor building, nothing cool or unique. I would be bored with it so quickly!

I understand your point - as a modder I'm not really happy to see my mods broke. As a player I'm not happy to see my mods no longer work. But if  that is a price for great updates to the game I'm willing to pay it.

Why does it work in Factorio? IDK, maybe all updates add things following the same, existing pattern (new buildings, resources, etc)? Or maybe new things do not affect existing ones and do not touch their code?

Link to comment
Share on other sites

On 10/17/2022 at 12:03 AM, pether said:

I'm not sure how does modding work in Factorio, but I can explain ONI modding situation:

ONI allows mod devs to look into game's code and modify any one method there. To do it, we must specidy method's name, localization, and often - arguments used by it. That system allows us to do really complex things, making modding really fun experience. But if ONI code changes in the areas we specified while making our mods, they no longer match game code and everything crash.

ONI devs can work in a way those things hapen rarely - sometimes they add more complex code just to preserve mods from breaking, to work around existing things. But sometimes it just cannot be done. Some game improvements are so basic that everything else rely on them and there is just no way to preserve old code.

So sometimes, devs have to choose - do we want to improve our game, or preseve mods? And that is not really a choice, the main game will, and should, be more important. So if you want to have big changes to the game, you must accept they will come with more mods breaking. The only way to prevent it would be to update the game with more of the same: just another plant, just another critter, just another decor building, nothing cool or unique. I would be bored with it so quickly!

I understand your point - as a modder I'm not really happy to see my mods broke. As a player I'm not happy to see my mods no longer work. But if  that is a price for great updates to the game I'm willing to pay it.

Why does it work in Factorio? IDK, maybe all updates add things following the same, existing pattern (new buildings, resources, etc)? Or maybe new things do not affect existing ones and do not touch their code?

Factorio has an integrated scripting environment for modding. Mods interface with the game through a well-documented API explicitly built for modding. Each mod gets its own scripting sandbox (but mods can define public interfaces to be used by other mods). Modding is fully memory safe - there are no crashes! I used over a hunded mods and there wasn't a single mod-related crash (and only two engine-related ones) in over a thousand of hours of playtime over multiple major alpha and beta releases (yes it was still in early access back then). As the game is fully deterministic, multiplayer obviously desyncs when the local game state starts to diverge from server state - but the modding documentation is pretty clear about what to avoid to prevent this from happening.
There also is no access from mods to the user's file system or other OS functionality, so modding is also inherently safe too.

In Factorio, modding is seen as a core feature of the game starting at the early alphas. Devs always anounced API changes in advance and also tried hard to not break mods in minor version updates. But on the other hand, mod breakage never was that severe for another trivial reason: In addition to the two officially supported main versions (stable and experimental), i can always also download (now more than 40) old (and therefore unsupported) versions of the game whenever i want from the official site. So even if a huge mod wouldn't update and i would still want to play it again or even for the first time years later - i could just download the exact old version, it has been written for.

Factorio has its own official mod portal page and fully integrated mod management in the core game. Direct buyers as well as players using GOG or Steam all have access to the same mods via the ingame mod browser or the official mod portal page. There is absolutely no potential for splitting the community into players who have access to the workshop (steam users) and players who don't (everyone else).

So if you want to know how to do modding support right - Wube pretty much nailed it in Factorio. There isn't much more you could do to make modding easy and non-frustrating in your game.
 

Obviously, it is too late for memory safety and most of the other early-on decisions in ONI modding (it really looks like modding was just tacked on after the game was already finished). But providing access to the archive of old versions is trivial and fixes the frustrating update experience right away. Mod users can then just pin their version and postpone the update until they want to start fresh.

Also i just yesterday got told why i actually can't get it to work after the last updates: There is a crippling bug, where the mod list shows the newest version of a mod, but the game actually loads an old version. That seriously has to be fixed!
There is no way, a player can know about such behaviour before annoying mod authors with update requests for mods that actually are already up to date. Stuff like that seriously harms the modding community and makes players hating the devs for doing their job.

Also, the whole mod managing experience is pretty abysmal to begin with. The phrase "use mod updater and click on the green checkmark to force update" seems to be pretty common in mod discussions since a long time. Mostly, Steam seems to be at fault here. But there obviously is a way to work around this as mod updater can do it (if you know that you need to do it). That should be the responsibility of the game. You shouldn't need a mod to make the mod support actually do its job.

As it is now - the mod management is so bad, that it would be a way better experience, if the mod community would have started on the Nexus instead of the Workshop and i could just use Vortex to manage mods for ONI.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...