Mekanism

Mekanism

111M Downloads

Tank and pipes balance

KarolWojtasiuk opened this issue · 17 comments

commented

Please use the search functionality before reporting an issue. Also take a look at the closed issues!

Issue description:

Pipes capacity is greater than capacity of the tank.
The same problem is with gas tanks and pressurized tubes.
What is the use of a tank? Pipes have more capacity and are cheaper to craft.
For example:
Ultimate Fluid Tank: 112,000 mB
Ultimate Mechanical Pipe: 512,000 mB

https://github.com/mekanism/Mekanism/blob/1.16.x/src/main/java/mekanism/common/tier/FluidTankTier.java#L8-L11
https://github.com/mekanism/Mekanism/blob/1.16.x/src/main/java/mekanism/common/tier/PipeTier.java#L9-L12

https://github.com/mekanism/Mekanism/blob/1.16.x/src/main/java/mekanism/common/tier/ChemicalTankTier.java#L10-L13
https://github.com/mekanism/Mekanism/blob/1.16.x/src/main/java/mekanism/common/tier/TubeTier.java#L9-L11

Steps to reproduce:

N/A

Version (make sure you are on the latest version before reporting):

Forge: 1.16.1 - 32.0.108
Mekanism: 1.16.1-10.0.9.432
Other relevant version:

If a (crash)log is relevant for this issue, link it here: (It's almost always relevant)

[gist / pastebin / etc link here. Please make sure that it isn't set to expire.]

commented

+1

commented

Agreed. It's almost comical how a single ultimate pressurized tube has 16,000,000mB capacity when a chemical tank has 512,000. ONE tube has the capacity of THIRTY ONE chemical tanks. Very strange.

commented

My best guess is this was an oversight of aidan's when he was buffing the capacities of pipes/tubes in V10, and I will try to look into adjusting the default config for them for 10.0.10

commented

I recently spent some time re-balancing the gas/liquid transport/storage on my server. I took into account "reasonable" times to be able to empty and fill the tank with the associated transmitter, the upper bounds of what would be needed to perform certain actions (transmit water from a line of pumps, circulate steam/water to/from moderately sized reactors), and some real-life logic (gases are far more compressible than liquids, for example).

Here's what I came up with:

Gas

Tier Storage Cap (B) Storage Output (B/t) Storage Time to Empty (s) Transmitter Buffer (B) Transmitter Rate (B/t)
Basic 10 0.025 20 0.1 0.05
Adv. 50 0.5 10 1 0.5
Elite 1000 10 5 100 50
Ult. 20000 500 2 2000 1000

Liquid

Tier Storage Cap (B) Storage Output (B/t) Storage Time to Empty (s) Transmitter Buffer (B) Transmitter Rate (B/t)
Basic 15 0.025 30 0.1 0.05
Adv. 60 0.5 6 1 0.5
Elite 500 10 2.5 100 50
Ult. 5000 100 2.5 1000 500

The biggest change is the range. The lowest tier stores less than a quarter of it's default capacity and transmits at less than a 10th of the former rate. Meanwhile, the highest tier stores nearly 40 times it's default capacity. Upgrades actually mean something now!

Another notable change is that all of these are nice decimal values instead of the strange binary progression that the default configs have. After all, these values are all internally stored as millibuckets (1/1000th of a bucket), not mibibuckets (1/1024th of a bucket). The only values that have factors other than 2 and 5 are the first two tiers of liquid storage, which have 3 as a factor just to make them a little bit better than their gas counterparts.

This ties in to the third major change: Scaling. In the real world, a simple canister to store water will be able to hold far more than a simple canister to store gas at close-to-atmospheric pressures, while a specialized, high pressure canister will be able to store far more gas than liquid. Although certain concessions to not completely ruining the game had to be made, an effort to reflect the real-world compressabilty of gasses vs the relative incompressability of liquids was made. The logic of how the items "work" went something like this:

Tier Material Logic
Basic Steel A zero pressure container. It's just a big bottle with a screw-on lid.
Adv. Iron/Redstone alloy A low pressure container, akin to a soda can or aerosol bottle.
Elite Diamond A high pressure container, akin to a scuba tank or pressurized fuel canister.
Ult. Obsidian An extreme pressure container. The sort of thing you use while exploring the ocean depths or launching rockets.

Since there is a huge cost jump between Advanced and Elite tiers, this was reflected in their capacities.

An additional feature is that each piece of pipe will be able to clear it's internal inventory in exactly two ticks. I haven't experimented with reducing the buffer capacities lower since doing so might cause flow rate issues depending upon exactly how the flow is implemented, and I just went with this and it seems to work reasonably well. Ideally, the transmitters should have the smallest possible buffer capacity that does not lower the transmit rate.

I also doubled energy cubes to output power, making it be the same rate that cables transmit, because it was quite annoying to need two output cables on a cube to not have cubes be a bottleneck in energy transmission lines.

Furthermore, I tweaked some of the machine usage and gear storage capacities, because some of them were absurd: For example, you could live off of a full canteen of nutritional paste for a ridiculously long time, and I made the digiminer way more power hungry. But I digress, and those are different configs anyway….

TL;DR: Here, I fixed it.
Is it perfect? Probably not, but I like it a lot more than the current insane defaults.
Here's my current pipe config: tiers.toml

commented

Thanks for the detailed writeup, it is likely this won't actually be addressed until 10.0.11, given aidan has been rather busy with work and I would like to at least discuss what his intentions for scaling are given I feel like the end result may be lowering the tubes/pipes some and raising the tanks some rather than having the tubes be quite as absurd as they currently are

commented

@nerdywhiteguy Great work 👍

commented

Is it possible to lower the capacities of transmitters while keeping their transmission rate high or is there a limit to this?

I do know everything was buffed with the update and I have said it before but what about a 5th super tier of transmitters that could be utilized by adding ultimate tier transmitters to the antiprotonic nucleosynthesizer. These transmitters would primarily be used for the transmission of power and steam between max injection fusion reactor, steam turbines and induction matrices.

commented

@term2112 That sounds like a good idea. Maybe they could be pink, and be called "Antiprotonic TRANSMITTER", e.g. "Antiprotonic Universal Cable"

commented

@term2112 @PoolloverNathan Wouldn't a rebalance of the transmitters accomplish this? How much steam/water are you pumping? Even at high tiers, a few transmitters going at 500 or 1000 buckets per tick should do plenty!

From a purely "applying IRL logic to videogames" perspective, does it really make sense for a max tier nuclear reactor to have a single pipe going in and a single pipe coming out? A contraption as big as the multiblock contraptions are would probably have dozens of pipes coming and going from different spots.

commented
  1. I love @term2112's suggestion of the antiprotonic tier of stuff. That seems awesome!
  2. As I mentioned in the thread mentioned above this comment, I would love to this re-balance help out the Dynamic Tanks. They seem really naff in the current versions and having no upgrade options makes them feel pointless. ( I might have scuffed my maths here but it seems that a DT holds 64 buckets a block while a Fission Reactor of 8*5 (5 is the base and it's 8 tall) holds 20,000 buckets meaning that at 2003 the reactor has a 100 buckets per block, 36 more while also containing 200 buckets of fuel, up to 20,000 of steam and however much waste.) Early game they're relatively cheap and at all stages look nice but, with no scaling, they don't do anything. So when you get to a point where a 6403 tank is remotely necessary it isn't worth the block space it inhabits.
commented

random thought, it might make sense that dense transmitters are added. literally four of that transmitter together with something in the middle. They would still only take up one block but fully fill out that block space and have 4x the capacity of whatever they were made out of.

commented

Question, would it be possible to instead add "upgrade" blocks to the DT frames? Or maybe even inside it? Call it some absurd name like "[Tier] Dynamic Matter Condenser" And they have a multiplicative effect on the total capacity, being additive with each other?

Something like:

  • Basic: 2x
  • Advanced: 3x
  • Elite: 4x
  • Ultimate: 6x

And being additive would mean if they have say three basic and two elitematter condensers in the tank the total capacity would be: DEFAULT_CAPACITY * ( 32 + 24 ) - The numbers would need to get tweaked, depending on how much scaling you want, or a limit on the amount of matter condensers per tank based on size (from what I saw, the multiblock infrastructure should easily accommodate this)

commented

We are not currently looking to add another tier of pipes and the like above ultimate (though it may be possible to do via an addon).

commented

I just thought it would be an interesting to have something to be able to better utilize the antiprotonic nucleo-synthesizer. this tier of transmitters would be created by inserting the ultimate tier transmitters into it.

commented

I might try implementing a 5th tier myself, trying out some textures for universal cables
super_universal_cable
super_universal_cable_vertical

commented

I might try implementing a 5th tier myself, trying out some textures for universal cables

I really think, that ultimate is more than enough.
But when could aidan review this? I know, he is busy. I just want to know.

commented

yea this def needs looking at but balance them will be a nightmare as the amount they store might be related to how much they can transfer a tick. A max size turbine can use a ton of steam and outputs shed load of water so the flow rate of the pipes needs to be really high