The Scarab Lord

The Scarab Lord was a title given out in World of Warcraft in 2006 for the first players on each game server to bang a gong thereby opening the gates to a new expansion. This world event required hundreds of players to cooperate and contribute to a server-wide war effort that lasted for more than ten hours.

Luke Smith, the game director of Bungie’s Destiny franchise, still signs off his emails as “Scarab Lord”, 14 years later. According to Smith, Bungie designed Destiny as a place to not only play with friends and make memories and titles that can last decades but to also make friends.

In many ways, Destiny seeks to embody the ethos of forming connections. The game’s very systems are designed to: a) have each player’s character, or guardian, be an extension of themselves and play the same in every part of the game b) have new people interact together seamlessly (which is amazing from a technical standpoint), and c) to forge those bonds into lasting friendships through trial, error, and communication in intimate (i.e. not hundreds of people large) cooperative (and competitive) events.

In this course, we started off by defining social media as:

Internet-based channels that allow users to opportunistically interact and selectively self-present in real-time or asynchronously with an audience who derive value from other users and the perception of interaction (Carr et al.).

Destiny meets each of these (soft) requirements. Being an online massive multiplayer online (MMO) Destiny is obviously internet-based. Each player over time cultivates their player-character’s look and presents that unique look to the rest of the game-world. In fact, high-end loot is supposed to let you present your character and inspire a sense of wonder in people who see you. For example, if I see someone with an exotic weapon, and then I reach out to them, we can then [team up together to earn my own copy of the gun (which I can only get by playing the game together with this person who already has the gun)](https://destiny.fandom.com/wiki/Rat_King).

In addition to just what weapons your guardian shows off/uses, the game’s systems unite people in little ways. While wandering the world, I will seamlessly run into another player and we might team up to take on content that neither of us can solve alone. Thereby the game creates connections between people and uses the game’s very systems to reinforce the connection.

**Given that destiny can create connections between people, how might the game create stronger connections?**

One potential method could be to track data about how a player plays Destiny, cluster them accordingly, and then when connecting people, to connect the people who might play in a synergistic method (Yes, that’s vague.).

To make this a bit more concrete, let us assume that we are operating in player-vs-player land where Bungie creates teams of players (of size 3, 4, or 6 people each). Automatically building teams of players that play well together (e.g. accomplish the set-out-for task) is itself a task that can extend a game’s lifetime. These teams are formed from picking players in the player-pool (or players self-selecting) and in PvP, teams are pit against each other in a competitive zero-sum setting. (There also exist multi-hour cooperative end-game tasks that require players to work together to solve puzzles and beat challenging bosses with exacting precision and communication to get the best loot the game has to offer.)

Thankfully the necessary data is accessible via an open API into the game that Bungie provides. Naturally, this data will reflect the bias created by Bungie’s own internal match-making system.

Using the requests library in python and an API-key provided by Bungie (anyone can ask for one) we can pull a figurative firehose of JSON-stored information about each and every activity that each player in the game has participated in and receive granular statistics about how people play the game and who they play the game with. In particular, I started by pulling down the last 100 matchIDs from my own account. I then used each of these matchIDs to pull the associated PostGameCarnageReport (PGCR) (i.e. statistics about how I did in any of the game’s activities) which gave me playerIDs of other people in the match for whom I could pull their last 100 matches. PGCRs are created each time that a player, or group of players, finish an activity — whether that be a PvP match, a cooperative dungeon, or just running around the game-world killing aliens. The type of data that PGCRs will show are things like, how efficient was your guardian at killing aliens (or other players), did you complete the objective of the game-mode, or how many times did you die, etc.

For example, if we visualize the distribution of people’s average score per life in the PvP setting, we get a heavily skewed histogram (and most histograms look like this, which is indicative of the fact that most people are average to bad at the game or just that some people truly excel).

Furthermore, these statistics/features of each player are correlated. For example, if a person has a high averageScorePerLife feature, then they will likely have a high kills-per-death ratio since, in order to get points a shooter-type game in a PvP setting, you need to kill opposing players.

So, we have highly correlated and skewed distributions. It’s not a meaningful test, but it can’t hurt for us to attempt to visualize the data by throwing it into a dimensionality reduction algorithm such as t-distributed stochastic neighbor embedding (TSNE). TSNE attempts to keep local structures in the dataset while projecting the data to a lower dimension (neighbors in the high-dimensional manifold should be neighbors in the low-dimensional manifold). It does not conserve global information, therefore what comes out is not a clustering.

TSNE projection of player data to 2D

We can’t really do anything about their correlation, but we can unskew the features, and the easiest way I can think do that is simply to run each feature through the natural logarithm. The natural log will necessarily collapse a distribution’s long tail into similar values (due to how low the slope of ln is as x goes to infinity).

TSNE projection of ln’d data to 2D

And voila, we might have clusters inherent in the data.

So, what’s the point? Since we have data that is, ideally, reflective of how one plays the game, then if we feed the data into a clustering algorithm, the clusters that get produced should have some latent semantic information compressing the play-style information.

This play-style clustering can then be fed to a down-stream task that, for example, builds new teams for PvP matches or PvE Raids. If we can build a team of players who have playstyles that complement each other, then those players might play together longer and form a connection that can bloom into a friendship.

And let’s face it, in 2020 we could all use more systems that help us make friends remotely.

--

--