How to program dialogue for a game?

Started by
11 comments, last by Alberth 2 months, 3 weeks ago

I'm working on a prototype that will have an NPC give dialogue for the player to read and since this is the first time handling dialogue I would like some advice on the programming side of handling dialogue.

Advertisement

You mean you want to display text in a box on the screen?

-- Tom Sloper -- sloperama.com

Make a list of questions with possible answers, and for each answer the next question you want to ask.

Have a variable that tracks the currently displayed question. When the user answers, update the variable to the next question.

@Tom Sloper

That and programming a dialogue box

@Alberth

The dialogue will be used to tell a story like how most fantasy games have someone explain your purpose in the game. But your advice will help if I plan to do that

@Alberth

My apologies I meant role-playing games in my first reply

It depends a lot on the depth and complexity you want the dialogue system to be based on.

I have actually thought on the matter quite a bit and I don't know yet if I want it the way recent AAA titles have been going at.

Most games just have minor branching properties and have dialogues pop based on game stage and similiar factors. So basically you always get a small branching dialogue based on game events. But there are other ways to produce similiar dialogue systems, like some of those used in text based adventures.

I have a json containing the nodes of the dialog. It is quite complex because each node can have conditions (like, is Quest Q active, unassigned, completed? is attribute A greater or lesser than value X?). The conditions determine if the node is displayed or no. Each node points to answers in case of an NPC line, or to next NPC line, in case of player answers. The big problem for me is writing an editor that simplifies the task of creating/editing the json files.

Did you consider writing a text file with lines of text in a convenient form and parse that?

Eg

invite_walk
condition: quest0=completed, attrA > 7
tell: It is good weather today, care for a walk in the garden?
answer: No, not really I am busy -> end
answer: Hmm, maybe, I was looking for a bar -> invite_bar
answer: Yes please, I'd be delighed -> go_for_walk

With python (or any other language for that matter), you can read the lines of the file, and check text of them.

In my example, first line is the name of the node Other lines have a special word in front like “answer:” so you can recognize them. For each type of line you can decode what the text contains. For the “answer” line, you should look for a “→” sequence, which is after the text to show, and before the name of the next node

For a conditions, you first split on commas, then you have texts of the form “word OP word”, where OP is “=”, “>”, etc.

Editable with any text editor, and text-processing to understand the lines isn't terribly complicated.

This topic is closed to new replies.

Advertisement