This is a preserved archival copy of the original application. External links may not resolve at this point. Send any questions or comments to James Ryan.



Go back



What is this?

GameSage is a tool for game discovery that was built using techniques from natural language processing. Starting from your description of a game, you'll get an interactive listing of the existing games that are most related to it. GameSage is not currently optimized for mobile viewing.


How do I use it?

Click the sage to begin. Once you do this, you'll be taken to a new page, where the sage will ask you to describe a game. You may use a description of a game you would like to develop or are developing, a game that already exists (whose title you've forgotten), the type of game you'd like to play, or any other kind of game description. Feel free to copy and paste text from another website or from anywhere else. If you can't think of what to write about, click the button that says 'Guide Me'.


Who made it?

It was created at the UC Santa Cruz Center for Games and Playable Media by graduate students James Ryan and Eric Kaltman and professors Noah Wardrip-Fruin and Michael Mateas. We made it as part of the larger Game Metadata and Citation Project (GAMECIP), a multi-year joint initiative between UC Santa Cruz and Stanford that is funded by the Institute of Museum and Library Services (grant LG-06-13-0205-13).


What keywords does it look for?

GameSage doesn't look for keywords or text overlap or anything like that. It uses a much more complex natural language processing technique.


How does it work then?

GameSage is an interface to its companion tool GameNet, which is is a network of existing games that are linked according to how related they are to one another. We built GameNet by submitting Wikipedia articles about games to a technique from natural language processing called latent semantic analysis (LSA). LSA works from the premises that words that occur in similar contexts will tend to have similar meanings and that texts that are composed of similar words will tend to be topically similar. By the technique, words get attributed computable representations that are determined by the contexts in which they appear (in our case, the Wikipedia articles) and the contexts themselves (those Wikipedia articles) likewise get attributed computable representations according to which words appear in them. The cool thing about LSA is that it may be able to infer that two words that do not appear together in any context (perhaps dialectal variants that denote the same thing, like 'gas' and 'petrol') are in fact highly semantically related. By the same token, it may infer the semantic relatedness of two contexts that have no terms in common. This ability to learn global associations from local co-occurrences is the achievement of LSA and what led to it becoming one of the major natural language processing techniques of the last twenty years. For this project, we extracted 11,829 Wikipedia articles that describe individual games and submitted these to LSA. By taking the computable representation that LSA gave to the games' Wikipedia articles and using them as a way of representing the games themselves, we can automatically determine how related any game is to any other game among the 11,829 included in our model. This is how GameNet is able to reason about game relatedness. GameSage works by exploiting the notion in LSA of 'folding in', whereby a new text that was not used to train the model gets injected into it. Specifically, GameSage takes a description of a game and processes it by the exact same method that was used to process the original Wikipedia articles, thereby finding the existing games that are most related to the description. For more information about GameSage, see this short paper that accompanied a demo of the tool at a recent academic conference.


Can you say more about LSA and your model?

From a corpus of text, a co-occurrence matrix of its words and documents (the individual texts that make up the corpus) is built; this matrix specifies which words occurred in which documents (and thereby which documents words occurred in). The columns and rows in this matrix can be thought of as vectors that represent the meanings, in an approximate sense, of the words and documents that they correspond to; this is called a vector space model of semantics. LSA is an example of such a model, but its hallmark is that it reduces the dimensionality of these vectors by a matrix-factorization algorithm called singular value decomposition. Remarkably, doing this allows the model to, as we've said above, infer semantic associations that are not encoded in the full co-occurrence matrix. Having an LSA model, one can easily calculate how semantically related any of its documents are by taking the cosine between their LSA vectors. In corpora in which each document pertains to a specific individual concept, such as a corpus comprising encyclopedia entries, these relatedness scores can reasonably be utilized as a measure of the relatedness of the concepts themselves. Crucially, we relied on this notion in training our LSA model on the corpus comprising Wikipedia articles for 11,829 videogames, which we mentioned above. By this model, we can quantify how related any two of these games are by taking the cosine between their LSA vectors. If this isn't detailed enough, check out this conference paper in which we explain our implementation in greater depth. Feel free to shoot us an email too.


What languages and tools did you use to build it?

Python, gensim, scikit-learn, Flask, JavaScript, jQuery.


How can I cite GameSage?

Please cite this demo paper that we presented at Foundations of Digital Games 2015.