Hi, great topic for a seminar! I started writing this before anyone else responded and then went to eat dinner partway through, so I may be repeating a few things from others.
- Most unexpected/surprising mod you’ve seen (or made) and why it stood out.
It's hard to pick a single mod out of the thousands that are out there, especially since I've been an observer of the modding scene for many years. Knowing the capabilities of the Factorio engine, it's hard to be surprised at what people are making since the API can only do what the API has been designed to do. As for being unexpected, one of my own mods comes to mind, which is
Blueprint Shotgun. If you don't know what it is, it's a mod similar to nanobots that aims to ease the burden of early game hand building in a silly yet thematic way. It's unexpected to me for a variety of reasons, partially due to how it came to be, the amount of love it's received since release, and the lack of popularity despite that. I've actually made a short
video about this on youtube, which you absolutely do not have to watch, it's just there for those who are interested.
I don't remember how I had the idea for it, but I shared the idea on the Factorio discord, where it didn't land particularly well, and was told to prototype the idea by one of the devs. After I did so, people seemed to love the idea, and that fueled me to keep working on it until it reached my goal of doing almost everything bots can do without actually needing bots. I never thought I'd be making that kind of mod, so I surprised myself by doing so. I did not expect it to get the response it did, but I'm glad it's been able to bring both joy and usefulness to people's worlds.
That ties into the second unexpected part; The number of people who have gone out of their way to inform me of how much they love the mod or that it's their favorite mod is astounding. I've never had this kind of response for any of my other mods, and I doubt I will again. This mod seems to have hit the sweet spot for a lot of people, which I am truly grateful for.
That ties into the
third unexpected part, if that many people swear by this mod, why was it so low on download count? Now, I'm not one to care about download, I don't make mods to be popular or to rake in the numbers, it's a fun hobby I can do that has a wonderful community surrounding it. That being said, the mod didn't even crack 1000 downloads for many months after release, and it wasn't until I made the aforementioned video that it started to take off. I suppose it's due to not being an overhaul, it only really spreads through word of mouth, but I haven't thought about it too much. Either way, it's surprising how much love it's gotten despite being relatively niche.
- When did mod popularity feel like it peaked to you (if ever)? Or has it been steady? Any milestones/releases that changed the curve?
Mod popularity has always been relatively stable, at least in the community areas I frequent, but I have noticed some trends in what mods people were playing over time. In versions 1.1 and below, Space Age wasn't a thing of course, and the main focus was overhauls, since most qol mods could be added onto any mod set. Bob's/Angel's, Pyanodon's (Py), Industrial Revolution 3, and Krastorio 2 (K2) to name a few were all the rage, and while there was some compatibility between a couple of them, each one was largely their own experience, so people would often do one after the next.
The first big shift came from the ever ambitious Space Exploration (SE) coming into the limelight, especially with a few content creators uploading their experiences. I don't remember exactly how it happened, but with SE being the "biggest" mod, K2 became compatible, along with 248k and Very BZ, so people gravitated towards SE + whatever flavor of overhaul addition they felt like. It was almost suffocating as a mod creator, as any smaller mod "had" to be compatible with SE, since people wouldn't install your mod otherwise. The popular mods got more popular, and the lesser known ones fell by the wayside, especially smaller overhauls. After all, SE takes a few hundred hours to complete, so why abandon it for something else that's smaller, less popular, and more ambiguous? Everyone else is playing SE, so you might as well too. Py had a decent chunk of the modded userbase as well, but Py is so much more complex it's hard for any other overhaul to add anything meaningful to it.
Then 2.0/Space Age hit. Almost every single mod requires actual changes to be compatible, not just a version bump. This was due to 2.0 massively changing certain parts of the API for the better, either removing decade old technical debt, changing things for the better, or making the necessary additions for Space Age to function. The bigger the mod, the harder it was/is to update to 2.0, simply due to the number of changes required to become functional. Because Space Age is effectively the new "biggest overhaul", many modders have made a subset of planet mods that are additions to SA, while the overhaul devs are updating the existing overhauls to 2.0. Quick aside, shoutout to notnotmelon for getting Py updated to 2.0 before it even came out, that was a huge amount of effort and shouldn't go unremembered. I believe we're currently at a big turning point in the modding scene, as SE has just become 2.0 compatible and we have yet to see any "true" cohesive Space Age overhaul. I expect to see a similar thing to <1.1, where people try to make as many mods compatible with SE as possible, however I doubt it will have the same drastic gravitational well of popularity that it did in <1.1, since many people have already already played SE.
- Did the API/tooling feel approachable for beginners, or better suited to experienced programmers? What helped you get over the initial hump?
I hold the stance that modding Factorio is one of the best ways to get into programming in general. You don't have to install a bunch of things, you can use any text editor and just start writing. Factorio's API documentation is, and I'm not joking, the best documentation I've ever experienced using, so hats off to Therenas and Bilka for their efforts. It has only ever improved over time, and there have been several points in time where some big change happens that's immediately useful. That being said, there's still a little bit of a learning curve to modding, since there's a lot of parts that have to be understood before you can really start going off by yourself to do more complicated things, for example the way the data lifecycle works, what a prototype is, how events work, etc. Even for experienced programmers, that is a decent amount to take in all at the start, and that's where the modding community comes in. This group of people, which I am proud to call myself a part of now, was so helpful in my initial journey, and continues to be so for many others that I see (and help) come and go, mainly in the discord. Without the community, it would have taken me longer to get into modding, and I may have given up at some point as well to pursue something else. It's still much more approachable compared to something like Minecraft though. Hell, my first mod was a single line of code, and sometimes that's all you need to do whatever it is you're trying to do in Factorio.
- Engine/API limitations you frequently wrestle with (performance/UPS, determinism, UI, rendering, pathing, etc.).
Since I consider myself to be a bit of a jack-of-all-trades modder, I suppose I've just gotten used to the limitations of the API, so I rarely run into any at all. That being said, there's still a few things occasionally, which usually stem from a specific prototype not being designed to do whatever it is I want to do. For example, containers (any kind of chest) don't support rotation, so if you want to have a 2x4 entity, you either have to accept that it can't be rotated to 4x2, or do some script jank to handle all the edge cases like blueprint rotation, cursor ghosts, etc. which takes a decent amount of work. Other things I can think of are machines not being allowed to produce both items and heat, render layers on a few small but specific things making certain graphics impossible to do, or other marginally inconvenient things that can usually be worked around. The devs are also pretty receptive to reasonable API requests, so occasionally to get feature that doesn't exist yet but very easily could, all you have to do is ask.
- Dependencies & compatibility: how do you handle breaking changes and inter-mod cooperation?
Considering I'm not much of an overhaul dev, I don't have to do compatibility very often. When I do though, it's usually the same process: Either another modder reaches out to me or vice versa about compatibility, we discuss about what would be best for the mods to work together, whoever ends up needing to do something does it, and then the other can add whatever it is they need to add if they need to, and everything works out. Every once in a while a non-modder will ask for compatibility with a different mod, and that's usually enough to get me to look into what it would take to add support, and if it's not too bad I do.
As far as breaking changes go, I try to avoid it as much as I can, which works out pretty well. I don't make many content mods, and the one or two that I do have are pretty static in nature, so I usually don't have to. That being said, I do think breaking changes should be made as early as possible, because it will only ever get more in the way further down the line. It's not going to magically get better unless you make it better, so if there's a clear reason to do it, then do it.
If you’re okay with being credited in my seminar, please add how I should cite you (forum handle or name).
_CodeGreen is fine, that's usually what I go by everywhere.