Torque 3D Open Source 3.0 Launch
by Dave Wyand · 05/09/2013 (10:39 am) · 68 comments

Torque 3D Open Source 3.0 Launch

On December 19, 2012, we launched T3D v2.0 as the first new release under an open source MIT license. Then on January 10, 2013, the T3D Steering Committee presented their proposed roadmap for v3.0 to the community for comments. Since going open source in September 2012, we’ve had over 1,200 people star and 478 people fork our main repository.

Now today, four months after releasing the roadmap, the Steering Committee presents Torque 3D 3.0.
What’s New for 3.0
Torque 3D 3.0 has seen a lot of activity. In addition to general improvements and bug fixing, the following is a summary of the major changes.Project Manager 2.0
The Project Manager has been updated to make it easier to manage the modules that will be compiled into your game. You may read more about these changes in my blog as well as the Project Manager Wiki Page

In addition to the Project Manager program receiving an update, Torque 3D’s Project Generator system was modified to allow modules to specify 3rd party files that may be copied into your game’s directory. An example would be copying all the required PhysX DLLs from the SDK when the physx module is part of your project.
Template Clean-up
The templates included with Torque 3D have received a spring cleaning. This work included:
- Moving assets and script out of the core directory and into the appropriate game location
- Separating the tool GUI profiles from those of the game
- Removal of unused components
- Clean up of console spam
Removal of PhysX Templates
With the Project Manager 2.0 update that makes it easy to choose which modules will be compiled into your game, the two PhysX templates have been removed. The only difference between these two PhysX templates and the two that remain was the use of the physx module for all physics rather than Torque 3D physics, as well as the PhysX DLLs.
ScriptTickObject
ScriptTickObject is a new class (Pull Request) that is based on the ScriptObject class that adds callbacks for tick and frame events:
- onInterpolateTick(F32 delta) - called every frame, but only if the object is set to process ticks. delta is the time delta for this frame.
- onProcessTick() - Called once a tick (typically every 32ms) if this object is set to process ticks.
- onAdvanceTime(F32 timeDelta) - called every frame regardless if the object is set to process ticks, but only if the callOnAdvanceTime property is set to true. timeDelta is the time delta for this frame.
Vehicle Steering
Changes were made to to the way you steer T3D vehicles (Pull Request). When enabled, the steering will automatically return to center based on the vehicle’s velocity. Great when you are using the keyboard!
Joystick Fixes
With this update we see proper racing wheel support, a bug fix for a 2nd POV hat, and support for even more buttons for those flight sticks that can never have too many!
Input Device Changes
A big update to how input device events are handled (Pull Request) with the introduction of the InputEventManager class. This work was done to allow for easier integration of new input devices that we’ll cover a little later.
Torque 3D categorizes its input events into various types so the receiver of the event knows the context of the information. The existing event types are: keyboard key, button, point of view hat, and axis (ranges from -1 to 1 for joysticks, thumb sticks, and mouse moves).
With the new input controllers becoming available in the marketplace these event types are not enough. The following new event types have been added:
- SI_POS: Absolute position value (Point3F)
- SI_ROT: Absolute rotation value (QuatF)
- SI_INT: Integer value (S32)
- SI_FLOAT: Float value (F32)
ExtendedMove Class
The standard T3D Move class is used to send input events to a user’s current control object on both the client and server. These input events are relative, such as the amount the mouse has moved during the current tick.
Torque 3D 3.0 adds the ExtendedMove class that also allows the tracking of absolute position and rotation values, such as a user’s hand in space above some input device control surface. By default, up to three objects may be tracked by the ExtendedMove class (such as a head and two hands) but this may be easily expanded by changing a constant value in code. The trade off is the amount of network traffic used when communicating with a multiplayer server (although the bandwidth used is highly optimized).
Leap Motion Controller
The Leap Motion controller takes input from hands, fingers, and small tools that are moved just above its surface and provides their absolute position and rotation through the Leap SDK. With Torque 3D v3.0 there is a leapMotion module that may be compiled into your project to allow you to work with the Leap Motion controller. Please see my blog talking about the new code. The following types of events are supported:- Hands and fingers events
- Hands and fingers with persistent ID events
- Hand as a thumbstick events
- Whole frame input events
Razer Hydra Controller
The Razer Hydra controller combines the standard buttons and thumbsticks of a gamepad with motion sensing technology by Sixense to determine the absolute position and rotation of each hand with respect to a base station. With Torque 3D v3.0 there is a razerHydra module that may be compiled into your project to allow you to work with the Razer Hydra controller. Please see my blog talking about the new code. The following types of events are supported:- Standard gamepad events
- Controller absolute position and rotation events
- Controller as a thumbstick events
- Whole frame events
Oculus Rift Head Mounted Display
The Oculus Rift head mounted display includes both a stereo display that you wear and a sensor that detects you head’s absolute rotation. With Torque 3D v3.0 there is a oculusVR module that may be compiled into your project to allow you to work with the Oculus Rift. Please see my blog talking about the new code.In order to support this unique device the Player and Camera classes have been modified to allow you to use them with the Rift. One change is to allow for the view to bank according to the Rift’s input (normally T3D ignores all banking). The other change is the addition of control schemes that may be set through the GameConnection class. By activating a particular control scheme you can tell the user’s control object to combine both the Oculus Rift’s head track with a gamepad’s input, for example. All of this is discussed on the new T3D Oculus Rift wiki page.
Multiple Viewport Rendering Fixes
With the stereo capabilities of the Oculus Rift came the requirement to do stereo rendering in Torque 3D. For this release only side-by-side rendering is supported, but it could be extended to other types of stereo displays. Torque 3D’s graphics pipeline was not originally set up with stereo rendering in mind and there were a number of assumptions that broke while trying to render with multiple viewports and an offset frustum. These issues have been fixed as they came up and this work will benefit any other projects that require multiple viewport rendering.
3rd Party Library Updates
Many of Torque 3D’s 3rd party libraries haven’t been updated in a very long time. With Torque 3D 3.0 all 3rd party libraries that had an update available were brought up to the latest release. An exception to this is the Collada library as there were a number of customizations that were made to it sometime up to T3D 1.2 (or earlier). The Collada library will be looked at in a future release.
Removal of DIF Support
DIFs have been a part of the Torque engines from the beginning and were used to build interior objects. However, with Torque 3D’s advanced lighting engine DIFs had trouble fitting in and have been marked as depreciated for some time (before T3D went open source). With this release of Torque 3D we finally say goodbye to our old friend and have recovered the resources it made use of.
New Terrain Tools and Rendering
The following additions have been made to the terrain tools and how the terrain is rendered:
- Rule-based terrain painting
- Optional flip terrain heightmap on import
- Added missing terrain related materials
- New terrain brush action: Smooth Slope
- Terrain macro texture
ScatterSky Improvements
The following improvements have been made to the ScatterSky class:
New PostFX
Three new postFx have been added to Torque 3D 3.0. The first is an underwater caustics postFX that is activated when the camera is within a water object and provides those intense, wavy lines you see at the bottom of a pool. The second is a turbulence postFx that is also activated when the camera is within a water object that causes the view to distort. You can see both of these in action in the picture at the top of this blog.
The third postFX is a camera-based motion blur. This is disabled by default but may be turned on through the MotionBlurFX PostEffect. This postFX provides a blur to the whole scene based on how fast the camera is moving.
Theora Texture Animation
The new TheoraTextureObject class provides a link between a theora video file and a named texture surface. This name texture may then be referenced by any Material instance to provide an animated material. This class was used by the Aurora Borealis Demo to place a video on the sky dome and you may find out more about it from the Pull Request.
Change List
Below is a list of all changes that have been made to the development branch of the Torque3D repository since the 2.0 release and are now part of Torque 3D 3.0.- Removal of SDL dependency for linux dedicated server (Issue 177)
- Bug fix for loading compiled dsos (Issue 179)
- Updated logic in MissionArea::getServerObject (Issue 140)
- Vehicle steering return-to-centre (Issue 49)
- Bug: Missing support for several Racing Wheels (Issue 190)
- Joystick POV 2 down is not functional (Issue 214)
- Expanded signals and journaled signals to support up to 13 parameters (Issue 216)
- New ScriptTickObject (Issue 217)
- New console type for Point3I (Issue 218)
- Input event changes (Issue 219)
- New RigidShape method to force client (Issue 220)
- ExtendedMove class and support (Issue 221)
- Moved platform input event files under new input directory (Issue 222)
- Leap Motion input device support (Issue 223)
- Updates to Project Generator necessary for library I am working with. [Adds debug library support to project generator.] (Issue 188)
- Remove hard coded paths pass 1 (Issue 227)
- Fix for Issue #82 for crash on warning print in explosion.cpp (Issue 184)
- Change ShapeBase to only test if available meshes (Issue 236)
- Compile Bullet library under Windows (Issue 237)
- Razer Hydra integration (Issue 234)
- Updates libogg to v1.3.0 (Issue 239)
- Patches the libvorbis update with missed files (Issue 240)
- Update libvorbis (Issue 238)
- Removed hard coded directory paths (Issue 248)
- Updating libpng to v1.5.14 and zlib to v1.2.7 (Issue 250)
- Update squish (Issue 243)
- Update TinyXML to v2.6.2 (Issue 255)
- Tools GuiProfile Separation (Issue 259)
- Remove unused and (partially) unworking UnifiedShell (Issue 260)
- Bug fixes for alternative zip layout and define to toggle it on (Issue 178)
- Relocate game specific GUIs out of the "core" (Issue 264)
- Removing the controlsHelpDlg to reduce maintenance overhead (Issue 266)
- Adding a basic rule-based terrain painting implementation (Issue 272)
- Minor Issues From ParticleData Times Change (Issue 225)
- Particles are not shapes (Issue 275)
- Importing terrain heightmaps flips Y-axis (Issue 268)
- Material Editor Crash- Opening the material editor with a mesh selected doesn't open a custom material. (THREED-3195) (Issue 163)
- Set the Ryder as the default starting weapon instead of the Lurker (Issue 284)
- Gui Editor - Object Treeview refresh issue (THREED-3179) (Issue 193)
- Remove unused OOBSign from PlayGui (Issue 286)
- Move teleporter related particle data out of managed data (Issue 290)
- Remove the old TGE era "Buggy" vehicle (Issue 292)
- Move light related example art and data out of core (Issue 294)
- Move example sky assets out of core (Issue 295)
- Move water assets out of core (Issue 296)
- Move example road and path assets out of core (Issue 297)
- Remove the Armor script class (Issue 305)
- Thumbnails in the Material Selector do not display (Issue 282)
- Cleanup of weapon fx and assets (Issue 312)
- Add missing terrain related materials (Issue 314)
- Add buttons to the MainMenu to access the Editors (Issue 315)
- Fix texture and object console paths (Issue 316)
- zero() method added to all point classes (Issue 317)
- GFX now handles non-default adapters (Issue 318)
- Clean up the cheetah's onLoad() TSShapeConstructor script (Issue 319)
- Fix platforms that don't support PVI_NumAdapters (Issue 320)
- ExtendedMove changes (Issue 321)
- Correct customProfiles.cs execution (Issue 322)
- Use correct dragCoefficient value in TeleportFlash (Issue 323)
- Game cam and eye banking, control schemes (Issue 325)
- Torque 3d crush when you import a heightmap (Issue 288)
- Oculus VR (Rift) support (Issue 326)
- Add a new Terrain brush action: Smooth Slope (Issue 327)
- Remove unused weapon scripts in Full Template (Issue 328)
- Remove unused and duplicate sounds (Issue 329)
- Side by side rendering (Issue 324)
- Style guidelines for pull requests (Issue 22)
- GroundCover fading when zoomed in (Issue 144)
- Engine API fixes ([url=https://github.com/GarageGames/Torque3D/pull/241)Issue 241[/url])
- GuiObjectView TorqueScript setRotation method (Issue 334)
- River tool defaults to an invalid Cubemap (Issue 331)
- Terrain Macro Texture (Issue 287)
- some small patches (Issue 332)
- Remove Interior Object format (DIF) (Issue 310)
- Project Generator File Copy (Issue 352)
- Scatter Sky Community Fixes (Issue 353)
- TheoraTextureObject ([url=https://github.com/GarageGames/Torque3D/pull/355)Issue 355[/url])
- Compiling with VS2012 (Issue 348)
- Community Resource (scattersky fog fix) (Issue 362)
- Fill in missing case for getEngineProductString switch block (Issue 363)
- Version number change (Issue 354)
- style.css changes for Project Manager modules (Issue 366)
- Removed both PhysX templates (Issue 372)
- Add a default RadioControl Profile and image asset back to the Templates (Issue 373)
- New PostFx (Underwater, Turbulence, and Camera Based Motion Blur) (Issue 374)
- Update squish library to compile under Linux (Issue 375)
- Changes to have Linux dedicated compiling again (Issue 376)
- Underwater caustics default to off (Issue 378)
Where to Find Torque 3D 3.0
As always you may find Torque 3D over on GitHub. Here is a list of all repositories:- Main repository: Torque3D
- Documentation: Torque3D-Documentation
- Project Manager: Torque3D-ProjectManager
In addition to GitHub we also have our own ZIP package that combines the Torque3D repository with the updated TorqueScript documentation, the Project Manager, and compiled versions of each of the templates. This package is ideal for those that do not wish to compile Torque 3D on their own, and is available here:
Torque 3D Demos
Throughout the development of T3D 3.0 four downloadable demos have been put together by the Steering Committee. Each one was meant to show off Torque 3D’s interface with one of the newly supported input devices, but as all script is available with the demo, they also serve to demonstrate how to use different features of Torque 3D, such as the ScriptTickObject and TheoraTextureObject classes. Below is a list of each of these T3D demos with links to both download the package and to find out more about how they work:
Marble MotionUse the Leap Motion controller to drive a marble over suspended platforms. How fast can you reach the end without falling off? link
Hydra RyderUse the Razer Hydra controller to hold dual pistols while at a firing range. Fire at multiple targets and try to knock off all of the tin cans. link
Rift ValleyUse the Oculus Rift and either the mouse and keyboard or a Xbox 360 gamepad to explore a tranquil valley. Be sure to check out the cave. link
Aurora BorealisUse the Oculus Rift to see the aurora borealis of March 17, 2013 as recorded from opposite sides of the Earth. In addition to the northern lights, see how many constellations you can make out. link
What’s Next for Torque 3D
With the second open source release of Torque 3D complete we are now looking towards the next release. The Torque 3D Steering Committee has some ideas on what the road map could look like for v4.0 and will soon present this to the community. But all of this can only happen with you, the community.The Steering Committee exists to help provide direction and lend a hand, but it cannot do everything on its own. With the next roadmap we will be asking for everyone’s help to continue to drive Torque 3D forward and make it the best open source 3D engine out there.
In Closing
I wanted to close out this blog with a video that was made not by a community member, but by someone that is genuinely enjoying the results of Torque 3D 3.0. This is some of the best publicity we could hope for and I look forward to seeing videos of people playing your own games made with Torque 3D.- Dave
UPDATE: Cymatic Bruce just released another video going over 3rd person views and the Oculus Rift. While going through a number of UDK options, he also includes our Rift Valley demo as a great example. Check it out:
About the author
Producer at GarageGames LLC
#22
..a pretty cool FYI for the committee:
The other day, someone very high up at Nvid*a stopped by G.A.S. and downloaded the Max DTS exporter. Ethics wise; I can't divulge a name..but needless to say, my jaw dropped until I picked it back up. (was it this really this person ? IDK, maybe a hoax, but why would someone bother with such a thing ? Besides 99% of the registrations look legit.
..I'm going to assume it was the real person and continue daydreaming about what this person may be doing with Torque Tech. ;)
Maybe you guys already know ?! ;)
05/10/2013 (1:19 am)
Great to see progress...a pretty cool FYI for the committee:
The other day, someone very high up at Nvid*a stopped by G.A.S. and downloaded the Max DTS exporter. Ethics wise; I can't divulge a name..but needless to say, my jaw dropped until I picked it back up. (was it this really this person ? IDK, maybe a hoax, but why would someone bother with such a thing ? Besides 99% of the registrations look legit.
..I'm going to assume it was the real person and continue daydreaming about what this person may be doing with Torque Tech. ;)
Maybe you guys already know ?! ;)
#24
Great work and news! AWESOME. TY everyone, worked at this version.
05/10/2013 (2:58 am)
I like the number 3 :)Great work and news! AWESOME. TY everyone, worked at this version.
#25
Have you considered duct-tape? It's currently holding my curtains, ceiling and one wall together! ;o)
----------
In other news ...
I laughed, I really did.
-----------
In more interesting news ... anyone notice a massive improvement in GPU load? Testing the same basic scene (stock terrain, stock scattersky, added water plane with full reflect) my GTS250 temperature is >10 Celsius lower with the fan speed at mid 50s instead of mid 70s in T3D2.0. Anyone else notice this?
----------
and finally, before I wear out my dash key ... my new Ai Poses Redux Resource has been tested in T3D3.0 and works fine. I finally managed to get it up on github and might eventually throw in a pull request if no-one has a better idea of how to force the Ai's to update their animations on the client.
05/10/2013 (5:43 am)
@TheGasManQuote:
my jaw dropped until I picked it back up
Have you considered duct-tape? It's currently holding my curtains, ceiling and one wall together! ;o)
----------
In other news ...
[MaterialList::mapMaterials] Unable to find material for texture: base.lmale
I laughed, I really did.
-----------
In more interesting news ... anyone notice a massive improvement in GPU load? Testing the same basic scene (stock terrain, stock scattersky, added water plane with full reflect) my GTS250 temperature is >10 Celsius lower with the fan speed at mid 50s instead of mid 70s in T3D2.0. Anyone else notice this?
----------
and finally, before I wear out my dash key ... my new Ai Poses Redux Resource has been tested in T3D3.0 and works fine. I finally managed to get it up on github and might eventually throw in a pull request if no-one has a better idea of how to force the Ai's to update their animations on the client.
#27
@Steve: that one was intentional. To solve that requires a legacy asset. We have another solution in mind.
05/10/2013 (8:36 am)
@Kevin: nope, not from us. Everyone has had plenty of time to dump obsolete assets.@Steve: that one was intentional. To solve that requires a legacy asset. We have another solution in mind.
#28
and a special thank you to the rest that contributed to this great release!
05/10/2013 (11:16 am)
Great work David, Michael and Ronand a special thank you to the rest that contributed to this great release!
#29
@All, Thanks for the positive replies and we will keep rolling along 4.0 is just down the road a few months....sigh.
Ron
05/10/2013 (11:50 am)
@steve.... yeah, I am going to go over all the dang art assets and eliminate all the spam. Just didn't get around to it for the release. Also, yes there is a decent performance increase. I hope to have some meaningful numbers on that in just a couple of days.@All, Thanks for the positive replies and we will keep rolling along 4.0 is just down the road a few months....sigh.
Ron
#30
Thanks,
Jeff
05/10/2013 (12:08 pm)
Hey guys I have a question. Is there any way to just get the files that had been change instead of the whole thing, rather like a patch to 2.0? I have some engine modifications already in torque3D 2.0 but I would like to incorporate torque3D 3.0.Thanks,
Jeff
#31
05/10/2013 (12:10 pm)
Awesome updates since moving over to github, pulling it down now, has most the stuff in there that i usually put in a new build, getting back into things again.
#32
Unfortunately, no. There are a huge number of core engine changes that have taken place. This accounts for the graphic performance increases and the over all more efficient engine performance.
The good thing is your levels and missions should be fine to port over but, most of the really optimized stuff is on the engine side so you will need to recompile to get that stuff.
I have been doing the same thing since we finaled 3.0... most everything I do is on a personally modified version of the engine.
Ron
05/10/2013 (12:16 pm)
Jeff,Unfortunately, no. There are a huge number of core engine changes that have taken place. This accounts for the graphic performance increases and the over all more efficient engine performance.
The good thing is your levels and missions should be fine to port over but, most of the really optimized stuff is on the engine side so you will need to recompile to get that stuff.
I have been doing the same thing since we finaled 3.0... most everything I do is on a personally modified version of the engine.
Ron
#33
Thanks for the quick reply. Yeah i know the scripting side of the game as well as levels and art can be transferred with little to no issues at all. I kind of figured there had been a lot of updates to the core part of the engine.
Thanks!
Jeff
05/10/2013 (12:28 pm)
Ron,Thanks for the quick reply. Yeah i know the scripting side of the game as well as levels and art can be transferred with little to no issues at all. I kind of figured there had been a lot of updates to the core part of the engine.
Thanks!
Jeff
#34
One thing you could do is use WinMerge to compare between T3D 2.0 and T3D 3.0 to see the changes.
You could also use something like Beyond Compare that allows you to do a three way merge. You would compare T3D 2.0, your own changes (based on T3D 2.0) and T3D 3.0. Because they all share the same base (T3D 2.0) you can then see what you've changed, see what's changed with 3.0, then pick and choose what and how to combine them. Pretty cool stuff.
- Dave
05/10/2013 (12:40 pm)
@Jeff:One thing you could do is use WinMerge to compare between T3D 2.0 and T3D 3.0 to see the changes.
You could also use something like Beyond Compare that allows you to do a three way merge. You would compare T3D 2.0, your own changes (based on T3D 2.0) and T3D 3.0. Because they all share the same base (T3D 2.0) you can then see what you've changed, see what's changed with 3.0, then pick and choose what and how to combine them. Pretty cool stuff.
- Dave
#35
Yep.... did not think of that. Come to think of it, I use winmerge all the time....
Ron
05/10/2013 (12:43 pm)
Dave,Yep.... did not think of that. Come to think of it, I use winmerge all the time....
Ron
#36
Cymatic Bruce just release another video, this time going over 3rd person views and the Oculus Rift. As part of his exploration he covers our Rift Valley demo as one of the examples. I've added his video to the bottom of this blog for you all to check out.
- Dave
05/10/2013 (12:53 pm)
Hey Everyone.Cymatic Bruce just release another video, this time going over 3rd person views and the Oculus Rift. As part of his exploration he covers our Rift Valley demo as one of the examples. I've added his video to the bottom of this blog for you all to check out.
- Dave
#37
05/10/2013 (1:11 pm)
Thanks for this guys. Been looking forward to checking out these terrain tools. I must say, the extra detail channel makes a huge difference. Thanks again for an awesome update!
#38
05/10/2013 (1:33 pm)
WOW!!! It's incredible to see all these new additions to Torque, it seems now that it's all open source now more and more projects are popping up. Again, great great work. I will be busy till forever. Thank you!!!
#40
@steve
Yes, it seems to run even smoother now.
05/10/2013 (4:24 pm)
Got a bug, I can no longer walk through holes in the terrain. I added bullet physics, maybe it has to do with that, another bug with bullet, similar to physx is, that bullets hit the player while walking and shooting.@steve
Yes, it seems to run even smoother now.

Torque Owner Quinton Delpeche
Gobbo Games
I did some work last night and the new 3.0 release is awesome ... the biggest thing for me is the "Template Cleanup" and the "Project Manager". I have started porting Re-Spawn across to this build now ... yeah baby.
Thanks again to everyone ... damn fine job. 8-}