Deadlock989 / IndustrialRevolution

Industrial Revolution 3 is an overhaul mod for Factorio.
50 stars 0 forks source link

More Module Play [suggestion] #385

Closed Cadams111 closed 7 months ago

Cadams111 commented 7 months ago

In the past, you’ve stated that modules are one of the most important features of electric tier machines. I agree. This makes things such as electric furnaces strictly better in many cases than other things at or above their tier, such as gas and blast furnaces. When inquired upon about mid/late game furnace equity, you wouldn’t change many things because the suggestions given were not specific enough in how to fix things, and were more just complaints, and you ended up just increasing efficiency for gas and blast and removing their module slots for thematic’s sake. I have ideas, hopefully more concrete than “oh furnaces imbalanced!!! Fix!” Because I don’t think they’re bad, I just think they have more potential. In my run, I used all furnace types (except bronze) extensively, mainly due to the easy efficiency of the gas furnaces and raw power of the blasts. I also used modules quite a lot, due to the way things are balanced around them (and also my not ever setting up more than like 36 MW of power…) I think you did a good job making them all worthwhile, however there may still be room for improvement.

My general idea is to add various versatile modules for non-electric machines. The name “module” sounds like some component you would affix to something, making that thing modular. In vanilla and IR, there are three module types, all of which fit only in electric machines. Electric machines are therefore modular, and could be a Very Fast Electric Furnace, a Low Draw Electric Furnace, or a Cheap Ingots Electric Furnace. By contrast, all non-electric machines (which IR3 adds a significant number of, gas and blast furnaces being the main examples) are non-modular. There’s nothing you can do to customize them. All you get is Plain Gas Furnace, or Plain Blast Furnace.

Other mods have added restricted modules that can only fit in certain machines, though their use tends to be pretty limited (Pyanodon…). What if there were various “mechanical modules” that were not compatible with electric machines? What if there were, say, afterburners made of a small copper frame, a steam pipe, and some rivets that would reduce pollution when affixed to a fuel-burning machine. Or a bellows (rubber, copper) that would increase the temperature of a fire, boosting furnace speed. Or secondary turbines made of copper plates, clockwork rotors, and copper pistons to decrease steam consumption in steam powered machines. Maybe a tin- or iron-tier scrap collecting tray for a couple percent productivity before legit prod modules. Or even something exotic for the hinted pre-steam rotary power machines add-on… internal torque transformer? I don’t know. None of these would be affixable to electric machines, being thematically tied to the early game/copper age, and they would add versatility to the early game that carries through to the late game, being compatible with late game furnaces that aren’t electric and don’t/no longer have module slots. The goal would be to have independent, nonelectric components made mostly of copper tier stuff that are 1) available early game (copper and bronze age), 2) cheap in the late game (chrome and electrum age), 3) decent enough power level that they’re worth the fuss of making them, and 4) thematically appropriate.

If you really didn’t want to buff furnaces any further, you could remove some previous buffs to compensate for whatever modules might be added (e.g. the “permanent 80% efficiency” in gas furnaces) and allow these “mechanical modules” to make up the difference. I think this would address many of the furnace complaints while also adding more to do with modules, which you have expressed an enjoyment of and have somehow managed to make extremely important and central in your mod.

I do understand that the amount of work necessary could be too much, assuming the concept even IS sound. But if you find it worth the graphics time, I think it would be a worthy addition. Thank you for reading, considering, and again, thank you for creating such a wonderful mod. It truly is my number one favorite overhaul mod.

Deadlock989 commented 7 months ago

Other mods have added restricted modules that can only fit in certain machines, though their use tends to be pretty limited (Pyanodon…). What if there were various “mechanical modules” that were not compatible with electric machines?

Unfortunately this isn't really possible with the current state of the Factorio API. I don't know what the Py scheme is but the root issue here is that specific modules can not be limited to specific machines. Machines can be restricted to specific module effects (the four effects are speed, productivity, energy consumption, and pollution), but that doesn't give you a lot of room for manoeuvre given that the three existing module types use all four of those effects in combination. Specific modules can also be limited to specific recipes, but the gaping hole in the API there is that beacons, labs and mining drills have no concept of recipes so they will always accept those modules regardless. So there is no good way of stopping (to use your example) a "bellows" module from being put into a beacon and having that speed effect broadcast over multiple non-furnace machines (IR1 had a basic mechanical anti-pollution module a bit like this and it was easily exploited).

I'm vaguely aware that some mods try to finesse this kind of thing with scripting (e.g. trying to detect when modules are moved out the player's or bot's inventory into a machine and putting them back again, or making use of invisible beacons that need to be monitored and tidied up) but I have no appetite for investigating that kind of hack, I feel like it's bound to cause a lot of issues in return for minimal benefits, and even if it worked properly with negligible UPS cost, it would not be consistent with existing module behaviour.

Several modders, including me, have asked for more tools in this area more than once, and there was zero or negative traction on it from the Factorio devs. This is one of several key areas in Factorio where at first glance it seems like there is lots of flexibility in the API, but when you dig down into it, you realise that really the sub-system has been designed with just one use case in mind: the vanilla base mod.