Follow Through - TGEA 1.7.1 Released
by Matt Fairfax · 06/13/2008 (12:07 pm) · 38 comments
TGEA 1.7.1 is now available!

I've talked about follow through before and I meant it =) For the last couple of months we have been quietly toiling away on a nice solid bug fix release for TGEA and I happy to announce that you can now grab this free upgrade from your account pages! We really do want our products to shine and we think we are right on track to keep making that happen.
In the video above you will see the Barricade demo that we have also been working on. It still needs a little more polish but we should be releasing it any day now. Be sure to check back often so you don't miss its release!
Rockstars
This update definitely would not have been possible without the help of our community! Please keep the bug reports and bug fixes coming. We are keeping an eye on them!There are a few people who really stood out above the rest. As always the unstoppable Jeff Faust was on hand to catch and fix many a bug for us. The ever impressive Rene Damm tackled one of the toughest systems in Torque and made it give up its secrets (Atlas). As if that wasn't enough, Rene also put in some long hours tracking down and wacking a ton of the bugs you guys posted on our forums! Our stalwart "BobTheCBuilder" Kabus continued to move the meter forward with his sweet lighting system. Mr. Torque Coding Machine himself, Tom Spilman, managed bring SFX up to the next level (check the list below). Our Documentation black belt, Michael Perry, wrestled a few new docs into place. And last but definitely not least, we have a newly intrepid intern, Robert (with a hand from the indomitable Matt Langley), to thank for the New Project Generator and the revived Terraformer Tool.

So What Changed?
Atlas
Fixed a hard crash in atlasGenerateTextureTOCFromLargeJPEG()
Added a throttle to threaded part of Atlas I/O pipeline to avoid congestion
Fixed some memory leaks in Atlas
The Player's lightmap sampling code now supports Atlas lightmap files (when they are generated by the Lighting Kit)
Fixed multiple miplevel shifting bugs in Atlas
Modified older Atlas CHU mesher to prevent collision meshes from exceeding internal limits
Added a GUI control for monitoring the performance of Atlas instances
Atlas better handles scenarios where the clipmap size is less than the base tile size of the texture TOC
Separated the Atlas and TerrainBlock blended terrain shaders so that the Atlas blended lightmaps wouldn't be oversaturated by the X2 multiplier needed by TerrainBlock
Split Atlas out into its own separate Project Generator code module so that platforms that don't support everything in Atlas can generate clean projects without it (or if someone doesn't need Atlas). Note the TORQUE_ATLAS define that allows Atlas files to register with the ResourceManager.

SFX
Added the beginnings of an XAudio2 SFX layer. Microsoft is depreciating DirectSound in favor of the much better XAudio sound system which is cross-compatible with Windows and Xbox. In the near future it will be Torque's default audio layer on Windows and we wanted to allow you guys to start getting comfotable with it. There are still a few issues that need to be worked through but we will be providing directions on how to enable it if you are brave and want to start poking at it. Note: To properly compile TGEA 1.7.1 with XAudio2 support you will need to update to the latest Microsoft DirectX SDK (March 2008).
Added is3D parameter to SFXDevice::createVoice() for XAudio2 implementation.
The XAudio2 system now has basic 3D positioning support
Big cleanup of misnamed, missing, and misued sound assets
Removed a bunch of script references to alx functions (now handled by SFX)
Added more docs for SFXDescription and SFXProfile
Added some tips from Robert Blanchet for SFXProfile and SFXDescription to the docs
SFXProfile::getResource() properly handles resource that haven't been preloaded
Merged latest stable release FMOD Ex 4.14.06 (Mac includes not updated yet!)
Replaced the depreciated MOD_System_GetDriverName() with FMOD_System_GetDriverInfo()
Fix for SFX FMod stereo sounds playing too fast
Fixed voice cleanup in SFXNullDevice that was causing shutdown assertions
Fixed incorrect "hasHardware" flag in SFXFMODDevice
We no longer initialize 3D parameters on non-3D sounds.
Removed unused parameter from SFXSystem::_updateSources().
SFXSystem::_update() now uses proper TickMs constant.
Fixed channel setting in AudioGui and AudioMessage SFXDescriptions
Removed duplicate audio type globals in audioProfiles.cs
Fixed OptAudioUpdateMasterVolume() to play test sound again
Fixed OptAudioUpdateChannelVolume() to take a description and not a channel
Disabled "Use Hardware" toggle in options screen and now force $pref::SFX::useHardware to false in sfxAutodetect(). Software audio has largely exceeded hardware in all aspects and we no longer recommend using hardware audio with Torque (Vista doesn't support any hardware audio). You can easily re-enable hardware audio if your project requires it.
Added sfxMetricsCallback() to allow metrics( sfx ) to bring up audio metrics
Added cone support to SFX and all existing devices
Fixed bug in SFXEmitter that caused sound resource to not reload when changed
Fixed old cone support in SFXEmitter
Fixed crashes in sfxPlayOnce() and sfxCreateSource()
We now apply any deferred commits before playing a SFXDSVoice (might solve dsound glitches)
Removed old AudioEmitter code
Fixed bug in OptionsDlg that caused providers with the same output devices to not switch when selected
Major cleanup of SFXEmitter removing broken features and large sections of commented out code
Added 'playOnAdd' option to SFXEmitter to control initial playback state
Added play() and stop() console methods to SFXEmitter for controlling the playback state over the network
Fixed Mission Editor to support new SFXEmitter changes
Added more docs to SFXEmitter

New Project Generator
Creating a new Torque project has always been a bit of a hassle (I documented 11 steps just to get everything named correctly) so we have added the New Project Generator. It takes most of the pain out of setting up you new project and should let you get on your way in no time!

Docs
Added a Migration Guide to the official docs that should greatly help when bringing TGEA 1.0.3 and TGE projects over into the new directory structure and methodologies of TGEA 1.7
Further refined the Getting Started section of the docs (including coverage of the New Project Generator)
General Fixes and Improvements
Added GuiIdleCamFadeBitmapCtrl which makes it easy to do nice popup fading bitmaps
Fixed a warning being generated by the Crossbow files in T3D
Re-enabled the ResourceManager's ability to find files outside of the modPaths when not in TORQUE_SHIPPING mode. This can be very helpful when in development mode.
Increased the number of nodes that a PathCamera can use from 20 to 128
The Unified Shell menu now pulls its background from /scriptsAndAssets/client/ui/unified_background.jpg instead of from /scriptsAndAssets/data/skies/skybox_1.jpg
Added the option to not use an icon for highlighted rows in a GuiGameListMenuCtrl
Fixed SimDataBlockGroup::compareModifiedKey() so that the SimDataBlockGroup will properly sort
Removed the sort we were doing in transmitDataBlocks since it could still cause problems if datablocks have duplicate names and I would prefer to not impose the restriction of unique names on datablocks at this time
You can now enable NVPerfHUD functionality using a pref ($Video::useNVPerfHud) instead of a C++ define/recompile. Check out common/main.cs for an example.
Upped the FrameAllocator size to 16 Mb so that we can handle textures larger than 1024x1024
Disabled allowPlayerStep on the T3D station so that you can't walk up its walls
Reordered initialization of cursors so that GuiCanvas correctly finds its default cursor
Decoupled mouse locking from cursor on/off. Makes using custom ingame cursors possible again.
Added optional auto-deletion (reference counting) to SimObject
Fixed bug that caused left/right versions of all modifier keys to be swapped
Fixed a number of Unicode-related issues
DSO generation once again properly respects the TORQUE_NO_DSO_GENERATION define
Fixed Platform::makeRelativePathName()
Fixed wrong number of arguments in definition of GameConnection::getServerConnection()
Fixed various issues that prevented Visual Studio 2003 from compiling out of the box
Removed Visual Studio 2008 Express' reliance on the Windows SDK since it has its own version built-in
The Terraformer Editor is back and mostly functional (few things may still be broken)
Changed the WaterBlock and shaders to be able to detect the depth of the water at the shore (improves the look of the shorelines) and to detect when it is being occluded from the sun (improves the look of the specular on the water)
Fixed crash where some variables in LangFile were incorrectly being freed as non-arrays
GuiMLTextEditCtrl is now functional
Fixed some out of date onStaticModified() implementations that was causing them to not be called
Fixed a potential source of stack corruption in the Player code
Fixed incorrect deallocation of temporary buffers and incorrect dSprintf calls in winFileIo.cpp
Re-enabled CrossbowSplash in TGEDemoAdvanced since it now works correctly
The application now registers the $defaultGame script global with a default value just to make sure we have it for other uses (like in the ResourceManager)
GFXTexHandle() now takes an optional parameter that will cause it to suppress a missing texture warning for objects that want to test for multiple files before giving up. This was used to greatly reduce the amount of console warnings generated by GuiBitmapButtonCtrl.
Added EMITTER to the reserved texture name list for Interior's so that we don't get console warnings about it
Made it so that Lightning does not attempt to load strike textures that have not been set (reduces console spam)
The script function connect(%server) actually connects to the server again

GFXTexHandle.set() now also has an optional noWarning flag for code that wants to handle the error messages separate from the resource system
Changed the ShaderGen "Failed to open Shader Stream" to something a bit more verbose and useful to the end user
Made it so that the Precipitation code doesn't try to load the textures or shaders if they aren't specified in the datablock
Tweak to the customProfiles so that they will properly override the common profiles and so that they won't double declare datablocks (reduces console spam). GuiControl's should now properly update their pointer to their GuiControlProfile when it is changed on the fly (previously this was causing a number of unpredicatable crashes).
Added a way to allow Platform::makeFullPathName() to expand any ~'s it finds in the path to be $defaultGame
Made a small modification to the FlyingVehicle that makes it more stable
GuiCanvas::renderFrame() properly handles a NULL render target (like from a Null GFX device)
The server now properly sends over a relative path to the mission (rather than the fully qualified path...which was causing lighting issues on the client)
Re-enabled the About dialog in Stronghold
Added Atlas as a creatable object in the Mission Creator
Added a working version of map2dif_plus_tgea.exe to engine\tools
Changing the name of a dynamic field in the Mission Editor no longer causes a crash
Set a better default visibility distance in the Mission Editor
Fixed a case where the GameConnection was not properly getting named ServerConnection (was causing problems with setFirstPerson())
Fixed bad rendering logic in GuiSliderCtrl that would cause a GFX assert
Cleaned up a lot of the code surrounding DDS files so that the TextureManager and other code can properly treat them as GBitmap's. This means that you should now be able to use DDS files anywhere you could previously use JPG/PNG/BMP/GIF files (like as a texture on the Terrain).
Added the handy functions stripExtension() and addExtension which allows you to easily swap out the extension of a file for another extension. You can also have it validate the extension that is to be replaced with a valid texture extension (so that it won't strip off part of the file name).
GBitmap::findBmpResource() and GBitmap::load() now properly attempt to load the file with the given name and then will try to load with all of the other valid texture extensions. Before it was simply appending the different extensions to the full file name so you would get things like "demoWindow.jpg.png". This code was made a lot cleaner by using the stripExtension() and addExtension helper functions mentioned above.
Removed some extra console spam from GBitmap::findBmpResource() and GBitmap::load() for when it couldn't find a specific filename (it was spamming all the possible variations)
Removed the warning/assert about non-mipmapped dds files since we are generating mipmaps for the ones that don't have them
Disabled the console spam that the DDSFile loading code was spewing out about the header info
Added an "Optimized" build configuration to all of the visual studio solutions/projects templates. This is for doing debug builds that are optimized in the same way as release builds. Very useful for debugging problems that only occur in release builds (uninitialized variables usually). The data values aren't always accurate but it does give you a useful callstack most of the time.
Multiple dynamic lights should work again inside of Interior zones
The red and blue channels of the Interior lightmaps no longer get swapped on relight

Fixed a texture leak in the GuiBitmapButtonCtrl
The texture leak dump now attempts to show the texture name (little better formatting)
ShapeBase::setImageState() no longer tries to start an emitter when it doesn't exist
Renamed the previously unused "Products" folder to "Projects". This is the recommended location for your new TGEA projects (and the default output location of the New Project Generator).
All of the GameExamples (and Template) now allow you to bring up the more in-depth OptionsDlg with "ctrl o"
Dedicated servers should now work properly
Added the ConsoleFunction getTerrainUnderWorldPoint() which returns the TerrainBlock that is directly under a point in world space
Updated getTerrainHeight() to work with multiple TerrainBlock's in a mission. It will defaulty get the height of the highest terrain at an (x, y) world position. You can now pass in an optional z world position and have it get the terrain height of the first terrain it finds that is lower than that z position (like in a cave).
Added swap() to tAlgorithm.h
Fixed the Gui Editor to allow you to drag items into groups like you could before
Heads Down
We've really cranked to bring all these changed into TGEA this quickly. As you can see, it's an immense list for a point update and we're really proud of the improvments. The entire team including the awesome associates we work with are shifting our efforts to the next big feature additions to TGEA. Remember some of that stuff we talked about in deep R&D? Yeah...big changes coming. Expect to be shocked, we're aiming very high. Even though we'll be a little less active smashing bugs this round, we still want to hear from all of you. Grab this release, tell us what you love. Tell us where it hurts. We're listening and we're applying all your feedback in this and future releases.Big thanks to everyone involved in helping with this. Getting this much done would be impossible without you!
About the author
I am a Game Designer at PopCap who has worked on PvZ Adventures, PvZ2, Peggle Blast, and Bejeweled Skies. I am an ex-GarageGames employee who helped ship TGE, TGEA, Torque 3D, and Constructor.
#2
06/13/2008 (12:32 pm)
Just for the record, Matt has been wrestling with the last few hiccups to get this released. You should see him in the office right now...he looks the happiest he's been ALL WEEK. ^_^
#3
What's the deal with TGEA being "tried and tested on several of today's hottest consoles, including [...] Wii and PS3"? I didn't know there was a TGEA port to either of those. Should we read into this that there's actually a non-directx flavor of GFX actually in the works?
There's also a comment in SFX:
"Merged latest stable release FMOD Ex 4.14.06 (Mac includes not updated yet!)"
Is this something new and exciting that everyone's been waiting for?
Gary (-;
06/13/2008 (12:34 pm)
That looks awesome, watching that promo video.What's the deal with TGEA being "tried and tested on several of today's hottest consoles, including [...] Wii and PS3"? I didn't know there was a TGEA port to either of those. Should we read into this that there's actually a non-directx flavor of GFX actually in the works?
There's also a comment in SFX:
"Merged latest stable release FMOD Ex 4.14.06 (Mac includes not updated yet!)"
Is this something new and exciting that everyone's been waiting for?
Gary (-;
#4
Wooooooooooooooooooooooot!!! :)
06/13/2008 (12:34 pm)
Great work Matt, Tom, Jeff, Rene, and everyone else!!!Quote:next big feature additions to TGEA
Wooooooooooooooooooooooot!!! :)
#5
06/13/2008 (12:36 pm)
Awesome!
#6
06/13/2008 (12:41 pm)
What a write-up!! That's some awesome work you did with 1.7.1, Matt. Love to see such progress on all fronts. Great times.
#7
06/13/2008 (12:44 pm)
Freaking Awesome! Congrats to everyone involved.
#8
Just a bit of future proofing of the demo based on some projects that we have in the works ;)
06/13/2008 (12:47 pm)
"tried and tested on several of today's hottest consoles, including [...] Wii and PS3"Just a bit of future proofing of the demo based on some projects that we have in the works ;)
#9
06/13/2008 (12:52 pm)
Oh...and "no comment" on the Mac =P
#10
Finally! This was always won of those "little things" in TGEA for me. I know awhile back Ben Garney said that "shore line rendering was a game-specific thing" but I had always thought, "Can't you at least do a little alpha blending?" It was just very jarring to have water, water, water, LAND and the edge was like a razor.
Excellent job here guys. I'll be getting all over this in the next month or so, so hopefully I can flush out some more bugs for you.
06/13/2008 (1:24 pm)
Quote:Changed the WaterBlock and shaders to be able to detect the depth of the water at the shore (improves the look of the shorelines) and to detect when it is being occluded from the sun (improves the look of the specular on the water)
Finally! This was always won of those "little things" in TGEA for me. I know awhile back Ben Garney said that "shore line rendering was a game-specific thing" but I had always thought, "Can't you at least do a little alpha blending?" It was just very jarring to have water, water, water, LAND and the edge was like a razor.
Excellent job here guys. I'll be getting all over this in the next month or so, so hopefully I can flush out some more bugs for you.
#11
06/13/2008 (1:55 pm)
Holy Cow!!! Those are some fixes there. Great job to all who worked on it. :-)
#12
06/13/2008 (2:06 pm)
I love GG.
#13
Very happy to see this release make it out the door! Congrats and great job!
Can we get a pic of Matt's beaming face???
hmmm...Documentation black belt....I love it =)
06/13/2008 (2:13 pm)
Wooooooooooo! =)Very happy to see this release make it out the door! Congrats and great job!
Can we get a pic of Matt's beaming face???
hmmm...Documentation black belt....I love it =)
#14
06/13/2008 (3:19 pm)
Just had a quick play with map2dif_plus_tgea. On a busy, multiple dif scene my FPS count has gone from 65 to over 300. That's quite a performance boost!
#15
06/13/2008 (4:01 pm)
This is - Impressive ;)
#16
06/13/2008 (4:46 pm)
Wow... I mean *really*, wow. Nicely done and thanks a ton!
#18
06/13/2008 (6:52 pm)
Now? :D
#19
06/13/2008 (8:36 pm)
Shuweet! Nice work Matt, and everyone else that put time into 1.7.1.
#20
06/13/2008 (8:51 pm)
Just the update what I looking for! Next for the AFX update! 
Torque 3D Owner Brett Seyler
Default Studio Name