News:

Welcome to the new Sinister Design forums!

Main Menu

Telepath Tactics dialog editor

Started by CraigStern, January 30, 2013, 10:50:36 AM

Previous topic - Next topic

CraigStern

So! I've been working on a dialog editor within the Telepath Tactics map editor, and it's coming along really well so far.  ;)
Here's what it looks like right now:


The conversation starts empty...



...then you right-click to add your first dialog branch...



...and before you know it, you're editing a fully-fledged dialog tree! :)


Ertxiem

It's a great idea... and now I wonder if there will be fans creating campaigns using the Dialogue Editor and the Map Editor. Hint hint ;)
Ert, the Dead Cow.
With 2 small Mandelbrot sets as the spots.

CraigStern

That's the plan. ;)

Update: different conversations are now labeled and grouped by their associated trigger:


CraigStern

Aaaaand one more update: changing a dialog branch's trigger now automatically sticks that branch onto the end of the associated conversation; or, if there isn't one already, creates a new conversation for that trigger. (This, incidentally, is how you make multiple triggered conversations within a scene!)

Also, for the sake of visual clarity, I made it so the dialog map auto-highlights a dialog branch when you are editing it in a pop-out window.

There are only two changes I feel I have to make to the dialog editor before it will be complete, those being a Duplicate and a Delete function (for when you want to auto-copy-paste or delete a dialog branch).

CraigStern

Work has begun on a custom variable system to allow players to create, set and check custom variables from within the dialog scripting system. (You know, in case you want player choices to have consequences that stretch beyond a singular branch in the conversation.) ;)

CraigStern

Aaaaaand we're go! You can now define your own variables and modify / check them through dialog. As a test, I used this system to add money to a campaign; you can use this to simulate stores and transactions via dialog.

You can also now modify custom variables through use of items (meaning that you can create items that increase a custom variable--like, say, "Money".) ;)

ArtDrake

I can see this working very well with the idea of gaining or losing favor with certain factions, prompting either battles with them, or for their people to join your team. Then, if we tie factions to various competing gods or pantheons, well, we could implement items like prayer stones, to gain favor with a particular deity and their corresponding faction.

Oh! Or even better, you could have the progression of time! We could implement an open-world-type exploration system [setting new destinations from various locations], with various places to visit, but each time you travel, you lose a certain number of days [time taken to travel], and if the time counter reached zero, that would prompt a battle with forces you were fleeing from! And then to compensate for the fact that the enemy is moving as well, you could encourage the player to travel away from the approaching forces by increasing the amount of time they have left as they move forward! [think FTL if you are familiar with that, with an approaching rebel fleet you must flee -- they represent difficult and taxing battles it's preferable not to fight, so you just proceed onwards to the next sector]

And then, and then... if you have cutscene before a battle, assuming that when you say you can really simulate stores via dialog like this, this means the custom variables can lead you to get items... you could recieve bonus items based on faction relations/divine favor/anything else.

Or just on a specific battle-wise basis, we could have different versions of a battle given different values of these numbers -- like, a group of hostiles approaches, and we tell them that we have the favor of Valus, the god of courage and war, on our side, and a bolt of lightning cracks across the sky as we do so if our favour is high enough... and a certain number scatter, making the battle easier.

For a more sliding-scale approach, you could have the obvious implementation of karma or reputation, where your actions make you feared or loved, evil or good. I mean, I get the impression from your blog posts that that's not really your thing, but it's still a possibility.

If attacks and techniques can be bestowed via dialog, that opens up a new avenue for gaining techniques relating to your choices in-game, along the same lines as before -- who you side with, but any other concepts could work as well...

On an altogether different note, one could maintain a separate running total that could later translate into money [like upon defeating certain enemies/battles, you have the chance to pick up their shell, which you can sell back in town... or like gaining bounty rewards to turn in after defeating known outlaws or bandits!].

Oooh! Or party happiness! Depending on your actions, members of the party could become upset with you and leave, and it wouldn't have to be just due to one event -- cumulative annoying incidents could culminate in one last straw that broke the camel's back.

And then, this is kind of a big and then... Craig, the only thing that could possibly introduce more gameplay depth in the same way would be if we could get and set the stats of specific members [usually the team leader would be the one in mind] or of the whole team, in the same way as with these custom variables. Then we could truly have some faction-related, divine-favour-related, or [if we included a tavern+rest+energy/endurance system] weariness/hunger-related buffs and debuffs!

Now, just to make sure you get what I'm saying, I'm not asking for all of these amazing features [with the possible exception of the getting/setting character stats maybe possibly please?]. No way. I'm saying that by giving us these amazing custom variables, you've given us the power to make all of these things happen. The pronoun "you" is only used in the impersonal sense. So, thank you so much for giving your game the potential for so much more depth [particularly as it pertains to interactions outside of the battlefield].

CraigStern

Everything you just wrote is accurate. ;)

It will be a bit of a pain to code, just purely because of how many stats there are to cover, but I think direct access to character stats might be a possibility at some point.

ArtDrake

All of this being the case, I shall definitely start work on a mod as soon as possible [not because I think the main game will be lacking, but because it would be an opportunity for me to work creatively on an amazing game -- I'm not particularly great at programming, but I'm decent at developing gameplay concepts], primarily integrating roguelike elements [again, passage of time would be fun] and then maybe just a little bit of everything else that this custom variable system has to offer.

I suppose that if it would take a lot of work to include stat getting and setting, I wouldn't want it to detract from any of the many important objectives I'm sure you've got going.

mirromaru

Aw, I'm so excited for this! Finally I will be able to make my own campaigns although I lack programming skills.

ExplodingBanana

Quote from: CraigStern on February 02, 2013, 11:32:38 AMAs a test, I used this system to add money to a campaign; you can use this to simulate stores and transactions via dialog.
The editor seems pretty flexible already. Will it be able to trigger dialogue when two characters are next to each other? Like the banter in Fire Emblem. It's very easy to see a dating sim (or whatever inter-character subplot you want) created with this system. One feature that could greatly widen the scope of exotic uses for this dialogue editor would be a random number function in the script. Obviously there's some sort of if-else system in place, since otherwise a store wouldn't be much of a store.

CraigStern

Explodingbanana: a random number function is definitely planned. There is not yet a voluntary "Talk" trigger for adjacent characters who have dialog together, but that's something I'd love to add.

If-then statements are currently supported with regard to both character stats (IfStatGoTo) and custom variables (IfValGoTo)--if the defined conditions are met, you can direct the the dialog to go to a certain branch where other scripts may be run. Check pages 23-25 of the manual for more info on those. :)

ExplodingBanana

Quote from: CraigStern on May 02, 2013, 01:24:53 PMCheck pages 23-25 of the manual for more info on those. :)

Ooh. A lot of good information there.  :) I'm not sure if there's a general modding thread available yet, so I'll just dump all my thoughts right in this post.

I was very impressed by Lilarcor back in BGII so I quickly thought about a sentient sword. I'd like for it to have effects other than just random comments, so it would have to track its state and carry along the whole dialogue tree. Copy-pasting the whole tree to every single scene would work - However, is there any way to link another dialogue script file to be appended during load up? And while we're at it, is there any way for the item to update itself for example at the end of every battle or after each kill, or should it be manually triggered with an OnCharDeath script for every enemy? I was hoping that the weapon could track kills made with it (or whatever it needs) and initiate dialogue only after a set of requirements are fulfilled.

Checking out the Attacks portion of the modding guide, I spotted the AOE ranges. Trying to decipher the meaning of the various range descriptions, I thought about having all the ranges as a list of vectors. It could treat whatever direction as 'forward' - For example to the right. Then the bowman attack range would be [(2,0), (3,0), (4,0)]. Additionally it could have a setting for symmetry, which then replicates the range for every direction. It also allows for more variety in attack ranges, for example an attack could have a range of [(2,-1), (2,1)], which means it targets like a chess knight two squares forward and one to the side. This would require another parser and all the additional stuff, though...

The Conditions part had weather. I think if the sword mentioned above gets mad, it should change the weather to Fire, right? :) It only speaks of setting the weather during scene loading, so I'm not sure if that works or not.

CraigStern

Quote from: ExplodingBanana on May 03, 2013, 07:51:27 AMis there any way to link another dialogue script file to be appended during load up?

Yes: just stick the dialog in PersistentDialog.xml, and it will be triggerable in every scene in the game.

Quote from: ExplodingBanana on May 03, 2013, 07:51:27 AMAnd while we're at it, is there any way for the item to update itself for example at the end of every battle or after each kill, or should it be manually triggered with an OnCharDeath script for every enemy? I was hoping that the weapon could track kills made with it (or whatever it needs) and initiate dialogue only after a set of requirements are fulfilled.

OnCharDeath doesn't currently provide a way to check for the method of death--but in theory, once it does, you'd use SetVal to increase a custom variable (say, SentientSwordDeaths) by 1 each time the conditions are met.

Quote from: ExplodingBanana on May 03, 2013, 07:51:27 AMChecking out the Attacks portion of the modding guide, I spotted the AOE ranges. Trying to decipher the meaning of the various range descriptions, I thought about having all the ranges as a list of vectors. It could treat whatever direction as 'forward' - For example to the right. Then the bowman attack range would be [(2,0), (3,0), (4,0)]. Additionally it could have a setting for symmetry, which then replicates the range for every direction. It also allows for more variety in attack ranges, for example an attack could have a range of [(2,-1), (2,1)], which means it targets like a chess knight two squares forward and one to the side. This would require another parser and all the additional stuff, though...

That's one idea. I was just thinking I'd move the AOE reticle table to an XML file so players can add their own AOE configurations.

Quote from: ExplodingBanana on May 03, 2013, 07:51:27 AMThe Conditions part had weather. I think if the sword mentioned above gets mad, it should change the weather to Fire, right? :) It only speaks of setting the weather during scene loading, so I'm not sure if that works or not.

That would work--you'd just need to use the ChangeCondition action. I forgot to add this into the manual before, but it's really simple. Other than typing ChangeCondition, all you do is use the exact same parameters you'd use within the Condition tags. For instance:

ChangeCondition     Weather,Fire

will cause the map to start raining fiery sparks.

ExplodingBanana

Quote from: CraigStern on May 03, 2013, 09:24:57 AMYes: just stick the dialog in PersistentDialog.xml, and it will be triggerable in every scene in the game.

Alright. All that stuff sounds good.

I ran into some issues with installing the map editor, though. In Linux, the game installer prompts for root password and refuses to install without it. I think you really, really should change that so that it doesn't need root access. In the end, the game directory and the map editor directory are both owned by root and don't give out write permissions to anyone else, which forbids anyone else from pasting stuff to the directories unless you sudo chown it or whatever. I'm not in the habit of running around with root access available, and hopefully no one else is either. :)