Plan for Ben Garney
by Ben Garney · 09/09/2005 (9:19 am) · 71 comments
Torque 1.4 RC2 is out. Or, it will be by the time I post this .plan. I'm working on the final checks and uploads. Getting CVS ready to go, tagging things, hoping I haven't missed anything major in the new release... ;) [It really is out - Ed.]So, what's this RC2 business?
Well, the key thing to a solid piece of code is having people test it. Grind on it. Beat it. Use it in strange ways and get the broken-ness out. Torque's been getting that for a long time, which is one reason it's a great piece of tech. But 1.4 has introduced a lot of change, which means we have to beat on it a bit longer.
And, the thing that I always appreciated working with Torque in the past was seeing stuff go right into CVS. Involvement with the development process. Ah, I remember seeing my first patch get accepted and scrolling by on the change log... sigh. So naturally, I feel unhappy about having lots of changes building up that aren't going out to the community. I want to keep the connection as tight as makes sense.
At the same time, CVS is kind of lame, and it produces a lot of hassle because it doesn't always work for people, so we've gone to installers and other stuff. RC2 is not going to be an installer release. It's going out only on CVS, and as you know, we don't officially support CVS, meaning you're on your own getting ahold of it. I think for the people who are really going to get the most mileage out of RC2, navigating that hurdle won't be a challenge. For anyone who doesn't want to deal with what might potentially be a big hassle, the installers and 1.3.1 are the way to go until we get 1.4 final out. This should happen pretty soon.
Should I look at this?
You have to be a Torque licensee to access this stuff.
Only if you're adventurous. You need to be able to use CVS. There are a fair number of bugs and crashes left in it - mostly silly, easily fixable stuff, but it's still in there. Please take a look and give it a whirl - lots of people trying this stuff is the only way we can go from "well, it works on our test cases" to "it's really solid stable."
That said, there's lots of cool stuff to play with here (see next question :), so I think it's well worth your time to give it a poke. Just don't complain if something breaks - post a nice explanation of what happened in the private SDK forums, instead. An assert from a debug build is helpful, a fix for the problem is even better. ;)
We'll be watching for your posts there, or on this .plan, and work on resolving any issues that come up.
What's changed in RC2?
What hasn't changed! We've fixed around 120 issues, ranging from minor stuff like formatting or typos, to big things like a new getting started mod that runs when you first get the engine, new editors, vastly improved GUI system, and more.

One of the hightlights is a hugely cleaner codebase. The majority of the code now conforms to the style guide up on TDN (more on TDN later). Comments and spacing have been added to all parts of the engine. Documentation has also been added in many places.
The console system has been upgraded, as well. Console types are now fully dynamic and macro-zied, making it much easier to add types to the system in resources and codepacks. The Abstract Class Rep console class database has richer information, as well, most notably the ability to get superclass information. There are also a few other surprises in there... ;)
Tied into this, the inspector infrastructure has been rewritten. Justin duJardin has written a kickass new inspector, including an integrated file browser and color picker, as well as making it a lot easier to add more. The new inspector is faster, sexier, and much more direct to use.

Alongside this, we have a fantastic new treeview control. It's big, pretty, and powerful, and designed to be used in inspector-like situations or as a stand alone scriptable control. The GUI system as a whole has been cleaned up and refactored a bit for easier browsing, breaking the contents up into several distinct subfolders.
As Tom didn't mention, we've got Unicode support in RC2 as well. In a technical sense, we have support for Unicode BMP0 by means of UTF8 (we don't currently do surrogate pairs in UTF16). The font system has been rewritten to support this, and the input layers on both Mac and Windows support unicode input now. So all you guys wanting, oh, I don't know, chinese suport - it's there. There's also a new localization framework, since it's hard to take advantage of Unicode support if you can't localize your strings. :)
There are a bunch of new support classes in a util/ subdirectory, and we've also added a bunch of helper classes around the FrameAllocator. (There's also a StringBuffer class to simplify dealing with Unicode string manipulation, which can get pretty tricky.)
We've also added a lot of multithread safing into the engine. TGE runs single-threaded, same as before, but if you want to interface it with multithreaded code (like, say, the background loader in Atlas, or a certain IRC library I know of), the hooks are in there now.
Torque builds are also a lot easier to configure, as we've added a torqueConfig.h that you can put #defines in if you want them - it also has a lot of the commonly used defines listed for easy enabling. The preprocessor defines are now more consistenly named with TORQUE_ as a prefix in front of them.
We added a TORQUE_SHIPPING define, to distinguish between a build that doesn't have error checking and a build which is meant to be sent out to consumers and should be stripped of all non-essentials. This is of course controlled by torqueConfig.h.
The console grammars and parsers also rebuild properly in the VC7 project - I've added flex/bison binaries to the repo, and set up some custom build steps so that they'll regenerate if you change the lex or yacc files. I doubt many people will take advantage of this, but it's there if ya need it. :) I've also added multiline comments and made things a bit more flexible in terms of acceptable syntax.
We've fixed several things in the platform layers on Mac and Windows that were affecting performance negatively. The "maximum" framerate before it idles is now around 1000FPS instead of in the vicinity of 200fps depending on platform.
Interior zone searches are also significantly faster now, as we've done a pass over the engine making sure that that information isn't calculated more than necessary, as well as making the search itself faster (on interiors). This gives around a 10% gain in performance, especially on scenes with particles indoors or near indoors.
The resource manager automagically ignores .svn and CVS directories, giving builds in development settings a significantly faster startup (especially for SVN), as well as reducing the amount of crap in the file browsers. It can also automatically search for files it didn't initially know about, so if you drop a file in after starting your game, it'll find it.
A new bad word filter. Justin's new TabBook control. Enhanced GUI editor. zlib, lungif, ljpef, and lpng are all updated to the latest versions, fixing several security issues, as well as adding some performance enhancements. Several bugfixes and even a few new features from the Warzone demo. A module for reading/writing a convenient chunked file format. Map2dif plus is in, too.
Support for arbitrary sources of streaming audio. Like a movie file, or voice chat, or whatever you want...
Remember that plan where I talked about Theora video playback? That's in now, too. It runs great, many thanks to Eric "Intangir" Rutherford! There are even a few little sample videos that ship with the SDK.
Wow, that's a lot of stuff.
Yes, it most definitely is.
And you did that all by yourself, Ben?
No sirree Bob! I had a lot of help from community members (especially for a lot of the bug fixes). Tom Bampton gets a big shout out for helping me implement the multithreading safety, localization, and unicode support. All of the coders here at GG have been a huge help, especially Paul Scott, who is absolutely kicking ass on the Mac side of things (as well as being a huge asset for general TGE development).
And from you, too, if you take the time to download RC2, give it a try, and post feedback in the Torque forums! ;)
What isn't working? What's going away?
Mac projects may be broken. Linux is currently broken (as is the GCC/Cygwin toolchain). This is the last version of Torque to support VC6, but it should be working. VC7 definitely works, as I have been coding on it every day.
So what's the difference between 1.4RC2 and 1.4 final? And what are you doing now that you've got RC2 out, anyway?
Well, the next two big things for me are getting TDN out to SDK owners, and doing the next revision of Atlas. So now that RC2 is out I will not personally be spending as much time on TGE development as I have been. Instead, Paul Scott and Ron Yacketta will be working on making sure the Linux and Mac sides of RC2 are stable, and general code fixes will trickle into CVS for the next few weeks. Once we're satisfied that the code is nice and stable, we'll label it 1.4 final and kick it out the door.
This gap also gives content pack developers, tutorial writers, resource makers, etc. a chance to see what's changed, curse my code-reformatting ways, and get a head start on getting versions of their packs ready for when 1.4 final goes out.
Ooh, TDN!
Yeah. It's going to get a lot of love in the next few weeks, culminating with a release for SDK owners. The public, planet-wide release of TDN will come a bit later. We want to do this right, which means taking things in steps. :) Trust me, it's already an awesome resource, and it's just going to get a lot better. (Oh yeah, and a lot of documentation on 1.4 features is in there. ;)
Ooh, Atlas!
Yeah. My goals are to add a few missing features, and significantly enhance the toolchain - what's in there right now is a bit tricky for people to use and I want to turn it into a no-brainer to get terrain into TSE. :) More details when I get to that.
What else have you got for me, bucko?
We redecorated our office a bit.

And I think that's about it. I'm gonna get some coffee and think non-code related thoughts now. :)
Please post any feedback on RC2 in this .plan, or in the Torque Private SDK Forums. I do not regularly read the public SDK forums.
#62
I dig the new Inspector... It just looks right looks like Justin duJardin is
doing well so far!
On TDN you should add this resource under "HOW TO WRITE A PLAN"
Can't wait for the final! Thanx all...
09/12/2005 (1:22 am)
This is awesome... The changes and enhancements looks perfect...I dig the new Inspector... It just looks right looks like Justin duJardin is
doing well so far!
On TDN you should add this resource under "HOW TO WRITE A PLAN"
Can't wait for the final! Thanx all...
#63
I did a CVS update this morning and now the Release build works great and the editor improvements are awesome.
But when when I run the Debug build I get a fatal error in guitypes.cc@351:
"GuiControlProfile: unable to find specified profile (GuiDialogProfile) and GuiDefaultProfile does not exist!"
09/12/2005 (10:11 am)
Ben,I did a CVS update this morning and now the Release build works great and the editor improvements are awesome.
But when when I run the Debug build I get a fatal error in guitypes.cc@351:
"GuiControlProfile: unable to find specified profile (GuiDialogProfile) and GuiDefaultProfile does not exist!"
#64
Disregard last post about Debug build.
tnx, Ben and GG for all the hard work.
09/12/2005 (10:15 am)
OOps, soon as I posted that I saw that my debug startup params had a typo.Disregard last post about Debug build.
tnx, Ben and GG for all the hard work.
#65
With the RC2 I get the following error in the console:
09/12/2005 (1:09 pm)
I use the AI path features pretty extensively, perhapse so much that the new release won't work. W/o diggin into the code yet, is there any significant change to the path manager that is going to preclude or interfer with using long paths with hundreds of nodes?With the RC2 I get the following error in the console:
Quote:Warning: (c:\torque14rc2awork\engine\sim\pathmanager.cc @ 68) Warning! Path size
is pretty big - may cause packet overrun!
Fatal: (c:\torque14rc2awork\engine\core\bitstream.cc @ 194) Out of range write
%
#66
So is it possible to load uh terrain blocks similiar to the way TSE handle its terrain? Since Atlas loads the terrain as needed from the harddrive. Or is it possible to develop a terrain-paging system for TGE using these hooks.
Course I have seen the Multi-thread warning threads....heh but its sounds like there is some power under the hood waiting to jump out. :)
JohnH
Reply: Sigh........I know Ben there is no escaping it, I am going have to get TSE :) eventually. TGE has taught me a bit and I hate to put it down. But I figure I got more time to keep learning with it. Before TSE becomes the de facto must have engine to get.
09/12/2005 (2:21 pm)
Quote:We've also added a lot of multithread safing into the engine. TGE runs single-threaded, same as before, but if you want to interface it with multithreaded code (like, say, the background loader in Atlas, or a certain IRC library I know of), the hooks are in there now.
So is it possible to load uh terrain blocks similiar to the way TSE handle its terrain? Since Atlas loads the terrain as needed from the harddrive. Or is it possible to develop a terrain-paging system for TGE using these hooks.
Course I have seen the Multi-thread warning threads....heh but its sounds like there is some power under the hood waiting to jump out. :)
JohnH
Reply: Sigh........I know Ben there is no escaping it, I am going have to get TSE :) eventually. TGE has taught me a bit and I hate to put it down. But I figure I got more time to keep learning with it. Before TSE becomes the de facto must have engine to get.
#67
@Johnny: Actually, the TSE loading code was all implemented without using any of the new multithreading stuff we added to 1.4. Honestly, if you need big terrains, just go get TSE. :)
09/12/2005 (5:10 pm)
@Tim: I think it's safe to say that that error is due to Torque trying to pack too many path nodes into a single packet. Perhaps you applied a fix before to work around this? That code isn't any different than before, except that it will let you know that something is broken due to a long path in the PathManager before it dies.@Johnny: Actually, the TSE loading code was all implemented without using any of the new multithreading stuff we added to 1.4. Honestly, if you need big terrains, just go get TSE. :)
#68
Here's the relevant Subversion documentation, in the section "Merging Conflicts by Hand":
svnbook.red-bean.com/en/1.1/ch03s05.html#svn-ch-3-sect-5.4
09/14/2005 (5:03 am)
@Neo, the stuff in main.cs looks like Subversion conflict marking from doing an update against code you've edited. The update includes an edit to the same line you've modifed locally, and it shows a line of "<", your edit, a line of "=", the edit from the revision control repository, and a line of ">". It's possible it was accidentally checked in that way. (I haven't yet pulled my copy.) You need to figure out which is the correct block and remove the other one, and the marker lines around it all.Here's the relevant Subversion documentation, in the section "Merging Conflicts by Hand":
svnbook.red-bean.com/en/1.1/ch03s05.html#svn-ch-3-sect-5.4
#69
I've kicked off a thread at www.garagegames.com/mg/forums/result.thread.php?qt=34517 for further 1.4 feedback/bugfixes/troubleshooting. A lot of this stuff is privileged SDK owner information and it really ought to be kept in the private forums. My bad. :) Anyway, go to www.garagegames.com/mg/forums/result.thread.php?qt=34517 to do any further bug/troubleshooting/fixes.
General commentary/questions are still welcome here, of course!
Regards,
Ben Garney
Torque Technologies Director
09/14/2005 (10:19 am)
Hey guys,I've kicked off a thread at www.garagegames.com/mg/forums/result.thread.php?qt=34517 for further 1.4 feedback/bugfixes/troubleshooting. A lot of this stuff is privileged SDK owner information and it really ought to be kept in the private forums. My bad. :) Anyway, go to www.garagegames.com/mg/forums/result.thread.php?qt=34517 to do any further bug/troubleshooting/fixes.
General commentary/questions are still welcome here, of course!
Regards,
Ben Garney
Torque Technologies Director
#71
09/15/2005 (12:56 am)
Oh yeah... Good ol' bug number two forty. ^^;
Torque Owner wingman
Who do I have to buy that off of?!?!
:)