Schall Machine Scaling


Adds scaled up versions in different sizes for various machines. Number of overtiers can be freely adjusted. Designed for megabases and gigabases, by reducing total number of entities (thus reduced save file size, improved UPS). Includes assembling machine 3, chemical plant, electric furnace, oil refinery, centrifuge, lab, boiler, steam engine, steam turbine, heat exchanger, nuclear reactor, storage tank. (Locale: English, Deutsch, 正體中文, 简体中文, Português Brasileiro, Русский)

Content
13 days ago
0.16 - 2.0
11.0K
Manufacturing Power Storage

i [Responded] Generic machine scaling

4 years ago

I know the post was there anywhere, but I want to try to give an additional idea for a more generic implementation. Because as the other people I like the mod, but there are only few items where you can use the scaling.
The idea:
in FNEI (another gread mod) there is the possiblity to get all "items" which can create other items, so this are machines, furnaces, ...
So it should be possible (with a dependency to FNEI for example) to read out the FNEI "machine list" to get all machines without implement it explicitly

Then it will compatible with all mods directly without work because FNEI is independent from other mods

4 years ago

I do not understand if you are making a specific request to me, or just making a general statement.

Are you asking me to "read" machine list from FNEI?
If you are asking for this, I should say I can already easily find all machines through Lua data.raw. No need to use any external mods (like FNEI) to learn ABC.
Some of my mods (like Schall Oil Fuel) are scanning for all entities and only try modifying the related machines. So absolutely I know how to find all machines.

Are you asking me to "auto"-implement scaling for all machines?
I should say it is not possible.
Even in recent code refactoring I have made support for additional machines very easy to do, some parts still need manual inputs. These include the setting the base technology per-requisite and base tech cost, setting base length (dimensions) of the base machine (so to make graphics scaled correctly). Sometimes I even need to insert special parameters to make them graphics look right (e.g., I added an additional 1.1 scale mutliplier to AM3 sprites).
The technology icons also need to be manually made and set too. The supposedly-size 64 icons are not looking good as tech icons (size 128). Or made that from sprite sheets is absolutely not a trivial task neither.
So an entirely auto-implementation (or generic implementation) is not possible.

If you do not understand my explanations, just read my code and try to add any one machine (say, stone furnace or AM2) to the scaling set. You will then know why the feature cannot go automatic for all machines.

4 years ago

Yeah I understand your explanation. I thought it was just a problem of getting the informations which you need to "scale" the machines and the machines itself. But ok, I believe you that it is not possible :)
-> Solved for me :)

4 years ago

In addition to above reasons, actually there are many more reasons saying this is a bad idea.

For example, as a good Factorio modding practice, adding entities should in principle be done in data.lua phase only.
However, many mods (especially the big mods) LOVE to create their own machines in data-updates.lua phase or even data-final-fixes.lua phase. (See a related discussion.) Else they love to do the final edit to their machines.
The auto-implemented entities will definitely fall victim of this dependency arms race (war of the final edit), as there are TONS of "badly-written" mods on this mod portal... A lot of users are going to come here complaining my mod does not work with X1 mod, X2 mod, etc, instead of complaining those mods are badly-written. Totally not worth to spend MY time to clean up THEIR mess.

4 years ago
(updated 4 years ago)

Sure, that's why I thought to go over FNEI is a good idea, because this mod has no problem with the "dependency arms race". I didn't know that you can not read all properties that you need directly from the ItemPrototype. I don't know why FNEI can show all things right without having such problems.

4 years ago

Hm ah I see, the problem. In the data*.lua phase there is no access to game and on control phase it is too late :(

New response