After going through the comments in both blogs it is great to hear an overwhelmingly positive response to our announcement. Outside of our community we’ve also seen people getting excited about our coming launch. For example, read through the comments from the announcement on Gamasutra.
While the GitHub repositories are being put together in preparation for the launch, we would like to begin the process of recruiting members of the steering committee from the community. The steering committee has Write Access to the master branches and are responsible for managing requests and submissions from the general community (who always have Read Access to the repositories to fork as they please).
To give you a better understanding of the roles and responsibilities of the steering committee we’ve put together a draft charter. This is our first pass at it and it will be expanded and refined over time, especially by the steering committee itself.
Torque 3D Open Source Steering Committee Charter (Draft)
We are dedicated to making the best core version of Torque 3D so that others can build upon a reliable foundation.
To build a foundation for a sustainable environment that fosters collaboration and community development of the greatest open source development platform.
To maintain the best master branch version of Torque 3D. Performance, reliability, maintainability and scalability.
Act as a representative on behalf of the collective community.
Actively communicate in a transparent manner.
Promote Torque 3D as an open source project.
4. Duties and Responsibilities
Maintain, enhance and support the Torque 3D open source product.
Operates under ethical and professional standards with individuals, community, and the world.
Create and revise the product’s roadmap.
Review and act appropriately on all community submitted action items.
Encourage growth of the Torque 3D product through community participation.
To ensure that all contributions are free from intellectual property encumbrances in order to maintain the integrity of the product.
Act in a professional manner and lead by example.
Periodically review the charter and composition of the membership and make changes as necessary.
Members of the steering committee must be willing and able to commit time and energy to fulfilling the committee’s mission. At least one (1) one of the committee members must come from GarageGames LLC or its representative, and shall act as chair of the committee. The remainder of the membership may grow as appropriate according to the committee’s duties, but the total committee size shall remain at or below six members.
To be considered as a member of the committee, the prospective member should meet the following criteria:
Is available for at least 8 to 20 hours a week of work on the Torque 3D open source product such as programming, documentation, administration, etc.
Have expert knowledge in game engine and tool development, such as documentation, C++ engine programming, operating system platform programming, etc.
If a member is unable to serve on the committee for any reason, the vacancy may be filled or left empty at the discretion of the committee. If the committee as a whole is unable to perform its duties, an employee of GarageGames LLC or its representative may step in and provide the course of action.
In addition to the steering committee, we desire two other essential members: project manager and secretary. These roles are not decision making positions; rather, they document, format, and deliver information to the community.
The chair of the committee is responsible for organizing formal meetings, which should be held at least once a month. During these meetings the progress of the previous month shall be reviewed and goals shall be set for at least the next month. More frequent meetings may be held as required.
If a committee member commits the following acts, they could be removed from the committee:
Unable to fulfill their time requirements.
Removed by a majority vote for no longer aligning with sections 3 and 4 above.
This charter is a living document and may be amended by the committee as outlined in section 4. Any amendments require the approval of the committee chair.
As I mentioned in my previous blog, the steering committee currently consists of myself, Eric, David MB, and Scott. I will remain as the only permanent member of the committee while the others will be replaced by community members over time. The committee may also be allowed to grow according to the product’s needs.
Does being a part of the Torque 3D open source steering committee interest you? Are you ready to be a leader and organizer in the community? Have you read through the draft charter and have a feeling of awesomeness swelling inside? If so, then please get in touch by email at email@example.com and let me know. We want to hear from you!
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
The new Project Modules window
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.
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.
While you could schedule() events to get similar results, the ScriptTickObject automatically takes care of the rescheduling part. Plus you can add a ScriptTickObject instance to the MissionCleanup group to have it automatically unload when exiting a mission. All of the demos that were made over the course of T3D 3.0’s development use ScriptTickObject as a game state machine.
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!
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)
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
Setting up and working with the Leap Motion controller is discussed on the new T3D Leap Motion wiki page. In the last little while the Leap SDK has been updated to include basic gesture support. This is not currently included in the Torque 3D Leap Motion controller integration and will be looked into for the next Torque 3D release (a good reason to follow the GitHub development branch).
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:
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:
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.
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)
With the release of Torque 3D 3.0 all changes in the development branch have been moved into the master branch. The development branch will now be used for changes related to the next release of Torque 3D.
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:
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:
Use the Leap Motion controller to drive a marble over suspended platforms. How fast can you reach the end without falling off? link
Use 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
Use 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
Use 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.
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.