Bugs

With Gamestudio you probably own the most stable and robust game creation tool on the market. We're going to great lengths for keeping it that way. Before a new update is released, it is tested for months by thousands of private and public beta testers. Nevertheless, no software is bug-safe (click for proof), so you'll find below a complete list of all bugs ever reported for Gamestudio. Here's some hints when you encounter problems during development:

 

Mit Gamestudio besitzen Sie wahrscheinlich das stabilste und fehlerfreieste Spiele-Entwicklungssystem auf dem Markt. Wir geben uns große Mühe, dass das auch so bleibt. Jedes neues Update wird vor der Veröffentlichung einem monatelangen Beta-Test von tausenden privaten und öffentlichen Testern unterzogen. Dennoch kann es keine Garantie für völlige Fehlerfreiheit geben (Beweis). Weiter unten finden Sie eine komplette Liste aller je in Gamestudio aufgetretenen Bugs. Hier einige Hinweise, falls Sie während der Entwicklung einem Problem begegnen:

3rd Party Software Bugs

Most 3D card driver bugs can be fixed by downloading the latest driver version from the manufacturer's website. Here's a list of all known third party software issues, as long as they affect Gamestudio.

nVidia GeForce 8600/8800 Win2K drivers

The nVidia Win2K drivers that are also used for Windows XP have a problem with certain shader content. Postprocessing shaders can cause an internal buffer overflow under some circumstances, resulting in distorted images on the screen. This bug does not affect the nVidia Vista drivers. A workaround was implemented in A7.20; however no guarantee is possible that this workaround works around the bug under all circumstances.

ATI Radeon 9600 / X1050 Series

Was reported not to work properly under DirectX 9 with the ATI driver available in 2007, and causing a Can't Open Video Device error with Gamestudio on a particular PC. Installing the Omega driver (rad_w2kxp_omega_38221) solved that problem. Omega drivers are available at http://www.omegadrivers.net.

ATI IGP / Mobility 7000..7500

An ATI driver bug on some laptop systems manufactured in 2002 can cause very slow rendering of sky and particles in T&L mode, or produce rendering faults on level surfaces. This bug was fixed in 2002, however ATI does not offer the fixed drivers for laptops. For fixing this problem, download the ATI Omega driver from http://www.omegadrivers.net.

ATI / X800 Render Target Blues

On some ATI X800 systems, models were reported to randomly appear in a wrong color (mostly blue - the color of the sky) when a render target (view.bmap) was active at the same time. This was reported to happen with ATI drivers released before 2005 and when the model texture was not a power of 2. For fixing this problem, download the ATI Omega driver from http://www.omegadrivers.net.

Intel 82852 Onboard Graphics

A laptop manufactured in 2003 was reported to distort large polygons and not to display materials properly under DirectX 9.0c. The bug is not easy to see at a first glance. It could not be confirmed on other 82852 systems, so it probably only occurs with a certain driver version.

S3 / SAVAGE PRO

Drivers don't work in most software/hardware environments under DirectX8 and DirectX9. Workaround: buy a better 3D card.

3DFX / VOODOO

Drivers only work with a lot of luck under DirectX8 and DirectX9. Additionally, those first generation 3D cards can't display textures above 256x256 and can't render shadow maps. Still, if you have a system with a 3dfx card, don't throw it away - museums might pay a good price for it.

DirectX Video Memory Leak

Some video drivers cause a loss of video memory after starting and exiting a managed memory 3D application - like the Gamestudio engine - several times. This results in an error message at startup after about 100 engine starts when not enough video memory is left. We could not yet reproduce this problem on any of our test systems, so it's apparently specific to a certain PC configuration. It is not a bug of Gamestudio. If you encounter a similar problem, please report your operating system, 3D hardware, and driver version to the support - we'd like to collect information about that problem. Update your video drivers from the manufactorer's website, which is reported to solve the problem.

Win XP enlarged desktop fonts

Oversized fonts were reported to let the engine abort when the startup panel is displayed. This was reported by one user. We could not confirm this problem on our test machines. When you are using oversized desktop fonts and are encountering problems at startup, please contact the support.

DirectX Audio acceleration / Realtek audio CODEC

A bug in a Realtek audio driver causes 3D sounds played with snd_or ent_play functions to come from wrong directions. We could not reproduce this problem yet, but it was reported to be fixed by setting the audio acceleration to 'Standard' under the Windows Settings / Sounds dialog.

AntiVir

This virus scanner version of 2006 was reported to periodically freeze high priority programs, like the engine, when running in the background. According to the reports the problem was solved by upgrading to a newer AntiVir version.

IOMEGA ZIP / DirectX

The parallel port driver of the Iomega ZIP drive manufactured before 2001 was reported to cause instabilities of the DirectShow filter that is also used by Gamestudio for streaming video.

NetSupport School Driver

Was reported to install a driver that causes problems with DirectX 9 applications.

 

Complete Bug List

This is the list of all Gamestudio/A7 bugs reported since version A7.0, and their fixes and workarounds. If you want to apply a workaround only to a certain engine version, use the version variable to check.

Version 7.6

No bugs known yet.

Version 7.5

Z buffer shadows could appear on wrong vertical positions under some circumstances when entities were outside the shadow_range (all A6 and A7 versions; fixed in A7.56). Workaround: set shadow_range to 100 at game start.

ent_mtlset failed when setting the same material effect to the same skin twice (all A6 and A7 versions; fixed in A7.56). Workaround: make sure to call ent_mtlset only once per model skin and material effect.

Decals created by ent_decal 'inherited' previously called particle events (A7.10 and above; fixed in A7.55). Workaround: set the particle event (p.event) explicitely to NULL after ent_decal when using particle functions at the same time.

Normal maps or height maps in levels caused a crash on loading when their texture names were longer than 12 characters (A7.10 and above; fixed in A7.55). Workaround: use short texture names.

In unlimited light mode, dynamic lights affected only block surfaces of map entities, not of levels (A7.10 and above; fixed in A7.55). Workaround: use map entities or disable the light manager with the patch variable.

Returning 1 in an EVENT_RENDER material event did not always prevent the entity from rendering (fixed in A7.54).

Models without skin texture were not displayed (fixed in A7.54; they are now displayed with a white skin). Workaround: Don't create models without skin texture.

An old adll.lib version was included in the sdk_plugins folder (fixed in A7.54). Workaround: compile adll.lib from adll.cpp, or download the latest version from http://server.conitec.net/down/adll.lib.

When saving a model with several skins, MED sometimes erroneously created a second coordinate set, causing the second skin to be interpreted as lightmap (fixed in A7.54). Workaround: Download the latest MED from http://server.conitec.net/down/med.exe into your Gamestudio folder, open the model with it, remove the second coordinate set through Edit / Delete Second Skin Set, and save the model again.

The SwapBuffers() prototype was missing in windows.h, causing OpenGL samples to issue a syntax error (A7.10 and above; fixed in A7.54). Workaround: add the line BOOL WINAPI SwapBuffers(HDC hdc); to include\windows.h.

The u/v coordinates of the hit struct were incorrect in some special cases (A7.10 and above; fixed in A7.54). Workaround: use the u/v coordinates of the D3DVERTEX pointer of the hit struct instead.

The Dynamic flag for lights in WED didn't work in all levels (A7.04 and above; fixed in A7.54). Workaround: place dynamic lights by script.

The shortcut for WED Ungroup didn't work (fixed in WED 6.877). Workaround: Ungroup with the right click menu.

WED FBX import didn't automatically import DDS textures to models (fixed in WED 6.877). Workaround: open the models in MED, and import DDS textures manually.

MED FBX import imported 24 bit BMP textures to 32 bit. Workaround: Open the Skin Settings and change the skin texture format back to 24 bit (or re-import the textures manually).

Using acknex.dll in a compiled user application causes a crash when the application name does not end with uppercase ".EXE" (fixed in A7.51). Workaround: make sure that the compiler generates an executable ending with .EXE.

Running the engine from WED with an unnamed level causes a crash (all A7 versions; fixed in A7.51). Workaround: Don't run the engine with unsaved or unnamed levels.

The Update Entities function in the Map Compiler does not work (A7.10 and above; fixed in A7.51). Workaround: Use BSP Map or Simple Map instead, or download the latest map compiler from http://server.conitec.net/down/wwmp2wmb.exe and copy it into your Gamestudio folder.

Version 7.10.1 / lite-C 1.10

If the NOSHADOW flag of a view was set, shadows of objects in other views were also suppressed under certain circumstances (all A6 and A7 versions; fixed in A7.25).

Very large integer constants (ca. 25000000 or above) were inaccurate by about 0.000001% due to internal rounding from a float value (all A7 and lite-C versions; fixed in A7.22).

X Import in MED caused a crash when the imported model had bones with missing bone names (all A6 and A7 versions; fixed in A7.22).

Physics collisions could cause an internal buffer overflow in rare cases when two colliding objects had more than 100 contact points - for instance, a very large box-shaped object on flat terrain (all A6 and A7 versions; fixed in A7.22).

path_getedge didn't set the edge weight and skill value (all A6 and A7 versions; fixed in A7.22).

Level boundaries were sometimes not correct in level parts that contained no objects, causing physics objects to collide with an invisible wall (fixed in A7.22). Workaround: place dummy objects at the level boundaries.

Prefabs could only be loaded from the prefabs subfolder (fixed in A7.21).

Level objects got wrong lighting (too dark) when placed on terrain and the level sky box was missing (fixed in A7.21). Partial workaround: add a sky box.

Some 3D cards, such as ATI 3850 and some Intel chipsets, could not properly render lightmapped objects with the new render algorithm used by version 7.10. We'll switch back to the old render algorithm in 7.22.

Level blocks with the None render mode assigned to the first surface did not receive dynamic light in mesh mode (fixed in A7.20). Workaround: Don't use the None render mode for block surfaces.

ent_clone didn't work properly for models with duplicated vertices (fixed in A7.20).

Due to a driver bug of GeForce cards below the 8000 series, the DirectX function FindNextValidTechnique causes a false warning W1551 for certain pixel shader instructions although the shader works on that card. This also affects the shadow mapping shaders of the shader workshop. Warning W1551 was replaced by an acklog.txt message in A7.20.0.

Version 7.07.6 Beta

The WED Texture Lock function could not be applied to block groups (all A7 versions; fixed in A7.09.0). Workaround: First apply Texture Lock, and group the blocks afterwards.

Under Windows Vista, DDS images were sometimes not displayed in the 2D texture panels of MED and WED (all A7 versions; fixed in A7.10)

The client_drop function did not reconnect the first connected client (all A7 versions; fixed in A7.08.8). Workaround: use client_drop_id.

Map entities compiled in mesh mode sometimes caused an error message on game_load (all A7 versions; fixed in A7.08.7). Workaround: Compile them in the old polygon mode by unchecking [Create Meshes].

FBX models with bones animation received wrong vertex positions when different inherit transformations between parent and child bones were used (all A7 versions; worked around for some cases in A7.08.3). Please make sure when editing and importing FBX models that all bones use rotations only, not scaling or translation.

Bumpmapping and normalmapping shaders on level geometry sometimes behaved in a wrong way (all A7 versions; fixed in A7.08.3).

The ent_setmesh function caused a wrong collision behavior when the new mesh had a different size (triangle or vertex number) than the old mesh and the scale of the entity was changed afterwards (all A7 versions; fixed in A7.08.2). Workaround: Change the entity scale one frame before setting a new mesh.

VIEW parameters with a nonzero default value, such as aspect, alpha, arc, fog_start, fog_end, clip_near, clip_far, and depth could not be set directly in a VIEW definition (A7.07; fixed in A7.08.2). Workaround: Set the parameters in the script.

MED bones editing and vertex-to-bones assignment didn't work properly in this version (A7.07; fixed in A7.08.1). Workaround: Use the free MED version for editing bones.

Particle bitmaps were not displayed when they were also used for other purposes (such as in panels or sprites) or when they were modified by bmap functions such as bmap_format or bmap_to_alpha (all Gamestudio and lite-C versions; fixed in A7.08.1). Workaround: don't use particle bitmaps for other purposes and don't modify them.

Rendering into a cube map only affected the first cube of the map (all A7 and lite-C versions; fixed in A7.08.1). Workaround: Render into the bmap before converting it into a cube map.

Script bugs in lite-C sometimes caused a real crash instead of a crash message from the engine (A7.05 and above; fixed in A7.08.1). Workaround: Avoid bugs in your script.

The inkey function didn't return key numbers under lite-C (all A7 and lite-C versions; fixed in A7.08.1). Workaround: use the result variable to determine the inkey return value.

The send_data functions didn't work properly under some circumstances (A7.05 and above; fixed in A7.08.1). Workaround: Use send_var or send_string for transferring data.

When starting an application with the end user level editor WEDS, the executable name is assumed to be "wrun.exe" (A7.05 and above; fixed in A7.08.1). Workaround: give your main script the name "wrun.c" when you want your end users to start the application directly from the WEDS level editor.

Model textures shifted with the model u,v parameters could also affect sprite textures when no other model was visible in the view (fixed in A7.08.1).

AND and OR operators don't automatically convert their arguments to integers, which leads to mistakes when a var is and-ed with an integer or a predefined number (such as in: var test; ... var x = test & 1;). Workaround: for binary operations, use only arguments of the same type, such as int or long (A7.06 and above; fixed in A7.08.0).

Version 7.06.1 Beta

Map blocks didn't receive dynamic lights under certain circumstances when the level was compiled in Mesh Mode (A7.04 and above; fixed in A7.07.5).

The number of multiplayer clients of the Commercial Edition was erroneously 4 instead of 8 (all A7 versions; fixed in A7.07.6).

c_updatehull used used a frame number starting with 0 instead of 1 (all A6, A7 and lite-C versions; fixed in A7.07.5). Workaround: For versions below 7.07, subtract 1 from the frame number.

Special characters (like "\n") in defined STRING objects were not translated in lite-C (fixed in A7.07.5).

ent_clone didn't work properly with terrain entities under some circumstances (fixed in A7.07.5).

The '&&' operator performed a bitwise operation (like '&') in some code situations (all A7 and lite-C versions; fixed in A7.07.5).

Creating more than 96,000 STRING objects in a script caused a bug in the string interpreter (fixed in A7.07.3).

The binormal handedness (tangent.w) had a wrong sign (fixed in A7.07.2). Workaround: Invert the binormal: matTangent[1] = DoPos(cross(inTangent.xyz,inNormal)*-inTangent.w);

If the friction of a physics entity was undefined (no phent_setfriction call), it could assume arbitrary values under rare circumstances (all A6 and A7 versions; fixed in A7.07.2).

Models with internal LOD stages could temporarily display a wrong animation frame when their animation was stopped during a LOD transition. Also the tangents of the further LOD meshes were not always created (fixed in A7.07.2).

A7 applications running in dedicated server mode (-sv) on Windows Server 2003 OS could crash under some circumstances (fixed in A7.07.2). Workaround: run such applications with an inactive client (-sv -cl).

AABB collision events set the event_type variable to a wrong value (fixed in A7.07.2). Workaround: use OBB collisions when event_type is used in the collision event.

The _chr function was missing in the adll.lib of the SDK (fixed in A7.07.1). You can download a fixed lib here (unzip into your sdk_plugin folder).

Entity actions didn't start in compiled executables of lite-C multiplayer games under certain circumstances (all A7 versions; fixed in A7.07.0).

game_save didn't save lite-C variables properly under certain circumstances (A7.05, A7.06 and lite-C 1.05; fixed in A7.07.0).

The String 1 and String 2 fields in the WED entity properties panel must both to be filled in for transferring the strings to the engine (all A4, A5, A6, and A7 versions; fixed in A7.07.0).

Mouse button releases were not detected when the mouse button was pressed, moved out of the engine window, and then released outside the window (all A3, A4, A5, A6, and A7 versions; fixed in A7.06).

Internal LOD stages of models weren't displayed sometimes (all A7 Pro versions; fixed in A7.06). Workaround: Use external LOD models.

ABT/BSP frustum clipping occurred too early in some cases when the camera looks down at a scene (all lite-C and A7 versions; fixed in A7.06).

button_state used a wrong button number, starting with 0 instead of 1 (all lite-C and A7 versions; fixed in A7.06).

Breakpoints didn't work properly when the script name was identical with the ending of another script name, as in "functions.c" and "morefunctions.c" (all lite-C and A7 versions; fixed in A7.06). Workaround: make sure that every script has a unique name that's not contained in another script name.

Global vars were always initalized to integers under lite-C (all lite-C and A7 versions; fixed in A7.06). Workaround: set them to their initial values in a startup function.

Script functions and actions sent to the server or client in multiplayer mode didn't always make it due to a lite-C address bug (all lite-C and A7 versions; fixed in A7.06).

bmap_blit scaled to a wrong size when the source bitmap was not a power of 2 (all lite-C and A7 versions; fixed in A7.05.9).

draw_line3d drew lines without alpha transparency (all lite-C and A7 versions; fixed in A7.05.9).

The on_level event was called not frequently enough, dependent on the level content (all lite-C and A7 versions; fixed in A7.05.9).

Map entities compiled in mesh mode could cause physics error messages in special circumstances (A7.04 and A7.05; fixed in A7.05.9). Workaround: Compile map entities without mesh mode.

Version 7.04 Beta / lite-C 1.04

Models that consisted of transparent and intransparent parts were rendered in a wrong mode, causing the transparent parts to appear darker than in A6 (all lite-C and A7 versions; fixed in A7.05).

c_updatehull set the bounding box to the model size, rather than to the selected vertex frame size (fixed in A7.05).

Do { ... } while() loops were wrong compiled and led to errors in executables (all lite-C and A7 versions; fixed in A7.05). Workaround: use while() { ... } loops.

Terrain levels got low frame rates because terrain was erroneously rendered several times under certain circumstances (fixed in A7.05).

Multiplayer mode in lite-C didn't work correctly under under certain circumstances (fixed in A7.05). Workaround: use C-Script. This is a severe bug and can be a 'showstopper' for lite-C multiplayer projects.

Expressions like a &= b | c; caused syntax errors in lite-C due to a wrong operator precendence (all lite-C and A7 versions; fixed in A7.05). Workaround: use parentheses.

c_trace with SCAN_TEXTURE sometimes didn't detect texture flags and caused random crashes when non-polygonal objects were hit (fixed in A7.05).

c_trace and c_move didn't interpret the IGNORE_MAPS parameter correctly in OBB mode (all lite-C and A7 versions; fixed in A7.05).

The quote (') character was erroneously removed from char array constants by the compiler (all lite-C and A7 versions; fixed in A7.05).

Negative panel layers didn't always cause rendering the panel behind the view (all A7 versions; fixed in A7.05).

The internal engine font ackfont.pcx was not included in the lite-C 1.04.2 engine (fixed in lite-C 1.04.3). Workaround: use external fonts for texts and panels.

Compiled code that was expected to set a char or short in memory set a dword instead (as in char *string = "Test"; *string = 'F';). This led to the truncation of character strings when single chars were set (all lite-C and A7 versions; fixed in lite-C 1.04.3/A7.05). Workaround: use memset to set single bytes (as in memset(string,'F',1); ).

TEXT strings got a fixed length when directly defined within the TEXT (all A6 and A7 versions; fixed in A7.05). Workaround: Use separately defined strings when you need a variable length.

Panels got a wrong rotation center if they were scaled and rotated at the same time (all A6 and A7 versions; fixed in A7.05). Workaround: Do not scale panels that you want to rotate.

Version 7.03 Beta / lite-C 1.03

Map Entities placed in WED are rotated by 90 degrees when displayed by the engine (fixed in A7.04).

Relative bones transformations (ent_bonerotate) led to wrong rotations in cases where the parent bone was not reset or transformed in the same frame (all A6 and A7 versions; fixed in A7.04). Workaround: Take care to use ent_bonereset_all any frame when combining animations.

The mouse_valid variable did not detect when the mouse was right or below the engine window (all A6 and A7 versions; fixed in A7.04).

The lite-C compiler crashed on parsing code with too many commas between parentheses (fixed in A7.04). Workaround: Don't define functions with more than 18 parameters.

Publishing a .WDL script causes the engine to search for a .C file (fixed in A7.04). Workaround: use version 6.60 for publishing .WDL scripts.

client_drop returned a wrong result when the client was not found (all A6 and A7 versions; fixed in A7.04).


Proof of unproveability of bug-free programs

You can never be sure that an arbitrary program is bug-free and won't crash - i.e. freeze the engine, for instance through an endless loop - under certain circumstances. Alan Turing found the proof 50 years ago. Consider a function BugFree that can test whether a program with certain entry parameters crashes or not. BugFree looks like this (in C-Script pseudo code):

function BugFree (Program, Parameters)
{   
   if (Program does not crash with Parameters) { return(YES); } 
   else { return(NO); }
}

Of course BugFree shall not crash itself, but terminate properly even when the tested Program crashes. Now we define a recursive function TestMe that calls BugFree:

function TestMe (Program)
{
   if (BugFree (Program, Program) == YES) { TestMe (Program); } 
}

This evil function only terminates when Program does not crash when it gets itself as a parameter. Otherwise TestMe calls itself endlessly and freezes. If you now call TestMe with itself as a parameters, you'll get a contradiction:

TestMe (TestMe); 

This call does not crash only when it crashes. Therefore a function like BugFree can not exist. Therefore you can never prove that your code won't crash.

 

► latest version online