We recently linked up the game titles from our data set with available metadata from places like Steam and IGDB. As part of this, we’ve been playing around a lot with Steam tags. In this blog post, I’ll show you what happened when we tried to visualize how Steam tags are related to each other.

A Quick Word on Steam Tags

For every game on Steam, gamers can attach tags (i.e., keywords) on its webpage. The interface provides an autocomplete suggestion as you start typing, but users are allowed to enter any character string. So for example, on Europa Universalis IV’s page, the top tags are “Grand Strategy”, “Strategy”, “Historical”, etc. Steam shows the top 20 tags for every game, and the exact count of each tag can be found on SteamSpy.

To generate the data set, we looked up the Steam tags for all the game titles that have been mentioned at least 5 times in the Gamer Motivation Profile (with data from over 350,000 gamers) and exist on Steam—which came out to be 2,129 game titles. The Steam tags data we analyzed was gathered in mid-December 2017.

See how you compare with other gamers. Take a 5-minute survey and get your Gamer Motivation Profile

There’s a lot to like about Steam tags. First, it’s a large data set based on input from actual gamers. And second, it’s a folksonomy rather than an imposed top-down taxonomy. This allows new tags to emerge as they become relevant (e.g., “Kickstarter”). And because it’s a user-generated tagging system, it surfaces the concepts/vocabulary that gamers use to think about games and game features.

On the flip side, the data is limited to game titles on Steam and excludes games from several large publishers (e.g., no Call of Duty or FIFA from EA, and no Overwatch or Hearthstone from Blizzard) and platforms (e.g., no games from mobile or Nintendo 3DS). The system is also susceptible to brigading, although Steam does actively intervene and clean up tags when necessary. And as with any user-generated content, it is likely that a small percentage of Steam users are responsible for the vast majority of tagging activity.

Despite these potential issues, the Steam tags data set is large, unique, and very much worth exploring.

Defining Tag Relationships

There isn’t one “right” way of defining how close or similar two things are. For example, if we were to draw out a social network for someone, that graph would look different depending on whether we defined closeness as the length of each relationship, how much you cared about each person, how often you interact, or how geographically close you are.

We defined tags as being “close” if they tend to appear together across games at similar proportions.

The same is true here for the Steam tags data, and we present one reasonable approach of analyzing the data. In our analysis, we defined tags as being “close” if they tend to appear together across games at similar proportions. Or put another way, as we look at how Tag A is used across all the games, which other tags are used in the most similar proportions in those games?

Data Processing Notes

There’s a lot of data processing that goes on in any big data and network analysis, and we present the details here for data science folks or those who are curious. Others should feel free to skip this section.

Excluding Low-Frequency Tags: Due to users being able to enter any tag, there are many low-frequency tags that would clutter up the visualization—the tag counts range from 324,505 (“Action”) to 10 (“Cycling”). The bottom 5th percentile of tags were dropped from analysis (counts <= 85).

Excluding Infrequently-Tagged Games: The same problem occurs with game titles. Some games have only been tagged a few times and thus provide unreliable data—this ranges from 190,470 tags (“Grand Theft Auto V”) to 10 tags. The bottom 2.5th percentile of games were dropped from analysis (tagged less than 50 times).

Excluding Tags Used in Very Few Games: We also excluded tags that are limited to very few games—this ranged from 1,463 games to 1 game. The bottom 5th percentile of tags were dropped from analysis (used in 5 or fewer games).

Distance Measure: We used Jaccard distance as our distance measure. It’s the inverse of the overlap between two vectors and is a commonly-used metric in count-based data. Applying this metric on the raw counts would conflate tag counts with tag relationships (i.e., a subset would be different from its parent simply due to the difference in scale), and one common way around this is to apply the distance metric to proportions instead. Thus, for each game, each tag count is converted to its proportion of the most commonly-used tag in that game (i.e., ranges from 0 to 1).

Why Not Euclidean Distance?: Remember that for each game, Steam only provides data for up to 20 tags. Thus, the resulting matrix is quite sparse and consists mainly of 0s. In Euclidean distance, 0s are meaningful, and a double absence is counted as a match (whereas it’s technically not meaningful in this particular data set).

Game Weights: The distance metric gives equal weight to each game, but intuitively a very popular game ought to count more than a game played by far fewer gamers. However, total players in games varies by several orders of magnitude, and the findings would be determined by a small handful of popular games. Thus, we applied a game weight based on the log of total players that ranged from 1 to 15 (median = 4.4).

Edge Pruning: For the network graph, we trimmed the number of edges for better visualization of the most salient tag relationships. Each node was allowed to keep its top 1-5 edges proportional to its total number of connections. But note that some nodes can end up having more than 5 connections due to inbound connections from other nodes.

Network Visualization: We used the Fruchterman-Rheingold algorithm (a forced-directed layout algorithm) for the graph layout, and community detection was performed using an algorithm based on modularity optimization (see: https://arxiv.org/abs/cond-mat/0408187). We identified 26 communities, of which 17 had been more than 3 members; these 17 communities are given unique colors in the graph, while the dyads and triads are all colored grey.

The final data set consisted of 279 tags across 2,070 games.

Final Tally: We started with 321 tags across 2,129 games and the cleaned data set consisted of 279 tags across 2,070 games.

Visualizing Steam Tags: The Basics

The network graph shows the strongest relationships for each tag. Here are the basics.

Dots represent tags. Lines represent how closely-related two tags are.

Dots represent tags. The bigger the dot/label, the more often that tag appears on Steam.

Lines represent how closely-related two tags are. The thicker the line, the higher the likelihood of appearing together in Steam games at similar proportions. For each tag, its most salient relationships are shown.

Want a hi-res version? You can download the hi-res version here. It’s 7500 x 7500 (1mb).

The layout algorithm tries to make every edge visible and about the same length. This means there aren’t hidden edges between overlapping dots (e.g., there isn’t a line hiding between “Space” and “Turn-Based”).

Colors represent local communities of highly-related tags. A community is a set of tags that form a cohesive subgroup via shared linkages, similar to identifiable cliques in a high school cafeteria. We identified 17 communities with more than 3 members, and each of these was given a different color.

Proximity between dots (if they are unlinked) does NOT indicate a relationship. Similar to how metro maps prioritize stop sequences rather than the actual distances traveled, the network graph optimizes  linkage layout. For example, on the right edge of the map, “Hunting” is close to “Top-Down Shooter”, but because they are unlinked, their relative proximity is not an indication that these two tags are related.

  1. Large, Mainstream Tags (center, medium purple)
  2. Mature Visual Novel (11 o’clock, lemon yellow)
  3. Local Multiplayer/Co-Op (1 o’clock, dark pink)
  4. MMO/MOBA (2 o’clock, olive)
  5. Dungeon Rogue-Like (3 o’clock, crimson)
  6. Action RPG (3 o’clock, chestnut rose)
  7. Economic Management (4 o’clock, muddy red)
  8. Turn-Based Historical Strategy (5 o’clock, apple green)
  9. Tactical Party-Based RPG (5 o’clock, orange)
  10. Board/Card Games (7 o’clock, bubblegum pink)
  11. Survival Sandbox (center 7 o’clock, lavender)
  12. Racing/Driving (7 o’clock, golden yellow)
  13. Survival Horror (9 o’clock, medium pink)
  14. Music/Rhythm (9 o’clock, blue)
  15. Surreal Psychological (9 o’clock, dark grey)
  16. Mystery Noir (10 o’clock, sea green)
  17. Small Islands (light grey)

Some Highlights To Jumpstart Your Own Exploration

There’s a lot going on in the chart, but here are some observations to help you explore.

Broad, mainstream tags are more central; niche tags are more peripheral. Because the most common tags tend to co-occur with other common tags, these tags are drawn together to form a dense, inner core. As the graph generation algorithm untangles all the knots, the graph quickly establishes a hierarchy from broad, mainstream tags to niche, granular tags. While the most generic tags are in the middle of the network (e.g., “Action”, Shooter”), the more niche and granular tags lie further away in the peripheries (e.g., “Romance” at the top).

Island Nations. Isolated tags form islands in the edges of the chart. These tend to be niche tags that are not well-connected to the main network. There are 9 islands in the chart, and 2 specific islands are worth pointing out. The “Superhero” island is notable for having multiple relatively-frequent tags that are nevertheless disconnected from the main network. And the “Board/Card Game” island has the distinction of being the only island with more than 3 nodes. The more nodes a community has, the more likely it will be connected to the main network. So it is rare to find large islands. This implies that these two groups of Steam tags (and their associated games) are very conceptually distinct from most video games.

Thick Connections Are Support Beams for Local Communities. The thickest edges within each community reveal the key features that anchor the community, like the support beams in a building. For example, the “Visual Novel” community is anchored by the beams related to “Anime-Romance”, the triangular beam of “Nudity-Mature”, and the beam of “Choices Matter-Multiple Endings”. In this sense, the chart visually distills genres into their key ingredients.

Next-Door Neighbors Reveal Pivot Points. Even though they are both in the Strategy genre, the Turn-Based Tactical community (green cluster) is distinct from the Economic Base-Building community (red cluster). Moreover, there are surprisingly few cross-over points between the two communities—they are held in close proximity by other nodes in neighboring communities. If you look closely, there are only 3 bridges between these neighbors: Medieval-Historical, RTS-Base-Building, and RTS-Economy. This provides a guideline on tried-and-tested ways to expand into a different community of players.

It’s a Roadmap of The Most Successful Recipes. As an aggregation of Steam tags across the roughly 2,000 most popular Steam games, the chart creates a roadmap of game features and themes that have been successful combinations. Starting with every dot, the nearest 1-hop tags represent the best bets to make in terms of both gamer expectations and combinations that have proven to be successful. The nearest 2-hop and 3-hop tags (particularly when crossing communities) are then more risky bets that may nevertheless create new and appealing gaming spaces (especially when the intermediate nodes are included to create a cohesive experience).

The chart creates a roadmap of game features and themes that have been successful combinations.

In case you’re interested, here’s another way we can define and visualize the relationships between tags.

Let’s say we’re exploring what different demographic segments buy at supermarkets. Well, if we look at the raw data, it’ll turn out that every market segments tends to buy milk and bread at supermarkets because the base rates of certain products is so high. Instead, we can calculate the products that each segment is disproportionately most likely to buy (compared to the average). For example, very few people buy melatonin pills at the supermarket, but 25-40 year old business travelers are 20 times more likely than average to buy melatonin pills.

We can apply the same logic to the Steam tags. Instead of finding the tags that appear in the most similar proportions, we can look instead for tags that are disproportionately most likely to appear with each tag (i.e., the local frequency divided by the baseline frequency).

Here’s what that chart would look like. Notice that the most frequent tags (like “Action”) are now spread all over the graph. And there are many more connections between tags of dissimilar sizes, which results to a more interconnected graph. You can download the hi-res version here.

Neither graph is more “correct” than the other. Consider the frequently-used tag “Singleplayer”. Do you feel it ought to be highly-connected to other frequently-used tags like “Adventure”, or should its connections be heavily penalized precisely because it’s such an overused tag? The former emphasizes the world as it really is, while the latter emphasizes more subtle and hidden connections.

So it depends on how you’re trying to make use of the graphs. For brainstorming new possibility spaces for games (as we mentioned in the “Roadmap” point above), the latter map would likely yield more interesting combinations due to the higher number of interconnections, while the former map better reflects the state of the world on Steam.

See Something Interesting in the Chart?

If you find other interesting areas of the chart, let us know in the comments below.