Sign in to follow this  
Greg Rice

Programming Update 11: Dialog Systems in Double Fine Games

Recommended Posts

Hey all, thought we'd share Anna's awesome GDC Europe talk about Broken Age dialog with you. Here's the official description from GDC and a video of the whole thing below. Enjoy!

Session Description:

You might have toyed with the idea of having recorded dialog in your game and wondered what, exactly, that would entail. In this session Anna Kipnis, Senior Gameplay Programmer at Double Fine, will give a broad overview of how dialog gets into a Double Fine game, from the moment a line is written to hearing and seeing the line in the engine, even in a foreign tongue. The lecture will focus on the technology required to make it possible, as well as some useful approaches, including examples of dynamic dialog systems.

Takeaway:

There is a surprising amount of obstacles to be faced when adding dialog to a game. The aim of this lecture is to identify these obstacles and offer some best practices for handling them, as well as to show the potential that dialog has to make the game world come to life. The attendees will get an in-depth overview of Double Fine's approach to design and development with fully-voiced characters, the tools our writers and implementers use, how we track the lines, what dialog systems need to be written to play the dialog in the game, how to approach writing dynamic dialog systems, and how to make sure that the game can be translated into another language without much overhead.

[vimeo]109113910[/vimeo]

Share this post


Link to post
Share on other sites

Awesome! I especially enjoyed the walkthroughs of examples where iterative implementation of dialogue led to new insights and a better overall game.

I also didn't really find any parts of it to be too dense for a semi-technical person like myself. I mean me - I am like myself.

Share this post


Link to post
Share on other sites

ah that was such a good talk! It was really interesting hearing how you did everything. As Scakes said it was accessible to less technical people, but it also taught me (who made some dialogue systems myself) quite a bit too. Also nice to know that i wasn't too way off with the way i did some of the things in my systems.

Oh and i really appreciated the part about the localization to portuguese. I didn't know it was generally like that, but it was how i've felt about localization my entire life.

is it possible to add the question round or at least transcribe it? I remember there being some good bits too

Share this post


Link to post
Share on other sites

The thing about Portuguese is absolutely true and im glad some studios knows this.

Being from Portugal i can say that we indeed prefer for it to be in english than Brazilian.

Share this post


Link to post
Share on other sites

Totally fascinating, thanks for posting guys.

One thing I found curious, both here and in the Broken Age docs, was how the dialogue trees seem to be generated by hand, with conditional tokens inputted manually to determine what lines are shown, and when. What I *anticipated* was a node editor along the lines of Unity's (e.g., http://www.pixelcrushers.com/dialogue_system/manual/html/dialogue_editor.html).

Is there a reason you didn't opt for a graphical tool when designing your in-house system? I'm not for one moment suggesting it's a better solution, but I'm curious as to how your existing tools evolved.

Share this post


Link to post
Share on other sites
ah that was such a good talk! It was really interesting hearing how you did everything. As Scakes said it was accessible to less technical people, but it also taught me (who made some dialogue systems myself) quite a bit too. Also nice to know that i wasn't too way off with the way i did some of the things in my systems.

Oh and i really appreciated the part about the localization to portuguese. I didn't know it was generally like that, but it was how i've felt about localization my entire life.

is it possible to add the question round or at least transcribe it? I remember there being some good bits too

Hey Layn! Really glad you enjoyed the talk. :D!

This is actually NOT the original recording of the GDCE talk, it's one we did in-house. It's different in a bunch of subtle ways (the slides don't have the GDCE banner, for instance).

Some of the questions asked in the Q&A were regarding how to go about making dynamic sentence construction for languages that have more complex grammar than English. For instance, with gendered nouns. It's a complex problem and there are a couple of approaches to this:

- For Boyd's dialog, Tim wrote whole phrases, not "noun", "adjective", "verb" etc. to construct Boyd's rants. This gave a good deal more flexibility to the localizers -- they took many liberties with the phrases to make the construction work.

- Know the languages you're going to localize into and write the dialog with those languages in mind. On Costume Quest, where you could pick to be the sister or the brother, with the other becoming your companion, we had to be aware that in many languages, this meant gendered conjugation. As a result, we created duplicate lines that were chosen based on whether you picked Wren or Reynold. We also tried to avoid referring to the characters in a way that brought up their gender as much as possible.

In general, you should keep localization in mind as you prepare the dialog for the game, both as a writer, and as an implementer.

Share this post


Link to post
Share on other sites
Totally fascinating, thanks for posting guys.

One thing I found curious, both here and in the Broken Age docs, was how the dialogue trees seem to be generated by hand, with conditional tokens inputted manually to determine what lines are shown, and when. What I *anticipated* was a node editor along the lines of Unity's (e.g., http://www.pixelcrushers.com/dialogue_system/manual/html/dialogue_editor.html).

Is there a reason you didn't opt for a graphical tool when designing your in-house system? I'm not for one moment suggesting it's a better solution, but I'm curious as to how your existing tools evolved.

We actually have a tool that generates a dialog tree based on the lines picked from the Dialog Database tool to pre-populate the data, but the logic to do with how each node executes does have to be set up by hand in the text file (much as it would need an implementer's attention in the graphical tool).

The reason we don't have a visual tool for this is because the people implementing dialog on Broken Age are programmers and feel comfortable in a text editor. It's faster to deal with text files -- you could do lots of automated operations, like search and replace, easy duping when needed, etc. We also usually have a text editor open, so there's no need to wait while yet another tool loads. There is also the fact that it's more flexible -- if we find we need more/new data, we simply add it directly and don't have to update a graphical tool's interface and do QA to make sure it hasn't broken.

If our process included implementers who were not super comfortable in a text editor, we would certainly spend time making the graphical tool. But, writing one when it's not really necessary takes time away from making the actual game. :D

Share this post


Link to post
Share on other sites
If our process included implementers who were not super comfortable in a text editor, we would certainly spend time making the graphical tool. But, writing one when it's not really necessary takes time away from making the actual game. :D

Makes perfect sense. Thanks!

Share this post


Link to post
Share on other sites

Hey, does anyone know how you would go about exporting a dialogue line spreadsheet into a readable script format for an actor? It's mentioned in that its possible in the talk, I just can't figure it out and can't find it on google because the word "script" tends to mean code in the context of google sheets. Is this a job that's done by hand? Or is there a clever system that orders how lines appear in a conversation so that the actor has the lines they're responding to as well?

Share this post


Link to post
Share on other sites
Hey, does anyone know how you would go about exporting a dialogue line spreadsheet into a readable script format for an actor? It's mentioned in that its possible in the talk, I just can't figure it out and can't find it on google because the word "script" tends to mean code in the context of google sheets. Is this a job that's done by hand? Or is there a clever system that orders how lines appear in a conversation so that the actor has the lines they're responding to as well?

There isn't a tool like that out there right now. Maybe if I get some free time, I can write one. The short answer is that you either have to make it yourself by hand, or write some custom script (coding, that is) to be able to export it in a way that works for your voice actors.

We have a Python script that generates the document that we use in the studio for our actors. It's actually just another spreadsheet that has the information arranged in a way useful to the actors -- by scene, with other actor lines present, with stage directions, even some implementation directions, so that the actor has as much information as possible about how the lines will be used.

There might be existing add-ons for Google Spreadsheets that can help provide you with a good starting point.

Check out this link for some Google Spreadsheets scripting basics:

https://developers.google.com/apps-script/guides/sheets

For more detailed information:

https://developers.google.com/apps-script/add-ons/

Share this post


Link to post
Share on other sites

This was really interesting presentation. Since I had no idea how dialogue systems work in videogames I learned a lot. As a programmer myself I can appreciate how much work goes into maintaining a custom internal system for managing all of the dialogue.

It was also awesome to see how the design process goes from written dialogue to scratch used in cutscenes to the final version. I've said this before on this forum and still very much feel like for me the backer material has more than made up for my initial donation to the project; being able to play the game is just a bonus.

Keep up the great material here!

Share this post


Link to post
Share on other sites
Sign in to follow this