Monday, June 14, 2010

Another System for Raid Ids

I just had an epiphany: Blizzard is building a Raid Finder for a mid-Cataclysm patch.

They just announced that raid IDs will be more forgiving: if your raid ID has killed the same set of bosses as another raid ID, you can switch over to the other raid ID.

Now add a Raid Finder that matches you with another group of players that all have a compatible raid ID. You join a raid, do your best, kill a few bosses, and then tomorrow, you log on again and join a different group that has the same set of bosses downed. It doesn't matter whether it's the same group as yesterday, as long as they've made the same amount of progress.

And there you have it: no more distinction between transient and extended content. Why should there be? Raiding is not rocket science, and the biggest barrier is that it's hard to find a regular group of people who are all online at the same time as you. Right now, nobody wants to PUG, because you'll just get locked to a dungeon with one boss down, and never see that group again. But with this feature, you can get a new group every day, and you can raid whenever you have the time for it. Brilliant!

(And Blizzard, if you're not working on this feature, you should be. It will actually make raiding feasible for all the players who are interested in and capable of raiding, but can't carve out regular weekly times for a guild raid.)

A system that implemented this isn't that hard to conceptualize (at least theoretically, real code always makes easy ideas hard). Right now, raid instances have an existence in the world. My character is tied to this specific raid instance, which exists even when my character is not online. And this has consequences. In the worst case, the raid id can be "stolen", and the remainder of the raid completed by another group, leaving most of the people in first group out in the cold.

But suppose a player's raid id was simple bit field, with 1 representing a live boss, and 0 representing a dead boss. So a player's TotC1 id could be 00011, saying that they've killed the first three bosses, but Twin Valks and Anub are still alive.

For any given group of players, it becomes trivial to find the common set of bosses still alive. Simply bitwise-AND the raid ids together, and you can use the resulting mask to populate an instance with the bosses that no one has killed.

For example, Player 1 kills Beasts and Faction Champs (raid id 01011), and player 2 has killed Jaraxxus, Faction Champs, and Twin Valks (raid id 10001). 01011 ∧ 10001 = 00001, giving you an instance with only Anub'arak active. You can just keep bit-wise ANDing with all the players in the raid.

You can put in checks if you don't want early bosses to be alive and later bosses dead. Or you might not bother. After all, does it really matter if someone with Lich King dead gets to knock off Marrowgar the day after?

The key here is that there is no logical reason the specific raid instance needs to persist as its own entity. It can be generated at raid time so long as you know the set of bosses to populate the instance with. And since the bit fields are connected to the experiences of the individual players that week, you can easily generate the correct set of bosses for any given group of people.

You can also use the mask to determine whether to deny a new addition to the raid entry into the instance. If the current raid mask AND the new player's raid id is not equal to the mask, she cannot enter.

Even a Raid Finder wouldn't be that complicated to implement. The number of 1's in the result mask would make a strong foundation for the fitness function of the grouping algorithm. You want to group people such that they get an instance with as many bosses active as possible.

The hardest part, in my mind, would be making sure that an individual's raid id gets properly updated in each fight. You'd have to account for people intentionally disconnecting and joining at points in the fight in order to evade being tagged with the kill.

But as Jeremy points out, such a system would change raiding from being de jure extended content into transient content. It might still be de facto extended content, simply because a consistent group would be the best path to success. But it would put a lot less blocks in the way of individuals wanting to raid in a transient fashion, while still preserving the rule that "you can kill a boss a maximum of once per week".

1. I'm using TotC because I don't want to write out 12 digit bit fields.

11 comments:

I think the only problem with how you've laid out this theoretical system is that ToGC is linear in terms of bosses killed: i.e. no one will have downed Jaraxxus wihtout having downed Beasts. It seems likely that Cataclysm will continue having linear (in terms of bosses) raids for the most part, with the trade-off coming in the form of multiple raids per tier.

With this, the layout of a potential Raid Finder takes a different shape, where the system tries to match up raids based on "last boss killed in that instance."

[Of course, there are social ramifications of setting a Raid Finder up that are worth considering, but frankly those ramifications aren't the point of the post.)

I would suggest a further enhancement... checking an option that only invites people who have, at some point in the past, defeated the bosses that are already gone in the raid. Otherwise you can run the risk of continuing an ICC run with 4 bosses down and recruiting a random person who doesn't know what they're doing.

You could extend it further and only invite people who have killed the bosses you're planning to kill, but I always hate pug groups who do things like that. :P

@Hairymuppet: I don't think that will work as intended. How will you get a group on your alt then? Checking all characters across all realms on the account? Not really sensible if you ask me. Besides, you need some room to wiggle when new raids are released and what not. And you just *know* that people will *always* select that option anyway.

On topic, I think it's not a bad idea, but bitwise AND isn't the right solution. This would result in people progressing solely based on the person with the most downed bosses. I'd rather do it the other way around, so that you can't progress further unless *all* people in the raid have killed the same bosses. Basically, bitwise OR (iirc).

I just had an epiphany: Blizzard is building a Raid Finder for a mid-Cataclysm patch.

They just announced that raid IDs will be more forgiving: if your raid ID has killed the same set of bosses as another raid ID, you can switch over to the other raid ID.

Now add a Raid Finder that matches you with another group of players that all have a compatible raid ID. You join a raid, do your best, kill a few bosses, and then tomorrow, you log on again and join a different group that has the same set of bosses downed. It doesn't matter whether it's the same group as yesterday, as long as they've made the same amount of progress.

I believe you should just have left your post at this. Don't try and bog down a very good concept with a complicated implementation for it just confuses and distracts people.

@Kaboomski: Actually it should be pretty easy to get a group with an alt, you'll just be put in a group that hasn't downed any bosses yet... since there's no bosses down it won't check your achievements. The check could only come into affect if the majority of the raid is half way into the raid.

Far from a tragedy for MMO gaming - this is pretty similar to the way raid lockouts worked back in Everquest (I use past tense as I'm not sure if they still do - haven't been playing there for about 3-4 years). You could zone into a partially completed raid, and only the bosses that the raid leader hadn't killed yet would be active. If you had more bosses down than the raid leader, you were unable to enter the instance.

I suspect a Raid Finder will have a lot of social and player problems. Raids require a lot more strategy and coordination than 5-mans, and trying to raid without Ventrillo or being able to screen prospective raid-mates will suck.

And let's not forget that a lot of the RDF face-rolling that's happening now is because people drastically over-gear instances and know them front-to-back from playing them for months. When it's an instance people have only done a few times, or one people are at gear level for, then I think the RDF system may struggle. Those difficulties will be amplified in a raid group.