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 version is released, it is tested for months by thousands of private and public beta testers, to make sure that it is free of severe bugs. Nevertheless, no software is completely bug-safe (click for proof). You'll find below a list of all bugs ever found in Gamestudio, and their workarounds. Here's some hints when you encounter problems during development:

 

Mit Gamestudio besitzen Sie wahrscheinlich das stabilste und fehlerloseste Spiele-Entwicklungssystem auf dem Markt. Wir geben uns große Mühe, dass das auch so bleibt. Jede neue Version wird vor der Veröffentlichung einem monatelangen Beta-Test von über tausend privaten und öffentlichen Testern unterzogen, um Fehlerfreiheit sicherzustellen. Dennoch kann es keine Garantie für völlige Fehlerfreiheit geben (s. Beweis). Weiter unten finden Sie eine Liste aller gemeldeten Bugs sowie Anweisungen zu ihrer Umgehung. Hier noch einige Hinweise, falls Sie während der Entwicklung einem Problem begegnen:

Complete Bug List

This is the list of all Gamestudio/A8 bugs reported since version 8.0, and their fixes and workarounds. A list of all reported problems with certain 3D cards and third party software can be found at the end of this page. If you want to apply a workaround only to a certain engine version, use the version variable to check.

Version 8.47

No bugs known yet.

Version 8.46

Loading a model with a textured skin and a non-textured skin could lead to random "Wrong Model Format" errors (all A8 versions; fixed in A8.47.0). Workaround: use models either with textured or with empty skins, but not with a mix of both.

Version 8.45

If the nexus was exceeded in a level, the nexus display in the F11 panel increased in steps that are too high by a factor of 1024 (all A8 versions; fixed in A8.46.0).

Version 8.40

Stencil shadows were not visible in the range of a mirror view with NOSHADOW flag (all A8 versions; fixed in A8.45.3).

Empty model/terrain skins erroneously contained the texture of the first skin (all A7 and A8 versions; fixed in A8.45.3).

Map entities contained in a map could cause a crash under some circumstances when map_subents is nonzero (all A8 versions; fixed in A8.45.3).

ent_boneparent returned a wrong bone under some circumstances (all A7 and A8 versions; fixed in A8.45).

Decal shadows were not correctly updated under some circumstances when a mirror with NOSHADOW view flag was visible in the same scene (all A7 and A8 versions; fixed in 8.44). Workaround: Don't set the NOSHADOW flag of any mirror views when decal shadows are used.

The frame parameter of c_updatehull had no effect even with vertex animation (all A7 and A8 versions; fixed in 8.44).

Shaders with a single _lm technique for lightmapped objects caused wrong scene rendering under some circumstances, f.i. when the PSSM shader was active. This affected also the bump and specbump shaders (all A8 versions; fixed in 8.43).

draw_obj could not draw view entities (all A7 and A8 versions; fixed in 8.43). Workaround: draw view entities by setting their SHOW flag.

PANEL render targets restricted the writable area of a view render target under some circumstances (all A7 and A8 versions; fixed in 8.43). Workaround: don't use PANEL and VIEW render targets at the same time.

Negative bone weights in a model led to a crash with an "Invalid Model File" error (all A7 and A8 versions; fixed in 8.41.3). Workaround: don't export models that have negative bone weights.

The order of model skins with normal maps was transferred wrongly to the shader when the entity contained a lightmap and several skin subsets (all A8 versions; fixed in 8.41.2).

Version 8.30

After deforming terrain, the collision hull was not updated on all terrain chunks (all A7 and A8 versions; fixed in 8.40.2). Workaround: call c_updatehull after deforming terrain.

ent_cloneskin sometimes caused wrong animation cycles when many skin-cloned animated entities were visible on the screen (all A7 and A8 versions; fixed in 8.40.2). This also caused wrong stencil or decal shadows under some circumstances. Workaround: Use ent_clone for animated entities instead.

GED crashed when saving a terrain that is completely flat (all A7 and A8 versions; fixed in 8.40.2). Workaround: Save only terrains that are not completely flat, but have some landscape, such as hills or mountains.

The NOSHADOW flag didn't suppress individual decal shadows. This had the effect that individual decal shadows in mirror views were mixed up with the original shadows (all A7 and A8 versions; fixed in 8.33.0). Workaround: Don't use individual decal shadows and mirror views at the same time.

2D particles (effect_layer command) were not rendered under some circumstances when no TEXT or PANEL objects exist (all A8 versions; fixed in 8.33.0). Workaround: create an empty panel with pan_create("",0).

pXent_settriggerflag caused a crash when removing the physics entity (all A8 versions; fixed in 8.33.0). Workaround: use the region_check command for trigger zones.

str_readto read too far when no delimiter was used (all A8 and A7 versions; fixed in 8.33.0).

txt_create(0,..) did not create a totally empty TEXT object (fixed in 8.31.1).

engine_getscriptinfo sometimes returned the name of a wrong function (fixed in 8.31.0). Workaround: add 1 to the function pointer before passing it to engine_getscriptinfo.

level_load did not increase last_error when the level file didn't exist (fixed in 8.31.0).

ent_setvertex did not update the height values of terrain under some circumstances (fixed in 8.31.0).

In some versions, the templates folder contained a wrong XML file that gave an error message when the Project Manager was started. If you get a message about an invalid character, please download the correct file from http://server.conitec.net/down/template.xml and copy it into your templates folder.

Bone positions were displayed wrong under rare circumstances when several entities with the same model were visible at the same time and their bones had the same frame, but different positions (all A8 versions; fixed in 8.31.0).

The ent_nextpath function sometimes returned the same instead of the next path (all A8 and A7 versions; fixed in 8.31.0).

The sizeof macro must not be used in lines with variable declarations (all A8 and A7 versions). Workaround: Declare variables in different lines.

Version 8.20

Objects immediately rendered after multi-frame sprites got a wrong texture scale under some circumstances (all A8 versions; fixed in 8.30.4).

The '#' default size token had an effect not only on STRING definitions, but also (wrongly) on str_cpy operations (all A8, A7, A6, and A5 versions; fixed in 8.30.4).

The brightness of 3D models with several subsets of different texture transparency could be wrong under some rare circumstances (all A8 versions; fixed in 8.30.4).

Limits to PH_SLIDER were swapped (all A8 versions; fixed in 8.30.4).

Setting angle limits to PH_HINGE joints didn't work as described (all A8 versions; fixed in 8.30.3). Please note that in the current PhysX version, angle limits can only be set once, and not modified afterwards.

The height of a PH_CAPSULE shape was too small (all A8 versions; fixed in 8.30.1). Workaround: increase scale_z temporarily when registering a PH_CAPSULE entity for physics.

Checking [Unlit] or [Metal] in WED didn't set mtl_unlit or mtl_metal under some circumstances (all A8 versions; fixed in 8.23.0). Workaround: set the material by script.

send_skill with SEND_STRING mode worked from server to the clients, but not from a client to the server (all A7 and A8 versions; fixed in 8.23.0). Workaround: use send_data for sending entity strings from a client to the server.

ent_getvertex didn't return duplicated vertex positions on animated models (all A7 and A8 versions; fixed in 8.23.0). Workaround: use the c.v struct to get the vertex position.

The shooter templates contained an old script version with missing paths, causing them not to find their default artwork and include files (fixed in 8.23.0). Workaround: please download the correct version shooter.zip and unzip the scripts in the include and templates folders of your installation. The shooter templates will be further improved for better flexibility in the next updates.

Deactivating the HDR shader didn't reset the view size of the default postprocessing stage, causing a black image in the shader viewer (fixed in 8.23.0).

Importing levels in WED sometimes generated a large number of sub-meshes that reduced the frame rate remarkably (all A7 and A8 versions; fixed in 8.23.0). Workaround: Import the level as MDL when the level frame rate is unusually low..

The Albedo value under WED Entity Properties was not preserved when closing and re-opening the level (all A8 versions; fixed in 8.22.0). Workaround: set the albedo entity parameter by script.

path_create didn't work under some circumstances when the level contained no paths (fixed in 8.22.0). Workaround: Create some dummy paths in the level when you use path_create.

When the same client connects or disconnects to an A8 server several times, the on_server event could be called too often (all A8 versions; fixed in 8.22.0). Workaround: Save the client ids in a variable list and only execute a join event when a client with a new id joins.

The draw_quad function used a wrong rotation center (all A7 and A8 versions; fixed in 8.22.0). Workaround: Use a panel object for displaying rotated bitmaps.

Version 8.10

Hexadecimal constants like "0x1000" didn't work in array dimension definitions (all A7 and A8 versions; fixed in 8.13.1). Workaround: Use only decimal constants for the dimension in array definitions.

pXcon_setparams2 didn't work for 6D joints (all A8 versions; fixed in 8.12.1). Workaround: Use ball, hinge, or slider joints when the parameters must be modified from their default values.

PROC_NOFREEZE didn't work properly (all A8 versions; fixed in 8.12.0).

view_check sometimes returned 1 even when the box was fully inside the view cone (all A8 versions; fixed in 8.12.0).

PH_CONVEX objects that were part of a chain of joints caused a crash under certain circumstances when released (all A8 versions; fixed in 8.11.2). Workaround: Use joints only with simple shapes (box, sphere, etc.) when they need to be released at runtime.

ent_clone with sprites didn't clone all LOD steps (all A8 and A7 versions; fixed in 8.11.1). Workaround: Use flat models when cloning sprites is necessary.

The Map Compiler could not compile maps without lights (fixed in 8.11.0). The fixed version can be downloaded here: http://server.conitec.net/down/wwmp2wmb.zip. Please unzip the fixed compiler into your Gamestudio folder.

ent_getvertex returned the same normal for all terrain vertices (fixed in 8.11.0). Workaround: set terrain_lod to a nonzero value before loading the terrain.

The recommendation to use c_intersect for the intersection of a ray and a box only works from A8.11 on.

draw_line3d and draw_point3d produced too-bright colors under some circumstances (all A8 and A7 versions; fixed in 8.11.0).

Version 8.03

Sprite instancing didn't work properly when sprites had different alpha values (all A8 versions; fixed in 8.10.0). Workaround: leave d3d_instancing at 0 when using sprites with different alpha values.

The send_skill_id function sent to a wrong id under some circumstances (all A8 and A7 versions since A7.50; fixed in 8.10.0). Workaround: use send_skill_to instead.

The mtlFX shader library contained a wrong file name of the default sky cube (all A8 versions; fixed in 8.06.2). Workaround: edit include\mtlFX.c and replace "skycube+6.tga" with "skycube+6.dds".

ent_createlocal erroneously created sub-entities of map entities globally (all A8 versions; fixed in 8.06.1). Workaround: set map_subents to 0 and create the sub-entities by script.

Particles had a wrong size in ISOMETRIC mode (all A8 versions; fixed in 8.10.0). Workaround: Create particles with effect_sprite when in ISOMETRIC mode.

The car.c script had a bug that caused frame rate dependency of the car torque (all A8 versions; fixed in 8.05.1).

vec_for_min and vec_for_max returned wrong values for multi-frame sprites (all A8 versions; fixed in 8.04.1). Workaround: get the min and max values from the sprite image size.

GED crashed in stand alone mode when a terrain was loaded with a skin size smaller than 1024x1024 pixels (all A8 and A7 versions; fixed in 8.04.1). Workaround: only use GED for painting terrain skins of sufficient size.

ent_next sometimes returned an entity pointer twice (all A8 and A7 versions; fixed in 8.04.0). Workaround: ignore the last entity when the number of returned entities is different to num_visentities.

Version 8.02.0

The WED software renderer (Gxl2Bas32) did not show up in the selection dialog (fixed in 8.03.2).

Under some circumstances a particle error could occur on level change (fixed in 8.03.2). Workaround: terminate all particle functions before changing the level.

The pXent_settype function only supported maps and models with up to 65000 polygons (fixed in 8.03.0). Workaround: Split your map in several map entities when you have more than 65000 polygons.

The c_trace function could cause a crash when hitting an oriented sprite, such as a carpet on the floor (fixed in 8.03.0). Workaround: Use the PASSABLE flag for objects like floor carpets.

Under some circumstances, ptr_for_handle returned a NULL pointer for a TEXT or PANEL object when they were statically and dynamically created at the same time (all A8 and A7 versions; fixed in 8.03.2). Workaround: when using handles, only use dynamic TEXT or PANEL definitions created with txt_create or pan_create.

Placing a camera at a negative angle in WED caused a wrong positive camera angle in the engine (all A8 and A7 versions; fixed in 8.03.2). Workaround: set the correct camera angle by script.

c_ignore didn't work in combination with c_trace (fixed in 8.03.2). Workaround: use one of the other methods - flag, push, or group - to exclude objects from c_trace.

Version 7.86.2 (last A7 version)

Loading an old A5/A6 "polygon" map could cause a crash (fixed in the 7.86.6 patch). Solution: Re-compile your level with proper A7 settings.

Exceeding the allowed name length of 30 characters for external model skins could cause a crash (all A3, A4, A5, A6, and A7 versions; fixed in 8.01.3). Solution: don't use crazy skin names.

 


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.

Kaspersky and SED

Kaspersky Antivirus 2010 was reported to cause slowdowns of multidocument programs, such as SED.

ATI and d3d_antialias

Switching from fullscreen mode to the desktop by pressing Alt-Tab can cause DirectX errors when antialiasing (d3d_antialias) is active. The problem is an issue of the video driver and was observed with ATI 4650. Alt-Tab ist a Windows system key and should not be redefined, so there is no real workaround of this problem.

ATI Asus EAH 4850

The Asus EAH 4850 (an ATI model) was reported not to work with the GXL2BASDX9.DLL MED and WED library provided with Gamestudio, causing MED not to start when this library was selected. We're removed this library from the distribution; the recent library that should be used with all 3D cards is the GXL2BASDX9B.DLL. Workaround: when you've selected GXL2BASDX9.DLL and MED does not start anymore, delete the med.cfg file from your Gamestudio folder. MED will then start next time with the default library GXL2BASDX9B.DLL.

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.

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 some day 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

A bug in a Realtek audio driver causes sounds played with snd_or ent_play functions to come from wrong directions. The problem was reported to be fixed by setting the audio acceleration to 'Standard' under the Windows Settings / Sounds dialog.

Antivirus software

The Antivir scanner version of 2006 was reported to periodically freeze high priority programs, like game engines, when running in the background. According to the reports the problem was solved by upgrading to a newer AntiVir version. - A spring 2008 version of the antivirus program Spyware Doctor gave a false alert about a trojan in the Gamestudio setup. According to the reports, this problem was fixed in a newer version of Spyware Doctor. Gamestudio is guaranteed to contain no trojans, adware or other malware.

Proof of unprovability of bug-free programs

You can never be sure that an arbitrary program is bug-free and won't crash - for instance, freeze the engine through an endless loop - with all possible parameters that it processes. 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 lite-C pseudo code):

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

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)) { 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