Another rpg dialog system: format inquiry

Get help using Construct 2

Post » Sat Oct 26, 2013 8:51 pm

Hi,

I'm working towards implementing a dialog system utilizing xml files generated by the Flamewind Conversation Editor (@nwvault- free, standalone) and was curious as to the best way forward, in a general sense. Below is a sample conversation output xml.

I've taken a look at the dialog info linked in the "How do I?" FAQ, but since this editor is free and easy to use, I figured to work from it to employ a system that others might be able to implement, without an encumbered workflow.

FWIW, I see the npc text as a text or (uneditable) textbox object, and the player replies as listbox object items (only way i see to add/subtract reply options).

My questions are:

1. Should I parse the xml as is within events (pulling text and resolving conditions/actions directly from its content), or should I load its content into another form(s) (array and/or otherwise) and use that/those to resolve events? I'm not clear on the advantages of one over another or whether the xml would readily conform to a better format. Also, My personal implementation would be on a desktop browser, so I suppose I'm less concerned about cross-functionality at the moment, but...

2. Would a transformation (XSLT) of the output xml (into another xml) be wise before attempting #1? It's not exactly the most followable xml. Idk if transforming would help coding/XPath expressing.

Here is the code [CODE]<?xml version="1.0" encoding="utf-8"?>
<Conversation xmlns:xsi="can't post urls" xmlns:xsd="can't post urls">
<subNodes>
    <ContentNode idNum="2" orderNum="1" linkTo="0" nodeType="npc">
      <conversationText>Nice to see you again!</conversationText>
      <conversationComments>This greeting should appear if Player has already spoken to Npc</conversationComments>
      <subNodes>
        <ContentNode idNum="3" orderNum="1" linkTo="0" nodeType="pc">
          <conversationText>I have that thing you wanted.</conversationText>
          <conversationComments>Appears when Player has accepted quest and has item</conversationComments>
          <subNodes>
            <ContentNode idNum="11" orderNum="1" linkTo="0" nodeType="npc">
              <conversationText>Awesome! Here's some gold.</conversationText>
              <conversationComments>Give gold to Player</conversationComments>
              <subNodes />
              <additionalData />
              <infoObjects />
            </ContentNode>
          </subNodes>
          <additionalData />
          <infoObjects />
        </ContentNode>
        <ContentNode idNum="12" orderNum="2" linkTo="0" nodeType="pc">
          <conversationText>I'm still looking for that thing you wanted.</conversationText>
          <conversationComments>Appear only when Player has quest but not item.</conversationComments>
          <subNodes>
            <ContentNode idNum="13" orderNum="1" linkTo="0" nodeType="npc">
              <conversationText>Good luck!</conversationText>
              <conversationComments />
              <subNodes />
              <additionalData />
              <infoObjects />
            </ContentNode>
          </subNodes>
          <additionalData />
          <infoObjects />
        </ContentNode>
        <ContentNode idNum="0" orderNum="3" linkTo="5" nodeType="pc">
          <conversationText />
          <conversationComments />
          <subNodes />
          <additionalData />
          <infoObjects />
        </ContentNode>
        <ContentNode idNum="0" orderNum="4" linkTo="6" nodeType="pc">
          <conversationText />
          <conversationComments />
          <subNodes />
          <additionalData />
          <infoObjects />
        </ContentNode>
      </subNodes>
      <additionalData />
      <infoObjects />
    </ContentNode>
    <ContentNode idNum="1" orderNum="2" linkTo="0" nodeType="npc">
      <conversationText>Hello Player!</conversationText>
      <conversationComments>Appears if Player is speaking to Npc for first time</conversationComments>
      <subNodes>
        <ContentNode idNum="4" orderNum="1" linkTo="0" nodeType="pc">
          <conversationText>What is your name?</conversationText>
          <conversationComments />
          <subNodes>
            <ContentNode idNum="10" orderNum="1" linkTo="0" nodeType="npc">
              <conversationText>Bob</conversationText>
              <conversationComments />
              <subNodes>
               <ContentNode idNum="0" orderNum="1" linkTo="5" nodeType="pc">
                  <conversationText />
                  <conversationComments />
                  <subNodes />
                  <additionalData />
                  <infoObjects />
               </ContentNode>
              </subNodes>
              <additionalData />
              <infoObjects />
            </ContentNode>
          </subNodes>
          <additionalData />
          <infoObjects />
        </ContentNode>
        <ContentNode idNum="5" orderNum="2" linkTo="0" nodeType="pc">
          <conversationText>Got any quests?</conversationText>
          <conversationComments>Appears if player has not accepted quest</conversationComments>
          <subNodes>
            <ContentNode idNum="7" orderNum="1" linkTo="0" nodeType="npc">
              <conversationText>Yes, fetch me something.</conversationText>
              <conversationComments />
              <subNodes>
               <ContentNode idNum="8" orderNum="1" linkTo="0" nodeType="pc">
                  <conversationText>Ok</conversationText>
                  <conversationComments>Player accepts quest</conversationComments>
                  <subNodes />
                  <additionalData />
                  <infoObjects />
               </ContentNode>
               <ContentNode idNum="9" orderNum="2" linkTo="0" nodeType="pc">
                  <conversationText>No thanks</conversationText>
                  <conversationComments />
                  <subNodes />
                  <additionalData />
                  <infoObjects />
               </ContentNode>
              </subNodes>
              <additionalData />
              <infoObjects />
            </ContentNode>
          </subNodes>
          <additionalData />
          <infoObjects />
        </ContentNode>
        <ContentNode idNum="6" orderNum="3" linkTo="0" nodeType="pc">
          <conversationText>Goodbye</conversationText>
          <conversationComments />
          <subNodes />
          <additionalData />
          <infoObjects />
        </ContentNode>
      </subNodes>
      <additionalData />
      <infoObjects />
    </ContentNode>
</subNodes>
<additionalData />
<infoObjects />
<VersionNumber>2</VersionNumber>
</Conversation>[/CODE]

About the xml:

A couple elements are superfluous (as a standalone application), such as "<additionalData />" and "<infoObjects />". They're always empty.

An "idNum" value of 0 means that an element is copied (as a link) from another element (whose idNum is expressed in the "linkTo" value)

The comment element provides an opportunity to insert condition|action parameters

Any general thoughts/suggestions would be appreciated. I've begun working on it, and I'll post my capx progress once I've locked onto a directin. Thanks!
B
7
S
1
G
1
Posts: 9
Reputation: 560

Post » Sat Oct 26, 2013 9:32 pm

Here's a simplified template:

[CODE]Conversation xmlns:xsi="can't post urls" xmlns:xsd="can't post urls">
<subNodes>
    <ContentNode idNum="1" orderNum="1" linkTo="0" nodeType="npc">
      <conversationText>NpcEntry</conversationText>
      <conversationComments>NpcEntryComment</conversationComments>
      <subNodes>
        <ContentNode idNum="2" orderNum="1" linkTo="0" nodeType="pc">
          <conversationText>PlayerReply</conversationText>
          <conversationComments>PlayerReplyComment</conversationComments>
          <subNodes />
          <additionalData />
          <infoObjects />
        </ContentNode>
      </subNodes>
      <additionalData />
      <infoObjects />
    </ContentNode>
</subNodes>
<additionalData />
<infoObjects />
<VersionNumber>2</VersionNumber>
</Conversation>[/CODE]
B
7
S
1
G
1
Posts: 9
Reputation: 560


Return to How do I....?

Who is online

Users browsing this forum: No registered users and 28 guests