2
\$\begingroup\$

For school we have to make a small adventure game in C# (Visual Studio 2015) with a custom game engine made by our teacher. Now I want to implement a small dialog system between Liz (The main characer) and her teddybear.

The way I would like it to work is by using buttons. The bear starts out with "I can't let you pass Liz". Then the player can choose between three options (which are buttons) 1. [Question] 2. [Demand] 3. [Observe].

I am just not sure how to implement this and what would be the most efficient way of doing this codewise. To make it a bit more clear I've added an image of the entire dialog that needs to be implemented. enter image description here

Any help/tips would be welcome!

Thanks in advance

\$\endgroup\$
  • \$\begingroup\$ "what would be the most efficient way of doing this codewise." Did you figure out how it could be done in an inefficient way? Did you try anything that did not work? \$\endgroup\$ – Vaillancourt Jan 17 '17 at 12:48
  • \$\begingroup\$ I suppose it could be done with alot of booleans turning on and off \$\endgroup\$ – S. Neut Jan 17 '17 at 12:49
  • 2
    \$\begingroup\$ Possible duplicate of How do dialog trees work? \$\endgroup\$ – Vaillancourt Jan 17 '17 at 12:53
  • \$\begingroup\$ There is a lot of resources from questions with the dialog-tree tag. \$\endgroup\$ – Vaillancourt Jan 17 '17 at 12:55
  • \$\begingroup\$ Could you mark one of the answers correct? \$\endgroup\$ – Bálint Mar 21 '17 at 6:53
3
\$\begingroup\$

Imagine the system as rooms with doors/teleports. Every decision is a door, each group of decisions is a room. When you pick a decision, you go from one "room" to a different one.

So, in code terms:

You should have 2 objects, Decision and Group

A decision should know it's type (question, demand, observer) and the next group of decisions it points to, and the groups should store decisions.

In the main class you should have a current group and present the options to the player. When he chooses one, get that decision object and set the current group to the one inside it.

This method is basically a linked list with multiple links.

\$\endgroup\$
  • \$\begingroup\$ Uhm, could someone explain the downvote? \$\endgroup\$ – Bálint Jan 17 '17 at 14:31
  • \$\begingroup\$ Good answer, but the data structure would be a tree not a linked list. \$\endgroup\$ – benh Jan 17 '17 at 16:53
  • \$\begingroup\$ @benh A tree has a root and an end, this one doesn't, some dialogs could go straight back to the beginning \$\endgroup\$ – Bálint Jan 17 '17 at 17:59
  • \$\begingroup\$ 'tis a graph, guys \$\endgroup\$ – MickLH Apr 4 '17 at 22:25
  • \$\begingroup\$ @Mick probably yeah \$\endgroup\$ – Bálint Apr 5 '17 at 5:51
-7
\$\begingroup\$

Just code. Lots of IF statements. If your teacher wanted you to do this, the engine or classes would help you.

\$\endgroup\$
  • \$\begingroup\$ well the dialog is something I wanted to add as an extra, it's not a requirement \$\endgroup\$ – S. Neut Jan 17 '17 at 12:51
  • 4
    \$\begingroup\$ -1 "Just code. Lots of IF statements." You could answer this on most of the questions here... \$\endgroup\$ – Vaillancourt Jan 17 '17 at 12:54
  • 1
    \$\begingroup\$ You can make any game with lots of if statements. \$\endgroup\$ – Bálint Jan 17 '17 at 14:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.