#1970: Power queue patch
---------------------------+------------------------------------------------
Reporter: Zarel | Owner:
Type: patch | Status: new
Priority: blocker | Milestone: 3.0
Component: Engine: other | Version: svn/trunk
Keywords: power | Operating_system: All/Non-Specific
Blockedby: | Blocking:
---------------------------+------------------------------------------------
'''What it does'''
Overhauls trunk power code. Replaces the current "power flow" system in
trunk with a "direct debit" system, and adds a queue system for handling
power.
'''Why it does it do it'''
When gerard_ quietly committed his overhaul to the power system, I saw
several flaws with it. At the time, though, I was busy with other work, so
I just mentioned I disagreed with the system and that I would work on a
replacement proposal.
Around half a year later, gerard_ logged into IRC, and I remembered I was
supposed to work on a replacement proposal. I brought it up, and he agreed
that his power flow system had a few flaws, and liked my proposal better.
Several other users (I don't remember who, but I think Daltx, EvilGuru,
Kreuvf, and Safety0ff were among them) did as well.
So the proposal is this: Direct debit plus power queue.
Direct debit is the system used in Supreme Commander 2, as well as all the
C&C games (I think) and all the StarCraft games. They use it because it's
the best. When you want to make something that costs, say, 50 power, your
power goes down by 50 and you stop making it.
Anyway, basically, the biggest problem with the power flow system: You
never know how much power you have. Say you want to build something that
costs 50 power. You have 60 power left. Do you have enough power to pay
for it? Answer: It depends on how many other things you're currently
spending power on. This means that: You have to keep track of what's
sucking power, and you also have to do a bunch of complicated math to
figure out if you have enough power left to do anything.
That's the advantage of direct debit. You instantly know. Is 50 less than
60? If so, you have enough power. If not, you don't.
The second disadvantage of power flow is that, since there are sources of
power decrease as well as power increase, you need a complex interface to
keep track of it all and visualize it. With direct debit, all power
deductions come instantly, so no complex interfaces are necessary, besides
maybe queue jumping, which can be as simple as double-clicking.
The third disadvantage of power flow happens when you're at zero power.
Say it takes 1 minute to accumulate enough power for a tank. If you just
naively click on a tank in the two factories, you won't have either tank
until 2 minutes have passed. But if you make one tank, and then start the
second one right when the first finishes, you'll have one tank after 1
minute, and you'll still have both at the 2 minute mark. That means the
power flow system encourages micromanagement.
My direct debit system automates that process - if you're low on power, it
automatically puts all your power into the first thing in your power list,
instead of spreading it around. That way, the last thing takes just as
long, but you get everything else much faster, and this all happens
automatically, instead of you having to micromanage it when you, as an RTS
gamer, have better things to do, like micromanaging an attack, or building
up your base.
gerard_ said that the only reason he implemented a power flow system
instead of a direct debit system is because direct debit systems
traditionally disallow you from building things once you're out of money.
My patch solves this with a power queue - instead of disallowing the
build, it puts it on a queue instead, and thus my patch is superior in
every way to the current system, and gerard_ endorses it.
Per had some reservations about it, which is why I'm posting this lengthy
justification of my patch. I hope this explanation (and the support of the
majority of users and devs, including the guy who wrote the old system) is
enough.
--
Ticket URL: <http://developer.wz2100.net/ticket/1970>
Warzone 2100 Trac <http://developer.wz2100.net/>
The Warzone 2100 Project
_______________________________________________
Warzone-dev mailing list
[email protected]
https://mail.gna.org/listinfo/warzone-dev