RPG Conversations - What methods do you use?

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.
  • Hi all!

    I was wondering, what methods do you tend to use for organising branching conversations in RPG-style games? I'm thinking of *possibly* making an extension to make this easier, but I wanted to know what routes people have used up till now (and whether it turns out there's already an extension out there, or someone's making one right now) :)

    So how do or would you go about making RPG-styled branching conversations? :)

  • Well, I track all my conversation chains in MMF via alterable values (ie, conversation X should be open and it should be on Y line of dialog) then I can check easily for quest updates or key points where data might need to be altered (IE, show a keyboard control or a gamepad control depending on method of input).

  • I mean specifically for multiple-choice styled conversations, how do you store the text and control conversation flow? Obviously there are a million and one ways it could be done, it'd be interesting to see how people prefer to do it:)

  • I would do it with a relational database:

    table Conversation /*stores a conversation thread, a block of text that can be activated if a)the prerequisites are met, and b) none of the nullifiers have been activated*/
    TextID (primary key)
    SpeakingCharacterID
    QuestionText
    ResponseText

    table Prerequisites /* Store all prerequisites for a block of conversation. If all prerequisites have been met by the player, we can allow this conversation option */
    TextID
    PrerequisiteID

    table ActivatePrerequisite /*after a conversation text, we want to activate some prerequisites that will allow for further conversation options*/
    TextID
    PrerequisiteID

    table Nullifier /* Store all nullifiers for a block of conversation text. If any of these nullifiers are activated, this conversation text can't be accessed */
    TextID
    NullifierID

    table ActivateNullifier /*after conversation text, we want to null some conversation options, so the player can't access these ever again*/
    TextID
    NullifierID

    We'd also need relational tables for Character names, Prerequisite names and Nullifier names but these have been omitted for clarity.

    Events other than conversations that may activate prerequisites or nullifiers are:
    a) completing quests
    b) collecting items
    c) killing characters
    d) rescuing characters
    e) the passing of time

    In conclusion, an extension will be a great help, especially for users not familiar with relational databases.

    Please login to see this link.

    Edited 6 times, last by Ryan (March 13, 2012 at 1:42 AM).

  • In an extension, I was thinking of going down the XML route. It would store threads as embedded nodes, with names of functions in the Pre and Post attributes, which get triggered when that node is called (or in the case of Post, when the node ends, to handle actions resulting from that sentence). You then make an event which corresponds to that function, like On HasQuest... The extension would have a dialog to make it quicker to write. How does that sound?

    Edited once, last by Dines (March 13, 2012 at 9:04 AM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!