Plan for Ben Garney
by Kyle Carter · 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.
#2
09/09/2005 (9:30 am)
Thanks for the kind words, Mathieu. I look forward to hearing what sorts of bugs you run into (hopefully not many!).
#3
09/09/2005 (9:40 am)
nice work...i will definatly have to check this out
#4
Cheers!
09/09/2005 (9:45 am)
Wow! What a great time I chose to join the community! Congrats on RC2 and thanks for your presence/responsiveness on the forums.Cheers!
#5
09/09/2005 (9:55 am)
Great job Ben, great job!
#6
09/09/2005 (9:58 am)
Time to use and abuse the newest version :) Thanks a lot Ben + Tom + Justin + all the others (yeah I'm lazy), sounds like an amazing release!
#7
I'm using a lightly-modified version of 1.3 with the Lighting Pack & parts of the RTS pack... what's the ETA on these getting ported to 1.4? Anyone know?
09/09/2005 (9:59 am)
Man. I'm torn.I'm using a lightly-modified version of 1.3 with the Lighting Pack & parts of the RTS pack... what's the ETA on these getting ported to 1.4? Anyone know?
#8
09/09/2005 (10:03 am)
Talk to the maintainers thereof! :)
#9
09/09/2005 (10:04 am)
Ben is the f'in man, 1.4 ROCKS!
#11
Sounds great. I'm looking forward to poking at it with my proverbial stick.
EDIT: Question!
You mentioned that a lot of the new 1.4 stuff is documented in the TDN. Is there any documentation outside the TDN that we could actually look at now?
PS: Editing resource comments is BROKEN. I'm getting some tag thing.
09/09/2005 (10:12 am)
Woo hoo. Rah rah, go team. Yay.Sounds great. I'm looking forward to poking at it with my proverbial stick.
EDIT: Question!
You mentioned that a lot of the new 1.4 stuff is documented in the TDN. Is there any documentation outside the TDN that we could actually look at now?
PS: Editing resource comments is BROKEN. I'm getting some tag thing.
#12
09/09/2005 (10:54 am)
Kick ass Ben. Utterly kick ass. I might do some Mac testing of this as well to see where performance has changed vs. a stock 1.3 build.
#13
09/09/2005 (11:06 am)
Finally :) I'd just like to say that at least an older version compiles cleanly on VC8 (VS2005 Beta 2) as that's what I was deving the threadsafe and unicode code on. I converted the projects from the VC7 projects and did a quick search/replace in TextPad on the object dirs to switch them from out.VC7.* to out.VC8.*. It should be a fairly simple task to make your own VC8 projects if you need to.
#14
Great work ben, all those sleepless hours and days are paying off :)
09/09/2005 (11:23 am)
Wow, i thought to myself before i clicked the link to your plan "This has gotta be good . . ."! Little did i know it would be this good.Great work ben, all those sleepless hours and days are paying off :)
#15
09/09/2005 (11:26 am)
great stuff as usual, the cleaner codebase is a particular attraction. I won't be upgrading for shelled (if the old versions were good enough for the likes of mb, tt, and orbz, it's good enough for me) but no doubt the cleaner codebase will help for the next project, and 1.4 final should be out by then. how can you guys afford to keep giving these updates out for free?! oh yah, interns... ;)
#16
Great job :)
And hay! Where can I get one of those awesome Starseige Tribes posters for myself? :p
09/09/2005 (11:29 am)
Holy crap. If i wasn't still a nub with the C++ end, i'd switch over now and enjoy all the new awesome stuff.Great job :)
And hay! Where can I get one of those awesome Starseige Tribes posters for myself? :p
#17
Keep up the awesome work!
09/09/2005 (11:49 am)
Wow, this is very nice. I almost want to stop working on my current project and just play with the pretty new code. ;) Seriously though, a whole bunch of those new features are exactly what I would have wanted in a new version of Torque. It's like Christmas in September!Keep up the awesome work!
#18
along with Jay's comment about still using a modified 1.3
What sort of problems would you expect someone to run into if they wanted to pick a class and back port it to 1.3?
what sort of sweeping things have been changed that would make this difficult / not that difficult ?
09/09/2005 (11:49 am)
@Ben, along with Jay's comment about still using a modified 1.3
What sort of problems would you expect someone to run into if they wanted to pick a class and back port it to 1.3?
what sort of sweeping things have been changed that would make this difficult / not that difficult ?
#19
Woohoo!! 1.4 has been a long time coming, but it rocks. So much nice new stuff in there. Please let us know what you think and post any bugs you might find. Note as well that the start-up / launch screen in 1.4 is getting some nice new icons soon.
09/09/2005 (12:04 pm)
Re: RTS and the Torque Lighting Kit... John Kabus has been cranking away on the next release of the TLK, which will have a build that's compatible with TGE 1.4. For the RTS SK, we'll move it over to 1.4 after 1.4 is finalized and proven to be very stable. Luckily, there's not a lot of work to port the RTS SK over, so this should go quickly!Woohoo!! 1.4 has been a long time coming, but it rocks. So much nice new stuff in there. Please let us know what you think and post any bugs you might find. Note as well that the start-up / launch screen in 1.4 is getting some nice new icons soon.
#20
09/09/2005 (12:05 pm)
Fun post Ben. I'll tarde you 2 sheep for TDN right now = ). 
Torque Owner Mathieu
It's time for us to move our new prototype to 1.4 :)
The next GID will be perfect to test this new build.