Impatient wrote: ↑Wed Aug 07, 2019 2:17 am
slippycheeze wrote: ↑Wed Aug 07, 2019 12:46 am
... and almost never a successful one.
Elaborate please (if you want).
words, words, words, this is long. because I'm trying to summarise a lot of experience as much as I can.
edit: ugh, didn't spoilers used to collapse? doesn't work here, that is so annoying. I wanted to hide all the wording, but I can't.
Sure: over the last 15 years or so I have seen this tried a bunch of times. I wasn't a developer on any of the game ones, so this is a subjective impression, but I have worked on other software that took this approach and had the same problems I saw with games. So... subjective user impression, but one that I think is reasonably informed.
Oh, one assumption: the fact that, eg, "base" is technically a "mod" in Factorio is not the sort of "mod" I'm talking about. If they shipped two or three versions of "base" as suggested in this thread, that would be: it is the fact that there are variants that makes the difference. (Put enough player choices into base and it becomes "multiple mods, in a funny hat that looks like a single mod", for this discussion.)
There are two big challenges that cripple the idea most of the time:
One is that "ready to release" matters to the developers, and the mod author, in different ways. These somewhat conflict, in that the developers want things to be as stable as their release schedule, and to always, always be as correct as possible -- playable, balanced, no errors.
The mod author generally wants things to work well, and to be balanced, and to be adapted to the leading edge of gameplay. For them ready to release is a product of the latest changes working well enough to let people try it out. This can come with bugs, but mostly comes with limitations on what game versions it'll support -- especially since it is a hobby. See the occasional thread about 0.16 support for mods that demand 0.17 now.
The obvious solution is that all mods that you ship are written by the developers, which turns out to be a non-starter, because you are now trying to build and ship a huge number games at the same time, where each is the number of meaningful combinations of choices of "mod" that you have.Shipping tiny UI differences as mods doesn't count, but "map generator v1, v2" absolutely does.
The game has to work correctly -- balanced, bug free, playable, not generating errors -- for all combinations of the versions. With the proposal about new game selection from Impatient there are map gen (3) * resource gen (2) * tech tree (10) * quickbar (2) choices, so a total of 120 different combinations that all need to work, be balanced, and be correct. (ignoring the etc, which will at least double it, so one more choice means 240 games to balance and test...)
Nobody has time for that. Even with good automated testing, balance, new design, and similar things are just too costly to support fully, and every combination will introduce new, unimagined, edge cases. Fixing them will cause conflicts: tech tree v1 has less military boosts than tech tree v2, so how do you balance biter frequency in map gen v1 against them?
Not to mention that users expect map gen v1 to be the same all the time, because otherwise why would the choice exist? So you also get pushback if you change it to balance against those combinations just like the oil change got pushback -- even if the change is overall good. (I have no actual opinion on the oil changes being good or bad at this time, it is just a recent example to illustrate the issue.)
The second one is that it is extremely technically challenging to make it possible for the community to ship the same mods, and to deal with how they work. Not so much for each individual mod, but when they combine. Issues like people referencing a graphic in "pre-60 oil" that was removed in the community version, but present in base.
What do you do, break other community mods by making it "missing"? Keep them working, and have a mixture of multiple versions, and the community author getting bug reports that make no sense because of the combination? Allow community mods to declare they only work with specific versions of mods -- so suddenly nobody supports the versions shipped with the game, and you have to play the single community version anyway?
Updates are equally hard a technical problem. Because you have to balance all the shipped stuff, allowing community updates risks upsetting everything. You also have a really hard problem with change, because API changes that break third party mods are OK-ish, but if they only break something third party that is also in core?
Socially, this too is hard: how do you integrate the work of a wide variety of people, with very different opinions about how things should work? How do you deal with -- as an imaginary example, completely unrelated to the real people who inspire it -- BogGel, who writes the most downloaded mods, but doesn't want you to ship them for whatever reason? (again, no idea what the mod authors inspiring the name would feel about this, I can't speak for them.)
What if BobGel shipped under an MIT license, you perfectly legally ship their mods with the game, and then they flip to the "no redistribution by Wube" license? Drop a feature and watch everyone who used them, but never used third party mods, get super-mad? Fork them, and upset even more community members because you appropriate their work, but don't play nice and give back? Pay BobGel to change their mind -- if they even will?
...and every one of these problems takes time to solve. Is shipping those mods worth the hundreds of thousands of dollars a year, or more, that it costs in staff time? Is it actually an improvement?
In the end it almost always turns out that you did a bad job of most of it, so updates are hard, forks happen unintentionally, giving back doesn't work very well, mod authors disagree with core team changes, so reject them, and it just sucks for everyone both technically and socially.
Making it work as Wube do, by providing nice support for third party mods, and letting them sort it out for incompatibility is easier, cheaper, and honestly, socially better too. Third party BobGel incompatibilities with TimeExploration don't matter so much, but if you ship 'em, people gonna expect you to work together.