Multiplayer
Design Lead Tyson Green checked a week ago in with a lengthy
explanation of the melee system in Halo 3, how it’s different
from Halo 2’s what worked about both versions, what didn’t
work and how it’s being addressed by the auto update.
here's a reminder of what he explained.
Tyson says:
The Short Version
Melee contests will only produce a winner if he has a sizeable
health advantage over the loser. Otherwise, both players may
die in the clash.
What Halo 2 Did
Put simply, in Halo 2, whoever threw the first melee won.
Sounds perfect, right? Not quite.
Get your Einstein on, we’re going to talk about relativity.
Specifically, the relative observations of host versus client.
In Halo 3, across our entire population, we observe an average
latency between host and client of around 80-100ms, which
is around three frames. Assuming 90ms of latency, consider
what happens when the host and client both throw melee attacks
at exactly the same time. The host will see the client’s
melee attack as many as three frames later, while the client
will see the host’s melee attack three frames later.
Who attacked first?
Well, in the halcyon days of Halo 2, the host made that determination.
Which means his melee was first and the client lost the melee
fight far more often than they should have. And in the event
of two clients attacking simultaneously, the one with lower
latency to the host would appear to have attacked first, and
would be the winner. In a peer-to-peer environment with latency,
it is nigh impossible to determine exactly who attacked first.
Over Halo 2’s three years online, many people adapted
and got used to preemptively throwing a melee, but it was
still fundamentally unfair in favor of the host or people
with faster connections.
So, to be clear and upfront, we will not be returning to
those days of letting the host win when the outcome is in
doubt, aka. first melee wins.
The Halo 3 “Fix”
In Halo 3, there is explicit special treatment for what is
called a “melee contest”, which occurs when two
melee attacks occur almost simultaneously. Specifically, when
the host starts to throw a melee attack, there is a short
window after that (three frames, or approximately 100ms) during
which the host will watch for a retaliatory melee attack.
If one arrives inside that window, it is a contest. Besides
smoothing out the latency differences between clients (it
works the same way when one client melees another), this allows
a client with a ping as high as 100ms to compete with the
host on a far more even footing than Halo 2 allowed.
So now we have the contests, but how are they resolved? Having
determined that we cannot trust timing in an environment with
latency, we instead use the remaining health (including shields)
of the contestants as the tie-breaker. This is about as fair
as you can get, within the conventions of Halo—the guy
who did more damage comes out on top. Specifically, the winner
of the contest still takes melee damage from the loser, but
is protected from death and lives to fight another day.
On paper, this method addresses the host advantage (among
others) and is scrupulously fair. There’s just one problem:
The Fatal Flaw
Halo 3’s system is inscrutable. This is most famously
illustrated by a splitscreen film (eliminating latency as
a factor) of two players running at each other, firing, and
throwing melee attacks on the same frame. One drops dead,
and it isn’t clear why, so the result is declared to
be random. The real reason is, of course, that one player
landed one or two more bullets than the other, but that isn’t
anywhere near obvious.
Any time you have a game system which players cannot understand,
it might as well be random. No matter how fair the tiebreaker
may be, if a single Assault Rifle bullet can slip by and decide
the outcome, it might as well be random. And randomness is
a poor substitute for tactics and skillful execution.
Addressing the Flaw
We considered and ultimately rejected some ideas that could
have made melee contests produce a less inscrutable result.
A major consideration was that we wanted to minimize the impact
on how Halo 3 plays to the greatest degree possible, while
still addressing the problem. Radically changing the mechanics
of melee combat is not something we want at this point.
Ultimately, the change is targeted at the unpredictable outcome
of a contest. Simply stated, it works like this: when a melee
contest occurs, and both players are close to the same health
(including shields), no special protection is given to either
player. This means the outcome of a close melee contest can
be death for both participants, but that a player who decisively
injures his opponent prior to closing for a melee will continue
to enjoy the victorious outcome.
For those of you uninterested in the precise details, the
upshot is this: if you close for a melee attack and are at
a clear advantage (or disadvantage), the outcome will be clear.
If the outcome is unclear, too close to call, you will likely
trade kills with your victim. But you should no longer watch
your opponent saunter away for no clear reason (and if you
do, check the film—it tells all.)
The Nitty Gritty
If you’re still reading, you’re probably interested
in some details, so we won’t skimp.
A player in MP has a grand total of 115 hit points (to adopt
a common term.) 45 of these are body hit points, 70 are shield
hit points. For reference, a single AR bullet does 7.5 points
of damage, and a BR bullet does 6. A melee attack does 70
for most weapons, with some weapons (notably the Brute weapons)
doing 72.
When entering a melee contest, the combined body and shield
hit points are compared. If the difference is above a threshold,
then one player is determined to have won decisively and is
protected from death. After testing with a variety of weapons,
we settled on a threshold of 26.5 hit points (slightly rounded.)
This translates into 4+ AR bullets worth of damage to decisively
win a melee contest, instead of simply having 1 more hit point
than the other guy.
There is one more wrinkle to this: your invisible body hit
points do recharge, but at a different rate from your shields.
While ordinarily this is a non-issue (we’ve always made
this largely transparent), it can affect the outcome of a
contest. For those of you keeping score, body hit points start
regenerating 10 seconds after last taking damage, at a rate
of 9 hp/sec. So if your shields are up but you’re fresh
from taking a beating, you could still be in trouble in a
contest.
YMMV, etc.
Despite our best efforts, this system cannot cover all cases:
if your latency is beyond 100ms, you can still get into situations
where the host legitimately believes that your melee did not
arrive in time. In testing, we did catch a couple of films
where perfectly balanced, simultaneous melee attacks produced
an unexpected winner. But these were films recorded by the
client—the host film told a different story, showing
a very late melee.
The moral: when in doubt, check the host’s film, because
latency still matters. Just a whole lot less than Halo 2.
Also, while we were in there, we excised a BXB-style glitch
before it gathered popularity, and fixed that strangeness
where bodies would be hurled with unearthly force by a mid-melee
death. We sincerely apologize to people who enjoyed the latter
bug—it was pretty funny."
See You all online, enjoying the new update! Gotta love updates...
:)