Game Development Community

Torque 3D Beta 3 Released (Features, Improvements, Fixes, Notes, and Known Issues)

by Matt Fairfax · in Torque 3D Professional · 06/24/2009 (1:59 pm) · 20 replies

Beta 3 Release Blog
Go grab it in your My Account page and here's the info on Beta 3.

New Features

  • Shape Editor - allows you to apply various changes to a mesh after it is loaded like merging in animations, defining nodes, renaming meshes, etc
  • Decal Editor - allows you to quickly paint and edit decals in the scene
  • Major rework of Decal related source code, now is more efficient massively easier to understand
  • Major reworking of the Material Editor to improve flow and usability
  • Added a Material Selector and tagging system for Materials
  • Mesh Road Editor - allows you to quickly prototype a 3D mesh road
  • Full pureLIGHT support including improved Tonemapping and the new Vertex Color Lighting (allows you to bake lighting into the vertex colors...more efficient for small/dense meshes) as well as support for mixing with Advanced Lighting
  • Added a pureLIGHT Demo with several new example scenes
  • Added Portal and Zone objects and exposed them to the World Editor
  • SFX now supports streaming sound
  • Switched Glow to be a new PostFX
  • Improved TerrainBlock rendering
  • Added Normal mapping for TerrainMaterials
  • Added Parallax mapping for TerrainMaterials
  • Added Parallax mapping to mesh Materials
  • Mac Support for Basic Lighting, TerrainBlock, Water, ScatterSky, CloudLayer, Torque Toolbox, and pureLIGHT
  • Interiors can now be exported to Collada via the World Editor
  • Added a Toggle Visibility tool to World Editor which allows for toggling on and off various debug rendering modes as well as toggling the visibility of various game classes
  • Vastly improved Reflection handling
  • Added new 'soft snap' capability to the World Editor (hold down CTRL while moving selected objects to activate it)
  • Added new PhysX Cloth object and exposed it to the World Editor

Improvements

  • Further iteration and improvements to visual styles and layouts for all of Torque 3D
  • Meshes/Materials/SubMaterials are now loaded via selection in the scene. Should be able to go from selection in object editor straight to the Material Editor without hassle.
  • Material Editor can now switch out the Materials used on a mesh (updating its mapTo)
  • Change Material saving to save the Material to the location of the artwork whose Material you are editing
  • Added light volume visualization to point and spot lights
  • Projectiles can now place decals on impact
  • The Torque Toolbox now allows you to jump into directly editing a level
  • Added onRezone() to SceneObject to support Zone class
  • Added getZoneBox() to SceneObject to support scene traversal for Zones
  • Added Portal traversal logic to SceneRoot
  • Added support for oriented bounding box intersection tests to Frustum to support Portals
  • Major reworking and improvements to the GuiColorPicker
  • GuiColorPicker text edit controls now show and accept float values to the "0.0n"
  • The terrain texturing is now based on a size in meters within the TerrainMaterials and not hard to understand scales
  • Merged modified version of Alt-Fire resource (www.garagegames.com/community/resources/view/5546 )
  • FPS Genre Kit - Added Alt-Fire options for most of the weapons
  • FPS Genre Kit - Major improvements to weapons, explosions, and effects
  • FPS Genre Kit - Health HUD is event driven rather than schedule driven (improves performance)
  • FPS Genre Kit - Rocketlauncher now has a unique projectile for underwater
  • FPS Genre Kit - Removed old/unused art assets
  • FPS Genre Kit - Converted Warrior Camp's textures to .DDS for improved rendering performance
  • Enabled PostFX in Basic Lighting (where they make sense)
  • Added a simple helper, dbgTorsion() - Calls dbgSetParameters( 6060, "password", false ), which are the default values Torsion uses when connecting
  • Added the ability for SpawnSphere's to specify a spawnClass, spawnDatablock, spawnProperties, and spawnCommand. These are properties that are useful for allowing the SpawnSphere behavior to be driven from inside the editor
  • Added GuiMusicPlayer to test streaming SFX
  • Added AudioStream2D and AudioStreamLooping2D profiles to support streaming SFX
  • PostFX now supports $accumTime shader constant
  • New TerrainCellMaterial object which generates multipass ShaderGen based shaders
  • Added new MFT_TerrainXXXX features for terrain rendering
  • TerrCell now stores the TerrainBlock...removed passed terrains in most calls
  • TerrCell::cullCells() now takes an object space LOD position... allows for proper screen error for shadow rendering
  • TerrCell now manages TerrainCellMaterials for normal and prepass rendering
  • Refactored TerrainBlock cell bounds debug rendering
  • Removed old TerrainDetailLayers render object
  • Added a new xml-based "Settings" class for use in scripts
  • Tightened up the various "actor" bounding boxes to better reflect the model sizes
  • Improved Reflection rendering
  • Added new classes ReflectorDesc, ReflectorBase, PlaneReflector, and CubeReflector. These are helper classes used by those who wish to render reflections (such as WaterObject or ShapeBase) and get registered with the ReflectionManager.
  • Removed the ReflectPlane class, it has been replaced by PlaneReflector
  • Added a new RenderBinManager (RenderOcclusionMgr) and RenderInstType (RIT_Occluder) so that we can use occlusion testing on shapebase objects and skip dynamic cubemap updates when possible
  • Converted Interior planar reflections to use the new PlaneReflector class and ReflectionManager so they are working again
  • Added new terrain smoothing feature to Terrain Editor
  • Integrated the "Aligned Particle" resource
  • Updated the Player splash and surf particles with better artwork from Todd Pickens
  • Hooked up the improved aligned surf particle and splash particle to the Player
  • Integrated changes from Jaime McEntire so Player emits aligned wake particles while treading water
  • Proper keycode mapping for Mac
  • Axis Gizmo now renders a simple transform axis with no handles (in object alignment) while in selection mode in the World Editor
  • Greatly increased application startup speed
  • Added Container::buildRenderedPolyList()
  • Hooked up ability to specify a weapon has "infinite ammo"
  • Took out many of the console warnings for each of the Road, River, and Mesh Road Editors
  • Moved TerrainMaterial's to terrains/materials.cs and deleted the unused managedTerrainMaterails.cs
  • Added profiler blocks to ClippedPolyList
  • Point2F/3F - added operators to divide by other points
  • Removed the now defunct "shadowed" ShaderGen variable
  • Added new World Editor icons for CloudLayer, Decal, and DecalNode
  • Updated World Editor icons for TerrainBlock and ScatterSky
  • Set better defaults for the transform tools scalars
  • Renamed and properly exposed $Player::renderCollision to allow you to visualize the Player's collision queries in realtime
  • Add console function to check if one class is member of another (without having to have an instance of that class)
  • Changed FLT and UINT to _FLT and _UINT in compiledEval.cpp to avoid bad name collision issues
  • Changed many instances of 'min' to 'minPt' or 'minZ' and 'max' to 'maxPt' or 'maxZ', same with 'far' and 'near' to avoid collision with standard function names
  • Using more lightweight #include for platform detection in platformIntrinsics.h
  • Axis Gizmo now adjusts the farclip distance when it renders so it should always be visible
  • DecalRoad now does a better job determining when to subdivide and ultimately clipping when on jagged terrain
  • DecalRoad's editing spline aligns properly to the terrain
  • Added shortcuts getRightVector() and getUpVector() to MatrixF
  • Modify Axis Gizmo to allow any camera transform to be used (rather than only that of the control object)
  • Mesh Road and River editors alter nodes via object transform now
  • Added optional case-sensitivity for ArrayObjects
  • Removed unused named-sets LightSet and ReflectSet
  • GFXStateBlockDesc::setZEnable() is now called GFXStateBlockDesc::setZReadWrite() for clarity
  • GFXDrawUtil methods for 3d primitives most now take a GFXStateBlockDesc so that they can properly set up StateBlocks for rendering
  • Added GuiSliderCtrl.setValue()
  • Updated SFX metrics to include more useful information
  • The core OptionsDlg now only reference the core art assets
  • Moved Blank_Sky into core/art/skies
  • Add setNodeParent() functionality to TSShapeConstructor
  • The hardware occlusion query state is echoed to the console in GFXPCD3D9Device::init()
  • Added String::clear()
  • Renamed OnStartup/OnShutdown macros to OnTorqueStartup/OnTorqueShutdown so that they do not collide with 3rd party code
  • GFXTextureObject::kill() now deletes the stored dds file (fixes some texture related crashes)
  • GFXTextureManager::_createTexture() deletes previous stored bitmaps
  • Moved DDSFile::getPitch() from header to source file
  • Cleaned up excessive and unnecessary const usage in DDSFile header
  • Fixed up headers in ddsFile.h and ddsLoader.cpp
  • Decal Road Editor - Added a per road renderPriority for better control of overlapping roads
  • River Editor - Debug rendering of the segment "walls" now looks a ton better by fixing some StateBlock z-flags
  • Exposed the 'separate alpha blend' feature to GFXStateBlock
  • Added GFXStateBlockDesc::setColorWrites()
  • Added support for disabling shader error logging via GFXShader::setLogging()
  • Moved MFT_ feature types to its own header and source - materialFeatureTypes.cpp/h
  • MaterialFeaturesHandle replaced with new FeatureSet
  • We now have MaterialManager mExclusionFeatures and mDefaultFeatures
  • ProcessedCustomMaterial now uses the ShaderRenderPassData slots and not its own internal mStages
  • Moved duplicate _setStageData() in ProcessedShaderMaterial and ProcessedFFMaterial to ProcessedMaterial
  • Material::StageData now uses a HashTable to index textures for features...protected members and added accessors
  • BaseMatInstance::init now only takes the instance features... the global features are gathered internally
  • Added a bunch of documentation to BaseMatInstance
  • MFT_SelfIllumination has been renamed to MFT_IsEmissive
  • Removed duplicate RenderPrePassMgr constructor and exposed GFXFormat to it
  • Removed old mTerrainPrepassMatInstance in RenderPrePassMgr. It has been replaced with the new terrain cell material
  • Added a new FeatureType class
  • FeatureMgr is now a Singleton<> and refactored to support FeatureType
  • ShaderConnector::getElement() supports a different register count from the element count
  • ShaderFeature now has mProcessIndex for supporting repeating features with a unique index within the feature set
  • ShaderGen now builds all features into one large MultiLine mOutput to support repeating features
  • ShaderGen::getShader() now deals with failed shader initialization
  • Moved some of the documentation in materialDefinition.cpp to the header
  • Removed old terrain shaders
  • Fixed last references to alxGetWaveLen and alxSourcef usage in the chadHud voice message playback system to use the new SFX functions
  • Skybox and CloudLayer now use z-reads to prevent unnecessary fill
  • PSSM is now subclassable
  • Added a start/end to the pre-pass signal
  • Added debug group to Mesh RenderManager
  • Tweaked vert position HLSL for subclasses
  • ShaderGen procedural shaders now use a single 64bit hash key to reduce the size of the shader file names and make them easier to find in the folder
  • Removed LightManager::add/removeActivateCallback() - just exposed smActivateSignal instead to allow full control over binding
  • SceneGraph::_setLightManager() no longer triggers the ShaderData and flushAndReInitInstances(). Instead the MaterialManager and ShaderData register for light activation events.
  • Merged in and improved on Orion's isDefined() ConsoleFunction (www.garagegames.com/community/resources/view/17341 )
  • Refactored RenderGlowMgr to have its own material hook for specialized glow materials. The glow materials use the new MFT_GlowMask to allow material passes with glow to be masked out by non-glow passes.
  • Terrain Materials selector no longer opens up at the tools folder by default. It should open up at the TerrainMaterial folder if there is one, and if not, open up at art/terrains.
  • Added back "gridSize" field name as a duplicate of the new name of "gridElementSize" so that we maintain backwards compatibility with TGEA WaterBlock's
  • GuiTextEditCtrl "numbersOnly" option now allows floating point numbers
  • DecalRoad and Decal's now render into the "decal" bin, which fixes issues caused by them being sorted with other objects in the scene
  • Added a render priority to DecalData and DecalInstance
  • Added "lightNormalOffset" field to ExplosionData, allowing you to specify a distance in the explosion normal direction to offset explosion light. This allows you to get more lighting on the hit surface if your explosion/light radius is very large.
  • Added GFXTarget::preserve() - This method indicates that, the next time this rendertarget is deactivated/activated, it will contain the data that it had when it was deactivated
  • We now sort point/spotlights in the light bins by material type for improved performance
  • Made the prepass state setup more robust
  • Added/tweaked more gamepad friendly "key" binds
  • The MaterialManager now holds on to a "isPrePassEnabled" state which is checked by ProcessMaterial (and TerrainCellMaterial) to disable zwrites in the forward pass. Note that any material that is not part of the normal forward pass should explicitly set the zwrite via MatInstance::addStateBlockDesc()
  • Added calculation of intersection point to edgeFaceIntersect() in Frustum class
  • Added TerrainLightMapFeatHLSL
  • RTLightingFeatHLSL now looks for an optional 'lightMask' to modulate the direct lighting
  • TerrainBlock now maintains a lightmap texture handle which is allocated on request
  • Set better default Trigger and PhysicalZone polyhedrons (www.garagegames.com/community/forums/viewthread/93815 )
  • GFXGLShader now supports macros and #includes (even when GLSL doesn't)
  • GFXGLShader now obeys the GFXShader::smLogErrors and smLogWarnings and will return false if shader fails to compile
  • Added a model for the PhysX Demo's "gravity gun"
  • GFXD3D9Shader now adds a #line pragma to shaders so that the proper file path is reported in HLSL compiler error and warning messages
  • Removed old D3DXCompileShaderFromFileA since it is not used
  • GBufferConditionerHLSL now uses tex2dlod() on SM3 and above
  • Changed _SIGNAL_H_ to _TSIGNAL_H_ to avoid clashes with system headers
  • Added assert on already locked texture to GFXD3D9TextureObject::lock()
  • The GFX OpenGL layer now uses version 1.2 of GLSL
  • Added Sim::spawnObject() helper function which allows you to pass in class, datablock, name, properties, and script and it builds and instantiates the object for you. Exposed this to script as the ConsoleFunction spawnObject().
  • Added and exposed SimSet::getRandom() returns a random object from the SimSet
  • Added and exposed SimSet::callOnChildren() which loops through the children of the SimSet and calls the passed in method and arguments on each object (it calls it on the children groups also by default)
  • Cleaned up a ton of GCC warnings
  • Made a small modification to tinyxml that allows it to indent text nodes properly (looks cleaner)
  • Added Point2F::equal() which mimics Point3F::equal() - tests equality within a certain epsilon rather than an exact value - handy for dealing with floating point inaccuracies
  • Rewrote OptimizedPolyList to better match the best format for exporting data to Collada
  • Added ColladaUtils::exportToCollada() which takes an OptimizedPolyList as input and exports it to the specified file (this relies on a few new supporting functions)
  • Added and exposed InteriorInstance::exportToCollada() which can dump an Interior to a Collada file
  • Added a mAutoGenerated flag to Material and exposed Material::isAutoGenerated()/Material::setAutoGenerated() to C++ and script
  • Took the illegal space out of the names of autogenerated Materials
  • Renamed FlareState to LightFlareState
  • Created a LightAnimState so non-LightBase objects can use use LightAnimData based animations
  • Added a new class LightDescription for defining a lights properties and handling animation/rendering for non-lightbase classes
  • Projectile now uses LightDescription which means it can have animation and flare effects
  • Set proper UUID/MIME defaults for various Demos, Genre Kits, and Templates
  • Removed outer while loop in Vehicle::resolveCollision...this should help with Vehicle collision "crashes"
  • Torque Toolbox archives faster now during packaging
  • Added fxFoliageReplicator back to the World Editor Library
  • Removed semi-working penumbra estimation for point light shadows in pointLightP.hlsl and replaced it with the same shared soft shadow code used by the other lights
  • Change the range of camera speed slider to 1-200 in the World Editor
  • GroundPlane does not allow modifying position and scale anymore (it had no effect on the GroundPlane)
  • Reworked error reporting on terrain import to use error string returned from TerrainBlock::import()
  • Removed 16bit greyscale heightmap restriction...now support 8bit heightmap importing (will automatically smooth the imported heightmap)
  • Removed material shader info spew coming from Interiors and TSShapes that occurred at load time. Use dumpMaterialInstances() and MyMaterial.dumpInstances()
  • Added "Help" menu to mission editor with links to online documentation and forums. Also added shortcut key "Alt F1" for online documentation.
  • Added Point2F and Point2I Min/Max statics
  • Removed old fxLight and fxSunLight classes which have been replaced by new classes and light features
  • Added class name dump to SimObject::dump()
  • Changed LightInfo radius to be range and to support a Point3F range for future ambient/box light
  • Fixed threads to allow them to be restartable
  • Expose splash window to TorqueScript to allow for direct control
  • Made dropToGround drop onto any static object instead of just terrain
  • Added ShapeBase::getLookAtPoint() to do quick focal point queries
  • Moved the LightRayPostFx into its own script file and folder in PostFX
  • Renamed PostFX $screenLightPos constant to $screenSunPos to better reflect what it really is
  • Added profiler blocks to GFXD3D9StateBlock::activate()
  • Exposed GuiListBoxCtrl's ability to associate a SimObject with an item on its list
  • Added drawTriangle() to GFXDrawUtil
  • Modified MathUtil's mTriangleDistance() to optionally pass back information information about the closest triangle
  • Box3F has been extended to allow for its dimensions to be set as if centered around the origin, and for its center to be directly modified
  • Added Var( name, type ) constructor for ShaderGen
  • Pruned commented code out of ShadowMapPass
  • Re-enabled Vehicle mounting for TemplatesFull
  • Increased the size of ArrayObjects char buffers
  • Disabled the pixelSpecular = "true" that was on by default on Collada Materials since it looks wrong in most cases
  • Changed TSShapeConstructor to be a SimObject instead of a SimDataBlock, and added initial support for saving such objects to a script file
  • Renamed source/gui/missionEditor directory to source/gui/worldEditor. Also updated all source code references to the old pathway.
  • Renamed MissionEditorProfile to WorldEditorProfile
  • Modified the tool's onMissionEditorStartup() to onWorldEditorStartup()
  • Renamed all $Pref::MissionEditor:: to $Pref::WorldEditor::
  • Renamed worldEditor/scripts/interfaces/missionInfoEditor.ed.cs to levelInfoEditor.ed.cs
  • Rewrote game.cs for the various Demos, Genre Kits, and Templates to be easier to edit the type of object that the "player" spawns as
  • Added "lockHorizScroll" and "lockVertScroll" fields to GuiScrollCtrl, and modified the class to check these for scrolling capability rather than "hScrollBar" and "vScrollBar"
  • Removed old $Client::ManagedTerrainMaterials stuff that is no longer used
  • Limited the amount of geometry generated by GroundPlane to make it play with large viewing distances
  • Implemented "Center Horizontally" used by GUI editor
  • Changed GameBase to allow a GameBase derived object to have a NULL datablock
  • Inspector now rejects invalid object names
  • Gui Editor filter out non-GuiControls in GUI list
  • Material Editor will now convert old field names (baseTex, bumpTex, etc) over to the new field names (diffuseMap, etc)
  • Updated the World Editor tool bar to make use of GuiStackCtrl
  • Modified GuiStackCtrl to optionally not touch a child's position or extent in the opposite direction of the stack
  • Modified the old "Stick to Terrain" button to be a dropdown that sets the current snap behaviour: None, Objects Below, or Soft Snap. This setting is saved to prefs. Don't forget that if soft snap is always turned on, you can hold down CTRL to temporarily turn it off.
  • Material Editor bitmap change dialogs now includes all of the supported files, rather than just png at first
  • World Editor now has better detection of when someone leaves an edited level (will prompt you to save)
  • The SDK installer now sets an "InstallPath" registry key so that other apps can reference it
  • Removed the dependency on "game/materialEditor" folder (no more console spam when it doesn't exist)
  • Exposed decalBias on LevelInfo for controlling the offset of the various decals in the scene
  • Removed extremely slow DirectX version check (wasn't being used properly anyway)

Fixes

  • The tilde key is no longer passed to the console while the World Editor is open on the Mac (ActionMap was using Input::getKeyCode() which was previously unimplemented on the Mac)
  • The Axis Gizmo's "visual" alignment now changes instantly when switching between object/world rather than appearing to not change until a new object is selected
  • Cubemap loading is deferred until the Material is actually processed/used (was loading every single Cubemap - 6 images - at initial boot)
  • GuiBitmapCtrl image loading is delayed until needed
  • Spotlight now uses linear depth
  • Fixed a crash when MatTextureTarget was deleted but not unregistered
  • GuiSwatchButtonCtrl loads transparency-grid bitmap in onWake rather than the constructor (which is a really bad idea for any ConsoleObject)
  • Fixed BottomPrint & CenterPrint so that they now "print" to the correct locations, ie. center-center and center-bottom instead of left-top and left-center
  • Disallowed exclusive fullscreen mode in web browser (prefer standardized non-exclusive browser fullscreen modes)
  • Default Width and Default Depth for both mesh road and river should work now
  • Fixed the Warrior Camp TerrainMaterials
  • Re-hooked up the onEditorEnable/Disable callbacks so that objects that rely on knowing when the World Editor is open can respond accordingly (should replace gEditingMission global)
  • Client-side TerrainBlock bounding box now updates correctly
  • The mount point specified for game:/ with -project now gets set correctly
  • game:/ is getting remounted when manually locating main.cs
  • Bottom Bounds behavior is functional in the World Editor again
  • TSShapeInstance::clipPolyListOpcode() works for a shape with more than one submesh
  • Disabled splash screen when command line arguments are detected. This fixes the precompile step in Torsion.
  • Made Player's "renderFirstPerson" only affect diffuse pass so that the Player shows in reflections instead of only in shadows
  • Integrated GuiChunkedBitmapCtrl fix (www.garagegames.com/community/forums/viewthread/92761 )
  • Integrated GFXDrawUtil::drawWireCapsule() fix (www.garagegames.com/community/forums/viewthread/92939 )
  • Temp fix for self shadowing terrain errors (www.garagegames.com/community/forums/viewthread/92629 )
  • DecalRoad no longer casts shadows
  • Corrected viewport offset bug in Decal Road Editor and River Editor by switching them to Docking="None"
  • Fixed the Decal Road undo/redo bug
  • Water fog no longer remains when the Water objects are removed
  • Water fog should work for Vehicles and PathedCameras
  • Multiple refinement and fixes for the Torque threading code
  • Fixed a bug in the mRound console function
  • Changed several text fields from TypeString to TypeCaseString so that case gets preserved
  • Made GuiInspectorField honor casing of TypeCaseStrings
  • Made GUI buttons preserve casing of their text strings
  • Integrated the crash bug fix for setFieldComponent() (www.garagegames.com/community/forums/viewthread/93003 )
  • Fixed dynamic cubemap reflections for ShapeBase objects
  • SkyBox now renders properly into dynamic cubemaps
  • Removed references to drawTransform, which appears to be broken
  • Changed GuiControls to update their own extents on resize before resizing their children
  • GuiSliderCtrl::onMouseDragged() callback executed after thumb update so callback sees new value instead of old
  • Fixed a pixel offset for type 1 borders in GuiDefaultControlRender::renderBorder()
  • GuiScrollCtrl should be able to resize properly with multiple child controls of different positions/extents
  • The specular feature in Advanced Lighting no longer breaks alpha blending on Materials with a second pass on them
  • Fixed an object leak under nplugin
  • Integrated XInput gamepad button fix (www.garagegames.com/community/forums/viewthread/93967 )
  • Integrated GUI Editor save fix (www.garagegames.com/community/forums/viewthread/84593 )
  • Weapon now always renders at the mount point for shadows in first person
  • The GFX->getNumSamplers() for DX9 is now based on the shader model
  • Fixed a crash bug where the DDSFile object had no proper copy constructor, so when GFXTextureManager::_createTexture() made a copy for a GFXDefaultPersistentProfile the surface data would be left pointing at deleted memory
  • PxWorld::castRay() no longer casts beyond the specified end position
  • Corrected the bitmask for extended CPU model bits
  • Fixed the clashing type library stuff for ActiveX plugins
  • GFXD3D9Shader::init will now properly return false if the vertex or pixel shader fails to compile
  • AdvancedLightManager now picks GFXFormatR16G16B16A16 or GFXFormatR16G16B16A16F for the prepass gbuffer based on which one supports blending
  • GBufferConditionerHLSL now selects Spherical normal storage for float formats
  • Removed left over Atlas Project Generator module and Atlas related gui files
  • We use the D3DLOCK_DISCARD for locking dynamic index buffers now... fixed DirectX debug runtime performance warnings
  • Removed old lightmap feature enabling logic which causing lightmaps on all multiple UV surfaces
  • Removed MFT_Visibility from PrePass materials
  • Fix Collada loader crash when loading models with unnamed animations. Also correct models with non-unique node names.
  • Fixed crashes caused by adding ConsoleMethods to AIConnection instead of AIClient (www.garagegames.com/community/forums/viewthread/94005 )
  • TerrainBlock now gets light manager activation events so it can purge materials. No more crashing when switching Light Managers.
  • Added the default shaders for platforms which don't have fixed function
  • GFXStateBlockDesc::setAlphaTest() no longer always enabling alpha test
  • ShadowMaterialHook now always disables stateblock based alpha test and alpha blend on shadow materials
  • The user is no longer punished when cancelling out of a TerrainMaterial selection by having the TerrainMaterial deleted
  • PathCamera no properly gets an mContainer and cleans itself up properly when it is removed
  • Fixed some GUI rendering bugs (needed to unset shaders and textures after 3D rendering)
  • Fixed up the html path for Firefox debug testing
  • Added missing includes (www.garagegames.com/community/forums/viewthread/93761 )
  • GuiBitmapBorderCtrl::onWake() no longer crashes when its profile does not yield valid bitmap array (www.garagegames.com/community/forums/viewthread/92761 )
  • GFXTextureManager::validateTextureQuality no longer scales in the wrong direction (www.garagegames.com/community/forums/viewthread/93923 )
  • Added a new texture profile for the terrain layer id texture that ensures that it won't be downscaled which was causing a crash on low memory systems
  • Fixed bugs where we were passing String or Torque::Path directly to Con::printf in the Collada loading classes
  • GroundPlane renders correctly now when going in and out of the World Editor
  • Lowered GroundPlane squareSize threshold to a more reasonable 16
  • Added a warning about importing heightmaps less than 128 in size
  • Renamed destroyMissionEditor() to destroyBase() (www.garagegames.com/community/forums/viewthread/94199 )
  • MessageBox() now works without a Platform window being active
  • Added GuiInspector::apply() console method which calls inspectPostApply() on the currently inspected object. Then made a call to it in WorldEditor::onEndDrag() which causes the inspected objects to update their transforms after any drag operations.
  • Changed World Editor to work with SimObjects in selections instead of only SceneObjects. This allows SimGroups to be deleted.
  • Made editorPrefs.ed.cs not stomp already set prefs (Editor prefs will actually stay set)
  • Reworked GFXD3D9StateBlock::activate() to properly limit the texture stage states to 8 and the sampler states to the getNumSamplers()
  • Flipped the backwards Y texture coord which was messing up normal mapping on the GroundPlane
  • Flipped the backwards y texture coord issue in TerrainCell causing bad normal mapping on terrain
  • Fixed the Player::collidingWithWater() method
  • Corrected bad variable names (%obj -> %this) in ShapeBase::setDamageDt() and ShapeBase::clearDamageDt()
  • Fixed the Terrain Editor pressure slider to be 1 - 100%
  • drawCone() now properly treats it passed in 'radius' parameter as a radius and not as a diameter. Fixed places that used it to compensate wrongly.
  • Fixed a crash bug caused by unnecessary material cubemap lookup in SkyBox::_renderObject()
  • ScatterSky now obeys the color and ambient scale alpha for controlling specularity
  • Fixed a bug with dynamic fields not displaying their type in the Inspector
  • Implemented a proper PopupMenu::getItemCount() on the Mac
  • Pressure slider in Terrain Editor now preserves the previously set value
  • No longer crash on the Mac when CMD-Q'ing out of the application
  • Fix for non-default Visual Studios compiling with compile.bat (www.garagegames.com/community/forums/viewthread/94665 )
  • FrameTemp::operator [] no longer uses a signed 'int' (which was confusing VS2005)
  • Fixed Path::MakeRelativePath() to return proper relative paths
  • The World Editor's "use object bounds/center" drop down no longer shows the opposite of what it was actually doing
  • Decal/Road/River editors treeviewctrls no longer allow multiple selecting and dragging
  • loadColladaShape() now returns NULL if the old ResourceManager couldn't find the file
  • TerrainCellMaterial works properly if there is no detail map
  • Switched String class to properly use U32/S32 instead of "int"
  • Protected against bad material index in TerrainFile::getMaterialMapping()
  • GuiSliderCtrl no longer locks GUI input when deactivated while doing a mouse drag
  • Fixed a possible crash with GuiFadeinBitmapCtrl while in the GUI Editor
  • Translucent objects now properly use the default basic lighting instead of the deferred lighting
  • Reduced DecalRoad's z-fighting with the Terrain and other objects
  • Now correctly setting the light position and direction shader constants used by forward pass lighting
  • Fixed a few issues so that the reflection texture you specify on a renderInst is actually properly used
  • PxTSStatic no longer duplicates collision data in each mesh (www.garagegames.com/community/forums/viewthread/95223 )
  • Platform::AlertOKCancel() and Platform::AlertOKRetry() work correctly on the Mac now
  • Mac file I/O will now prompt with an overwrite confirmation

Notes

  • Removed the unused/legacy DirectX8 GFX layer (fixed function is still supported by the DirectX9 GFX layer)
  • Removed the OpenAL DLL's from the SDK installer. It is better that the OpenAL SFX layer make use of a user installed version of OpenAL that is appropriate for their system/OS.

Known Issues

  • Advanced Lighting is disabled by default on the Mac (must uncomment $pref::machax::enableAdvancedLighting in core/main.cs to enable it). There are still some issues to be resolved with it.
  • PostFX is non-functional on the Mac (shaders need porting to GLSL)
  • Mac underwater fog appears to not be working
  • No PhysX support on the Mac (we are in touch with nVidia)
  • Mac web deployment isn't fully finished (disabled for now)
  • Mac version won't compile against 10.5 SDK (works against 10.4 which is the default)
  • Can not enable Glow on transparent objects
  • There are still some ATI related rendering issues
  • Rocket explosion decals occasionally applied strangely when shooting building or object edges
  • More performance and refinement for Advanced Lighting (including SM2 support) on its way
  • Web Deployment - Keyboard accelerators being eaten under IE (tab key, backspace, and some others)
  • World Editor - If you set an object to be locked in the Tree View it won't immediately update the dynamic field to reflect this
  • Switching to an editor that requires a an object to exist in the scene (like the Terrain Editor requiring a TerrainBlock) will still switch back to the Object Editor even if you choose to create the object
  • Torque Toolbox comment system isn't fully implemented, no way to currently add, edit, or remove them
  • Terrain Editor is currently missing the equivalent of "Set Empty", "Clear Empty" and "Set Height" tools
  • Terrain Painter will wrap the painting the edge of a terrain block to the opposite end of the terrain
  • World Editor tool panels do not dynamically resize to match resolution (this can cause them to go off the screen at lass than 1024x768)
  • SSAO PostFX needs some reworking
  • Options Dialog doesn't always show the current window size correctly
  • Can't add a Level object without a name after adding one with a name
  • XAudio SFX device reports bad playback positions after seeking
  • FMOD channel reassignment causes asserts under heavy SFX loads (>100 concurrent channels)
  • All of the bugs listed in the Beta 3 Bugs forum

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.


#1
06/24/2009 (2:34 pm)
Holy Mother of Updates, Batman! That is quite a list - thanks for all the hard work!
#2
06/24/2009 (3:04 pm)
Wow
Thanks guys, that's an impressive list.
#3
06/24/2009 (3:15 pm)
assets.knowyourmeme.com/i/2110/original/longcat.jpg
Long cat approves of long list!
#4
06/24/2009 (3:23 pm)
I blacked out half-way through the reading of the list...I am truly impressed by our devs, and very curious as to where my pants are...hmmm...
#5
06/24/2009 (3:50 pm)
I am currently going through the Beta 2 bugs and retagging any that I believe are still valid for Beta 3 so that they will show up in the Beta 3 bug List. I am also adding them to the "Known Issues" list as I go.
#6
06/24/2009 (3:54 pm)
I can't run the editor. Crashes right when the loading screen finishes.
#7
06/24/2009 (4:07 pm)
0_0

wow ... that's a lot of stuff.

Feed Mich and Lara caffine. Docs and tuts required.
:)
#8
06/24/2009 (4:11 pm)
haha, I love that image of the cat. :D
#9
06/24/2009 (5:31 pm)
Quote:I blacked out half-way through the reading of the list...I am truly impressed by our devs,
I nearly fell asleep twice while reading it myself...

Quote:and very curious as to where my pants are...hmmm...
Wait... what?
#10
06/24/2009 (6:32 pm)

Michael, will you please stop running around the office without your pants. The girls are getting scared.

And dang, that cat must have been a snake in its former life.
#11
06/25/2009 (2:04 am)
Awesome work, well done all the GG dev team involved.

And now to play :)
#12
06/25/2009 (2:15 am)
Beta 3 is a large jump forward and I definitely love the expanded pseudo Showtool Pro integration, its just great :)


What I'm not that happy with is this initial version of the mesh road as it only allows the change of the whole width, instead of altering the width of the top of the road and the bottom independently to make "dams". This commonly looks very strange.
None the less its a great thing to have it present already :)

Congratulation also on the addition of the PureLight samples.
Looks much better and more impressive in realtime than in the "low quality" (in relation to a Corei7 GTX280 realtime render on max quali) videos :)


I guess I will find more things to love as well as a few more bugs as I test the beta 3, but its so far definitely the much better experience than back with TSE / TGEA during EA and after release.
#13
06/25/2009 (3:27 am)
I'm really disappointed that cutting holes in Terrain is not in Beta3. I was told that it was going to be there :(

"Added light volume visualization to point and spot lights"
What does this mean? Does this mean that point and spot lights can now do Volume Lighting?

#14
06/25/2009 (5:16 am)
Exciting!!!!
#15
06/25/2009 (7:02 am)
Great News!

Wonder when there would be a performance tweak, T3D Beta 3 ran slowly on my 9400M laptop, but it's much better than Beta 1.
#16
06/25/2009 (9:38 am)
@Sorin - No... it just means when you select a light in the mission editor is renders the light volume so you can better tweak them.

@ysun - There is still alot of optimization to do... so it should get better still.
#17
06/25/2009 (10:12 am)
@Michael:
http://www.betterthanpants.com/with-a-shirt-this-awesome-who-needs-pants.html

Excellent work ladies and gents.
#18
06/25/2009 (8:24 pm)
Where's the "Create my game" button?


LOL, I love it guys! You have come a long way since Torque. Keep it up and i will keep sending in my $$

#19
06/26/2009 (1:20 pm)
Running my usual "big town model performance test" shows an average of 18% increase in fps over the previous betas, and it responds a lot better under higher settings. Which is nice.
#20
06/26/2009 (10:50 pm)
Is there a simple list of what files were (moved, renamed, deleted, added)?

I think it would make merging updates easier...

Probably there is an svn command GG could run to generate this...

[Edit: of course I'm only talking about source files that do not get regenerated at compile-time or run-time]