game engine gaming delta3d
p-51 open source GNU Lesser General Public License
Fedora Surface Tactics Visualization Plane Guard ChrAVE
Chromakeyed Augmented Virtual Environment CAVE Automatic Virtual Environment National Geospatial-Intelligence Agency Terrian Forward Observer PC Simulator FOPCSIM Shipboard Firefighting Trainer
backed by the U.S. military sourceforge eric johnson I/ITSEC Interservice Industry Training Simulation and Education Conference
Delta3D - Open source gaming & simulation engine
      Welcome to Delta3D | Login 
Friday, September 10 2010 @ 05:43 AM EDT 
MOVES Institute Naval Postgraduate School Naval Education and Training Command
  
IITSEC


AND     OR
 

 
 Home »  SimCore Support »  dtDirector
     Prev TopicNext Topic          Printable Version
dtDirector Views: 3758
 Monday, December 14 2009 @ 01:17 PM EST

Someone has been watching the check ins that I have been making on a branch of Delta3D and brought up the question, what is dtDirector?

dtDirector is something that has been on my mind for a while, why does Delta3D not have a visual scripting language like Unreal, BBN, or Crytek? So, I proposed a kismet-like node based scripting system and put it into action recently.

dtDirector allows you to "Direct" the course of events in your game through a visual scripting interface that will hopefully be easy to use. Director can also be used for AI scripts, shader graphs, and whatever else we can think of (details on those are not defined yet).

Director is a node based chaining system. Chains begin when an event happens, for example, a collision occurs or a key is pressed. An action node that is next in the chain will activate, perform an operation, and then continue the chain to the next action. Chains can also be split into multiple chains running in parallel.

All nodes can be custom created. If you've ever created your own custom actor classes, it is the same thing, you write your own node library and link it to your script. There are three node types, Events, Actions, and Values. An event always starts a chain, it needs to be triggered somewhere in your application based on it's own circumstances. An action performs an operation, it can be as simple or complex as you make it and should be made to continue the chain once it's done. A value node can be connected to nodes that use values, these just store a value of a particular type or can dynamically retrieve values in your application if you want.

If you would like to check it out, you can find it here:
https://delta3d.svn.sourceforge.net/svnroot/delta3d/branches/dtDirector

CMake it with the "Director" option flagged, open up STAGE and load in the "Director Tool" plugin. Once you do that, there should be a toolbar icon that will allow you to open up the editor.

Take a look and let me know what you think! I'm always open to comments or suggestions.




Jeff Houde -Programmer peon at Delta3D

 Quote   

 
 Monday, December 14 2009 @ 02:15 PM EST

Interesting, this should allow for much more complex simulations to be created faster. Out of curiosity, how much control does it actually give, for instance could it be used to control say, an aircraft's avionics?

 Quote   

 
 Monday, December 14 2009 @ 02:31 PM EST

[Quote  by:  th3flyboy] Interesting, this should allow for much more complex simulations to be created faster. Out of curiosity, how much control does it actually give, for instance could it be used to control say, an aircraft's avionics?

It could, but it would probably be faster and easier just to write that stuff in your app. Director is mostly for high level scripting. Example, You can play an open door animation when a trigger volume is stepped in, or queue a helicopter to fly by when you walk in a certain area.

The actual aerodynamic and physics would be done in your engine, the script would be used to activate those effects.

Another example, ragdoll physics would be internal to your engine, but a director action node could be used to turn that physics on or off on your actor whenever you want it.

--[Edit]--
It really is a balance between how simple you want your script to be, and how much functionality you want to control. For example, if you wanted to add 5 to your int value and then multiply it by 2, you could create two nodes, one each for each operation, or you could create a single node that does both at the same time. With the first, you need to create two nodes in your script to perform the operation you want, but you can always choose one or the other if you want to elsewhere. The second would only require a single node created in your script, but it is less flexible elsewhere.


Jeff Houde -Programmer peon at Delta3D

 Quote   

 
 Monday, December 14 2009 @ 03:11 PM EST

What I was thinking was more along the line of something like:
Retrieving the altitude of the aircraft (m_altitude) and then displaying the altitude on the altimeter, moving the needle and even changing the text on the HUD. Or possibly setting it for for instance a fire control setup:
on pickle -> is masterarm on ->
if true -> allow firing
if false -> deny firing

or possibly setting up an FLCS where I can ping the current G-forces, and if I go over a certain amount, it restricts me from controlling the aircraft. The physics would all be done engine side, however the sanity check and the control surface manipulations would be handled in a script.

In other words, i'm talking about systems, mfds, gauges, and buttons/switches, not flight modeling, although some flight modeling could also be scripted as well.

 Quote   

 
 Monday, December 14 2009 @ 03:38 PM EST

[Quote  by:  th3flyboy] What I was thinking was more along the line of something like:
Retrieving the altitude of the aircraft (m_altitude) and then displaying the altitude on the altimeter, moving the needle and even changing the text on the HUD. Or possibly setting it for for instance a fire control setup:
on pickle -> is masterarm on ->
if true -> allow firing
if false -> deny firing

or possibly setting up an FLCS where I can ping the current G-forces, and if I go over a certain amount, it restricts me from controlling the aircraft. The physics would all be done engine side, however the sanity check and the control surface manipulations would be handled in a script.

In other words, i'm talking about systems, mfds, gauges, and buttons/switches, not flight modeling, although some flight modeling could also be scripted as well.

Yes, absolutely! that is exactly what it is meant for. You just have to code the action and event nodes that will perform the basic operations you want, and then your script will put it all together.


Jeff Houde -Programmer peon at Delta3D

 Quote   

 
 Monday, December 14 2009 @ 05:14 PM EST

Hi Jeff,

this looks really interesting!
I think about using dtDirector to control (and visualize!) a complex non-linear training-scenario - just like a state-chart with forks, junctions,... and maybe parallel actions/events.
So depending on the player's decisions (e.g. in conversations or where he moves) the plot changes/adapts.
So I hope this could be one way to use it...

 Quote   

 
 Monday, December 14 2009 @ 05:49 PM EST

[Quote  by:  r0b] Hi Jeff,

this looks really interesting!
I think about using dtDirector to control (and visualize!) a complex non-linear training-scenario - just like a state-chart with forks, junctions,... and maybe parallel actions/events.
So depending on the player's decisions (e.g. in conversations or where he moves) the plot changes/adapts.
So I hope this could be one way to use it...

I don't see why you couldn't. Anything that happens in series, conditions and actions, are all feasible.

The system can run multiple threads in parallel (note, when I say threads, I don't mean processor multi-threading, just that multiple chains can be live at once).

I also have some ideas for after action review, mainly for script debugging. You would have the ability to save a script playback to file, then in the editor you'd be able to load those playback files and play your script, step by step, with all variables retrieved at those points. It's all just in my head right now though, so the details not all ironed out.


Jeff Houde -Programmer peon at Delta3D

 Quote   

 
 Wednesday, December 16 2009 @ 06:18 AM EST

Can you give some more hints on how to test dtDirector?
I succeeded to build dtDirector.dll, dtDirectorNodes.dll & dtDirectorQt.dll . But how to load the plugin (where is it?)?

thanks
rob

 Quote   

 
 Wednesday, December 16 2009 @ 12:35 PM EST

There is also a STAGE plugin project, STDirectorTool. While in STAGE, go to the plugin manager and turn on this plugin. Once you do that, you'll get a new toolbar button that will open the editor up.


Jeff Houde -Programmer peon at Delta3D

 Quote   

 
 Thursday, December 17 2009 @ 05:17 AM EST

got it:
I had to check dtDirector, dtAnim and dtAudio in CMake to get the plugin-project generated...


Now I can open the editor but can't do anything - do I have to create a map before?

thanks
rbo

 Quote   

 

 


Delta3D is released under the GNU Lesser General Public License (LGPL) | Powered by GeekLog