Webs of variables and branches in our games have always been very complicated, posing a huge challenge for quest designers to control and keep track of. This becomes even more visible in The Witcher 3, since we introduced the possibility to play big chunks of storylines, connected logically with each other, in different order. This has generated the necessity of referring to events from these different storylines in quest dialogues, in order to keep character believability and player immersion with the game world.
As for how do we approach this problem – we’re using a tool set very similar to tool set from The Witcher. We have a system called ‘facts database’, which is basically a list of variables that can be modified or checked by conditions from quest or dialogue level. This list is filled dynamically in real-time as the player goes through the game, so we can’t really see all the facts from within the editor. We do have a debugger, that allows us to easily check what facts have already been added to the database, but it can be used only in-game.
That being said, it needs to be highlighted that we do not posses any miraculous system solution to the problem of designers getting lost in that ‘web’ – we maintain control over quests logic by using good pipelines, organizing our work properly, and keeping our documentation up-to-date. For example, we keep track of most important ‘facts’ that are being used and checked in quests, by keeping regularly updated fact lists in our documentation, which can be used by other designers later on. It takes a lot of self-discipline from designers to do it on regular basis, but in my opinion it’s necessary in order to avoid confusion and maintain control over ever growing variables list.
As a lead quest designer, it’s my job to provide the team with detailed diagrams, showing order of quests and connections between them, as well as explaining it to everyone and keeping track of its integrity. Another thing that is a key to containing that variable chaos is proper communication – quest designers are sitting in one room, so they can consult each other on different matters, such as variables or branches, at any point, as well as inform everyone about changes that may impact other people’s quests. We also do our best to keep communicating with the story department, so the writing of our dialogues is always up-to-date with quest changes.
Solving many, many bugs
Having all that in mind, one thing needs to be said – if you’re making such a complicated game as ours, with so many variables and connections between quests, you will find many logical bugs during production process. And by ‘many’ I mean tons of them. There’s no avoiding it – there is no person that can foresee every single logical issue before it is implemented in the game. But it’s crucial to focus on finding and solving these issues as soon as the game is in playable state.