
The science of Destiny 2's 'uniquely complicated' netcode - danso
http://www.pcgamer.com/the-strange-science-of-destiny-2s-uniquely-complicated-netcode/
======
jgmmo
The game limits multiplayer interaction big time. It's no more than 3 parties
allowed in an instance at any one time, and that's where a single person can
count as a party. So really how tough does the netcode be when you really just
have instance based coop.

PVP is basically csgo in space. Not too many people on each team. Only 2
teams. Etc.

As an aside, as a gamer - terribly displeased with destiny 2. Huge
dissappointment. Mostly because of it's multiplayer and communicated
drawbacks.

~~~
saluki
I bought Destiny 2 (PS4) around the same time I got Player Unknown's
Battlegrounds (PC).

I have about an hour on D2 and 300+ hrs on PUBG.

PUBG is so entertaining I never even made it back to Destiny.

100 online players in each match, dropped on an island, pick up loot(guns,
helmets, ammo, attachments), be the last player standing.

It would be interesting to see a write up on PUBG net code.

The dev team sounds new/semi-amateur but I think they have done a great job
with the game and the single map that is available (8km x8km).

It's not the best I'm sure, there are optimization issues, lots of cheaters
currently, you'll get wiped by hackers 1 out of 10 matches.

But solo is so much fun and Squad and Duo are even more fun. There are discord
channels to meet up with fun to play with players.

If you have a decent gaming PC I'd recommend giving it a try.

~~~
skizm
How does PUBG compare to Fortnite (the free to play epic games pubg clone). I
really enjoy competitive games (csgo, league, etc.) but I did not enjoy
Fortnite at all.

~~~
saluki
y, I like PUBG better than Fortnite, a lot of people play both though.

PUBG feels more realistic, easier to get immersed in, Fortnite seemed too
cartoonish.

PUBG is one of the best games I've played, even if it doesn't feel super
polished sometimes.

Each match is unique and something interesting always happens, especially in
Squads. Some involves vehicle physics, wiping another squad, making the top
10, last second revives of team mates, close calls, amazing shots, and of
course winner winner chicken dinner. If you play with a group of guys, there
will always be talk of "remember that one time . . . "

~~~
chrisper
>realistic

Especially when it comes to cars and driving and you explode from hitting some
grass!

~~~
zaarn
Grass? What about the invisible bump-mines all over the landscape?

You go 60kph on a flat plane in one second and the next thing you know is that
you're spinning out of control about 30 meters in the air with a sense of
impeding doom as you hurdle towards the next solid object at lethal
velocities.

~~~
_0ffh
Sounds like the typical problem you get when relying solely on the physics
engine for your vehicles, instead of adding at least a few lines of mitigatory
code. Sloppy, but apparently not a show stopper for PUBG.

~~~
zaarn
PUBG contains a lot of sloppy things but overall I think it adds more to the
charm of the game.

Plus, dying because of a bug may be frustrating but you don't loose anything
really. There is no punishment for dying or not being the first other than not
getting more points for cosmetics.

Usually when it happens, me/my squad just laugh/cry and move on.

~~~
saluki
y, the sloppy vehicle physics has added some great moments to Duo/Squad games.

We laugh, share the replay with other friends and add it to our "Remember that
one time . . . " moments.

I'll actually miss it once it's improved.

------
aerovistae
> How do you build a game that blurs the line between singleplayer and
> multiplayer, where players can meet others simply by hitting "play Destiny,"
> without any traditional matchmaking and lobbies?

What? How can you blur the line? It's either online multiplayer or it isn't,
there's not really an in-between. You can't "kind of" have other people
connected to your game. They're either there or they're not.

> It's an enormously complicated problem, and Bungie solved it.

....how is this any different from normal multiplayer?? What's so enormously
complicated about this problem compared to _every other multiplayer game?_
Yeah, there's no matchmaking. Great. This is still essentially like all
MMORPGs, isn't it? Except it skips the lobby and just sticks you straight into
the world?

~~~
munchbunny
The article doesn't convey the complexity very well.

Destiny keeps PvP and PvE separate. For PvP, it's traditional PvP. But for
PvE, there are multiple worlds made up of interconnected regions, but because
of processing limitations (even if it's MMO, it's still an FPS), the sub-
regions are individual instances. So you need seamless transitioning between
regions, while having to find you a populated instance every time you cross a
region boundary. Oftentimes you will be doing a 20-30 minute activity that has
to cross multiple instance boundaries, so your actual quest state has to
persist separately from the physics simulation. If you take their design of
the game as a given, then yeah, that's a bit more complex than most MMORPG's.

It's not really about matchmaking. PvP has explicit matchmaking, and in PvE
lagging hit registration is generally inconsequential because it's not a
competition. It's more about the fact that Bungie tried to work around the
problem above using P2P servers.

The problem arises when PvP is still handled in a P2P-ish way and you have hit
registration problems. On a quick read, I'm not sure I fully understand it
though, because if the physics server is dedicated, then why are there still
hit registration problems?

~~~
SXX
Handling massive amount of players is always challenging, but there nothing
unique about it. PlanetSide 2 exist for years and its able to maintain
hundreds of players in same area just fine and more than 1200 per "continent"
which built of tons of small zones that have almost perfect sync between them.

As for tracking character state and region instancing there tons of MMOs that
doing it for years too.

~~~
lesdeuxmagots
Planetside 2 is exactly what this sort of reminded me of. In PS2, you can have
over 1k players within an entire continent, which is a seamless quilt of many
zones, each of which can have up to several hundred players (north of 250 is
the most ive seen). The beauty of it being that there is no delineation
between areas for players, but clearly the servers are somehow breaking down
the continent in some way. So you can have a single battle raging across 2
adjacent areas with 96+ vs 96+, with the perception of being on a single
battlefield.

~~~
paulmd
Why not divide the map into BSP tiles and thread AI processing/netcode on that
granularity?

~~~
always_good
Then what do you do at the boundaries? In their example, a single battle
raging across adjacent areas.

~~~
paulmd
You will always have to deal with transfer across cell boundaries - but BSP
gives you a sensible mechanism to scale it besides "party level" or "whole
group level".

I'm open to defense of the concept, or prototypes if someone can suggest
something reasonable.

------
kevingadd
Destiny 2's netcode may be an engineering marvel that saves them some money on
dedicated servers, but it sure undermines the game experience. It was a
problem in Destiny 1 also - people exploited the P2P nature of the netcode &
design flaws to cheat at multiplayer content and in exclusive content like
raids to harvest rewards. People would manually firewall off their PvP
opponents' IP addresses to harvest free wins, and in the PvE content they'd do
things like have the current host disconnect to break bosses' AI and make them
easy to kill. The P2P netcode also results in enemies teleporting around and
glitching in difficult content, which is INCREDIBLY frustrating.

In 2 I haven't seen as many cheats of this variety, but they remain possible.
The real problem is that the multiplayer is a trainwreck: Loading into towns
and open world areas can fail because the P2P host's connection is bad, and
any time you travel more than a few hundred meters in the open world, all the
other players vanish because you get booted to a new host. In practice this
means that you don't get to interact with other players for more than a few
minutes, AND you can only bring two other friends into the world with you due
to the limited party sizes.

As an engineer I can totally understand these constraints but the game
experience just sucks. I can swap over to Playerunknown's Battlegrounds and
get dropped into a 100 player match after about 10 seconds in queue, but
joining a 4v4 PvP match in Destiny 2 takes upwards of a minute. The game's
multiplayer aspects just feel incredibly dated. Despite this, the content is
all tuned for multiplayer - the strikes and heroic public events are nearly
impossible to complete solo, and the main sources of powerful gear
(nightfalls, trials, the raid) require 3-6 players with good connections that
can stick around for an hour+ without getting disconnected from each other.

~~~
snuxoll
You also can't matchmake nightfall strikes or raids, they're trying something
new where you as a solo player can match with a party needing an extra member
(once this "feature" leaves beta) - but ultimately unless you actually know
people who play the game trying to access all of the content is difficult at
best.

The clan system in the game should be the cure for this, but ultimately it
offers little in the way to actually communicate with your clan mates. At best
you get to help level up your banner to get some perks and show a clan tag
next to your name, beyond that they're useless. Every proper MMO on the planet
has AT LEAST clan chat, meanwhile Destiny 2 relies on communications
facilities provided by your platform and nothing more - which is a pretty big
issue on the PC, since there's not exactly a way to join a group audio or chat
channel on Battle.net.

~~~
madsushi
There is clan chat on Bungie.net on the clan page, so you can chat there. And
the Battle.net app does have group audio and chat channels now (new Social tab
features).

------
Mtinie
As an avid “Destiny” player for over two years, I was so excited to pick up
“Destiny 2”. After three weeks, I’d reached a point where there were no
motivating factors to keep me logging in. I haven’t even finished the
raid...which, as a pretty heavy gamer, would be at the top of my aspirations
when playing.

The single-player campaign had so many moments where they hit high notes. But
ultimately it was too short, fell into cliches, or hinted at a blended
universe (first mission), but then took it away.

I really wanted PvP to be the glue that held things together until D2.1 comes
out in December. But with the horrid netcode inherited from “Destiny,” and the
changes to formats and player counts, they neutered the one aspect that offers
replay-ability.

For a team with the experience they have, I’m perplexed with the apparent
tone-deaf touch they’ve guided the game with. For their sake, I hope that it
is the publishers fault :/

~~~
snuxoll
Don't forget the grind for gear. I never finished Destiny 1 because the
campaign was such a grind, playing Destiny 2 was a much better experience so I
stuck it out for the end. Then I realized the moment you hit 200 in your gear
level it becomes a painful process grinding forever to get new equipment. I
can go turn in reputation items and get gear that is a lower level than what I
have now, with the only potential upside of at least a purple item being
valuable for dismantling to get shards for infusion.

I'm just going to play Borderlands 1/2 again, even single player they're way
more fun than Destiny 2 is.

------
Kiro
> To shield the game from hacks on PC, Bungie is preventing applications from
> injecting code into the game.

What prevents hackers from simply forging the network messages? How does loot,
gear, economy, levelling up and other hard incentives work when a player is
the host? Where's the authority?

~~~
nichochar
From what I understood from the article, it's not a pure P2P model, but a
hybrid model, which makes it particularly interesting.

I think the conclusion of the article is very good: the experience is great in
"free play" (when you're running around a world and people appear/disappear),
but (very) bad for doom/overwatch/csgo style PVP (= the crucible).

~~~
fokinsean
Yeah there's been many complaints of people getting DOS'd in pvp play because
it is relatively easy to find the player's ip address.

~~~
drawkbox
This happens in most PvP games though, eventually a hack is found that allows
people to spam messages to win battles/races. In racing games this happens
alot to slow other players or force them to disconnect. In Madden when it was
on PC, it was very common for people to run something like this as they
started to lose, forcing the other player to disconnect and losing reputation
while they gave the victory to the player that didn't disconnect. Spam
disconnections are handled better now and incentive is mostly gone from that
through game design and verification (a user spamming is booted in cheat
detection systems), but you have to be aware of that in PvP especially real-
time battles, sports or racing type games.

------
politician
After reading the article, this netcode sounds like a complete mess. It's like
Diablo 2, scaled up (contrast with Diablo 3).

Maybe they'll throw a blockchain in there to help with the obvious hacking
issues that will inevitably happen.

------
Grollicus
> To shield the game from hacks on PC, Bungie is preventing applications from
> injecting code into the game.

Whats different to like every PC game since 19something? I mean thats a core
component of most anti cheat tools and copy protections? (And - spoiler alert
- they never really work)

~~~
rocqua
A big difference is that they perma-banned anyone injecting code into that
game. That however included anyone using any kind of overlay.

Discord, teamspeak or ventrilo 'who is talking' overlay: ban

FPS counter from fraps: ban

GPU temp monitor: ban

Webcam view for streaming: ban

Eventually they reverted those bans. People use them on a rather massive
scale, and they are very normal. No-one expects them to be banned. Moreover,
they gave no warning whatsoever. This means a lot of truly innocent people got
caught in the ban.

~~~
gruez
this contradicts GP's comment

>Bungie is preventing applications from injecting code into the game

if the game is preventing overlays from getting injected, but you're bypassing
that protection to inject your """legitimate""" overlays, it serves you right
to get banned.

~~~
gambiting
The thing is, why would I, as a customer, give a flying crap about how my
voip/webcam/framerate capture client is working internally? I boot the game
up, start discord to talk with friends and get banned, and that somehow
"serves me right"? Is that a joke? It's supposed to ban cheaters - and using
discord is absolutely definitely not cheating.

~~~
gruez
>... and get banned, and that somehow "serves me right"?

The "serves you right" part was preceded by "... but you're bypassing that
protection ..."

~~~
gambiting
Of course, but once again - why would I have to care if Destiny _thinks_ that
my voip client is cheating? If their detection is off - then it's their
problem. A regular customer will have no idea what "code injection" even
means, much less if something like discord even does it. It's an unreasonable
expectation from an actual customer that they would know this stuff. It's the
same as buying a blu-ray and not being able to play it because the software
thinks something in the setup is off - but as a paying customer, why should we
care/accommodate/accept that?

------
zitterbewegung
Let me get this straight.

Destiny has peer to peer server hosting at $60. Also it’s expansions are paid.

Warframe (a similar game which people have compared it to) is free to play
with no $60 up front charge and also has peer to peer server netcode. Nearly
all of in game content is locked behind you grinding for resources and waiting
for it to be built. Every expansion is also free.

Why am I paying for a game if it doesn’t have dedicated servers? And I’m
forming over money for the expansions ?

~~~
darklajid
I sunk > 1000 hours into Warframe. It's an excellent game in my opinion and
I'll return to it at some point (haven't played with the latest changes).

For people that like crazy movement in a shooter: Give Warframe a try!

~~~
euos
I’m Diablo3 and Destiny fan - this summer I was bored and decided to give
Warframe a try (we started it with my son together coop). I was appalled how
bad the game is. Ugly, with like 4 levels (they have a couple tilesets and
randomly generated levels - so the levels all look the same). I quit it after
we unlocked archwing - that part was way too buggy, on top of general
bugginess of the game.

Destiny2 gets a lot of hate, I don’t understand why. It is super-polished,
level design is stellar (I love Nessus with the broken down Exodus One,
mission on the Almighty was also really good).

~~~
darklajid
Regarding 'ugly': I guess that's just a matter of taste. It looks very good to
me.

There are quite a lot of tilesets. If you only played to the AW content, you
probably haven't seen most of them. Also, the latest big patch of the game
adds persistent hand-crafted areas to explore - basically 'open world' (but
not quite as big as that makes it sound). I haven't played that part myself
yet.

AW went through lots of changes and while I personally always liked it it is
quite a bit different for quite a while now (especially around input
handling/degrees of freedom etc). You might not recognize it again.

Destiny2 on the other hand looks nice, but is already boring to me after about
10 hours. It feels like WoW as a shooter, "Run there, collect things, come
back". Now - I see the irony: Warframe's similar. But it's free and provides
so much more in my opinion. 3 classes (with each 3 subclasses) against a LOT
of warframes with completely different play styles. All weapons so far feel
meh, Warframe gives me things like Glaives, Bows, Nun-chucks and whatnot on
top of all the guns you'd ever want. Heck, you can breed 'dogs' and 'cats' in
Warframe.

Destiny2 so far is 'run there, shoot and get the same gun with slightly better
stats' to me and I regret buying it.

YMMV

------
judge2020
There's a nice video on destiny 2's netcode that I feel goes more in-depth
compared to this article.
[https://www.youtube.com/watch?v=ks5lgcCFvvE](https://www.youtube.com/watch?v=ks5lgcCFvvE)

~~~
gruez
that's basically this article in video form.

------
ranger207
This sounds a lot like Elite: Dangerous's netcode model, which is pretty bad
for many of the same reasons.

~~~
qmachu
That's what I thought about too.. except that Elite Dangerous is everything
but a FPS and thus, does not require high tickrate / low latency. The game is
definitely playable.

~~~
dcow
Wait what? ED absolutely has similar latency requirements as an FPS. The only
difference is that you're in the cockpit of a spaceship dogfighting instead of
controlling a person on the ground.

~~~
zamalek
The simulation is highly predictable because it's dominated by inertia. FPS is
very twitchy, completely different beast.

I've played ED at 300ms and have had no problems. That's barely playable for
an FPS.

------
dcow
Destiny 2 has major issues with its "netcode" that other things like Skype and
BitTorrent and Discord and generally webrtc don't have. I've played maybe
40-50 hours and will often get booted from parties and matches. At least a new
leader is elected and it doesn't kill the whole instance. It also feels a
little pathetic that I can hop around pve with two friends but as soon as a
3rd logs on our only options are pvp or the single raid (which we can't even
help the newcommer grid towards since only 3 can do any of the leveling
together). Maybe there's a bit of poor product clouding things but I suspect
limitations are mostly due to poor technical planning. Not impressed with the
netcodes.

------
jokoon
I already thought about P2P netcode, and I think its great. It should scale
much better, game servers are much smaller and requires much less bandwidth,
and you don't risk of having a bad customer experience if your servers are
poorly managed or go down.

So it's better for games where you have a large amount of players and where
latency is less of an issue. I would not have implemented a p2p netcode in a
fps, as long as the game pace and speed is slow enough.

And it doesn't mean you can't accelerate the game by enabling game servers in
places where you want the game to be smooth, like sessions with more players.

------
everyone
Very good analysis of this here.

[https://www.youtube.com/watch?v=ks5lgcCFvvE](https://www.youtube.com/watch?v=ks5lgcCFvvE)

------
jackmott
A peer to peer online game is a game where people are going to cheat a lot.
You don't have to inject code to cheat, you can inject bits into the network
stream.

~~~
rootw0rm
true, but to be fair, injecting bits into an encrypted stream is usually most
easily done via code injection.

