Epic failures in the game development field.

This blog covers funny/weird issues and bugs from games that happened during development.

Send your own contributions to igetyourfail at repi.se (can be anonymous if specified)

Monday, May 27, 2013

Perfectly skinned vertex normals


(Thanks to Rick Appleton for the submission)

Wednesday, May 22, 2013

Fast resource loading

bool Manager::loadResources()
{
    if (m_resourcesLoaded)
        return true;

    m_resourcesLoaded = true;

    return true;
}
(Thanks for the submission Graham)

Saturday, May 4, 2013

Everyone should have a critical section!

CriticalSection static Foo::getCriticalSection() { return c_csec; }
(Thanks for the submission Boberg)

Perforce changelist templates are very easy to use!

Change 1242010 on 2013/05/03 20:14:01 by xxx

    DESCRIPTION
 
    Tested on level LEVEL by NAME
    Tested on platform PLATFORM by NAME
    Reviewed by NAME

Tuesday, April 30, 2013

Highly optimized and accurate vector subscript operator

class BWAVector3
{
private:
                float x;
                float y;
                float z;
public:
...
 
                float& operator[] (const int index);
};
float& BWAVector3::operator[] (const int index)
{
                if (index == 0)
                {
                                return x;
                }
                else if (index == 1)
                {
                                return y;
                }
                else
                {
                                return z;
                }
}
(Thanks for the submission Graham Wihlidal)

Epic alignment fail...

extern "C" void* __wrap_memalign(size_t Alignment, size_t Size)
{
                extern void* __real_memalign(size_t,size_t);
                return __real_memalign(Size, Alignment);
}

(Thanks Graham Wihlidal)

Sunday, April 28, 2013

Fancy tiled fourier opacity shadowmapping


(Thanks Sebastien)

Sunday, January 27, 2013

Strings - a fundamental component of floating point math


namespace uiVehicleComp
{
      //Convert double, float to a string with given number of decimals.
      template  T>
      eastl::string toStrDec(T const& val, const int decimals)
      {
            MallocScope ms;
            std::ostringstream ostr;
            ostr << std::fixed << std::setprecision(decimals) << val;
            return ostr.str().c_str();
      }
}


void UIVehicleComp::updateVehicleYawRotations(const GameInfo& gameInfo)
{
      using namespace uiVehicleComp;

      if (gameInfo.vehicle && gameInfo.hudData && gameInfo.hudData->getUseWeaponOrientations())
      {
            eastl::string currentYaw = toStrDec(gameInfo.vehicleYawAngle, 1);

            if(0 != currentYaw.compare(m_yawAngle))
            {
                  IUISystem::getInstance()->setData(UI_UIVEHICLECOMP_YAWANGLE, (double)atof(currentYaw.c_str()));
                  m_yawAngle = currentYaw;
            }
      }
}


Thursday, January 24, 2013

Suppress the suppressed warning?


7>Code\External\Scaleform\Src\GFxPlayer\GFxFontResource.cpp(515,17): warning : explicitly assigning a variable of type 'UByte' (aka 'unsigned char') to itself [-Wself-assign]
7>          langCode = langCode; // suppress warning
7>          ~~~~~~~~ ^ ~~~~~~~~

(Thanks Graham Wihlidal)

Blog Archive

Followers