The basic idea behind Fridai has always been to build an AI that behaves like a friend sitting with you while playing your favorite games – because we all remember how much fun it was to play together with our friends as kids. With an AI friend, of course, the experience will be different, but if we can make even a slight resemblance of how that felt, we will have built a truly amazing helper for games.
On the user experience side of this, our goal is to help everyone who enjoys gaming access information in a different way, without having to Alt+Tab out or even look at other screens. The first versions of the assistant delivered on this promise, however as we wanted to add more and more games, we seemed to have hit a barrier in how we could scale it efficiently to other games.
On our journey to find ways to accomplish a constantly improving, more human-like Fridai, we needed the answer to 3 questions:
- How can we create a better personality for Fridai?
- What is the most efficient way to keep Fridai’s knowledge updated?
- Can we make Fridai provide more native advice while gaming?
In this post we will only discuss our answers and methods to the last 2 questions, as they are related to the engine we’ve built and its connection to GPT3.
Ever since the first use cases of GPT-3 I have seen demos for, I’ve been thinking about how to apply the technology to reimagine gaming walkthroughs – and more importantly how gamers can access them today. So let me just insert a little sidetrack here, to explain how I think about game guides.
The idea started from a personal experience and problem, where whilst playing games, I actually enjoyed looking up guides and doing research on certain points (especially items and builds) – to be honest I needed to do this more than I can confess.
From all the content out there, I have found two types to be actually useful – longer websites where I can see the guides for my questions and of course videos with playthroughs. I am not going to go into explaining how much I hated having huge ad banners on the sites or even the fact that I had to wait 15 seconds even for a video to actually get started, we all know this (except of course, Youtube Premium subscribers, kudos).
The way I found these guides to be useful was when I was actually playing the game, for example in the Witcher 3 while collecting the griffin school gear, I constantly switched back and forth and alt+tabbed out so I would be able to find all the pieces.
Research took time though and even if we disregard the actual search process or having to read multiple sites when looking up these pieces of information, I still had to read the actual content even the parts that were completely irrelevant to my current situation in the game.
And you guessed it right, in the meantime the game was on pause, running in the background. Then when I found the content, I started the process of switching back and forth between the game and the guide. I’ve been doing this for years and with so many games I’ve lost count.
With Fridai and GPT-3 however, I knew we could find the right way of recreating these guides in a way so it would give me filtered through content, only relevant to me, without having to leave the game – or even using my keyboard or mouse.
The marriage of these two products, would result in a human-like conversation that is tailored to the actual problem I would be facing in the game. Is this the answer to question number 2 and 3 above? Well, partially.
GPT-3 is a super creative technology and it has already been trained for usage, but putting it into an actual product requires a lot more than just connecting to it. In a way, you need to tame its creativity to make sure it works with your product. Therefore the first action we needed to take is to figure out an architecture that would serve the right content to GPT-3, so when it parses the unstructured content, it would be able to digest and produce the right piece of advice.
Then we needed to figure out where to get started, in terms of which game we should go after first. A game’s knowledge base can be very complicated, with hundreds of items, monsters, characters, quests and the list goes on. In order to make the experience work, we would need to dissect the game into the smallest parts, so whenever a user requires guidance about a monster or alchemy, we could provide the best possible response. Therefore we needed a game that we all knew, had little upcoming changes to its knowledge base but also had users who could then test it for us. This is why we picked the Witcher 3: Wild Hunt.
After really taking the game apart, in terms of content we identified the moving parts of how many elements exist in the game of which we will need to provide some form of content to the engine.
- 132 monsters
- 521 characters
- 250 alchemy items
- 304 pieces of armor
- 30 witcher contracts
We collected individual pieces of content of all the elements of the knowledge base we have identified – either by having gamers in our community write something or looking up an actual guide and reformatting it. Then we saved all these pieces, made them searchable and tagged them.
Afterwards we needed to make sure, when the user’s query comes in about a given situation, we find the right piece of content, parse it and generate a response with GPT-3, format it to fit the game experience and feed it to the text-to-speech engine. Thus providing a real time, filtered piece of information about the game to the end-user.
This made us start working on an NLP (Natural Language Processing) layer to understand the user’s query, connect it to elasticsearch to find the correct file and then feed it to GPT-3, where we could take the most advantage of its creativity to craft the best response after parsing the unstructured data. (Note: I will make a post about the architecture of Fridai in a separate post).
And you can see the results in this video below, step by step:
At the end, user experience speaks for itself. GPT-3 works its magic on content that we can feed to it, however if there are no filters or NLP layers preceding the engine, it would just start crafting stories or irrelevant content for the user’s query.
The question of building a scalable, efficient way to keep Fridai’s knowledge base have been solved by the elastic engine that constantly updates itself from online guides and community generated content, while GPT-3 allows users to work with different queries, therefore getting different responses for “List the weaknesses of the griffin” or “Tell me some tips about defeating the griffin” – just the way you would ask your friend about how he solved certain problems while playing.
By the time I am writing this, we will have released Fridai’s version with full Witcher 3 support and I cannot wait to share more of our experiences in how people use this different, more interactive format of a guide or walkthrough to play with the Witcher.