The science of Destiny 2's 'uniquely complicated' netcode
pcgamer.com
pcgamer.com
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.
They claim to be protecting sensitive people from mean people, but to do so they're essentially nuking the ability for the vast majority of people who aren't one of those two groups to communicate and organize for play. It's even set to ignore whispers from people you don't have on your friends list / clan by default, so almost no one knows to change that and cannot be contacted in any way. They should enable zone/clan chat by default with the option to turn it off.
I cannot think of any other similar game on PC that is so constraining to player communication. The Division has zone chat. Warframe does too. The brand new Call of Duty WWII, which isn't even the same type of "shared world shooter" has more social interaction available in their social space ("headquarters").
Also p2p pvp is a huge downside and my two real life friends that play can't even play pvp because they get disconnected instantly every time.
Connecting my router (or maybe PS4 in your case) with pppoe solved my problem (cabbage error). Forget about the Bungie support; AFAIK they still keep telling people to open certain TCP and UDP ports.
I don't know about that. I was a solo player and found my way into a clan, where I can now group with like-minded people.
I also used the Guided Games system to do my first Nightfall last week, and it went quite well.
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.
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 . . . "
Especially when it comes to cars and driving and you explode from hitting some grass!
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.
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.
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.
I heard they are prioritising anti-cheat measures now, so let's hope it's just a phase!
The other downside is you spend a very long amount of time looting and exploring only to have it all come down to about 2-3 seconds of gunplay. In those 2-3 seconds you experience perhaps the worst gun combat ever designed. It's very inaccurate, buggy, and frustrating.
The game desperately needs polish. In fact the genre deserves the AAA experience because it is down right exhilarating.
1: DOS attacks are a very real way that players cheat at these games, to the extent that many highly competitive shooters like CSGO go to great lengths to avoid leaking anyone's IP to anyone else. Everything, including voice chat on the same team, is bounced off of dedicated servers. Overwatch still sees some of this problem as voice chat on PS4 is peer2peer (controlled by Sony, so blizzard can't really fix it), so with some social engineering and fat fingering players can dos the enemy team. So Destiny 2 still doing p2p for crucible is pretty dumb, and if you're a PC player it's a complete crapshoot if you hit some annoying brat that's going to dos you in return.
Subtle but important distinction, don’t want to scare people away from talking in Overwatch but players should avoid console parties with players they do not trust.
(Source: I’m a lead programmer on Overwatch at Blizzard)
This is a stupid argument if they really have it; the game still requires dedicated servers on the one hand, and as many people in this thread already commented, it doesn't make for a good gaming experience. If they did dedicated servers and made sure the experience is polished, more people would play and keep playing, and they'd be able to make more money from in-game purchases and the like.
Just one quick correction. Destiny 1 limited instances to 3 parties, but Destiny 2 changed that up a bit. Patrol areas are now 5 parties (up to 15 players) and social spaces are 9 parties (up to 24 players).
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?
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?
As for tracking character state and region instancing there tons of MMOs that doing it for years too.
I'm open to defense of the concept, or prototypes if someone can suggest something reasonable.
There are of course MMORPGs that break these rules and have more action oriented gameplay or lots of physics and player interaction, but they always make tradeoffs (heavy instancing to limit player interaction is common).
By 1000 players per continent, I mean they all share a physical space, can walk to eachother etc. By 250 players per battle I mean 250 player fighting inside a structure. All of those players are interacting (gunshots, grenades, vision). At 250 player you start noticing some loading issues that seems to start somewhere around 100 players, but it certainly remains playable.
IE the souls series, and its invader system.
[edit] just read the article properly, it looks like they really wanted it for is seamless transition between "p2p bubbles", so you probably enter singleplayer when waiting for the connection, and you've got a wifi-like connectivity problem (but due to virtual land movement).
So its not at all the issue of always-on multiplayer in general mmos; its more like guild wars "instances", and making the grouping automatic and no-felt-loading.
So, it seems it's proven possible without this hybrid p2p model, which has a sharp performance downside for shooter pvp.
I don't understand the decision. Is there something more nuanced experience-wise that their system achieves? Or could it be something else, like an attempt to save on infrastructure costs?
In Destiny, some of the instances are hosted directly on the client. Depending where you are and what you are doing.
Dark Souls does precisely this in a fantastic way in two major mechanisms. The first is the shared player "graffiti", wherein players can write messages that are then propagated into others' games. The second is the shared "death ghosts', which play back a player's last moments before death in others' games as a ghost you can't interact with. These make the game feel like you're playing with others in a large world without having to actually put you in the same instance.
Other subtle cross-over features exist too. In Dark Souls 1 you are able to hear other players ring a bell after defeating an early boss. A rare mob can also spawn in your world when a player dies with many souls (currency), or loses a powerful item.
It definitely does much to make the world feel less lonely.
Except there is - have you played recent games like Watch_Dogs 1 or 2? Your single player gaming is interrupted/sprinkled in with online events. And it works really nicely sometimes. You'll go to start a single player mission, but someone is hacking you, so you have to stop them first.
Of course you can turn it off in the settings..
I haven't played it myself, but "Journey" seemingly had multiplayer without the players even knowing it was. So while it IS multiplayer, the line definitely can be blurred.
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.
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.
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 :/
I'm just going to play Borderlands 1/2 again, even single player they're way more fun than Destiny 2 is.
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?
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).
The system running on the client or p2p or later verified part (physics/local client) might be better here as it can correct without too much degradation via smart interpolation and extrapolation.
Well designed systems also are compact and could run even on older tech making slowing/spamming (sometimes causing verification or error overloading to slow everything down as well) techniques less impactful.
In terms of large player bases, game design and level design can also help this, making sure everything is in smaller areas. Large scale games like Planetside 1/2 probably did the best at this early on, even big maps are designed in a way that you interact with less people depending on where you are. PvP cheating is still a big issue but there are lots of protections including social i.e. disconnect counts high, people don't play you.
Maybe they'll throw a blockchain in there to help with the obvious hacking issues that will inevitably happen.
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)
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.
Either they actually do basically rootkit the machine and break functionality, which is a huge "fuck you" to everyone and may actually require people manually enter exceptions in AV software, or they settle on the non-functional but "scary sounding" protections every other game uses.
This is a fight that has been long since over, not that people don't still try. I spent a lot of time working around anti-cheats in various games over a decade ago. PB was a fun one, C-D thought it was clever, there were jokes like CMN's "anti-cheat", and other games that had things like nProtect GG. Some went so far as to actually use packers, hilariously some used UPX while others used things like Themida. There was one of these things that actually injected a rootkit into every running process (and thus required administrative permission) to disallow you from killing the game's process or even accessing the memory of it. Of course this was hilarious when the game would hang as you expect with buggy software, and the only way to actually kill the process was to restart or do it from ring0. I thought that was a pretty fucked up thing. It was trivial to bypass though, and I forget the specifics, but you could actually start the game or anti-cheat with the main thread frozen and inject whatever code you wanted that then had privileged access before resuming it. I thought when I did that "I'm 15 years old and in 10 minutes I've bypassed what some team probably took months to build." I did get a bit frustrated with my lack of knowledge when much more capable packers were used, but some people did nothing but break these things (and would break new versions in minutes). It was pretty fun to debug, work around all the protections, find the real code, then reconstruct the executable so it would run without the protections, but handling VMs needed programmatic debugging which was a bit more than I was capable of dealing with back then.
As expected we eventually were gifted ring0 anti-cheats (though most remain ring3), so cheats went there too, and when I stopped caring as much about that scene, some really clever hooking methods were being devised as well as hypervisor based cheats. There's no winning this fight for the anti-cheats, so the real solution is to detect whatever behavior you don't want on the server, where they have no access. The client-side anti-cheat is more of a deterrent, and it turns out nobody really tries to make cheats very hard to detect in this manner, most players can visibly tell almost instantly if someone is cheating just by observing them briefly. Not to say that ring0 cheats were hard to detect, I made a proof of concept in about 20 minutes that detected all but 1 of the existing public ring0 cheats for CS at the time -- they all modified a specific struct in memory, and that modification was present even in ring3 cheats, so I generally wondered what those anti-cheat developers were doing most of the time.
>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.
The "serves you right" part was preceded by "... but you're bypassing that protection ..."
There are still types of cheats that remain possible, like aimbots. Nothing can be done about that.
It's peer2peer, there is no server. There's a server for exp, achievements, and loot, but for actual combat and player positions it's all p2p. Your client know the position of everyone else in the PVP arena. Arguably worse is it also knows the IP of everyone else in the PVP arena, so you don't even need to figure out how to crack the game just open wireshark and fire up your DOS attack of choice.
Unfortunately, in game development community, the term 'peer 2 peer' doesn't in practice have precise meaning, and is applied even where there is some dedicated "host", which may be simply not as authoritative as with traditional client-server model. I have long ago gave up correcting people when they used these words 'incorrectly'.
In reverse, a dedicated server doesn’t mean the clients have zero or limited knowledge. A naive dedicated server can simply send all the positions of every player every frame to each of the clients.
Another point is that in a dedicated server environmenr the server has a reliable connection, with semi-predictable performance characteristics, whereas if you’re using a PvP model, you’re at the mercy of the the host clients connection, and their machine performance. On a console the performance isn’t as big a deal but on a PC, the host could be mining bitcoin at the same time, or just running on a potato.
That's still a client/server model rather than a peer to peer model. A major problem with that model regardless of platform is that it's very disruptive when a player drops, as you have a 1/8 chance of losing your host. This is also not D2's model.
> In reverse, a dedicated server doesn’t mean the clients have zero or limited knowledge. A naive dedicated server can simply send all the positions of every player every frame to each of the clients.
Of course not, but it's possible for a dedicated server to restrict the information it sends. It's not really possible for peer to peer to do the same.
I don't think you parsed the conversation correctly.
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 ?
Becuse none of the people that work on the game want to work for free.
Uhh, because paying several hundred people for the 2-3 years to make a AAA game costs money.
Warframe is free-to-play and survives off microtransactions. Cool, that's one business model. Destiny is a shrinkwrapped pay-up-front game with microtransactions on the side. Another business model.
The question of "why no dedicated servers" is a good one but it's separate from the actual business model.
i took "why am i paying" to be a question about the value proposition. in that case the "business model" isn't terribly relevant. it's open question on why one would pay more for what seems to be less value (subjectively, of course).
For people that like crazy movement in a shooter: Give Warframe a try!
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).
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
Warframe probably has an LTV much higher than 60$ over a paying active user.
I'm working on multiplayer architecture for a paid steam game right now - and it's pretty evident, that unlike free2play titles that can count on revenue that is proportional to active players, we cannot afford dedicated servers, because our players will only pay once (may be several times in the future for DLCs, but I wouldn't count on it) and then continue playing as long as they please.
Self confessed D1 junkie, currently one of the legion of "meh" induced D2 players that gave it up quickly. Put a bit of time into Warframe too.
From a business point of view, Bungie/Activision is absolutely on another level though, with D2.
Meanwhile, in FPS-land, a good bit of the player base will complain bitterly if they can't run community servers. You can't win, apparently!
Do you think the game code and artwork is donated gratis by developers and artists? Fuck no.
More like: so $ATVI can grow 550% in 5 years.
Except for a few AAA dinosaurs surviving with cashflows and IPs from previous generations, F2P games typically have higher production values than paid ones.
The good news is that these games can be avoided, and should be avoided at all costs.
But with both Destiny 1 and 2, the problem was not that it was beta quality and riddled with bugs. It was deliberate design decisions that missed the mark for some players. But that's not different than the vast majority of games since the dawn of gaming.
Yes, if you bought all of the DLC on launch day over 3 years, you would've spent well over $100. Even that is not outrageous considering that console games have remained at $60 since the early aughts even though AAA game development is a A LOT more costly now. If people don't like the base game, they don't buy the DLC. Pretty simple.
Where things get into sketchy territory is when games start to intentionally gimp the core gameplay experience to goad players into microtransactions. Destiny 2 has started to dip into that cesspool with some of the changes they made from D1.
I've played ED at 300ms and have had no problems. That's barely playable for an FPS.
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.