Quantcast
Channel: asie/blog
Viewing all articles
Browse latest Browse all 15

A Tale of Joules

$
0
0

First, the part of the story that you know:

In the kingdom of modded Minecraft, everything was well. People were powering their machines using electric cables and kinetic pipes and everyone was happy about it despite some of their energy floating away to the Purgatory of Null. Suddenly came the Enlightenment: people realized that they need not agree to this, and they can use The Code to lessen the losses. They realized how sad they truly were due to their energy being lost here and there, and thus an elite group known as Mod Developers started utilizing The Code to change this. People realized how much more joyful it is to have their machines work with little to no issue and not need to do any of those silly "planning" things. However, the Old Guard, who controlled The Code nearly exclusively before, was not happy with this. One of them changed The Code to enforce power loss on its users. Of course, the enlightened folk were very unhappy with an attempt to control their thinking, and some of the Developers created their own version of The Code, quickly obsoleting the original. Eventually, times have changed and even the Old Guard has moved on to the new, lossless Code and everything was happy ever after.

Alright. With that out of the way, here's the part of the story that some of you may not know:

First of all, I regret moving to Redstone Flux. But I am aware I had no choice. Second, not everything was as good as it seemed.

When I originally moved BuildCraft to RF, many people expressed concerns that BuildCraft would see a large overhaul to "fit in" as a result. None of that has happened, however, and the same people now confirm that BuildCraft feels mostly the same. Mostly. Many people have said that they felt a subtle difference, but nobody was able to quite pinpoint what it was. I knew, though, and I tried really hard to make it as invisible as possible. Sometimes, however, one has to admit that the facade of happiness is just that - a facade. I quite honestly miss having interesting behaviour in my power system. I miss having to deal with quirks. It was done wrong before, but I have some fresh ideas... and a willing to experiment.

There is one difference between our power systems: the engine behaviour. Typical RF mods emit their power in a constant, low-energy flow, let's say "20 RF every tick". What MJ mods used to do is emit them in large pulses, so "20 RF/t" on an engine was actually "20 RF/t, then push as much as possible every engine push which is every 50 or 25 ticks or something". It might sound similar, but it's really not.

  • Large pulses mean RF/t counts are largely irrelevant - since an engine pushes only once every X ticks, the machine needs to have a high amount of allowed RF/t. Other balancing measures have to come into play, such as activation power, idle power draw or energy loss.
  • Large pulses give you two values to play with: the amount of energy and the rate at which energy is transferred. BuildCraft pipes used this cleverly to control energy extraction rates, and some future concepts rely on it too. The engine heat mechanic also relies on it.

Now, KingLemming is correct here: RF can support both, the API allows for it. But do the mods? But can the mods?

What I did when I originally ported BC is run into this issue and port engines over to use constant energy flow instead. Of course, this caused a lot of issues, but I tried to hide them as much as possible:

  • The extraction pipes got rewrites and redesigns to try and hide the fact. However, it never worked quite right - you can tell that the item and fluid extractors keep getting subtle tweaks.
  • The engines never really heated up anymore, except when underutilized. Thankfully, nobody noticed.

I think that now, after ten months of fluxing, it is time to say that in hindsight moving to RF was a terrible decision, however we had no choice: Forestry already had a fork moving in and RailCraft was at risk of being deprecated completely. And who'd play BuildCraft alone?

One could say: "Just make it work as pulses!" - but that breaks expectations of EIO/TE/etc. machines. "Just make it work constant!" - you see how well it works. "Add a buffer on the engines!" - breaks pulses for high-power engines with low-power acceptors (imagine a 3200 RF pulse being fed to a low-tier pulse-RF machines which only accepts pulses of up to 640 RF). "Add a buffer on pipes!" - well, what about direct machine connections? "Who uses those?" - well, I do, and I want a design to be coherent and not have stupid flaws like that. "Make a marker interface!" - and have engines behave randomly differently depending on what they're connected to?

Or perhaps just ignore it and make the two work together? Have pulsed RF and constant RF around simultaneously? Yes, of course, but that breaks user expectations. A fundamental, logical rule says that one can generally expect mods using one power system to work with other mods using one power system. Pulsed RF and constant RF are two energy behaviours under one power system and would mean that that rule is no longer true, effectively creating two power systems with one API - something that is much harder to support by modders (and much harder to understand by users) than two distinct power systems.

One idea was to add explicit converter blocks - a Flywheel which turns pulsed power to constant power, and a Gearbox which does the opposite. ...Can you tell what this sounds like? Yes, it sounds like having two energy systems in one: a "pulsed RF" and a "constant RF", which is far, far worse than just having two truly separate energy systems.

And this is why I want to move BuildCraft back to MJ. But it's hard to do it: RailCraft devs, IIRC, burned out on the energy issue and Forestry is not willing to move. It's obvious why: we'd have to offer something over RF to make people move, and there's nothing we can offer. Except RF compatibility, but I explained above why that's non-trivial. And I don't really want to do what TE3 did to BC and make Kinesis Pipes output both RF and MJ - that's an "Embrace, Extend, Extingush" kind of move. I don't like that. And I know moving BC to MJ would cause extreme backlash among the people who use BC with other machine mods which only accept RF. There's little I can do about it, and I know moving to MJ would fix BuildCraft at the cost of killing it. Is it worth it? Is "worth" even something worth asking about? I guess I failed as a designer, but it's never too late to rethink some things.

One thing I can say is this... In the event that we were to move, I'd definitely try and make supporting the new Joules easy enough. Possibly even a way to support both MJ and RF at the same time. They are similar indeed, just not similar enough.

[edited] P.S. It has bothered me for months, I guess it's time to just say it outright: I don't like effortless power. And the BC7 "energy loss" option is a poor hack. And I know many people, including BuildCraft's own testing team, have frequently said "but I can't calculate energy otherwise!". No. It doesn't matter. Minmaxing numbers, judging mods by who is the most efficient is what's killing modding to me. It turns everything into a terrible game of who's the most efficient, what's the most efficient. It stops mods from posing interesting challenges as the only way to become popular is to sneak in a more powerful, easier to use thing into an otherwise interesting mod. Then people will start demanding your mod be included EVERYWHERE, once they taste the once-forbidden fruit. Minecraft should not be played with just a calculator (no offense to developers of calculator mods!), but thought as well.

UPDATE 6 PM CET

[edited] P.S.2. Thanks for the input, everyone! Thanks for all the love and hate, for all the tips and complaints. I think the best way to handle this might actually be to sit down and create a variation of "pulsed RF" and "constant RF", where the two systems are compatible with each other but less efficient unless used in the correct manner. Thank you.

Really.

Useful additional notes from input I got:

<immibis> When there are no numbers, nobody thinks about power loss until it gets to ridiculous levels.
<asie> Yup. One of the main goals of moving back to MJ would be to finally banish the numbers right to where they belong.

Viewing all articles
Browse latest Browse all 15

Latest Images

Trending Articles





Latest Images