Please login or register.

Login with username, password and session length
Advanced search  

News:

Forum rules - please read before posting, it can save you a lot of time.

Author Topic: Dialogue  (Read 5593 times)

0 Members and 1 Guest are viewing this topic.

Scout

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 29
  • Currently in development...
    • View Profile
    • Juniper Games
Dialogue
« on: December 28, 2004, 08:53:33 PM »

Please forgive me if this has been asked before.

I'm considering using the Wintermute engine for a project I'm in the early stages of.  Many aspects are pretty sophisticated and I've already set up an initial room with four levels of paralax scrolling, which works very well.  Now I come to putting together the character interactions and I begin to ask questions of the system.  So, I thought I would post here in the hope of finding answers that will convince me to continue with this system.

1.  How do you have more than two characters in a conversation?

2.  Will there be a development of the system so that dialogue scripts can be made more readable?  For example:
Bill: Hi Ted.
Ted: Hi Bill, how's it going?
(I've been spoilt in the past by having tools provide me with this way of scripting through the use of aliases.)

3.  Is it possible to export the dialogue only for recording purposes or for translation purposes?  Is it then possible to re-import it so that it slots into the game at the right places?  How do you keep track of the lines of dialogue in these instances when there seems to be no numbering of the dialogue lines?

Just trying to think ahead...  :)

Thanks for your time.
Logged

Mnemonic

  • WME developer
  • Administrator
  • Addicted to WME forum
  • *
  • Karma: 41
  • Offline Offline
  • Gender: Male
  • Posts: 5683
    • View Profile
    • Dead:Code Site
Re: Dialogue
« Reply #1 on: December 28, 2004, 09:57:31 PM »

Hello and welcome,

Quote
1.  How do you have more than two characters in a conversation?
Since all the characters are "objects" (either actors or entities), and talking means just calling their Talk methods from scripts, it doesn't really matter how many characters participate in a conversation. It's only a matter having multiple actors/entities in one scene. Then you simply make them talk in a script:

actor.Talk("Hey guys, how are you?");
Bill.Talk("I'm fine.");
Ted.Talk("I'm not.");
actor.Talk("Oh, I see.");

(providing 'Bill' and 'Ted' are actor/entity object previously loaded into the scene)


Quote
2.  Will there be a development of the system so that dialogue scripts can be made more readable?
This has been discussed before, indeed. It's a little tricky to find the right balance between making the dialogs easy to write and preserving all the power of scripting at the same time. And since I don't see any way of combining these two, probably the only solution will be to have two separate ways of creating dialogs. A simple one, which could be supported by some GUI tool or some simple syntax (the way you suggested). This method would only support some simple conditions/branching etc. Then there would be the "classical" way, i.e. scripting, which would provide all the scripting power when needed.

Currently only the scripting way is available, although I believe FoveverDreams guys already developed their own simplified dialog system on top of scripting, and ClémentXVII is reseraching possibilities of using XML for writing dialogs.


Quote
3.  Is it possible to export the dialogue only for recording purposes or for translation purposes?  Is it then possible to re-import it so that it slots into the game at the right places?  How do you keep track of the lines of dialogue in these instances when there seems to be no numbering of the dialogue lines?
I have developed a tool for this, but I didn't release it to public yet, because it's still quite raw and I'd like to make it a little more user-friendly before releasing it. But it's usable and has been used in two games already.
This tool scans the relevant project files and extracts all strings. It also automatically adds string-table IDs to all of the original strings. So the idea is not to deal with string-tables while developing the game, but only extract everything once the game is finished. All the subsequent changes (proof reading, translations) are only done in the string table and the original texts only work as placeholders.

I can make the tool available, though, if anyone needs it anytime soon.
Logged
Yes, I do have a twitter account
Please don't send me technical questions in private messages, use the forum. ::wave

Scout

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 29
  • Currently in development...
    • View Profile
    • Juniper Games
Re: Dialogue
« Reply #2 on: December 29, 2004, 10:27:21 AM »

Hello and welcome,
Thanks.

Quote
Since all the characters are "objects" (either actors or entities), and talking means just calling their Talk methods from scripts, it doesn't really matter how many characters participate in a conversation. It's only a matter having multiple actors/entities in one scene. Then you simply make them talk in a script:
Is it better to refer to all characters by their names rather than using the self.Talk() command?  Will this be better for recording and translation purposes further down the line?

Quote
This has been discussed before, indeed. It's a little tricky to find the right balance between making the dialogs easy to write and preserving all the power of scripting at the same time. And since I don't see any way of combining these two, probably the only solution will be to have two separate ways of creating dialogs. A simple one, which could be supported by some GUI tool or some simple syntax (the way you suggested). This method would only support some simple conditions/branching etc. Then there would be the "classical" way, i.e. scripting, which would provide all the scripting power when needed.

Currently only the scripting way is available, although I believe FoveverDreams guys already developed their own simplified dialog system on top of scripting, and ClémentXVII is reseraching possibilities of using XML for writing dialogs.
I think I over-simplified what I was saying.  The system I previously used still had other code wrapping up the dialogue and interspersing anims, setting variables and the like.  When the files were built, any scripts that were created were converted/interpreted into something more standard.  What it meant was that dialogue could be written in Word, say, and then copied and pasted into the scene, code inserted and Bob's your uncle.

Quote
I have developed a tool for this, but I didn't release it to public yet, because it's still quite raw and I'd like to make it a little more user-friendly before releasing it. But it's usable and has been used in two games already.
This tool scans the relevant project files and extracts all strings. It also automatically adds string-table IDs to all of the original strings. So the idea is not to deal with string-tables while developing the game, but only extract everything once the game is finished. All the subsequent changes (proof reading, translations) are only done in the string table and the original texts only work as placeholders.
This is exactly the kind of approach that we used.  Each language file was a text file with thousands of numbered lines.  The voices directories would contain thousands of numbered wav files, so it all tied up.

It sounds as though you've pretty much thought of everything.  :)
Logged

Mnemonic

  • WME developer
  • Administrator
  • Addicted to WME forum
  • *
  • Karma: 41
  • Offline Offline
  • Gender: Male
  • Posts: 5683
    • View Profile
    • Dead:Code Site
Re: Dialogue
« Reply #3 on: December 29, 2004, 12:33:05 PM »

Is it better to refer to all characters by their names rather than using the self.Talk() command?  Will this be better for recording and translation purposes further down the line?
No, not really. At least currently the name isn't used for anything else but making the script more readable.
Logged
Yes, I do have a twitter account
Please don't send me technical questions in private messages, use the forum. ::wave

Scout

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 29
  • Currently in development...
    • View Profile
    • Juniper Games
Re: Dialogue
« Reply #4 on: December 29, 2004, 09:13:16 PM »

Then you simply make them talk in a script:

actor.Talk("Hey guys, how are you?");
Bill.Talk("I'm fine.");
Ted.Talk("I'm not.");
actor.Talk("Oh, I see.");

(providing 'Bill' and 'Ted' are actor/entity object previously loaded into the scene)
I tried this and it didn't work.  Do I need to declare the entity or actor in the script that's running.  Also, if I use anything other than self for the object the player is interating with it gives an error.
Logged

Mnemonic

  • WME developer
  • Administrator
  • Addicted to WME forum
  • *
  • Karma: 41
  • Offline Offline
  • Gender: Male
  • Posts: 5683
    • View Profile
    • Dead:Code Site
Re: Dialogue
« Reply #5 on: December 29, 2004, 09:52:46 PM »

Yes, these variables need to be declared. It depends on how the other characters are created. For example, if they are part of the scene, you will need to call something like this in the beginning of the script:

var Ted = Scene.GetNode("ted");

This will declare a new variable called "Ted" and assign it a scene node named "ted".

The "actor" variable is a global variable available in all scripts.
The "self" (or preferrably "this") pseudo-variable represents the object whose script is currently being executed. It's there for your convenience only, so that you don't have to declare any extra variable.
Logged
Yes, I do have a twitter account
Please don't send me technical questions in private messages, use the forum. ::wave

Scout

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 29
  • Currently in development...
    • View Profile
    • Juniper Games
Re: Dialogue
« Reply #6 on: December 30, 2004, 10:10:29 AM »

Thanks.  That worked.  (This shows that I'm not really a programmer.  :) )
Logged

Jerrot

  • Global Moderator
  • Addicted to WME forum
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 690
    • View Profile
Re: Dialogue
« Reply #7 on: December 30, 2004, 11:24:13 AM »

Thanks.  That worked.  (This shows that I'm not really a programmer.  :) )

No, you already mentioned the solution:

Quote
Do I need to declare the entity or actor in the script that's running.

So you're an expert on "theoretical computer science" actually. :) (I disliked that a lot in my first study... I always had worse solutions, but they worked. ;) !)
Logged
Mooh!

Scout

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 29
  • Currently in development...
    • View Profile
    • Juniper Games
Re: Dialogue
« Reply #8 on: December 30, 2004, 11:29:39 AM »

I like to think I understand the principles, I rarely know the "grammar" of what I should be looking for or how to approach looking for it.  Scene.GetNode would never have occurred to me.

Is there a good resource of these kind of examples anywhere?
Logged
 

Page created in 0.037 seconds with 23 queries.