Finally, DotNetTorque is ALPHA! Video Included!
by Vince Gee · 05/13/2012 (6:49 pm) · 14 comments
Finally, DotNetTorque is ALPHA! Video Included!
After months of pouring over the T3D engine, endless hours going over the CSharp, optimizing and implementing two simple engine modifications, I have a completely working ALPHA!!!! So, this is how it played out.
First, we created a dedicated server. The dedicated server is running on a Dell Optiplex 745 with a Pentium Duo chip, 8 gigs of ram and a solid state drive.
There is a node path that circles the area, around this node path is 300 AI. They are all path walkers.
Then, about fifty miles north of me, Rich, started up the client and connected to the server. This video shows the result... I think most will be happy.
The client rig is about a 4 year old gaming rig. Nothing fancy, I don't have the spec's handy but I'm sure Rich will post them up.
So remember, we aren't on the same network, this stuff is going over the internet.
Vince,
After months of pouring over the T3D engine, endless hours going over the CSharp, optimizing and implementing two simple engine modifications, I have a completely working ALPHA!!!! So, this is how it played out.
First, we created a dedicated server. The dedicated server is running on a Dell Optiplex 745 with a Pentium Duo chip, 8 gigs of ram and a solid state drive.
There is a node path that circles the area, around this node path is 300 AI. They are all path walkers.
Then, about fifty miles north of me, Rich, started up the client and connected to the server. This video shows the result... I think most will be happy.
The client rig is about a 4 year old gaming rig. Nothing fancy, I don't have the spec's handy but I'm sure Rich will post them up.
So remember, we aren't on the same network, this stuff is going over the internet.
Vince,
About the author
www.winterleafentertainment.com
#2
Now, Omni is the MMO engine. DotNetTorque will be the core to the OMNI engine. So everything we implement in DotNetTorque is geared towards a MMO experience. The biggest difference is that OMNI will have an even more seperated server. I.E. we are ripping the stock gui out and putting in WPF overlays, the chat system will be written in all CSharp, etc. So basically Omni will be the final conversion of Torque to a MVC design implementation, where all Torque will take care of is the state of the world and all logic, extra function etc will be implemented in a separate thread inside of csharp.
And yes, DotNetTorque will be a product available from the garagegames store. We just are ironing out some last few bugs before we release the client for people outside our company to log in and test. After we get some feed back and bug reports, we will then submit the product to GarageGames for them to put it in there store.
Vince
05/13/2012 (7:14 pm)
DotNetTorque is it's own product. It is just a way to use the T3D engine without using TorqueScript, it uses all CSharp. Any DotNet language can be used, but I implemented my classes in CSharp.Now, Omni is the MMO engine. DotNetTorque will be the core to the OMNI engine. So everything we implement in DotNetTorque is geared towards a MMO experience. The biggest difference is that OMNI will have an even more seperated server. I.E. we are ripping the stock gui out and putting in WPF overlays, the chat system will be written in all CSharp, etc. So basically Omni will be the final conversion of Torque to a MVC design implementation, where all Torque will take care of is the state of the world and all logic, extra function etc will be implemented in a separate thread inside of csharp.
And yes, DotNetTorque will be a product available from the garagegames store. We just are ironing out some last few bugs before we release the client for people outside our company to log in and test. After we get some feed back and bug reports, we will then submit the product to GarageGames for them to put it in there store.
Vince
#3
05/13/2012 (8:55 pm)
Can't wait for DotNetTorque... what's the timeframe for availability?
#4
My current project will probably keep to TS, but I may look to The DNT implementation for stuff in the future.
Is the 300+ AI thing a consequence of the DNT? Or is a separate resource of sorts? I'm deeply interested in how you handled that, as my current project calls for a lot of baddies trolling around the map at a time.
05/13/2012 (9:36 pm)
This has looked pretty slick since you've started posting about it.My current project will probably keep to TS, but I may look to The DNT implementation for stuff in the future.
Is the 300+ AI thing a consequence of the DNT? Or is a separate resource of sorts? I'm deeply interested in how you handled that, as my current project calls for a lot of baddies trolling around the map at a time.
#5
But i believe there were a framerate increase using DNT am i correct?
I would love getting some numbers of the framerate increase as it may be the deciding factor for me :)
05/13/2012 (11:40 pm)
I really don't mind working in TorqueScript, i think it's a fine language.But i believe there were a framerate increase using DNT am i correct?
I would love getting some numbers of the framerate increase as it may be the deciding factor for me :)
#6
The second gain is that I am bypassing the console for 90+ percent of the calls too do things. What I mean by this, is when I'm setting a variable, $test = 123; I am not doing an eval, etc, I'm actually setting the value via an extern which does it all 100% through C++. I implemented almost every TorqueScript function as a c++ extern.
The end result wasn't necessarily a large Frame Rate increase, but instead a STABLE frame rate.
Memory wise, I reduced the general overhead inside of Torque also significantly since it is no longer processing any logic inside of it. It's now all being done in a late bound csharp DLL. Since CSharp is a managed language, it means that all of the variables, etc are in a different memory location that Torque. They are not both fighting in the Global Memory Stack, instead they are each playing in their own stack.
The last minor change was done to SimDictionary.h/.cpp because GarageGames hashtree implementation has become dated. This is what allows the engine to handle the large number of objects.
So it was a combination of everything which made this possible.
05/14/2012 (3:26 am)
By off loading all the script to CSharp, I reduce the load on the server, since the creation of local variables and such is no longer happening inside of Torque.The second gain is that I am bypassing the console for 90+ percent of the calls too do things. What I mean by this, is when I'm setting a variable, $test = 123; I am not doing an eval, etc, I'm actually setting the value via an extern which does it all 100% through C++. I implemented almost every TorqueScript function as a c++ extern.
The end result wasn't necessarily a large Frame Rate increase, but instead a STABLE frame rate.
Memory wise, I reduced the general overhead inside of Torque also significantly since it is no longer processing any logic inside of it. It's now all being done in a late bound csharp DLL. Since CSharp is a managed language, it means that all of the variables, etc are in a different memory location that Torque. They are not both fighting in the Global Memory Stack, instead they are each playing in their own stack.
The last minor change was done to SimDictionary.h/.cpp because GarageGames hashtree implementation has become dated. This is what allows the engine to handle the large number of objects.
So it was a combination of everything which made this possible.
#7
05/14/2012 (7:51 am)
I'm interested in seeing some of the workflow for DotNetTorque if possible. Are breakpoints in Visual Studio supported? What's the process like to create a new object in script? How are scripts added to the project, etc?
#8
05/14/2012 (7:53 am)
Yes break points are supported, all that information will be released in documentation. That is one of the things we are doing BEFORE releasing a beta.
#9
05/14/2012 (12:26 pm)
Looks good. Great work Vince!
#10
05/16/2012 (12:25 pm)
looks excellent Vince, any idea as yet to what the price point is gonna be like?
#11
05/16/2012 (8:28 pm)
Very nice, Vince, can't wait to see this in action!
#12
Actually yes, we are right now pretty sure we will be going to be around 149 dollars for the kit. That will include the Starter.FPS converted to csharp, and all the source code to make it possible (C++ and CSharp).
The project is actually 4 separate projects.
They are:
DotNetTorque - This project is a dll and glues the script logic to the T3D engine, all dynamically, handles threading etc. Also included in this library is how to set up Externs and call them from cSharp.
DNT FPS Demo Game.dll -This project is a dll and contains all the logic that was in the TorqueScript for starter.fps. Inside it you will find documentation on how to set up functions, how they map, how to use multiple threads (which can be tricky with torque), how to use cSharp extensions, etc.
DNT FPS Demo - This project is an executable which replaces the old starter fps.exe. It is nothing more than a windows form which launches the dll's
Starter.FPS T3D C++ - This project will have three resources implemented in it to handle heavy load. Two are mine, the object culling and the simdictionary change, and one is Bank's where he multi-threaded the console messages.
The code is well documented, but we will also be including documentation on the functions and how to roll it into an existing project.
We also plan to include step by step directions on how to manually make the changes to everything in regards to apply dif's etc.
So there will be no curtains, everything will be explained and demonstrated.
Currently, the demo we are building has 300 AI running around in it, uses BackgroundWorker threads and can withstand mass extinction events like me killing off 50-75 AI (all at once) with landmines without bringing the server to a halt. My client runs at a very steady 35-60 frames per second depending on what I'm doing.
And, lastly but most importantly, I've managed to kill all the apparent memory leaks in dedicated mode.
05/18/2012 (8:53 pm)
@Roland,Actually yes, we are right now pretty sure we will be going to be around 149 dollars for the kit. That will include the Starter.FPS converted to csharp, and all the source code to make it possible (C++ and CSharp).
The project is actually 4 separate projects.
They are:
DotNetTorque - This project is a dll and glues the script logic to the T3D engine, all dynamically, handles threading etc. Also included in this library is how to set up Externs and call them from cSharp.
DNT FPS Demo Game.dll -This project is a dll and contains all the logic that was in the TorqueScript for starter.fps. Inside it you will find documentation on how to set up functions, how they map, how to use multiple threads (which can be tricky with torque), how to use cSharp extensions, etc.
DNT FPS Demo - This project is an executable which replaces the old starter fps.exe. It is nothing more than a windows form which launches the dll's
Starter.FPS T3D C++ - This project will have three resources implemented in it to handle heavy load. Two are mine, the object culling and the simdictionary change, and one is Bank's where he multi-threaded the console messages.
The code is well documented, but we will also be including documentation on the functions and how to roll it into an existing project.
We also plan to include step by step directions on how to manually make the changes to everything in regards to apply dif's etc.
So there will be no curtains, everything will be explained and demonstrated.
Currently, the demo we are building has 300 AI running around in it, uses BackgroundWorker threads and can withstand mass extinction events like me killing off 50-75 AI (all at once) with landmines without bringing the server to a halt. My client runs at a very steady 35-60 frames per second depending on what I'm doing.
And, lastly but most importantly, I've managed to kill all the apparent memory leaks in dedicated mode.
#13
05/22/2012 (8:07 am)
Looks awesome can't wait to get my hands on it and at that price it will be a sound investment even if I never make an MMO.
#14
DotNetTorque isn't geared specifically towards an MMO, it is still useful for anything that starndard T3D is useful for. DotNetTorque just opens up Torque to the C# language and all of it's wonders.
OMNI Engine will be the enhancement kit geared towards making MMOs. There is a lot that needs to happen to T3D/DotNetTorque to handle the load/requirements that an MMO needs, and that is what OMNI will do.
05/22/2012 (5:33 pm)
@Justin DobbsDotNetTorque isn't geared specifically towards an MMO, it is still useful for anything that starndard T3D is useful for. DotNetTorque just opens up Torque to the C# language and all of it's wonders.
OMNI Engine will be the enhancement kit geared towards making MMOs. There is a lot that needs to happen to T3D/DotNetTorque to handle the load/requirements that an MMO needs, and that is what OMNI will do.

Torque Owner Leathel Grody
Lethal Games