Game Development Community

TGEA 1.8.1 Known Issues

by Alex Scarborough · in Torque Game Engine Advanced · 02/11/2009 (2:40 pm) · 0 replies

Last updated: 4/07/09

As great as TGEA 1.8.1 is, there were still a couple of issues that we didn't manage to get to. Rather than make you wait for another release of TGEA though, we decided that it would be much better to put new issues and fixes we find in a single central location, which, as of now, is this thread. If there is a fix in this thread, it will be in any future iterations of TGEA or Torque 3D. To help simplify things, we will try to tag all issues by the engine version they were first noted it, and will tag all issues by the engine version they were fixed in.

Note: This thread is locked and only employees will be editing this post. This is an official list and we would prefer to keep it clean. Please continue to report issues in the TGEA Private Forums and we will add them here as appropriate. If you are aware of an issue that is not listed here please contact me at alexsc@garagegames.com

Without further ado, here is the list:

Mac: Shadows not rendering on GeForce 7300 and GeForce 9400M GPUs
First noted in: TGEA 1.8.0
FIX:
In gfxGLEnumTranslate.cpp, change the line
GFXGLTextureInternalFormat[GFXFormatD16] = GL_DEPTH_COMPONENT16;
to
GFXGLTextureInternalFormat[GFXFormatD16] = GL_DEPTH_COMPONENT;

Memory leak in CameraFXManager
First noted in: <= TGE 1.4.2
FIX:
In cameraFXMgr.cpp, change the void CameraFXManager::clear() method to the following
void CameraFXManager::clear()
{
   CameraFXPtr* cur = NULL;
   for(cur = mFXList.next(cur); cur; cur = mFXList.next(cur))
   {
      delete *cur;
   }
   
   mFXList.free();
}
and in void CameraFXManager::update(F32) change the if( curFX->isExpired() ) block to the following
if( curFX->isExpired() )
{
   CameraFXPtr *prev = mFXList.prev( cur );
   delete curFX;
   mFXList.free( cur );
   cur = prev;
}

Player ground shake non-functional/leaks memory
First noted in: TGEA 1.7.0 (?)
FIX:
In player.cpp, in the Player::updatePos() method, uncomment the following line
//            gCamFXMgr.addFX( groundImpactShake );
~line 2903

Particle emitters can accumulate during mission if set to deleteWhenEmpty
First noted in: TGEA 1.8.0 (?)
FIX:
In particleEmitter.cpp, change the void ParticleEmitter::deleteWhenEmpty() method to
void ParticleEmitter::deleteWhenEmpty()
{
   // if the following asserts fire, there is a reasonable chance that you are trying to delete a particle emitter
   // that has already been deleted (possibly by ClientMissionCleanup). If so, use a SimObjectPtr to the emitter and check it
   // for null before calling this function.
   AssertFatal(isProperlyAdded(), "ParticleEmitter must be registed before calling deleteWhenEmpty");
   AssertFatal(!mDead, "ParticleEmitter already deleted");
   AssertFatal(!isDeleted(), "ParticleEmitter already deleted");
   AssertFatal(!isRemoved(), "ParticleEmitter already removed");

   // this check is for non debug case, so that we don't write in to freed memory
   bool okToDelete = !mDead && isProperlyAdded() && !isDeleted() && !isRemoved();
   if (okToDelete)
   {
      mDeleteWhenEmpty = true;
      if(!n_parts)
      {
         // We're already empty, so delete us now
         mDead = true;
         deleteObject();
      }
      else
         AssertFatal(mSceneManager != NULL, "ParticleEmitter::deleteWhenEmpty - ParticleEmitter not on process list and won't get ticked to death");
   }
}

TGEA crashes when creating a waterblock in Template
First noted in: TGEA 1.8.1
FIX:
Add the following to Projects/Template/game/scriptsAndAssets/data/water/materials.cs
new CustomMaterial( Water_NoReflect )
{
   texture[0] = "noise02";
   texture[2] = "$backbuff";
   texture[3] = "$fog";
   texture[4] = "$cubemap";
   cubemap = Sky_Day_Blur02;
   shader = WaterCubeNoReflect;
   specular = "0.75 0.75 0.75 1.0";
   specularPower = 48.0;
   fallback = WaterFallback1_1;
   version = 2.0;
};

Terrain terraformer flips imported heightmaps
First noted in: <= TGE 1.4.2
FIX:
In terraformer.cpp, replace bool Terraformer::loadGreyscale(U32, GBitmap*) with
bool Terraformer::loadGreyscale(U32 r, GBitmap *bmp)
{
   Heightfield *dst = getRegister(r);

   for( U32 yh = 0, yb = blockSize - 1; yh < blockSize; yh ++, yb -- )
      for( U32 x = 0; x < blockSize; x ++ )
      {
         ColorI color;
         bmp->getColor(x,yb,color);
         // compute the luminance of each RGB
         dst->val(x, yh) = ((F32)color[0]) * (0.299f/256.0f) +
                            ((F32)color[1]) * (0.587f/256.0f) +
                            ((F32)color[2]) * (0.114f/256.0f);
      }

   return true;
}

DDS files with 'double extensions' (e.g. base.normal.dds) aren't loaded
First noted in: TGEA 1.8.0
FIX:
In gfxTextureManager.cpp, in GFXTextureObject* GFXTextureManager::createTexture(const Torque::Path&, GFXTextureProfile*), after
// Check to see if there is a .DDS file with this name (if no extension is provided)
Torque::Path tryDDSPath = pathNoExt;
add
Torque::Path tryDDSPath = pathNoExt;
if (tryDDSPath.getExtension().isNotEmpty())
   tryDDSPath.setFileName( tryDDSPath.getFullFileName() );

WorldEditor default images have incorrect paths
First noted in: TGEA 1.8.0 (?)
FIX:
In worldEditor.cpp, in WorldEditor::WorldEditor() replace
mSelectHandle = StringTable->insert("common/editor/SelectHandle");
mDefaultHandle = StringTable->insert("common/editor/DefaultHandle");
mLockedHandle = StringTable->insert("common/editor/LockedHandle");
with
mSelectHandle = StringTable->insert("Tools/missionEditor/images/SelectHandle");
mDefaultHandle = StringTable->insert("Tools/missionEditor/images/DefaultHandle");
mLockedHandle = StringTable->insert("Tools/missionEditor/images/LockedHandle");

Null stateblock assert in TSShapeInstance::snapshot_softblend
First noted in: TGEA 1.8.0
FIX:
In tsShapeInstance.cpp change void TSShapeInstance::setupStateBlocks() to the following
void TSShapeInstance::setupStateBlocks()
{
   if(mSnapshotSB.isValid())
      return;
   
   GFXStateBlockDesc d;

   d.setCullMode(GFXCullNone);
   mSnapshotSB = GFX->createStateBlock(d);   
}
and add the following line to the very beginning of TSShapeInstance::snapshot_softblend
setupStateBlocks();

addMaterialMapping console function incorrectly declared/implemented
First noted in: TGEA 1.8.0 (?)
FIX:
In materialManager.cpp, change the addMaterialMapping console function to
ConsoleFunction( addMaterialMapping, void, 3, 3, "(string textureName, string materialName) Set up a material to texture mapping." )
{
   MaterialManager::get()->mapMaterial(argv[1],argv[2]);
}

atlasGenerateTextureTOCFromTiles fails to write bitmap
First noted in: TGEA 1.8.0
FIX:
In ConsoleFunction(atlasGenerateTextureTOCFromTiles) in atlasImportTiles.cpp, change
bmp = GBitmap::load(buff);
to
Resource<GBitmap> newBM = GBitmap::load(buff); 
if(newBM == NULL)
{           
   Con::errorf("atlasGenerateTextureTOCFromTiles - unable to open tile '%s'! Aborting!", buff);
   return;
}
GBitmap *bmp = new GBitmap(*newBM);

Bug in D3D9 adapter enumeration
First noted in: TGEA 1.7.0 (?)
FIX:
In GFXPCD3D9Device::enumerateAdapters, in gfxPCD3D9Device.cpp, change
d3d9->EnumAdapterModes( D3DADAPTER_DEFAULT, formats[ i ], j, &mode );
to
d3d9->EnumAdapterModes( adapterIndex, formats[ i ], j, &mode );

Eye position in shader is wrong if object is scaled
First noted in: TGEA 1.8.0
FIX:
In ProcessedShaderMaterial::setEyePosition, in processedShaderMaterial.cpp, remove
position.convolveInverse(objTrans.getScale());

Mac: File not created when opened with ReadWrite access
First noted in: TGEA 1.8.0 (?)
FIX:
In PosixFile::open, in posixVolume.cpp, change
case ReadWrite:   fmode = "r+"; break;
to
case ReadWrite:   
         fmode = "r+"; 
         // Ensure the file exists
         FILE* temp = fopen(_name.c_str(), "a+");
         fclose(temp);
         break;

PlatformFonts leak memory
First noted in: TGE 1.4 (?)
FIX:
In platformFont.h, inside the PlatformFont class declaration, add
virtual ~PlatformFont() {}
as a public member.

GuiMessageVectorCtrl::createSpecialMarkers leaks memory
First noted in: TGEA 1.7.0 (?)
FIX:
In GuiMessageVectorCtrl::createSpecialMarkers, in guiMessageVectorCtrl.cpp, change
char* pLCCopy = new char[dStrlen(string) + 1];
   for (U32 i = 0; string[ i ] != ''; i++)
      pLCCopy[ i ] = dTolower(string[ i ]);
   pLCCopy[dStrlen(string)] = '';
to
String pLCCopyStr = String::ToLower( string );
   const char* pLCCopy = pLCCopyStr.c_str();

ActionMap::processBindCmd can leak memory
First noted in: TGE 1.4 (?)
FIX:
In ActionMap::processBindCmd, in actionMap.cpp, after
pBindNode->scaleFactor     = 1;
add
if( pBindNode->makeConsoleCommand )
      dFree( pBindNode->makeConsoleCommand );
   if( pBindNode->breakConsoleCommand )
      dFree( pBindNode->breakConsoleCommand );

Mac: Creating a thread with autoDelete set to false will eventually cause a crash
First noted in: TGE 1.4 (?)
FIX:
In Thread::~Thread() in macCarbThread.cpp, add
ThreadManager::removeThread(this);
to the end.

Con::executef errors when called with 7 args
First noted in: TGEA 1.7.0
FIX:
In console.cpp, around line 1057, change
const char *executef(OBJ, A a, A b, A c, A d, A e, A f, A g)      { return _executef(obj, 6, 7, a, b, c, d, e, f, g); }
to
const char *executef(OBJ, A a, A b, A c, A d, A e, A f, A g)      { return _executef(obj, 7, 7, a, b, c, d, e, f, g); }

GFXD3D9TextureObject::copyToBmp has overly strict requirements
First noted in: TGEA 1.0
FIX:
None yet, we're working on it.

KeepBitmap and Dynamic texture profiler flags cause D3D assert when used together
First noted in: TGEA 1.0
FIX:
None yet, we're working on it. For now though, don't do that.

Glow renders incorrectly when editor is active
First noted in: TGEA 1.7.0 (?)
FIX:
None yet, we're working on it.

Terrain lighting is incorrect
First noted in: TGEA 1.7.0
FIX:
None yet, we're working on it.

Polysoup collision fails with overlapping shapes
First noted in: TGEA 1.7.0
FIX:
None yet, we're working on it.

Terrain inverts ambient strength when two sided ambient is enabled
First noted in: TGEA 1.8.0 (?)
FIX:
None yet, we're working on it.

Cubemaps don't load DDS files
First noted in: TGEA 1.0
FIX:
None yet, we're working on it.

New resource manager doesn't work with zip files
First noted in: TGEA 1.8.0
FIX:
None yet, we're working on it.

Games cannot be played on non-administrator accounts on Vista
First noted in: TGEA 1.0 (?)
FIX:
None yet, we're working on it.

Thread is locked