Game Development Community

Verve - A new tool for Torque 3D

by Phillip O'Shea · 06/08/2009 (7:27 pm) · 12 comments

www.violent-tulip.com/blog_images/ddtf2bt_33cq8gh4hf_b.jpg

Part of the reason why many people play video games, including myself, is to be immersed in the world you are experiencing. There are many ways of connecting with the avatars you control, but easily the most common is through imagery.

What is Verve?

Verve is a Cinematic Tool; it is an Animation/Motion Tool; it is an Event Sequencer; it is hard to describe! Verve helps you connect with your audience and experience the world you have created.

There are many challenging aspects to creating an in-game cinematic sequence. To help overcome these issues Violent Tulip has created an intuitive event based system to work along side Torque's existing tool framework. If you have done any video editing, or Flash projects, then you will be working from an environment that is fairly familiar to you:

www.violent-tulip.com/blog_images/ddtf2bt_31f5ts92cv_b.jpg

As we wrap up Verve's development, I will take some time over the next few months to highlight the important features of this valuable tool.

Feature List

  • Real-time, non-linear, fully featured and integrated Editor Tool.
  • XML based sequence files.
  • Optimised sequences for release builds.
  • Full support for moving, animating and controlling objects within your scenes.
  • 2D and 3D audio effects.
  • GUI Effects.
  • Toggle Lights Objects or Particle Effects.
  • Multiple cameras with multiple camera effects, including Post Processing Effect Shader support and camera shake.
  • Server/Client functionality.
  • Multiple playback options, play forwards, backwards, pause, reset, loop, loop delay and slow-motion.
  • Customise existing events or integrate your own into the editor with little effort.
A lot of work has gone into Verve already and today I will discuss the overall design of the system and give you a quick glimpse of the editor environment.

System Details

I would like to make one quick point about the system: It isn't just a cinematic creator, you can do anything from open a door, or move a platform, to fully interactive in game cutscenes!

The systems is built from 4 core objects:

  • Controller
  • -> Group
  • --> Track
  • ---> Event
The operations of the sequence itself are dictated by a Controller, while also handles playback options. To ensure that everything in the sequence is kept synchronised, the Controller handles all of the integration and timing for the events.

Sequences you create are stored in XML based files which contain all of the data needed for playback. Here is a quick example of how we load and play a sequence:
// Create Controller.
%controller = new VController();

// Read Sequence File.
%controller.readFile( "./data/sequences/MyDemoSequence.vsf" );

// Play!
%controller.play();

Groups

Groups don't really do a great deal, though they are very important indeed. Groups are not only a container for Tracks, but they also reference the object, or objects, that are used in the sequence.

Since we aren't strictly limited to cutscenes or cinematic sequences, we must have the ability to change objects that we are referencing during the sequence.

Why, you may ask? If we create 10 elevators in our scene and they all want to do the same thing, move from A to B (irrespective of where the elevator, A or B is exactly), then we don't want to have to recreate 10 sequences, right?

We have done this by introducing a data table! The really awesome thing about this table is how data is extracted. We have 3 types of fields:

  • EXPRESSION
  • An "EXPRESSION" type evaluates the field. An example of when you may want to use this is if you have a function or method that you use to determine the target object:

    MyObject.getOtherObject();

  • STATIC
  • A "STATIC" type is where you explicitly reference the object, either by name or by ID. This will be the most common type of field you will use:

    MyObjectName

  • VARIABLE
  • A "VARIABLE" type retrieves the data from a console variable, either global or object field based:

    $Game::MyObject
    MyObject.OtherObject
Verve will come with some commonly used groups:

  • Camera.
  • Director.
  • Light Object.
  • Particle Effect Object.
  • Scene Object.

Tracks & Events

Tracks are a container for events and have a wide variety of applications. Tracks work with their events to dictate what occurs upon triggering.

Verve uses discrete events to "do something" in the game. That "do something" could be anything from animate an object, turning on a light or pathing an object around the scene. As you would expect, events are fired in order of trigger time and completely controlled by the root controller. No more daisy chaining schedule commands, wooh hoo!

Each track works independently of all of the others, so they can be added and removed quickly and easily from your sequence. It also means that it is very easy to add your own customised tracks and events to the engine and the editor!

Some of the types of events that will be shipping with Verve include:

  • Animation.
  • Camera Change.
  • Camera Shake.
  • Director.
  • Fade.
  • Light Toggle.
  • Motion.
  • Particle Effect Toggle.
  • Post Processing Effect.
  • Scene Jump.
  • Script Event.
  • Sound Effect.
Note: Not all tracks can be added to all groups, as it is not appropriate for the actions of a track to apply to all object types. Also, some tracks work differently when they are used in different groups.

Verve's Editor

Since the editor is where you will be doing most of your work with Verve, it has been built to present you with a familiar environment. If you have done any kind of movie editing or Flash development, you should hopefully be able to understand how the editor works without a great amount of effort. Key work flow features like context menus, undo/redo, cut, copy & paste are seamlessly integrated and will aid you in the development process.

I've taken this excerpt from Verve's documentation to give you a quick run through of the editor itself, highlighting important editor features that you will need to familiarise yourself with:

www.violent-tulip.com/blog_images/ddtf2bt_32hkcwz8f8_b.jpg

  • 1. The Group / Track Window

  • This window displays a list of groups and tracks in your sequence. Groups are sorted by name (with the exception of the Director Group) and tracks are sorted by name within groups. Each group/track has a label you can change, as well as a check box allowing you to enable or disable the track during playback.

    Right-clicking anywhere in this window brings up a context menu. Depending on what object you click on, the menu will enable you to cut, copy, paste or delete the object, or it might allow you to add new objects.

  • 2. The Event Window

  • This is where you will see all of the events in your sequence. In the traditional sense, the y-axis will show you which track the event belongs to while the x-axis shows you the time that the event will trigger.

  • 3. The Property Window

  • Most of the objects used in Verve have some properties associated with them. If you have an object selected, the property window will display all of the available fields you can edit on that object. If you have no selection, you will be able to edit the properties of the controller object itself.

  • 4-7. Add / Delete Objects

  • These buttons will allow you to add or delete objects in your sequence.

    The "Add New Group" button will give present you with a menu of possible groups to add to your sequence. You can also create your own custom group templates which will also be displayed in this menu.

    The "Add New Track" button is enabled only when you have a group object selected. A menu will pop-up giving you a selection of possible tracks to add to the selected group. Not all tracks are able to be added to a group, and most tracks are unique (you can only have one of that track in that group).

    The "Add New Event" button is enabled only when you have a track object selected. A new event will be created at the position of the time cue (#9 on the above chart). You can alternatively create a new event by right clicking on the track you wish to add the event to, and a new event will be added at the cursor's position.

  • 8. The Timeline Window

  • The timeline displays the duration of the sequence as well tickers indicating the time at that particular position.

    Time here is displayed in seconds. 1.0 means 1 whole second while 1.5 means 1 and a half seconds. The actual timescale used in the sequence is milliseconds and the use of seconds here is solely for rendering benefit.

    Further information is provided in the "Time Cue" section below.

  • 9. The Time Cue

  • The time cue displays the current time that the controller is at. You can click any point on the timeline and the cue will jump to that position. You can also drag your cursor and the cue will follow. If you do this, you will notice that your scene will update to the desired position of the sequence.

    If you are playing the sequence in the editor, you will see the cue moving and it will also scroll the timeline window so that it is always visible.

    The cue also displays the time that the cue is at. If the cue is out of view, then this label will continue to render and indicate where the cue is situated relative to the current view.

    If you click while holding down the shift button (Shift+Click), you will be able to select segments of time. If you right-click on the timeline while you have a selection, you are able to insert or delete a section of time. The amount of time inserted is equal to the amount of time selected.

  • 10-16. Timeline Control

  • 10 and 16 allow you to quickly insert time into your sequence.

    11-15 control the playback of the controller:

    If the controller is not currently playing, this button will allow you to start playing the sequence. If the controller is currently playing, this button will allow you to pause the sequence.

    Jump Backwards/Forwards will jump the controller to the last/next scene. The direction of the playback affects this behavior.

    Step 1 Frame Backwards/Forwards will walk 1 frame backwards/forwards in time. The direction of the playback affects this behavior.

Wrap Up

Well, I've given you a quick glimpse of Verve for Torque 3D. You can expect that future posts will present a few videos to show off exactly what it is capable of (both in the editor and game). Please bear in mind that some of the above is subject to change, as the product isn't 100% complete and ready to be released.

All criticism and support is welcomed!

This is Post #1.

- Verve - A new tool for Torque 3D

About the author

Head of Violent Tulip, a small independent software development company working in Wollongong, Australia. Go to http://www.violent-tulip.com/ to see our latest offerings.


#1
06/08/2009 (7:59 pm)
Very very cool ! Looking forward to the video :D
#2
06/08/2009 (8:08 pm)
Sounds great, looking forward to it!
#3
06/08/2009 (8:25 pm)
Sounds awesome! Looking forward to hearing and seeing more.
#4
06/09/2009 (12:00 am)
I've been hoping for something like this! Can't wait to see it in motion.
#5
06/09/2009 (12:37 am)
When you first told me about this I though it was an ambitious project and here you are presenting it for real. What you can do with a GUI is amazing, well done my friend.

Going to be a handy tool this one.
#6
06/09/2009 (10:15 am)
It sounds very useful. Looking forward to seeing more.
#7
06/09/2009 (8:13 pm)
This has been needed for a long while... i look forward to "This is Post #2". :)
#8
06/10/2009 (2:18 am)
It seems that this project has the potential for authoring or controling the future AFX effects for T3D.
#9
06/17/2009 (8:16 am)
Hi Phil,

The tech looks great. Do you have an email I could contact you on?

Thanks,

Rob
#10
06/17/2009 (2:03 pm)
Hey Rob, feel free to shoot me an email at pdos00 {at} gmail {dot} com.
#11
07/08/2009 (5:41 pm)
This looks awesome. How much do you have planned for UI effects. I'd be pretty sweet to be able to use it for animating UI elements, much like you'd be able to do with Flash/Scaleform.

Very anxious to see how this develops. If you need someone to test it in production, we'd probably be interested.
#12
10/25/2009 (1:21 am)
can i download verve where i get it?
its a demo somewhere?