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:
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.
No bugs known yet.
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.
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).
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).
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.
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.
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).
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.
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.
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.
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.
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