
Welcome to Delta3D | Login Monday, September 06 2010 @ 02:55 AM EDT

| |
|
 |
 |
|
|
|
 |
|
|
|
|
jphoude

Registered: 04/20/09
Posts: 65
|
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
|
|
|
|
|
th3flyboy
Registered: 08/26/09
Posts: 108
|
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? |
|
|
|
|
jphoude

Registered: 04/20/09
Posts: 65
|
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
|
|
|
|
|
th3flyboy
Registered: 08/26/09
Posts: 108
|
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. |
|
|
|
|
jphoude

Registered: 04/20/09
Posts: 65
|
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
|
|
|
|
|
r0b

Registered: 01/30/08
Posts: 212
|
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...
|
|
|
|
|
jphoude

Registered: 04/20/09
Posts: 65
|
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
|
|
|
|
|
r0b

Registered: 01/30/08
Posts: 212
|
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 |
|
|
|
|
jphoude

Registered: 04/20/09
Posts: 65
|
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
|
|
|
|
|
r0b

Registered: 01/30/08
Posts: 212
|
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 |
|
|
|
|
|
|
 |
 |
|
|
 |
|
|