Jump to content

Dialogues in games.


jorgenoro
 Share

Recommended Posts

Hello,

 

I was wondering...

I never got deep into developing a full featured game, just some small experiments.

I was thinking how different dialogues types could be implemented, but I have some ideas which I consider poor.

One of them, consists in showing information in the screen in specific locations in the world. To achieve this, one could create rectangles (regions in the world) and check the overlaping of, for example, the player.

When the player overlaps, gets the rect id, and searches a vector, array, hash... for the corresponding information.

 

Do any of you know awesome ideas and would like to share? I'm pretty curious to know how other people do it.

 

Regards!

Link to comment
Share on other sites

Yeah, creating regions and having one-time messages flash up is a perfectly good solution. Your message code checks game state (in this case, location, but it could be quest status, player status yada yada yada) and displays an appropriate message, or does nothing. This is great for messages but less so for actual dialogue.

 

I think most dialogue systems revolve around creating a tree of dialogue options as implementing actual free-flowing conversation-style dialogue is very tricky.

 

The problem with implementing as a tree is that oftentimes choices will lead to the same place so you create non-tree like structures, this isnt rare in programming and many solutions exist, but it can make things tricky. Easiest is to simply replicate 'same' nodes in the tree, sure, you can do clever things to share memory and such, but unless your dialogue tree is large its rarely necessary.

 

An additional complexity is measuring state during the dialogue. For example, certain choices may change certain state variables which can lead to differences further down the dialogue tree. This can be tricky to implement and very error prone, plus, finding bugs in this case can be a nightmare.

 

Generally you'll want some sort of visual representation of your dialogue tree, a collection of collapsible nodes would do but you need some way to visualise 'linked' leaf nodes. Your UI, or tooling, then creates the actual dialogue tree. Creating it by hand for any non-trivial dialogue is hard as its near impossible use cognitive engineering to hold the state in your head, you need to see it and the links. Finally, if you're employing stuff like state variables and implementing a complex dialogue tree you need to test it. Automation should be fairly easy but it'll need old-fashioned human power too which is a pain as its very time consuming.

 

Look into tree-like structures in programming, they probably dont relate to dialogue trees specifically but they will be your best friend in creating interesting dialogues for your games.

Link to comment
Share on other sites

I often use the proximity approach for location contextual Information - e.g. environment background sounds, hints, conversations.

Assuming Information is contextual to a Map location (x,y) then we sort the list of all Information based on distance to Player (using non-rooted Pythagoras), and limit the list to show the top 5, etc.

Dampening parameters can be added to make specific Information a higher priority for a specific Player, or specific game states.

Further optimization can be added if the list of all Information is extensive.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...