|
GAME PROGRAMMING RESOURCES
|
|
|
TROUBLESHOOTING
The engine doesn't run!
Make sure you have the latest
DirectX®
version installed on your system.
Scene rendering is not as expected! Visual artifacts, corrupt textures, etc.
Make sure you have the latest video card driver installed and
that it is compatible with the DirectX® version installed on your system.
Please visit your display adapter manufacturer's website and download
an updated driver, if necessary.
Volumetric shadows and/or environment maps aren't rendered!
Some old display adapters (2001 or earlier), may not support some advanced effects.
The engine will run on old systems, but it will not render unsupported effects.
My system is powerful, but frame rate is bad!
Some monitors, in particular LCD, require proper refresh frequency settings
to ensure best performance. 3Impact will work best at 75Hz. Try adjusting
your display card settings accordingly.
The engine locks (rendering freezes) on collisions!
Make sure the mass of your objects, especially if they are stick-shaped and/or
small-sized, is big enough to prevent computation errors.
Computers use finite math. Low mass increases the chances for certain
simulation factors to be so small that they are computed as zero while
they are not.
When setting mass density for your dynamic bodies by calling
iBodySGCreate(),
make sure the mass is at least 1.0f (or greater for small objects).
On hard collisions, the engine locks!
Computers use finite math. Extreme simulation tends to reduce calculation
precision. As a result, excessive energy (speed!) can be transferred to
colliding bodies, which leads to further computation errors and locks.
In order to prevent excessive speeds and/or spins, make sure you enable
secondary damping for your dynamic bodies.
Typical secondary damping factors are
iBodyDamping2Set(Body,100.0f,0.05f,3600.0f,0.05f);
Some bodies unexpectedly spin faster and faster, miss collisions and may lock the engine!
Rotation algorithms are subject to numerical drift, caused by computer's
finite math computation. It causes inexact spin calculation.
For some object shapes, the numerical drift effect is more evident.
You can counteract numerical drift effects by setting some angular damping for
your dynamic bodies. Typical angular damping factors are
iBodyDampingSet(Body,...,...,0.0f,0.97f);
For stick-shaped bodies, you may need to set a stronger angular damping by
setting the last parameter as small as 0.75f. However, this may affect
the realism of your simulation.
A way to deal with this problem is only setting a strong damping for
the axis about which your body tend to spin.
You can set axis-specific angular damping by calling the
iBodyDirectionalAngularDampingSet()
function.
Objects sink into my polygonal static body!
It's like collision detection fails for some polygons.
It may rarely happen if you use 'round' resolutions, when converting your .x
models to .ply/.pol format by using the Converter utility.
Resolution is specified in the name of the source .x file. For example:
terrain_5.0.x
specifies 5.0 meters as resolution for the conversion. See iBodyCreate() in the
Reference document for details.
If you experience this problem, try changing the resolution to a non-round number.
For example, if converting
terrain_5.0.x
causes missing collision detection, rename it to
terrain_5.17.x
and try converting it again.
I successfully converted a flat model to .ply/.pol,
but the resulting static body misses all collisions!
Bi-dimensional models cannot be converted to .ply/.pol static bodies if they
are perpendicular to one world axis (i.e. they have a flat bounding box).
For example, a model made of triangles all lying on the same horizontal plane
is bi-dimensional and perpendicular to the Y world axis (zero-height bounding box).
Converting this kind of models generates null .ply/.pol files.
|
|