Game Development Community

dev|Pro Game Development Curriculum

Update Notes for OneWorld (4/8/2013)

by Vince Gee · 04/08/2013 (5:30 am) · 1 comments

I know I stated that OneWorld (Our World Collaboration Software) would release Quarter 1, but due to the imminent release of T3D MIT 1.3 we decided to hold the release of OneWorld until T3D 1.3 releases. This way we can make all the necessary changes to make it work in 1.3 without having to do post releases right after launch.

Features


Currently the system is far more than anything we envisioned. It does so much more than just moving stuff around inside the mission. You can add and remove terrain texture layers, re-sync files between the client and server, create new objects, alter terrain, etc. You can create/manipulate/delete rivers, roads, mesh roads, etc. You can modify forests and decal instances. There is so much functionality in this build it is almost impossible to list it all.

If I would have to put a percentage on the amount of functionality that exists for stand-alone versus networked, I'd put it at 80 percent. That's correct; I believe we have managed to implement 80 percent of the functionality of the existing tools into a network based implementation.

T3D Architecture Changes


Also, we added a messaging architecture that allows communications between the client and server in regards to world changing commands to happen in several parallel threads to the main loop. This allows world editing actions to appear smoother since they don't have to wait for their turn in the main loop to process. Also, the server is able to process new messages asynchronously to processing other commands on the server. Some world editing commands do lag time to time and I don't believe it can be smoothed much more without completely threading damn near the who engine..

The OneWorld code went through a 'Bit Align' process to squeeze out every ounce of performance we could. In essence it relies on the fact that you gain performance when member variables are memory aligned. This is an obvious potential optimization that compilers would take advantage of, but by making sure each variable is aligned they end up reducing the bloat of the C++ structure.

To understand the scope of this project, all of the work is done in C++ with minor changes to the tools TorqueScript. This gave us several advantages, most importantly performance. Since all of the 'MEAT' of the logic and processes are implemented in C++, there is less commands bouncing through the console or passed over the network stream as String like the functions CommandToClient and CommandToServer implement.

We also revisited the SimDictionary, ghosting routines and the Decal Manager so that they could support over 150 thousand objects in the world. In a highly populated world, with the server running in dedicated mode we were pulling 30-60 frames per second. We touched a lot of other code as well, but these stick out in my memory as particularly painful.

Additional Features


Did I mention that the server can run in Dedicated mode? This allows you to run the server on 'Server' hardware with limited graphics capabilities. You can spin up multiple zones on different T3D dedicated server instances and leave them running until your done with them. As users connect, they will download the changed content automatically and be logged into the game. Additionally we added the ability to request remote saves on the server. So if a user has just finished a very intensive zone customization, they can insure their work is not lost by requesting a remote save on the server.

Summary


In general, OneWorld is a completely new, efficient and fresh approach to the age old problem of multiple people wanting to work on the same zone at the same time where all users can see the actions of the others in a real-time environment.

As soon as T3D 1.3 is firmed up and launched expect OneWorld to follow about a month later.



#1
04/09/2013 (6:55 am)
Awesome news! Keep up the great work guys. Again, I can't wait to get my hands on it, put me on the list of beta testers or early adopters if one exists!