RPGDXThe center of Indie-RPG gaming
Not logged in. [log in] [register]
 
Is there a visual dialog tree editor out there?
 
Post new topic Reply to topic Goto page 1, 2  Next 
View previous topic - View next topic  
Author Message
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Mon Aug 04, 2008 10:29 am    Post subject: Is there a visual dialog tree editor out there? [quote]

I'm looking for a tool that helps me to see a dialog tree - like a box for each group of dialog options, and then links to the boxes that follow, depending on the choices the player makes. So that the whole dialog flow spans up like a tree or graph structure.

Does anyone know such a tool? Best if it's free :)
Back to top  
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Thu Apr 02, 2009 10:29 am    Post subject: Situation/dialog flow simulation and editor [quote]

It's been a while since I posted my question. I couldn't find anything suitable and decided to start working on a dialog or situation flow simulator of my own.

It's a simple data driven simulation, that maintains two statistics for the situation (or the NPC involved in a dialog). Situations are presented to the player as text. Responses to the situation will alter the statistics, and based on response chosen (optional) and the current situation statistics, the followup situation will be calculated.

This is work in progress, and in a very early stage of development. Particularly the editor needs way more work to be usable.

The simulator has a very simple UI, just enough to test the flow of situations:



The editor will allow graphical editing of situation (dialog) graphs. This is an early preview, lacking a menubar, toolbar and a lot of functions are not implemented yet. Just so much that a simple graph of situations can be entered:


(Click for full size)


The numbers besides the response boxes are the stat differences that will be applied upon choosing this response, the values in the link boxes are the response number (-1 for any response) and the stat intervals that will allow the situation as followup. So far only shows the first stat interval, second needs to be added.

Plans are to export the situation graph to some kind of XML files, in the hope that other applications can read and use them. On the other hand I'm not quite sure how reusable exactly my choice of simulation data will be.
Back to top  
DeveloperX
202192397


Joined: 04 May 2003
Posts: 1624
Location: Decatur, IL, USA

PostPosted: Thu Apr 02, 2009 1:47 pm    Post subject: [quote]

Looks cool!

I would be interested in seeing how you go about this.

If you do go with XML, do everyone a favor and do not use attributes in your tags. Its far easier to parse without attributes.

Keep up the good work! If you need someone who doesn't know the tool, to be a tester of your product's usability, just let me know. :)
_________________
Principal Software Architect
Rambling Indie Games, LLC

See my professional portfolio
Back to top  
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Thu Apr 02, 2009 3:08 pm    Post subject: [quote]

Currently in work:

- Loading and saving flow graphs (seems to work, I still suspect mistakes)

Next steps:

- Complete the editor UI
- Decide on the handling of the simulation stats
- Complete the simulation engine

Also I've prettified the editor looks a bit:
http://simugraph.gotdns.org/site/misc/diasim/editor_2.png

Regarding the XML:

I have tried to cheat a bit and used Java's inbuilt XMLEncoder class. This doesn't produce very nice XML, but it seems good enough for the editor's load and save features that I'm currently working on.

But there will be ways to get a clean and hopefully easy to parse XML export - finally I want to read that in other projects, too :P

After a bit of tidying the code, adding comments and so I guess I'll make it available open source. So far it is very kludgy, I wanted to see if the idea of such a data driven dialog simulation can work at all, and I wanted to see that soon ;)

DeveloperX wrote:

Keep up the good work! If you need someone who doesn't know the tool, to be a tester of your product's usability, just let me know. :)


At the moment it even crumbles under a strangers looks, but once it's more stable I'll put up a demo version for testing.
Back to top  
DeveloperX
202192397


Joined: 04 May 2003
Posts: 1624
Location: Decatur, IL, USA

PostPosted: Thu Apr 02, 2009 6:47 pm    Post subject: [quote]

New interface is looking better already :)

Use whatever you need to for internal use...but export clean, crisp, formatted, easy to parse xml if you decide to use xml. :D

You should setup your project on gitorious.org :)

LOL @ your last statement.

Keep up the great work Hajo.
Its always cool to see progress being made on stuff!
_________________
Principal Software Architect
Rambling Indie Games, LLC

See my professional portfolio
Back to top  
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Fri Apr 03, 2009 12:48 pm    Post subject: [quote]

Thanks :)

Gitorious.org looks interesting. I was wondering if I should register the situation flow simulator at Sourceforge, but maybe gitorious is easier to use?

Loading and saving gave me a nightmare. But it works now ... this is what I dislike among programming, sometimes one searches bugs for hours, and just can't find the real reason for the problem :/ Anyways, it works now, and I can finally start to model situation and dialog flows.

Moving the boxes in the editor and creating new links and situations is more stable now, seems good enough for a testing release. Removing situations or links from a graph does not work yet, though, and I want to get that done before I put up a first test version - also the XML export does not work as intended yet (exports only the root node). I should get that done, too, I guess, otherwise it's pretty useless but for pushing colored boxes over the screen.
Back to top  
Verious
Mage


Joined: 06 Jan 2004
Posts: 409
Location: Online

PostPosted: Fri Apr 03, 2009 1:40 pm    Post subject: [quote]

Hajo wrote:
...this is what I dislike among programming, sometimes one searches bugs for hours, and just can't find the real reason for the problem...


Yeah, but you get a great sense of accomplishment when you resolve the issue.

Your Simulation Flow Editor looks interesting. I like the idea of points to open new conversation branches.
Back to top  
DeveloperX
202192397


Joined: 04 May 2003
Posts: 1624
Location: Decatur, IL, USA

PostPosted: Fri Apr 03, 2009 1:45 pm    Post subject: [quote]

Hajo wrote:
Thanks :)

Gitorious.org looks interesting. I was wondering if I should register the situation flow simulator at Sourceforge, but maybe gitorious is easier to use?

Loading and saving gave me a nightmare. But it works now ... this is what I dislike among programming, sometimes one searches bugs for hours, and just can't find the real reason for the problem :/ Anyways, it works now, and I can finally start to model situation and dialog flows.

Moving the boxes in the editor and creating new links and situations is more stable now, seems good enough for a testing release. Removing situations or links from a graph does not work yet, though, and I want to get that done before I put up a first test version - also the XML export does not work as intended yet (exports only the root node). I should get that done, too, I guess, otherwise it's pretty useless but for pushing colored boxes over the screen.


Avoid sourceforce ...they suck... (well thats not fair..its CVS and SVN that suck..not really source forge themselves)

git is FAR easier :D ....a thought though..what OS are you using to develop on? ...theres no easy git for winblows... :(

My workflow looks a lot like this for everything I do:
Code:

$ mkdir -p ~/Projects/projectname
$ cd ~/Projects/projectname
$ mkdir src include docs release engine
$ touch readme.txt changes.txt SConstruct
$ copylibrary ./engine
$ git init
$ git add .
$ git commit -a
project started
CTRL+O
CTRL+X
$ git push url-to-my-git-repository

I create my project directory tree, and then populate it with a few boiler plate files, and then I use a script I wrote to copy my game engine library into the project tree, and then I use git to initialize my local repository, and add my project directory to the local repository, and commit the changes, the "project started" is my commit name, and the CTRL+O writes the data to the commit file, and CTRL+X exits the nano editor.
Lastly I push the commit to the online gitorious.org repository.

:)

One piece of advice I can give that may help is to write your functionality in modules.
And to test each module outside your main code.
If you module relies on another module, its better to create an artificial interface to the dependent module inside your test code, that way you can test your modules separately.

The best modules do not assume that other modules exist.

Write an internal filesystem module, and test its save and load functionality. Once its working..you just add an interface to the module into your main code, and there you go. its working, no need to mess with it.
Need to extend your format? go work on the external module, and test it again...its much easier to do that, than it is to spend hours debugging code that was hacked into your main code to solve a problem..introducing more bugs that you may never find, or might break something vital in the process.

Design your modules separately. Thats the best advice I can give. :)


As for your interface; some things to think about if you haven't already:

Is your graph system scalable?
Can you zoom out to fit more components?
Can you scroll your graph view?
Is there a way to index your graph nodes, and search for them?
Is there an automatic-layout command, that repositions the nodes in an organized manner?
_________________
Principal Software Architect
Rambling Indie Games, LLC

See my professional portfolio
Back to top  
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Sat Apr 04, 2009 9:39 am    Post subject: [quote]

Verious wrote:

Your Simulation Flow Editor looks interesting. I like the idea of points to open new conversation branches.


In a larger framework, with NPCs involved there is the chance to store the oputcome of the last conversation - i.e. if you made a good impression to a NPC, next time the conversation might end with more a more positive outcome for you, because the followup situations were chosen differently this time.

Otherwise it only is interesting in fairly large and interconnected situation flows, where it's possible to reach a particular situation on different paths through the graph, and therefore have different values for the stats, so that followup situations have a different likelihood for each path.

So far it's all just theory, the editor just reached a state of completeness that I actually could try to model such flows. But at least today I'll be busy with other work. One of the next days I hope though to get back and finally try it :)

If it works it might be interesting for RPG designers, and maybe I'll be able to make it a helpful tool for game developers.
Back to top  
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Sat Apr 04, 2009 10:01 am    Post subject: [quote]

DeveloperX wrote:

One piece of advice I can give that may help is to write your functionality in modules.
And to test each module outside your main code.
If you module relies on another module, its better to create an artificial interface to the dependent module inside your test code, that way you can test your modules separately.

The best modules do not assume that other modules exist.


This is good advice. I guess I need to take better care of separation of code.

This time it's a rather small application, though. I have data objects, and views separated. Parts of the IO code are in the view objects, most of the IO happens in a XML library that comes with Java, though, so only the filename choosing part is really in my code.

Not much more in there yet.

DeveloperX wrote:

As for your interface; some things to think about if you haven't already:

Is your graph system scalable?
Can you zoom out to fit more components?
Can you scroll your graph view?
Is there a way to index your graph nodes, and search for them?
Is there an automatic-layout command, that repositions the nodes in an organized manner?


The plan was to create something super-simple, just enough to actually eneter such graphs. Scaling/zooming is very difficult with my toolkit, so that's a no. Scrollable it is, that will help to design larger graphs, but it has limits.

Indexing and searching might be added later. I must see how easy or difficult it will be to work with larger graphs and if such functions are needed.

If people start making IF novels with this tool, I'll have to redesign it a bit ;)

--------------------------------------

For those who want to see the state of the editor, I have uploaded a snapshot of the latest code stage. There are still things missing, there are a lot of bugs to be expected, but it might give a better idea than written description of how it will be.

Download

http://simugraph.gotdns.org/site/misc/diasim/situflow-0_11.zip

Installation

Unzip it. Windows users double-click "start.bat", Linux users use start.sh
Mac users and others, I'm sorry, don't know how to start java programs there, but maybe the scripts give you hints?

I tested this with Java 1.5.0, it should work with 1.6, too, I think.


Clicktool

If you click an empy place a new element will be placed. If you last clicked a situation, then you get a new link from this situation, if you had clicked a link last, then you get a new situation from that link.

The situation flow editor starts with an undefined situation. It is automatically selected, so if you click somewhere, you get a link box that is linked to the starting situation. If you click an emtpy place again, you get a new situation from that link.

To place a second link from the starting situation, just click the title area of the starting situation to select it, and click an empty space. You get a second link from the starting situation this way.

To delete a link or situation, use the X button in their top left. Orphaned situations or links cannot be re-linked currently, so be careful if you delete elements from the mid of a chain.

Facts

* You can get have number of links from a situation, but there can only one situation follow a link.
*The numbers besides the response boxes are stat modifiers (there are only two stats in the simulation)
* The first line in a link box states the response that triggers this links, -1 will allow any response.
* The second line in a link box gives the interval of the first stat that is required for this link.
* The third line in a link box gives the interval of the second stat that is required for this link.
* While planned for the future, it is not possible to create circular graphs with this version.

More words

I hope that loading and saving work. Deleting elements has not been tested very much and I suspect there will be problems. This is really just a preview, there is a lot to do, and most things, including the data format of saved situation flow graphs can change. There is an export function, but the XML that is produced doesn't seem useful yet, so consider that just a proof of concept, that will be replaced by something more useful.[/list]
Back to top  
DeveloperX
202192397


Joined: 04 May 2003
Posts: 1624
Location: Decatur, IL, USA

PostPosted: Sat Apr 04, 2009 1:46 pm    Post subject: [quote]

I wanted to report that your utility runs fine on my system. :)

OS: Ubuntu 8.04 Hardy Heron 64-bit Linux
RAM: 4GB DDR3
CPU: Intel Core 2 Duo 3.0Ghz
GPU: 512MB nVidia 8600M GS

Java:

java version "1.6.0_0"
OpenJDK Runtime Environment (build 1.6.0_0-b11)
OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)

Very easy to use. :)
Everything is nice and smooth. I like it a lot.
I can't wait to see it in a more usable state. :)

I created and deleted a bunch of graphs, tested saving and loading, and exporting to XML.

Everything works.

Okay, I gotta run for now. But I'll be back.
_________________
Principal Software Architect
Rambling Indie Games, LLC

See my professional portfolio
Back to top  
Verious
Mage


Joined: 06 Jan 2004
Posts: 409
Location: Online

PostPosted: Sat Apr 04, 2009 3:58 pm    Post subject: [quote]

Everything seemed to work for me with the latest version of Java installed (1.6.0_13-b03).
Back to top  
RedSlash
Mage


Joined: 12 May 2005
Posts: 331

PostPosted: Sun Apr 05, 2009 4:59 pm    Post subject: [quote]

I've tried it out, can't say I really understand how to use it though. Looks like a neat concept.
Back to top  
Hajo
Demon Hunter


Joined: 30 Sep 2003
Posts: 779
Location: Between chair and keyboard.

PostPosted: Mon Apr 06, 2009 8:47 am    Post subject: [quote]

Thanks for testing and the feedback :) Good to know that it runs on your systems, that gives hope that it will be usable for many people.

@RedSlash: I assume it will need a tutorial. On my todo list is also to give all UI elements tooltips, explaining what they are good for. The boxes themselves are pretty meaningless.

The XML export format bugs me. It's very convoluted and depends on the object and package names of the project, which is not good for reuse in other projects. I'll try to find a better solution there.

Short term plans:

- Review data formats
- Add comments, release source
- Add tooltips
- Complete the simulation, release an example dialog flow.
Back to top  
DeveloperX
202192397


Joined: 04 May 2003
Posts: 1624
Location: Decatur, IL, USA

PostPosted: Mon Apr 06, 2009 12:58 pm    Post subject: [quote]

Those goals sound like a good plan. :)
_________________
Principal Software Architect
Rambling Indie Games, LLC

See my professional portfolio
Back to top  
Post new topic Reply to topic Page 1 of 2 All times are GMT
Goto page 1, 2  Next 



Display posts from previous:   
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum