[15.11]Fluid in conditions saved in blueprint lib change

This subforum contains all the issues which we already resolved.
Post Reply
clampi
Inserter
Inserter
Posts: 35
Joined: Tue Mar 08, 2016 11:28 am
Contact:

[15.11]Fluid in conditions saved in blueprint lib change

Post by clampi »

Short description
When blueprinting entities that take conditions with fluids (inserters, decider combinator, etc), save them in blueprint library, load mods that add new fluids to the game, the conditions from the blueprints change fluid (the fluid itself is different).

Version where was found
0.15, replicable in 0.15.11

Replication steps
  • Start the game
  • Create a new map (click play->new game->generate, press tab)
  • Console your way to god mode.
  • Create 8 decider combinators, place them in line, for each select <different fluid> greater than 0, output input count
  • Create a blueprint of the combinators, save it in "My blueprints" library
  • Quit game
  • Add new mods that add fluids to the game. I used bobplates and it's dependencies boblibraries and bobores
  • Create a new map (click play->new game->generate, press tab)
  • Console your way to god mode.
  • Add power armor, power source equipment, roboport equipment, construction robots, 8 decider combinators.
  • Place the blueprint saved at the previous step.
  • Observe the fluids in conditions, try to match with the original, failure.
Expected behavior
Fluids from conditions saved into blueprints should remain the same as long as the fluid itself is present in game data.

Additional data
The fluids from conditions change also when an update to a mod changes its fluid list. If fluid icons where put in the blueprint, they may change also, if the fluid "id" changed internally.
Blueprint string
User Impact
As a user, I expect the fluids to remain the same as long as they exist in game data. Changing the mod list should not affect the blueprints to the extent possible. I also understand that if a fluid is removed from game data, the blueprint would become invalid. I interpret the blueprint library as "offline storage", so I expect that things stored do not alter, at least not without a notice. Right now, when mods update quickly to adapt to the changes .15 brought, it is a pain for the user to use blueprint library. There is no telling what will broke, as no feedback is given to the user when the game "updates" the blueprint to accommodate the new fluids from mods. Debugging such issues is harder as it is not expected that this will happen, so if it worked once (with the same inputs) it should work again. It is expected from a deterministic simulation to work this way.

Further suggestions
To make the blueprint library more usable when facing mods, a better approach would be to separate it's functionality from the game data, abstract all values with a portable format, the same way "blueprint string" mod worked.
Also, blueprint data should remain mod-list agnostic, but mod-list aware.
What I mean with "mod-list aware" part, is that blueprint data should save the mod state, similar with how a savegame works. An import process should take place, when a blueprint is transferred from library storage to a running game, where all the mod migration files were run on the data, so it can be used in a new game, with a different mod list, the same way a savegame works. The transfer process could fail the same as a savegame load would fail and most important, the user should be notified of the reason the import failed, the same way a savegame load failed.
Attachments
Combinators with the fluids from base mod.
Combinators with the fluids from base mod.
vanilla-fluids.png (82.45 KiB) Viewed 2448 times
Same combinators with the fluids from base mod but with bobplates mod loaded
Same combinators with the fluids from base mod but with bobplates mod loaded
boplates-fluids.png (152.3 KiB) Viewed 2448 times

User avatar
TruePikachu
Filter Inserter
Filter Inserter
Posts: 978
Joined: Sat Apr 09, 2016 8:39 pm
Contact:

Re: [15.11]Fluid in conditions saved in blueprint lib change

Post by TruePikachu »

Hm, I'll pull apart that blueprint string...

Code: Select all

{"blueprint":{"icons":[{"signal":{"type":"item","name":"decider-combinator"},"index":1}],"entities":[{"entity_number":1,"name":"decider-combinator","position":{"x":-4,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"water"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":2,"name":"decider-combinator","position":{"x":-2,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"steam"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":3,"name":"decider-combinator","position":{"x":-3,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"crude-oil"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":4,"name":"decider-combinator","position":{"x":0,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"light-oil"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":5,"name":"decider-combinator","position":{"x":-1,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"heavy-oil"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":6,"name":"decider-combinator","position":{"x":2,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"sulfuric-acid"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":7,"name":"decider-combinator","position":{"x":1,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"petroleum-gas"},"constant":0,"comparator":">","copy_count_from_input":true}}},{"entity_number":8,"name":"decider-combinator","position":{"x":3,"y":-0.5},"control_behavior":{"decider_conditions":{"first_signal":{"type":"fluid","name":"lubricant"},"constant":0,"comparator":">","copy_count_from_input":true}}}],"item":"blueprint","label":"Water, crude, steam, heavy, light,petro-gas, sulfuric, lube","version":64425230338}}
From what I can tell, the fluids should remain the same across blueprint strings.

User avatar
DaveMcW
Smart Inserter
Smart Inserter
Posts: 3700
Joined: Tue May 13, 2014 11:06 am
Contact:

Re: [15.11]Fluid in conditions saved in blueprint lib change

Post by DaveMcW »

The string is good, you can import it into any modded save and it will work.

The blueprint library is bugged.

Rseding91
Factorio Staff
Factorio Staff
Posts: 13256
Joined: Wed Jun 11, 2014 5:23 am
Contact:

Re: [15.11]Fluid in conditions saved in blueprint lib change

Post by Rseding91 »

Thanks for the report. This is now fixed in the next version of 0.15. You'll need to save once in 0.15.13 and then the fluids/signals will remain stable between different sets of mods.
If you want to get ahold of me I'm almost always on Discord.

Post Reply

Return to “Resolved Problems and Bugs”