Technical Question: Why is coop more demanding on bandwidth?

This has been answered in this thread, but just so that it’s easy to understand in clear bullet points – the reason it consumes more bandwidth in general:

[ul]
[li] in a game with a lot of state, that state must be propagated to all players. As pointed out earlier, with 32 players in multiplayer, that’s basically 32 pieces of state that get zipped around. With 4 players in a typical “single player” co-op level where there may be dozens and dozens of similar AI states, then you’re looking at a lot more bandwidth. Single player levels tend to be an order of magnitude more complex than a similar multiplayer map.
[/li][li] in a game with a lot of serious physics stuff, including animation driven stuff, then that is a LOT more information that has to be propagated than just simplistic bounding box/velocity/acceleration parameters. Because in a physics driven environment a specific animation pose matters – which means a lot more relevant information now has to be distributed, compounding the previous point.
[/li][li] optimizations based on assuming a single player location go straight out the door. Streaming in data isn’t going to help you much – N players may require up to N times more data to be resident on the server (and simulated, propagated, etc.)
[/li][/ul]

But the original post also specifically asked why it’s harder to implement (which has been answered, i.e. balance, breaking things, etc.). These are significant problems. If they weren’t, then everyone would do them. It’s not like developers don’t like coop games.

Good response. Follow-up question:

Multiplayer adverserial game:
–Player A moves towards Player B
–Player A shoots
–Player B gets shot in the leg
–Player B crumples to the floor

Multiplayer coop game:
–Player A moves towards AI #1
–Player A shoots
–AI #1 gets shot in the leg
–AI #1 crumples to the floor

Would these require the same amount of bandwidth? I understand the physics (bullet being fired, opponent being shot in the leg) must be “forced” to the client to insure everyone is in sync, but I’m not sure that I understand why or if these scenarios would be different.

I was just reading the NWN post-mortem on Gamasutra. They claim that they designed the engine so that up to 6 players could play co-op over a 56k connection - the 56k connection is the server. Okay, so granted, NWN doesn’t have physics or anything, but why can they do this and other games aren’t able to?

I side with Jon. I mean, there are plenty of games with co-op, and co-op games sell well. NWN, Diablo 2, NOLF2, etc. I don’t doubt that shoehorning co-op in is a challenge, but if a game is built from the ground up with co-op in mind, I can’t see from a layman’s perspective how a modern co-op game is untenable or results in the astronomical increase in resources being described here.

The lack of coop in games is due to two related things:

  1. As others have mentioned here, its hard. This has already been hashed out but the bottom line is that the worldstate of a typical single player environment is far far more detailed than the worldstate of even the most complex adversarial games (UT2k4, BFV, etc). This introduces the technical challenge of having to fit communication of that worldstate into existing bandwidth levels. Its not impossible, but its extraordinarily difficult.

  2. Is it really worth it? Hardcore gamers like us bitch about not having coop, but the bottom line decision developers and publishers have to make is how much money will it cost to implement coop vs. how much money will the feature get them in additional sales?

Publishers aren’t stupid. If coop would cost $50,000 dollars to implement but would result in an addition $100,000 in sales, you’d see coop left and right. But the fact is coop probably doesn’t generate additional sales, and costs a lot to implement - even if you implement it from day 1.

Now, a common example brought up to counter this point is Halo on console. Despite being coop, Halo on console only has to maintain one worldstate - in this situation coop is effectively free. Sure you have to make sure that your scripts and whatnot don’t break with a second player-controlled entity in the world, but since worldstate is contained on a single X-box its a relatively trivial problem.

JD

Greetings:
On the technical side, Dave Weinstein is actually a much better resource, considering that he actually does networking code and I’m just a design hack.

Co-op certainly can be done, and with large numbers of people. It’s important to plan for it early in the project, like anything else, because it has some wide-reaching implications for how you build things, and it can certainly be difficult to put in at the end of a project–difficult enough to be cost-prohibitive in terms of time if not money.

I think that what people actually mean when they say co-op can’t be done is “We didn’t plan to support it and we have no intention of changing the plan now”, “We’d have to pull resources out of other parts of the game to make that happen, and we don’t feel it’s worth it”, or “We don’t think it would work well with the gameplay dynamic we’re going for”. Usually, it comes down to some kind of a mix of those.

My understanding of why co-op didn’t make it in for Halo (and BE WARNED: I have no actual insider information on this) is that co-op on the Xbox relied on the fact that the simulation didn’t have to network any information. So, Gearbox has a contract that says they’ve got to get the game out in X number of months, and they’ve got Y number of dollars, and they’d have to build the whole networking system for that part of the game from scratch. Obviously, they would have loved to have this cool new feature to push their product, so the fact that they didn’t suggests that they couldn’t make it work with the time and money they had to work with.

From the design side, maybe I can illustrate some of the difficulties of translating a single player experience into co-op by using some examples.

Let’s say we’re talking FPS, and you’ve got maps that are not completely linear, and you’ve got an AI that’s fairly sophisticated–shares information among itself, tries to react tactically to situations, etc.

In single player, you can save CPU time dropping–either completely or partially–AI that is not in range of the player. If the player can’t see or otherwise interact with them, you can minimize or eliminate that data because it’s not really important.

In co-op, that range is not just relative to one player but to many. With four players, you may be trying to simulate four times as many AI as you would be in single player. You can’t rely on players to do things one way; if they can split up and run to four corners of the map, your game had better be prepared to handle that, because someone’s going to do it sometime, and if the game crashes, then you’re an illiterate moron who can’t do the simplest things right–even if they had to use cheat codes or other exploits to get that far apart.

In single player, you can script events to happen whenever the player is in an appropriate position–guys spawn around the corner, or the bridge blows up right after he crosses it, whatever.

In co-op, you can’t rely on the notion of a single player character, so that perfectly hidden spawn location may not be hidden to another player in another location, even though it’s triggered from the same spot. Players see enemies spawn in, and again you’re suddenly a moron.

Or, the bridge blows up right after the player crosses it, but his buddy hasn’t crossed it yet, and now he can’t get to the rest of the level. Next thing you know, that guy’s on the forums telling everybody how stupid you are.

Or, the bridge blows up, but the guy out in front has already triggered that massive rush spawn, so now you’ve got to track both the debris from the explosion and all the enemies, which you didn’t have to do in single player, because only one or the other could be going on at once. Now your network code sucks because you have these lag spots, even though the network code is doing just fine and it’s the simulation or the rendering or the sound system or something else entirely.

I could go on for days, but it’s really irrelevant to the guy at the store who’s looking at a box and going “wow, this would be so much better with co-op”. Ideas like that are easy, turning those ideas into designs that actually work is hard.

Games are all about tradeoffs. You’ve only got so much CPU, so much screen real estate, so much bandwidth, so many audio channels, etc. If you’re trying to build a AAA single player game, you’ve got to use every trick you can come up with to maximize the experience while respecting those limits. So, you end up doing things like simplifying level geometry so that you can fit more guys into an encounter, or making sure that your scripted VO doesn’t fire when you’re in the middle of a firefight, or that the AI doesn’t fire more than X number of bullets per second, or that only one guy can throw a grenade at a time, or that there aren’t three guys firing shotguns simultaneously. When you replace AI with players, they can break all of those rules.

Then, beyond that, you’ve got to deal with the realities of production, that you’ve only got so much manpower, so much time, and so much money to build the game with. You can push on any two of those, but the third one’s going to have to give.

I don’t mean to be an apologist for game developers at large; after all, there are better and worse designers, production processes, contracts, engines, and so on. Some people don’t do as much as they would be able to if they did things differently. That’s just a fact of life (cue cheesy theme song).

However, seemingly simple things are often more complex than they first appear. Sight recognition is something we all pretty much take for granted, but it’s still a major research problem that people are throwing hundreds of thousands of dollars a year at to try and get computers to do it. We can fake it in games, like we fake a lot of things, but when you change the ways the player can interact with the world, you run the risk of exposing that it’s all smoke and mirrors, which can break the entire gameplay experience.

I hope that long ramble provides at least some insight into the problem. If not, I apologize for wasting your time with it.

If The Entity ™ doesn’t object, I’ll just drop a link to an article I’ve written that may add some additional food for thought.

Michael.

This isn’t exactly a fair comparison because consumers don’t pay for games on a feature-by-feature basis. Sometimes I wish I could though.

  • Alan

Just don’t quit Planetside, man :)

In general, yes, if you’re just talking about the raw # of packets that need to be transferred. But again, there are infrastructure issues at play here unrelated to the actual bandwidth that must be broadcast (specifically, again, 100+ AI’s that have to be dealt with vs. 16 players).

I read this postmortem on Gamasutra, and this TIE Fighter game runs on like a Pentium/90. So how come DOOM 3 won’t?

I mean, there are plenty of games with co-op, and co-op games sell well. NWN, Diablo 2, NOLF2, etc.

Diablo 2 would have sold well without co-op. 3M+ sales I think, and what percentage of those play on Battle.net? Right.

NOLF2 sold well? NOLF2 is one of my favorite games ever, but there is no way it would be described as “selling well”.

but if a game is built from the ground up with co-op in mind, I can’t see from a layman’s perspective how a modern co-op game is untenable or results in the astronomical increase in resources being described here.

Adding an extra level, another animation, a new pixel shader effect, more sounds, some voice overs, a flashier interface, etc. does not cost that much individually. Co-op is similar, but entwines itself through all the game code and design, and when looking to ship on time and on budget with a minimum of errors, pervasive systems that don’t look like they’re adding much value will be the first ones to go.

I read this postmortem on Gamasutra, and this TIE Fighter game runs on like a Pentium/90. So how come DOOM 3 won’t?

You know what? Cram it. I was asking an actual question and I don’t think any of us are so dim as to accept de facto a flip retort as a response, especially as one as irrelevant and patronizing as that. The amount of technological increases that have happened since Tie Fighter was released over ten years ago is astronomical. The changes since four years ago? Not so much. But of course it occurred to me as I was going to bed last night and while you were wondering how to best be a total cunt what probably made it possible for NWN to run as a server for 6 people on a 56k connection: it uses tiles for the world with pathfinding and the like mapped out by tile. Of course, other games have got over the problem just fine since then, because technology’s gotten better and bandwidth pipes have increased.

Any time there is a discussion on co-op on this board, you come in raving about how it can’t/won’t/isn’t practical to be done. I remember the last time we talked about this you asserted the exact same thing about Diablo 2 - “it would have sold well without co-op”. Fine, I believe that, but I also believe that co-op has added hundreds of thousands of copies to the amount sold. MMOGs and NWN are essentially co-op games. Sven Co-Op is one of the top five mods in Half-Life. Games like Raven Six, etc. are co-op games. There is a market for co-op games that is not limited to the hardcore (or, if it is, there are enough hardcore to make it profitable).

NOLF2’s co-op mode was limited to like four levels. They didn’t try to cram the entire game into co-op mode: they just designed a small set of missions to play with your friends. And you know what? For me and my co-op pals, that was fine. Hey, we’d have liked more, but we had a hell of a lot more goodwill to Monolith for making the effort and we bought the game with co-op in mind. No co-op player is asking for an entire modern single-player FPS to be shoved into co-op mode. We’re asking for a bone.

I mean isn’t the real issue here that YOU as a developer don’t want to do co-op? Because I can’t really make any sense of an argument that doesn’t recognize co-op in Diablo 2’s appeal, longevity and massive popularity.

No, actually, the real reasons that NWN is able to run well over a relatively modest connection are probably:

[ol]
[li]their update rate is probably slower than FPS games, requiring less data to be sent per second.
[/li][li]you aren’t directly moving your characters – you’re simply giving them orders (which are then executed server-side). What’s more, the frequency of commands is very low compared to your average FPS.
[/li][li]the actual state that needs to be sent to the client is pretty small (since you never see the character sheet of any other creature except things like familiars) – all of the gameplay logic is handled server-side, and only things that relate to the game’s visual appearance are sent to clients.
[/li][li]it doesn’t matter as much if you get out of sync, since your character’s actions are what determines what happens. For example, I decide to attack an orc, and then get hit with some lag. I may be out of sync for a few seconds, but it doesn’t matter as much, because my character on the server is already/still attacking the orc.
[/li][li]players are often in different areas of the game, and their state doesn’t need to be updated for anyone who’s not in the same area.
[/li][/ol]

Another relevant thread.

Mr. Weinstein is one of the more senior network engineers in the industry, and is in fact responsible for the network stuff in the R6 series…is that enough street cred for you to believe that cooperative gameplay can be a tough thing to do?

MMOGs are completely different beasts, BTW. It’s not useful to compare them to single- or small-scale multiplayer games in this regard because they have much less rigid scripting/gameplay.

And yet NOLF2 apparently sank like a stone at the cash register. So what’s the take-away from that?

Ah yes, the “developers are lazy” argument. Or is it the “developers are stupid” argument?

FWIW, I don’t think I’ve ever met a game developer who dislikes cooperative games. Actually, that seems such an alien concept to me that I’d be surprised if such a person existed.

I’ve added in my thoughts in bold

Well put. Everybody who wonders why cooperative multiplayer game design is so rare/difficult should carefully read and ponder your post…

Kool’s post is a great example of why I roll my eyes whenever this topic is breached. Long quotes of what I said with such irrelevant rejoinders that one wonders if he is only reading what he wants to read. What’s the point of even responding if he can’t even read the initial post right?

No one’s doubting that co-op is “hard”. In the immortal words of Erik from OMM - “no duh. That’s why we pay you to do it”. Honestly, I will buy almost any game that supports co-op. I know lots of people will do the same. What we are arguing is that there is enough of a market to put a stripped down co-op mode in your game and make it worthwhile.

I remember designing a co-op only game with a friend when I was a kid. One player controlled a robot bird and the other controlled a robot rat. The bird could carry the rat around and the rat could go through small holes to get keys and whatnot. They could get a powerup that made them join up like Voltron. They had to move in synchronisation, but they were more powerful that way. All this stuff is pretty old-hat now, but back when I was, like, eleven I was justifiably proud of the idea. I bet I still have some pictures lying around somewhere.

Why is bandwidth higher?

Client/Server architectures have bandwidth consumption increase roughly geometrically with each client.

Assume that X is the amount of bandwidth required to describe a single actor (human or AI). We’ll wave our hands and roll the cost of updates to the game world that the actor generates into X.

A single client requires X bandwidth (the server tells that client about one other player).

Two clients 4X bandwidth (each client has to be told about the other client, and the server).

This gets worse if the server issues regular authoritative updates for the clients character as well, but we’ll leave that case out.

So our bandwidth consumption is on the rough order of: (Number of actors -1) * (Number of Clients) * X.

A 16 player adversarial game therefore generates 225X bandwidth.
A 16 player co-op game with only 10 AI active at a time (this means the players outnumber the AI almost 2 to 1) would generate 375X bandwidth.

Now, AI are less expensive than adding another client (because you don’t need to send network traffic to the AI, they are sitting on the host) for the overall server bandwidth. However, they are disproportionately expensive on client downstream bandwidth, since each client is getting more data.

Additionally, multiple co-op players also present one of two opposite problems, in terms of network and simulation tricks.

In one case, the players cluster together. This means that tricks like affinity filtering (only sending information to those people close to it) don’t help, because we are in an affinity worst case (everyone in one room, blowing things up).

Ironically, the opposite case can be just as bad. Very often, in order to provide the level of detail that players want, the game is only really “alive” in a bubble around the player. If it can’t affect you, it isn’t doing anything. Every cycle spent on something going on across the map is a cycle not spent on doing something the player will actually see reflected in game play. If there are multiple free-moving players, you have to assume that they can also range all over the map, and that means that more (or possibly all) of the map must be live. And if more of the map is live, we have more potential network traffic.

This incidentally, is just addressing issues of bandwidth. Issues of game design and balance, and overall cost, are another matter.

Some short answers on those?

o If the game was originally designed for a single player with no AI assistance, co-op requires rebalancing and rescripting every level (as a general rule). If the game originally had a single player with AI assistance (i.e. the rest of your squad in Rainbow Six) it is effectively co-op in single player, and the design cost is lower (but still exists).

o Nothing is free. Even if the magic code elves come down and spin lint into gold masters, you still have to run everything through QA. Multiplayer QA is its own special house of joy.

o The market doesn’t reward incomplete features. The general rule is that you either implement a feature well and competitively, or you don’t implement it at all. So features like “co-op, but with no rebalancing, and only a couple of levels” are a waste of time that could be better spent enhancing or completing another feature.

–Dave

But no-one’s asking for 16 player co-op, are they? 2-4 players would suit pretty much every co-op fan. Is the bandwidth usage so amazingly high in that situation?

Please read the first post in the thread, which asked why Co-Op in SWAT would be limited to 5 players, when 16 could play in adversarial.

I read it, but the thread has since morphed into the “why is there generally no co-op at all” question :)

Which is generally related to other game development costs (see Michael Fitch’s response early in the thread).