Page 1 of 1
Factorio Fluid System Changes
Posted: Wed Mar 25, 2015 1:17 am
by Malachite
Upon a discussion on #factorio about the realism of the fluid system in factorio, I’d like to propose the following changes.
The current abstraction of the fluid system as Quantity / temperature is slightly too unrealistic, and limits the amount of modding that occurs when fluids could be just as amazing a part of the game as belts. I think the system should be changed to allow 3 variables. Temperature, Pressure, and Flow rate. These changes would allow a far greater amount of control over the fluid system, allows the issues with longer piping to be mitigated, and allowing modders a chance to add a significant amount of depth.
Under the current system, fluids just sort of “exist” in a pipe unless they are consumed. Tanks and pumps give you a small level of control over the fluids, but are generally considered as a weak solution to the problem. Under the new system, fluids would have a direction, and wouldn't just "ooze" in all directions.
Under the new system, each item currently in the power network would/could be modified so they cause specific changes to the three variables.
Off shore pumps would be a low pressure, high flowrate source of water
Pumps (several could be added) to be a source of any pressure, any flowrate boost to water
Boilers would take the water, add temperature to saturation conditions, and then some basic heat transfer could be applied.
Steam engines would now require specific ranges of temperature and pressure to operate at some power level (up to some maximum)
Pipes could be limited to a range of temperatures/pressures/flowrates.
Just this change in abstraction would allow an entire range of modding possibilities. Valves, as one specific example, could be added so that the flow of steam to engines would only occur under specific conditions, monitored by a “sensor” either attached to the pipe, or further along the tech tree, built directly into the pipe itself.
This basic change could then be followed up to add even greater levels of detail. Turbines are designed to operate at set pressures, but in fact operate more efficiently under specific sets of, for this example, differential pressures. Change the steam engine to exhaust steam to a condenser, and maintain the condenser at a vaccum, and now you are able to extract more power out of that specific engine.
These are just a few of the ideas I’ve come up with, and far more potential can be extracted from this system if it were changed. I didn’t even cover the changes that could be made to the oil and chemical systems under the new system. The current two variable system is far too limiting, and expanding it just a small bit could allow for an explosion of modding possibilities for fluid systems. Even better, I think that these changes could be implemented quite simply, and then expanded upon a great deal in the future, where as the current system is currently stagnate.
Re: Factorio Fluid System Changes
Posted: Wed Mar 25, 2015 9:33 am
by AnarCon
i like it
it got my vote
Re: Factorio Fluid System Changes
Posted: Wed Mar 25, 2015 10:15 am
by ssilk
The current abstraction works about so:
- Fluids are stored in a fluid-box. Technically a pipe or a storage tank is just a fluid-box. Every assembly/refinery/chemical plant has also fluid-boxes.
- Fluid-boxes have a "level" between 0 and 100% (the level you see in the pipe-glasses), which is also equivalent to the amount of fluid they contain.
- Between the fluid-boxes is some kind of "resistance": Fluids can flow from one box to a connected box, if the level is lower.
- The amount of the flow is equivalent to the difference of level (= pressure).
- There is also something like "mass", which can make fluids "swing".
- maybe I forgot something...
So to sort your suggestion in, it is necessary, that you explain in more details, how your system should work, cause I have no idea, how that should be technically implemented. In that case this is important, cause we already have a more or less good working fluid-system. (You don't need to compare your new system, with the current, perhaps you have a much better idea, how the flow could work?)
Some questions you might answer:
- How would you visualize the difference between "full" and "high pressure"? Currently it's the same...
- How would you visualize differences in pressure and so the flow-direction? (see also
https://forums.factorio.com/forum/vie ... f=5&t=6066 )
- try to see the full picture: Fluids can stand still. They don't need to have a "direction". I use that all the time, when I fill my boilers at day with hot water, and use it in the night, when the solar panels give no power.
To your suggestions about sensors: That is planned for 0.12. The small pump has already the function of a valve and can be modded.
And for information: There have been made tries to simulate real fluids:
https://forums.factorio.com/forum/vie ... ?f=6&t=177
https://forums.factorio.com/forum/vie ... f=5&t=1515
But in the end I think they gave up this idea, cause it need too much computation strengths, cause there is a quite complex dependency between pressure, volume and temperature for fluids (liquids).
Re: Factorio Fluid System Changes
Posted: Wed Mar 25, 2015 12:42 pm
by Khyron
Malachite wrote:Upon a discussion on #factorio about the realism of the fluid system in factorio, I’d like to propose the following changes.
Realism can be an inspiration for gameplay, but is subordinate to gameplay and performance (simulation processing cost).
Malachite wrote:The current abstraction of the fluid system as Quantity / temperature is slightly too unrealistic, and limits the amount of modding that occurs when fluids could be just as amazing a part of the game as belts. I think the system should be changed to allow 3 variables. Temperature, Pressure, and Flow rate. These changes would allow a far greater amount of control over the fluid system, allows the issues with longer piping to be mitigated, and allowing modders a chance to add a significant amount of depth.
No offense, but your proposal appears to have a quite shallow analysis. You don't seem to have considered how your proposal services the current gameplay requirements; or how those added complexities are communicated to the player; or how that information is relevant to the player (what new decisions/actions does the player need to make?).
Adding mechanics for no reason is a waste of the developers time. You need to be much more specific about why those kind of mechanics are desirable than just "somebody might want to make a mod that uses those features". I know you later went on to talk about a variety of new game objects but most of those would have no discernible impact on what people do when they play the game. Offshore pumps - no change that couldn't be implemented through re-balancing the current pump; pumps - most players rarely use them, so why would adding a variety of pumps be useful?; pipes already have a maximum throughput so again no effective change there, just a change in the simulation mechanics. Steam engines already have variable performance based on water temperature and availability so again no effective change.
Malachite wrote:Under the current system, fluids just sort of “exist” in a pipe unless they are consumed. Tanks and pumps give you a small level of control over the fluids, but are generally considered as a weak solution to the problem. Under the new system, fluids would have a direction, and wouldn't just "ooze" in all directions.
If your complaint is about realism, then you might want to check that last paragraph. What you've described here is less realistic than the current system.
About the only thing here that carries any weight is the request for a valve but eh... strictly speaking a) they're not necessary b) they can be implemented using pumps, albeit inefficiently. Even being as specific as wanting valves is I think a pretty low priority for the devs.
I'm not completely against change in this area - I once proposed
steam.
Re: Factorio Fluid System Changes
Posted: Wed Mar 25, 2015 4:58 pm
by ssilk
Off topic: An example what really brings new contents into the game would be to have several "fluid states" of water. A "hot water cycle". That could work for a new type of steam turbine (see
https://forums.factorio.com/forum/vie ... 178#p60178) . And the energy source could be coal, but also solar power, nuclear energy, or many other forms of heat.
See
More proper steam engines:
https://forums.factorio.com/forum/vie ... eam#p60238
Thoughts on water as a finite resource:
https://forums.factorio.com/forum/vie ... f=6&t=8181
A concrete suggestion, how that could be working as mod:
https://forums.factorio.com/forum/vie ... 178#p60178
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 4:20 am
by Rseding91
I'd love to see some kind of fluid rework as well. The current fluid system is quite limited with what can be done. While it works fine for what it is now having the options you listed would definitely add some variety to it and encourage different/specialized setups.
Right now there's literally one way to do steam engines and that's just water -> boilers -> engines. It doesn't encourage creativity.
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 5:45 am
by ssilk
Wouldn't say that. Think for the ideas around starting/stopping steam engines (show your creations board) . That shows me an incredible amount of creativity....
I currently think, any change to fluids/liquids is low prio.
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 3:18 pm
by starholme
I 'cheap' way to make the boilers more realistic would be just changing how liquids heat and cool.
Currently, 1kj warms one unit of water 1 degree. That's fine when it's below 100 C. Water doesn't turn into magic when heated above 100, steam is still H20. But it takes a lot more heat to get over that 100 C mark.
Real water is 4.2 J/K/g to heat, 2230 J/K/g to boil. So 2230/4.2 = 530x. So we could say 530 kj to boil a unit of factorio water.
I think we could split the heat capacity of liquids into groups, something like this:
{
min:0
max:99.9
capacity: 1kj
}
{
min:99.9
max:100.1
capacity: 530kj
}
{
min:100.1
max:300? - This could really be whatever number. Anything under 1000 is pretty realistic, although the heat capacity should be increased a bit.
capacity: 1kj
}
Boilers, or anything else that works with temperature, would calculate the energy content, adjust that content, then convert back to temperature.
IE: boiler starting temp is 95, with one unit water.
Boiler adds 700kj/tick(Just a made up number, I know vanilla boilers are different!)
Starting energy: 95*1kj = 95kj
Add 700: 795kj
Convert back to temp, the first 99.5 kj get you to 99.5c, leaving 695.5kj
The next degree(to boil the water) costs you 530kj, leaving 165.5kj, and 100.5c water(steam now, but still H20)
The last 165.5kj gets you another 165.5c, so your one unit of water is now 267c.
For heat capacity reference, the engineering toolbox is nice
http://www.engineeringtoolbox.com/water ... d_162.html
I'm not sure how much gameplay value this would add though. Changing steam engines to only work above a certain temperature introduces other issues, like recirculating the water through a boiler. But recirculating liquids is difficult, because if the system fills all the way the water stops moving. You need smart valves or pumps to regulate levels at least. Or the steam engines would need to slowly 'waste' a little water to eventually purge themselves.
I worked for a while on a 'steam' mod, for fancy power generation. The existing modding tools 'can' create a realistic steam system, but it very painful and I don't have the free time anymore. If anyone's interested in working on it, let me know. I think I have everything worked out, just no time to actually implement.
See
https://forums.factorio.com/forum/vie ... =32&t=7859 for details on that WIP mod.
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 3:38 pm
by katyal
tldr; What, if any, new gameplay/challenges does this system bring to factorio? (directed at the whole post in general not just the previous one)
IMHO This is complexity for the sake of complexity because all these turbines, condensers, pressures, and what not are still a system that reaches an equilibrium. The current fluid system has been solved ... one pump, 14 boilers, 10 engines ... How would this system not get solved? Or to put it another way, "What new gameplay/challenge will result from this?"
When I look at suggestions, I look for things that will create new gameplay. Something that will bring a new way of doing something in the game, a new set of challenges.
Imagine when fluid was added to factorio if instead of piping fluid around the devs had decided that pumpjacks, refineries, chemical plants and offshore pumps produce barrels of "x" that you then take out with inserters and place on belts. Further imagine if refinery recipes only had one output. Would that have added anything to the game? No it would just have been disguised assemblers putting stuff on belts to move it around.
The significant bits of the current fluid system are:
- pipes automatically hook up when placed adjacent to each other
- material flows in all directions in pipe
- refineries have multiple output that need to be balanced or everything stops
My question is... What, if any, new gameplay/challenges does your system bring to factorio?
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 4:19 pm
by ssilk
katyal, that are good points.
I try to think it out: I think the target would be to have "circular usages of fluids". I think that would be really cool.
But that alone is of course not worth the effort.
My hope is, that it will make sense together with uranium power (see the uranium power mod for example, the generation of enriched uranium needs many of such circles). For example. Or something from electric energy proposal
https://forums.factorio.com/forum/vie ... hp?f=9&t=5
And there are some more trillions of suggestions here.
I think ideas are enough to make this useful, the question is just, how to combine the right ideas.
In general this idea is too early.
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 7:23 pm
by katyal
I've been trying to start with the gameplay and work my way back to these cool power plants.
Unbalanced system
A system where its not possible to balance inputs and outputs passively.
New challenge: the system is always moving from one state to another. Its ideal mode of operation lies somewhere between these two states. Leaving the system at either extreme causes negative consequences.
Example:
Currently
- 1 pump, 13/14 boilers, 10 steam engines. choosing between 13 or 14 boilers is a choice between 99% power output or 100%.
Imagine instead
- If you choose 13 boilers your system will slowly fail eventually stopping just like it does if it runs out of coal.
- If you choose 14 boilers, engines accumulate heat and if it passes a certain threshold they shutdown (or even fall apart). Now imagine all the different ways you could try to solve this. heat sensors for engines to turn the 14th boiler on and off
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 7:47 pm
by bobingabout
Although the offshore pump should be able to provide for 10 steam engines, This is why I usually only use 9, with 12 boilers per pump. the ratio works perfectly.
Re: Factorio Fluid System Changes
Posted: Thu Mar 26, 2015 11:19 pm
by ssilk
Well, Katyal, it is not that easy to bring the current steam engines out of balance. Energy-in into such systems is always proportional to energy-out!
Re: Factorio Fluid System Changes
Posted: Fri Mar 27, 2015 2:11 am
by katyal
That wasn't meant as anything but an example to illustrate what I meant by an unbalanced system and why it would bring new challenges to game play. I leave implementation to people who know the actual code of the game better than I
Re: Factorio Fluid System Changes
Posted: Fri Mar 27, 2015 5:25 am
by ssilk
Erm, that is a basic part of all energy systems, that they are passively balanced. Only nuclear energy has the potential, to go out of control in your proposed way.
I think what you mea is, how will an energy system react to changing needs. That is quite different.
Re: Factorio Fluid System Changes
Posted: Mon Mar 30, 2015 1:08 pm
by katyal
Again its merely for illustrative purposes call it a flux capacitor and use garbage for fuel...
My point is Factorio is a game. I think we spend a lot of time in ideas and suggestions forum trying to make a simulator and hoping that the simulation turns out to be fun. Factorio is a game not a simulator. What will make factorio more fun? Better simulation? No, new or improved gameplay and game mechanics will make factorio more fun. What I'm suggesting is let's start by designing a fun new game mechanic that brings with it new challenges for the player. Its ok to be inspired by things we see in real life but its important to design for fun.
Re: Factorio Fluid System Changes
Posted: Mon Mar 30, 2015 5:40 pm
by ssilk
This is really easy to mod: new types of fluids must be added, refineries, new types of boilers, etc.
We will see then more, how this can add more game-value/depth and less complexity.
Re: Factorio Fluid System Changes
Posted: Fri Sep 11, 2015 7:54 pm
by suprnova74
Fluid flow is one thing in Factorio that is quite obfuscated as to how it works. I would love to have been able to figure out by what was displayed in-game that 1:14:10 or 1:12:9 is the perfect ratio. Instead, I was scratching my head why i kept linking in more pumps at the beginning, holding tanks etc and i was still loosing volume (even though a newly connected tank filled in about 10 seconds, oddly enough) so had to come here and search. For a finished product that will help newcomers, some modification should be made, whether it's simply in-game info displayed or a change to the mechanics.
For new users, Power is easy to figure out. I make 500kw and use 400kw, we're fine. water/fluid is not as easy as it just is vague as to how to fix it. Unless you add Pressure (or flow, not sure) in lieu of wattage.
something simple like:
1 offshore pump can put out a max of xx pressure,
pipe has a max xx pressure and reduces pressure by yy per segment, boilers reduce pressure by xx, turbines reduce by xx and require yy to stay filled and working or something would allow the user to figure out that hey, if i add too many things in this system, it's not going to work anymore or water won't get to where it needs to go.
That would have allowed me to easily figure out that hey, adding more pumps to the beginning won't do what is needed.
Re: Factorio Fluid System Changes
Posted: Sat Sep 12, 2015 7:24 am
by ssilk
The things are easy to understand:
Each pipe (a storage tank is just a bigger pipe) has a volume and a level. The level is also the "pressure". A flow is generated, when the level of a connected pipe is lower. The bigger the difference, the bigger the flow. Flow means also, that the liquid has a mass; it takes time to speed up and stop.
With this knowledge you can see, what happens: If you have long pipes, you need some small pumps to "refill" your level, cause a long pipe constantly looses pressure. So there is no general answer; it depends on, how you built up your system and you can find out the optimal ratio for your system only by trying out.
Me for example tend currently to use the throughput of the full pipe and with doing so, it's really difficult to say this will power 20, 24 or 26 steam engines. For me it's just some economical thought: It's cheaper and especially faster to built longer cascades of boilers and steam engines, instead of doing it several times. And you have later on much bigger possibilities for increasing the performance: add small pumps, add a tank storage, etc.
So as summary: No, there is no general rule and if you ask me I would avoid to have such one.
Re: Factorio Fluid System Changes
Posted: Fri Jun 21, 2024 12:38 pm
by Koub
[Koub] Implemented in 2.0. Actually, the individual suggestions made by OP were not necessarily implemented, but the fluid system has been reworked :
https://factorio.com/blog/post/fff-416