Structure of the TSA: Chain of Satinav dialog system?

  • #1, by CopperSaturday, 03. January 2015, 13:47 10 years ago
    Hi all, I wonder if anyone can explain how the dialog system used in Daedelic's Chains game works under the hood? (Not asking for guild secrets, so feel free to be vague!)

    Essentially, I'd like to do something similar with dialog presented in an over-the-shoulder perspective, including mid shots for normal conversation, and close ups for the bigger/more intense emotional moments, but I'm not sure on exactly how to set this up. (I'm guessing it involves lots of Lua scripting though, based on the info I dug up so far, but entering text into the dialogue system isn't a huge issue at the moment, at least while I'm working on a proof of concept.) I'm most curious about how this system integrates with regular Characters and Scenes (if at all).

    I'd also like to implement something along the lines of a Broken Sword style dialog system, with a horizontal list of icons for topics of conversation - this would also mean doing some custom scripting, right?

    Newbie

    6 Posts


  • #2, by SimonSSaturday, 03. January 2015, 15:02 10 years ago
    Hi, that's a very time consuming thing. Basically it's an interface with the structure on it and fields for the text. Daedalic had the dialog choices in external files, using the builtin system at the same time will be complicated as this does not allow positioning, if you only have a horizontal list, you could use it but you still need specify your images somewhere (like in Harveys New Eyes). You would need your own way to block user interaction (if your interface is full size that would be enough).

    You basically could do a main loop that is checking if there was a dialog started, that is in the field VGameDialog. Then clear it again and display your own system with the parts there. The dialog parts can be fetched with VDialogDialogParts. Look under http://wiki.visionaire-tracker.net/wiki/Data_Structure and Dialog Parts. But you would need to rebuild all the logic done there, like next dialog, keep on level, all that stuff.

    Thread Captain

    1582 Posts

  • #3, by afrlmeSaturday, 03. January 2015, 16:18 10 years ago
    Yes you would have to build your own dialog system, if you wanted to do something like what Daedalic created for Chains of Satinav, or even if you wanted to create an icon based system like in the Broken Sword games.

    Unfortunately the VS dialog system isn't very flexible. I don't think you can really improve it all that much with Lua script either...

    P.S: I think you could create a custom dialog system without Lua script, by using an interface & various conditions, values & if queries & images or display object text action parts.

    P.P.S: I only skimmed the text you had written. The lip syncing of the characters was done with lua script & tables containing the frame index values of each text which represented the phonetic mouth/face expression. If you combined narration text & controlled the character animation using pause values between when each animation needed to be played/changed then you would be able to control it more dynamically. Display text action part will automatically trigger the talk animation of a character which is not very dynamic/controllable.

    For the close-ups themselves you would have to zoom in using the shader or switch to a new scene containing the close-up animations/images.

    Imperator

    7285 Posts

  • #4, by CopperSaturday, 03. January 2015, 17:06 10 years ago
    Cool, thanks for the feedback. SimonS, that's really useful, exactly what I wanted to know regarding interrupting the default and building a new system - I'll do some experiments with interfaces to test stuff out, and see if it's something that's worth pursuing myself, or better contracted out to a more experienced interface developer (if I can find one).

    AFRLme, specifically for the closeups, would you recommend that the close-up images of the characters be simply scene objects, or actual characters - for instance, using a special 'conversation' outfit? I'm not sure it makes much difference, but I could be ignoring something obvious (and would like to avoid redoing a lot of busy work if so!) I guess it depends on how things are set up, right, so there's no hard 'right' answer?

    I'll do a few tests there myself in the meantime.

    Newbie

    6 Posts

  • #5, by afrlmeSaturday, 03. January 2015, 17:39 10 years ago
    Hmm Character would be better I think because you could move the character between scenes. If you used scene objects then you would be using more space/information.

    I don't know if you intend to lip sync on the close-up conversation scenes but just so you know, it is entirely possible to create the entire talk animation inside of a single "character animation" (manually triggered animation) & then control which frame(s) should be currently playing, or you could create each expression, talk animation as individual animations. Or if you aren't bothered about it being accurate then you could just set animation to play in random order which will give it the illusion of being more dynamic than it is. There are loads of different approaches & methods that you could use for this.

    The scene object method, might be more desirable if you intend on using characters with unique poses/position placements in each scene. In Chains of Satinav they had characters sat down & leaning against things etc. So I guess it would be up to you & the situation.

    Imperator

    7285 Posts

  • #6, by CopperSaturday, 03. January 2015, 20:55 10 years ago
    Yeah, I think I'm already being far to ambitious, so I don't think I'll be going for any special poses. (At the moment I'm going to be sticking to subtle facial animations / no lipsync or VO, as in the Banner Saga, for example.)

    However, character conversations are going to be one of the main puzzles in the game, so I do want players to get feedback when they're saying the right/wrong thing, even if via a cool/warm visual effect. So I will have to get friendly with the shader commands!

    Anyway, thanks for the helpful advice, I'll try and knock something out with placeholders, and document what I did for anyone else interested.

    Newbie

    6 Posts

  • #7, by CopperFriday, 09. January 2015, 22:36 10 years ago
    For a pure Broken Sword style dialogue interface, I'm thinking it might be possible to create it as a sort of inventory, which is filled automatically when dialogue starts.

    Topics can be removed from the inventory when exhausted, new ones added as fresh topics come to light, etc. You can even have inventory combination puzzles - a topic of 'who is the murderer' and a bunch of suspicious characters - add together to accuse them, etc.

    I'll try and work on a prototype based on that assumption over the weekend, nothing fancy.

    Newbie

    6 Posts