Open 0lafe opened 6 years ago
Little edit to this, turns out this applies to more than just the ore multiblocks, so those should probably be looked at too
Yea we need to do a full rewiev and balancing Machines/recipes etc.
@Dream-Master @0lafe @codewarrior0 (because you wrote the algorithm i think) @draknyte1 Put away your nerf bat and read this. I'm going to show you some comparisons of performances between a maceration stack vs a PA of pulverizers. If you want to know how I got some of my numbers, here is a bit of reference as to what a gt++ machine is doing https://github.com/draknyte1/GTplusplus/issues/305
Keep in mind, I am NOT factoring resource costs to build these machines or their subcomponents, I am merely comparing performance.
Key point: I'm assuming we are working with the standard ore pulverization recipe: 2 eu/t at 20 seconds.
A UV-tier maceration stack will get gt++ boosted to have a recipe cost of 128 eu/t and base time of 12.5 seconds (check the link I posted to verify this). This means at UV-tier, it will GT overclock to 64 ores every 1 second. I say 1 second because gt++ code specifically limits machines so they can't work faster than 1 operation per second. If this limit were not in place, gt++ would easily win hands down over PA's because a UV-tier maceration stack would be doing an operation every 0.1953125 seconds, which would be equivalent to 327.68 ores per second. But luckily, that's not the case. At best, a UV-tier maceration stack will only do a stack per second.
A UV-tier PA can hold 64 ZPM-tier pulverizers. This is because the eu cost of pulverizing ores is 2 eu/t. I'm assuming the person using the PA knows how to eek out every last bit of performance out of their PA. 2 eu/t means that at ZPM tier, you would be using 8192 eu/t, so 64 ZPM pulverizers can fit into a UV-tier PA, if the only purpose you're using it for is to crush basic ores into crushed ores. This means with PA's you can do 64 ores every 0.3125 seconds, or 204.8 ores per second. As far as I know, gregtech machines don't have a hard limit on how fast they can work (this is a big assumption I'm making, correct me if I'm wrong), so a PA will actually do 204.8 ores per second.
~~Let's do another comparison. Let's say I'm comparing IV-tier maceration stack to IV-tier PA.
Using the same logic as above, an IV-tier maceration stack will do 40 ores every 1.5625 seconds, or 25.6 per second.
An IV-tier PA can have 64 EV-tier pulverizers for the same reason a UV-tier PA can have 64 ZPM-tier pulverizers. This means an IV-tier PA will do 64 ores every 2.5 seconds, or 25.6 per second.
So they're effectively the same.
Keep in mind these are just two examples of one multi, for a specific recipe. Pulverizing is easy to compare because there's really just 1 constant pulverizing recipe for most ores: 2 eu/t at 20 seconds. The good thing about ore processing recipes is that they are all more or less constant, which makes comparisons like this very easy to make. Thermal centrifuging is almost always 48 eu/t at 25 seconds, ore-washing is almost always 16 eu/t at 25 seconds, sifting is almost always 16 eu/t at 40 seconds. Because of this, you could easily come up with similar comparisons as the one I just made for pulverizing ores. Centrifuging is a lot more varied so it's a bit more complicated to do comparisons because you'd have to do lots of recipe by recipe comparisons.
Without having done any extra math, I have a feeling you'd run into similar conclusions for the other multiblocks, except the centrifuge: GT++ multi's will outperform PA's at low to mid gregtech tiers, and then PA's will easily overshadow GT++ multi's the higher in tier you go. And this is only because gt++ specifically has code to hard limit how fast an operation can be.
If that 1s limit is in place, then comparing maraction recipes is the worst comparison. It's the fastest recipe so it'll be the one to be most impacted by the 1s limit. Looking at times for other multiblocks that don't go into the 1opperation/s recipe territory.
Looking at an ore washing recipe of 25s at 16eu/t, the UV gt++ multiblock does 64 opperations/s and the UV array does 41.
This is mostly irrelevant as what I was trying to highlight was how much it outpaced other options in EV and IV tier, when filling a PA is an issue, and gets you less than the cheaper GT++ machines. These voltages don't reach the 1s limit, and are usually even more OP in the GT++ machines.
Also, you don't factor in cost, but you really have to. Even for the macerators. Is the maceration stack expensive? Yes, but compare that to the cost of 64 zpm macerators. That's hundreds of assembly line parts, and zpm circuits. Even the UV array of washers, 64IV machines is still expensive for someone who can just afford 1A UV. Cost is even more noticable in the earlier tiers.
Firstly, there is no ore washing recipe that takes 64s. Most, if not all, ore washing recipes are 25s. But I'll play along. If you use your hypothetical numbers of 16 eu/t at 64s, then you'd need 2 PA's to maximize the efficiency of 1 UV amp. 16 eu/t recipe requires 4096 eu/t at IV-tier, and you can do 128 of these with 2 PA's. This comes out to 32 ores washed per second. If you don't care about using your UV amp efficiently, then you could do a UV PA with 32 LuV washers, which would come out to 16 ores washed per second. Compared to a gt++ ore washing plant, which will take 32 per second as well (512 eu/t at 12.8s base time, overclocked to uv will give it a hard cap of 1s). So in your hypothetical situation, if you don't want to be efficient with your UV amp, yes, a PA would lose to a gt++ ore washer.
Now if you take at a look at an ACTUAL ore washing recipe, you'll see it takes 16 eu/t at 25 seconds like I originally stated.
GT++ ore washing = again, 32 per second because of the hard cap.
2 PA with 64 iv's each = 128 every 1.5625seconds, or 81.92 per second.
Let's say you don't care about EU efficiency and only want to build 1 PA, then 1 PA with 32 Luv's = 32 every 0.78125 seconds, or 40.96 per second. Still better than a gt++ ore washer.
Either way, the PA wins.
You're missing the original point I was making, which was that: eventually, a PA will win. WHEN it wins varies per machine per recipe, but from what I can tell by eyeballing it, it will win at GT:NH's equivalent of "late game"
Now as for "filling" a PA with machines, that has to do with resources. And again, that's not something I'm discussing here as that can easily be made up for with recipe changes/gating. If you want my 2 cents on that topic, I say resources are a joke at IV. You have AE in this pack and you have quarries. Making a stack of machines is NOTHING. My job here is to show you all that, looking at it from a performance perspective, a gt++ multi isn't all that you make it out to be.
gt version 5.09.32.19 ic2 version 2.2.828a-experimental
This is based on the number I got which was 4 ore processed per tier at the speed of a singleblock of that tier. It might be different, in which case my exact numbers will be off, but the idea should hold for other increased ores per tier.
The model for the gt++ ore multiblocks is a little broken for nh. They're all cheaper than running PA's at that tier in terms of material cost, they run faster, and output more. The only way to run PA's faster, is to make 16 and run each at EV, with 1024 LV machines, and 16 processing arrays, compared to the gt++ multiblock which costs nowhere near that much, and will still output more per ore. The way PA's work, after EV they follow the normal gt overclocking rules for speed increases, and because the gt++ ones do as well, with a bonus from the ores done per tier, with an IV gt++ multiblock being faster than an IV PA, the gt++ versions will always be faster than a single PA, output more, and cost the same power to run.
My suggestion is to keep the extra outputs, but remove the extra ores per tier. This way it will always be slower than using a processing array of any tier, to reflect the cost difference. The extra output should be reasonable though. 10% per tier is a little on the high end, but fairly reasonable.
If not that, then something reasonable. If they're cheaper than filling a PA, and cost the same eu/t to run, they can't be faster and output more. I get that the specialized machines should be better than the generic ones, but at the same time, what they are now simply makes it easier to process ore, with no downsides. The cost of the PA isn't the multiblock itself, its the machines that fill it. A singleblock machine that goes into the multiblock is already a specialized machine. Processing ore right now with only singleblocks/PA's is just fine, it doesn't need to be made easier with these multiblocks.