Hacker News new | past | comments | ask | show | jobs | submit login
The science of Destiny 2's 'uniquely complicated' netcode (pcgamer.com)
131 points by danso on Nov 13, 2017 | hide | past | web | favorite | 119 comments

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.

Not having public zone chat, and even worse not having clan chat in this ostensibly social game is absolute madness. Yes, I'm in Discord voice/text chatting with people I know but what am I supposed to do to talk to the random pubby next to me? It's intensely frustrating when I'm standing next to someone in a public area and want to show them a chest or something, and the only way I can do it is to shoot them until they look at me, then shoot towards the thing I want to show. Communicating how to trigger heroic events is literally impossible.

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").

I can't stand Destiny 2 because its a game built around having a social group (most the content after a certain point requires a group of 3-6), yet provides zero tools to meet people and even makes design choices that inhibit any kind of communication with people you don't know.

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.

> 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.

> yet provides zero tools to meet people

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 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.

Do a YouTube search for Battle(non)sense, who does netcode analysis videos of many online games.

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.

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 . . . "


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

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.

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.

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.

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.

It's funny that Fortnite is being called a PUBG clone when I remember hearing about it years before even DayZ Battle Royale was released

PUBG is super popular (deservedly) but I don't think their netcode would stand much scrutiny. At the minute it is plagued with client side hacks. Check out this guy, speedhack, wallhack and aimhack all at once!


I heard they are prioritising anti-cheat measures now, so let's hope it's just a phase!

The PUBG game design is very compelling. I think it’s going to become a new classic in the years to come, much like Minecraft style builders or DotA style games have. I wouldn’t be surprised to see a few AAA games built on that model.

And yet it's not the first, the groundwork was done by games like DayZ (the mod, then the standalone game).

I don't even think it's that great (the specific PUBG implementation). I love the tension of running around, exploring, and being careful with your team. I hate how much focus and RNG revolves around looting. Maybe an initial gear set while looting fancier upgrades.

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.

I don't think that's right. PlayerUnknown created the Battle Royale mod for Arma 2, and it took off. I'm sure it was helped by DayZ's popularity, but the games are not really comparable.

As a gamer - I bought it used for $40 and find it a great entertainment value. I don't even have xbox live gold, so I don't play Crucible matches or other online PVP stuff. It's provided dozens of hours of entertainment for two people, both of whom have gone through the whole campaign. It's easy to spend $40 going out to see a movie in theatre. We have two characters in the power level 230-240 range and are nowhere near done exhausting the additional post-campaign quests and adventure missions.

Wait until you get to the 300 range and the endgame is really revealed. It'll disappoint big time. Weak.

Maybe if you are looking for it to take over your life or something. My group of friends just did the Nightfall strike and the Leviathan raid (both of which have features that change up each week) and it was one of the most fun experiences we have had online in quite a while.

For historical flavor, Destiny had a widely reviled endgame early on too. On release, Vault of Glass did not exist, nor a lot or the daily and weekly activities. Not saying that excuses a similar dearth of content in d2 but it is worth knowing.

Vault of Glass released merely weeks after launch, just like how Destiny 2's raid (Leviathan) did too. A lot of Destiny 2's complaints about end-game aren't about the quantity of content, it's the lack of incentive to play it; loot from the raid is underwhelming, loot in general doesn't offer anything to chase with fixed rolls and everything feeling much more homogenous (less perks on items and perks are less impactful), big design changes to PvP that massively affect the way games play out.

It's made tougher because it's p2p, which is a massive negative for players[1]. But it saves them hosting costs.

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.

To be clear for Overwatch only console party voice chat is peer to peer, not the in game Overwatch voice chat. This means you have to join a PSN party to reveal your IP. This is also true for Xbox One.

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)

Wow no need to brag

> But it saves them hosting costs.

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.

> The game limits multiplayer interaction big time. It's no more than 3 parties allowed in an instance at any one time

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).

Social spaces work differently to patrol areas. 1 player won't occupy a full party worth of spots in a social space, it's possible you try to join your friend at a social space and get an error that the area is full.

> 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?

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?

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.

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.

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

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

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.

That's why I also mentioned the peer to peer part. They didn't have to do it peer to peer, but they did, so taking that at face value you already have a different set of constraints than most MMO's.

Isn't that a problem Lord of the Rings Online (and I suspect also other games) have "solved" ~10 years ago?

MMORPGs like Lord of the Rings Online and World of Warcraft as far more latency tolerant, because of cooldown based combat systems that are based more on ability usage and some light (distance\occlusion) positioning. Usually they are not as authoritative as shooters and don't have as many object interactions. So combat abilities and attacks, chat, economic and quest transactions are all run on the server with some minimal prediction, but movement and collision are all client side with minimal checks for cheating (speed\distance and maybe unreachable areas) on the server, instead of full physics and collision. Most MMOs are more like a traditional CRUD web application, with important operations backed by a relational database, while shooters are more like voice or video calls, a stream of packets with out of date state is dropped and ignored.

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).

Planetside 2 (and maybe the original planetside) is a 1000 player per continent, ~250 player per `battle' shooter. It does it pretty well.

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.

Speaking of latency and Lord of The Rings Online, I loved their support for players to play as a band with different instruments, with player supplied scores. By collecting the scores from everyone first the music is merged server-side and is played in sync.

They mean that the game avoids letting the player realize the distinction exists; they go in and out of multiplayer "mode", presumably based on areas or turns or something, and are none the wiser. All multiplayer/singleplayer scaffolding occurs occur solely in the background

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.

WoW started instancing content out in the world several expansions back. As far as I remember and know, people can seamlessly phase in and out of each other's instances. In fact, I think the made it work across realm servers.

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?

WOW is instanced, but the instances are all hosted by Blizzard. Instances are basically a replication of the world state, and managed automatically depending on load. If you join a group, you will automatically switch to the instance those players are in.

In Destiny, some of the instances are hosted directly on the client. Depending where you are and what you are doing.

Seamless singleplayer / multiplayer is an orthagonal problem to P2P network architectures, though. You can have one without the other.

> 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.

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.

Not to mention phantoms, where you can see other players's ghostly images occasionally moving around the world.

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.

> It's either online multiplayer or it isn't, there's not really an in-between

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 think a game that successfully blurred the line was Demons Souls and its descendants. You would see the ghostly outlines of players doing the same level as you, you could read and leave messages for other players, and you could summon or invade another persons game. Still despite all this, it had very much the feel of a singleplayer game (and could be played as such).

> How can you blur the line? It's either online multiplayer or it isn't.

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.

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.

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.

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).

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 :/

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.

> 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?

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).

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.

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.

The authority on these is validation against a server for verification when it comes to currency/purchasing and important events like leveling. You might be able to fake one and get one through (though difficult without understanding the system due to crypto/signatures/timestamps/one-time use) but it will be reversed in most good online systems after verification or not allowed due to that. The server/data is still the authority on the simulation and progress of all actors.

Right, but you can do a lot just by adding variable delays. For example, delaying packets sent to a certain client while allowing others to go at full speed.

Definitely, a networking system today should expect that. Cheat detections can look for speed changes, origin changes, patterns of previous matches and more for helping this.

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.

I don't know how Destiny does it, but in the game I worked on all messages are fully encrypted, so you can't just forge one unless you know the key, as far as I can tell no one has figured it out yet. Even if someone did, the server is authoritative for most things like loot and inventory.

The loot server is hosted, not player authoritative.

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.

> 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)

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.

I was under the impression that it is not publicly known exactly why false positive bans were handed out or how many there were (outside of Bungie's initial communication of ~400 total). Do you have real information to support the claim you're making that "anyone using any kind of overlay" was banned?

I do not, this is based on third hand information.

Antiviruses do this, so do lots of other bits of software like those you mentioned.

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.

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.

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.

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

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

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?

Considering I heard most overlays just worked, it seems the prevention might just have been 'if we detect it we ban'.

Depends on the mechanism. If its a d3d hook (like fraps), then it simply won't work. Topmost windows might work though.

The difference is with an authoritative servers many types of cheats become impossible. If the server doesn't broadcast the position of a player when it is impossible to see them, then the client can't hack to get their position. The player cannot cause themselves to move faster than is possible, or grant themselves health or items.

There are still types of cheats that remain possible, like aimbots. Nothing can be done about that.

> If the server doesn't broadcast the position of a player when it is impossible to see them, then the client can't hack to get their position.

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.

> It's peer2peer, there is no server.

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'.

Peer to peer doesn’t mean every player has full knowledge. A perfectly valid implementation is to mark one player as the “host”, meaning they run a fully authoritative sim, and the other players get treated as clients, and treat it as they would a server. Only the host needs full knowledge in that case.

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.

> A perfectly valid implementation is to mark one player as the “host”, meaning they run a fully authoritative sim, and the other players get treated as clients, and treat it as they would a server. Only the host needs full knowledge in that case.

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.

>It's peer2peer, there is no server.

I don't think you parsed the conversation correctly.

But with their offline mode they don't have authoritative Servers here so some cheats are inherently possible. Only defense is do be as obscure as possible and hide the important bits in megabytes of fog, aka. a race against the popularity of the game.

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 ?

> 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.

Plenty of paid games have dedicated servers. All of the Battlefield titles for example.

> Why am I paying for a game if it doesn’t have dedicated servers?

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.

> Uhh, because paying several hundred people for the 2-3 years to make a AAA game costs money

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).

You aren't paying them $60 for their netcode and servers, you are paying for the entire game. Games aren't interchangeable. The people paying for Destiny 2 are paying for it because it provides them a different experience then Warframe, and they want that specific experience. Its like, why should I pay for steak dinner when I can have pasta dinner? Because they are difference experiences, and thus their value to any given person will be different.

generally, asking "why am i paying for X if it doesn't..." is effectively saying "the value proposition seems poor to me". it's colloquial and generally rhetorical (or semi-rhetorical).

I will remember to use your phrasing next time. It seemed to cause confusion in half of the responses.

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!

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).

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.


To be honest I think that’s the demographic that they shoot for. Sinking a bunch of time and then taking a long break and going back to it .

> 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.

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.

> Why am I paying for a game if it doesn’t have dedicated servers?

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!

The kind of community servers people want are usually self-hosted dedicated servers, not peer-to-peer.

>Why am I paying for a game if it doesn’t have dedicated servers?

Do you think the game code and artwork is donated gratis by developers and artists? Fuck no.

>Why am I paying for a game if it doesn’t have dedicated servers?

More like: so $ATVI can grow 550% in 5 years.

Warframe is just really good (except the latest expansion was rushed and had many bugs), it really has no business being F2P with how good it is.

> it really has no business being F2P with how good it is

Except for a few AAA dinosaurs surviving with cashflows and IPs from previous generations, F2P games typically have higher production values than paid ones.

Games like Destiny, For Honor, that kind of game, are just pure money grabs. You get early beta quality releases with the full price game ending up being north of $160 even before whichever flavor of micro transactions are in that day. Currently, loot boxes are the way to fleece teenagers.

The good news is that these games can be avoided, and should be avoided at all costs.

That doesn't really make any sense. Destiny is a AAA console game franchise. Some people love it, some people like it, some people hated it.

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.

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

that's basically this article in video form.

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

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.

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.

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.

you shoot at spaceships man

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.

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.

Very good analysis of this here.


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.

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

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact