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, and is with certainty free of severe bugs or problem. Nevertheless, no software is completely bug-safe (click for proof). You'll find below a list of all minor bugs that were ever reported for Gamestudio, and their workaorunds. Here's some hints when you encounter problems during development:

 

Mit Gamestudio besitzen Sie wahrscheinlich das bei weitem stabilste und fehlerfreieste 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 tausenden privaten und öffentlichen Testern unterzogen und ist mit Sicherheit frei von schwerwiegenden Fehlern. Dennoch kann es keine Garantie für völlige Fehlerfreiheit geben (Beweis). Weiter unten finden Sie eine komplette Liste aller je für Gamestudio berichteten kleineren 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/A7 bugs reported since version 7.01, 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 7.82.3

effect_cpy didn't always work correctly (A7.50 and above; fixed in 7.83.6). Workaround: use effect_load instead.

Overloaded functions weren't found by the compiler when the function prototype expected a STRING* argument, but was called with a char* or char[] constant (all A7 versions; fixed in 7.83.6). Workaround: Define the overloaded prototype with a char* parameter.

MED sometimes crashed with the Extrude function (fixed in 7.83.5).

Under some circumstances, a level got its ambient light color from the previously loaded level (all A7 versions; fixed in 7.83.5).

ptr_for_handle didn't return a pointer for SOUND handles (all A7 versions; fixed in 7.83.5).

Calling vec_for_bone after ent_animate could cause wrong bones animation under some circumstances (A7.70 or above; fixed in 7.83.3). Workaround: call vec_for_bone before ent_animate.

socket_receive blocked the application under some circumstances when nothing was received (fixed in 7.83.2).

IGNORE_MAPS only ignored A6 map entities, not A7 map entities (all A7 versions; fixed in 7.83.1). Workaround: Use IGNORE_FLAG2 instead.

Terrain lightmaps require nonscaled terrain, and no material and terrain action (all A7 versions; fixed in 7.83.5). Workaround: Scale the terrain already in MED, and set material and action (if any) by script..

Version 7.80.1

c_scan triggered EVENT_SCAN even on entities without ENABLE_SCAN set (all A7 versions; fixed in 7.81.8). Workaround: Check ENABLE_SCAN in the event function.

c_setminmax didn't use the current model scale when it was changed in the script (all A7 versions; fixed in 7.81.8). Workaround: Set up min_x, max_x directly in the script.

ent_setvertex sometimes left 'gaps' in chunked terrain (fixed in 7.81.8)

Decal shadows could cause a crash when they were cast on animated entites (all A7 versions; fixed in 7.81.7). Workaround: Make sure to cast decal shadows only on ground that is not animated.

ent_animate and some sound functions didn't work properly with the trial version (A7.50 or above; fixed in 7.81.5). Workaround: Use the free Atari lite-C or a full Gamestudio version.

Calling engine_frame() after engine_close() caused a crash (A7.50 or above; fixed in 7.81.2). This also led to a SED crash when cancelling a debug session with the red Cancel button. Workaround: Terminate debug sessions normally and don't call any engine function after engine_close().

Dummy entities that were created with ent_create(NULL,...) gave an error message on game_load() (all A7 versions; fixed in 7.81.2). Workaround: Use a small invisible sprite entity instead of a dummy entity when you want to save and load game scores.

Animated models with bones weights allocated more memory than necessary from the nexus (all A7 versions; fixed in 7.81.2).

c_move sometimes ignored the IGNORE_YOU parameter; and c_trace sometimes changed the you pointer even when IGNORE_YOU was given (fixed in 7.81.1). Workaround: ENTITY* you2 = you; set(you2,PASSABLE); c_move(...,IGNORE_YOU); reset(you2,PASSABLE); you = you2;.

ang_for_axis erroneously used radians instead of degrees (fixed in 7.80.2).

Version 7.77.4

The old A5 and A6 template scripts have to be adapted to A7 (done in A7.80.0). The adapted template scripts can be downloaded here: http://server.conitec.net/down/template56.zip.

Shader access to floating point variables through the _flt name ending didn't work properly (fixed in A7.80.0). Workaround: use the _var ending.

When a secondary depth buffer was created through bmap_zbuffer, the screen resolution could not be changed anymore (A7.70 and above affected; fixed in A7.80.0).

UV coordinates and stencil shadows on LOD meshes were wrongly displayed under some circumstances (A7.73 and above; fixed in A7.80.0).

In some of the Version 7.77 setups, the stencil blur shader (st_stencilblur.fx) contained a wrong line "#include <poisson>" (fixed in A7.80.0). Workaround: Edit code\st_stencilblur.fx and manually delete that line near to the beginning of the file.

If a level did not contain any lightmaps, entities got an average brightness regardless of the map ambient settings (A7.10 or above; fixed in A7.79.0). Please note that this fix leads to a different brightness in levels without lightmaps when the map ambient settings were very high or very low; adjust the map ambient accordingly (Map Properties).

The draw_point3d function drew the point with a wrong bitmap (A7.73 and above; fixed in A7.79.0). Workaround: Use a particle instead.

TEXTs with ARIGHT or CENTER_X flag and a Truetype font were wrongly clipped at the left side when they came to close to the right screen border (all engine versions; fixed in A7.79.0). Workaround: Keep distance to the right screen border when centering or rights aligning texts.

Version 7.73.1

ent_getvertex and ent_setvertex accessed the wrong vertices under some circumstances (A7.70 and above; fixed in A7.77.4).

Individual window titles defined in the starter window led to a crash when they were longer than 48 characters (all Gamestudio versions; fixed in A7.77.2).

Under some circumstances, the mesh UV coordinates weren't preserved after ent_purge, causing the purged model to appear monochrome (all A7 versions; fixed in A7.77.2). Workaround: Don't purge a model when it's still visible.

Terrains were stitched together when they don't need be, causing wrong heights of edge vertices (fixed in A7.77.2).

Loading an empty level (level_load("") or level_load(NULL)) didn't work in multiplayer mode (all A6 and A7 versions; fixed in A7.76). Workaround: Create an empty level in WED and use the empty WMB file for multiplayer mode.

The d3d_texsurfs and d3d_texskins variables displayed wrong values when textures were converted to another format, f.i. for overlay textures (all A6 and A7 versions; fixed in A7.76).

The Map Compiler produced a too.high ambient value in WED Map Properties, causing levels to be too bright even with low ambient settings (all A7 versions; fixed in A7.76). Workaround: set ambient to a low value for better shadows.

pan_setbutton installed a wrong button type for toggle and radio buttons (fixed in A7.75). Workaround: add 1 to the button type when using version 7.73 or below.

View stages were sometimes rendered even when the SHOW flag of the first view of the stage chain was not set (all A7 versions; fixed in A7.75). Workaround: set all stage parameters to NULL when the stage chain must not be active.

User generated alpha channels on images were not always restored after changing the fullscreen resolution or minimizing the engine window (all A6 and A7 versions; fixed in A7.75). Workaround: use alpha channel images (TGA, DDS).

ent_clone and ent_cloneskin consumed slightly more memory than was released through ent_remove (A7.73 or above; fixed in A7.75). Workaround: reuse cloned entities rather then removing them when you need extremely many.

When using ent_mtlset for assigning a material with an effect to a model skin, the effect was released at level exit, and thus did not show anymore in subsequent levels (all A7 versions; fixed in A7.75). Workaround: Use effect_load after level_load, or define the effect directly in the model.

Using a key shortcut in WED sometimes executed the function twice (fixed in A7.75). Workaround: Use the toolbar or menu.

Compiling a map in Simple Map mode could cause some objects not to throw static shadows (all A7 versions; to be fixed in A7.77). Workaround: Compile the map in BSP Map mode.

Drawing panels or texts could fail under some circumstances when view entities are drawn at the same time, but no level is loaded (can occur randomly in all A7 versions; fixed in A7.75). Workaround: load an empty level with level_load(NULL) when drawing panels or texts together with view entities.

Version 7.70.0 / lite-C 1.7

ent_mtlset caused a crash when the entity had no skin material (fixed in A7.73). Workaround: Give the entity a skin material in MED when you want to change it by ent_mtlset.

vecLightDir had a wrong z value (all A7 versions; fixed in A7.73). Workaround: Use material skills for passing a spotlight direction to a shader.

Static models and sky domes didn't perform animation in single player mode (fixed in A7.71). Workaround: Animate the models with a simple animation action.

A couple of small SED glitches were fixed in A7.71: [Replace All] does not need two clicks anymore for replacing everything, inserting a closed bracket does not jump anymore to the start of the line, the project tabs are redrawn when resized, the recent projects list is now displayed even when no project was opened, clicking a link in the command help window now works at least for most of the links, and the Catch22 situation with the [No] and [Cancel] buttons in the save confirmation dialog was resolved.

The pivot point of needle elements was slightly off center (all A7 versions; fixed in A7.71).

The player name (-pl command line option) of a client was not automatically transmitted to the server at connection (fixed in A7.71). Workaround: use send_string for sending the player name to the server if required.

Map entities composed from several meshes got their visual bounding box only from their first mesh under certain circumstances. This could cause them to be too early clipped from the view frustum dependent on the view angle and distance (all A7 versions; fixed in A7.71). Workaround: compile them to a single mesh by grouping their blocks and setting the group's [Single Mesh] checkbox.

Light entities always threw a stencil shadow, even if their CAST flag was not set (all A7 versions; fixed in A7.71).

Version 7.66.4

ent_clone produced wrong UV coordinates when the cloned entity was already visible (A7.66 or above; fixed in A7.67). Workaround: make sure that the entity is not yet visible when cloning it; or call vec_to_uv once after cloning.

vec_rotateaxis used a wrong axis under some circumstances (A7.50 or above; fixed in A7.67). Workaround: Convert the axis to an angle and use ang_rotate.

Version 7.60

c_trace copied wrong values in the hit struct when the hit entity was scaled differently than the entity just rendered before (all A7 versions; fixed in A7.65).

shadow_lod didn't work for internal LOD steps in some cases (all A7 versions; fixed in A7.64). Workaround: use external LOD steps for stencil shadows.

Model textures imported from FBX files sometimes had a transparency channel that was not contained in the original texture (A7.50 and A7.60; fixed in A7.66). Workaround: Re-import the texture in MED, or manually switch to 24 bit texture format in MED Skin Settings.

Space Navigator® buttons didn't trigger events when no joystick was connected (all A7 versions; fixed in A7.63). Workaround: use the joy_buttons variable.

Ent_mtlset copied the source material into the target material, instead of replacing the pointer. This had the side effect to affect all entities with the same model even after ent_cloneskin (all A7 versions; fixed in A7.63).

Importing FBX levels generated model textures with 32 bit and alpha channel transparency even if the original textures were intransparent (all A7 versions). Workaround: Open the models in MED and set the texture to 24 bit.

DDS textures on blocks caused wrong texture coordinates when compiling the level in mesh mode (all A6 and A7 versions; fixed in A7.63). Workaround: Use TGA textures.

Bmap_blitpart used a wrong source size when blitting only a vertical part of a source bitmap (all A6 and A7 versions; fixed in A7.62). Workaround: Use the whole vertical size of the source bitmap for blitting.

File_cpy and file_load only accessed .pak files in a resource in the release version, not in the development version (all A6 and A7 versions; fixed in A7.62). Workaround: Make sure that the .pak file is available outside the resource as long as the project is not published.

Ent_cloneskin didn't clone the meshes, which could lead to wrong animation cycles of the cloned model (all A7 versions; fixed in A7.62). Workaround: Use ent_clone instead.

After replacing an entity mesh with ent_setmesh, casting a stencil shadow could cause a crash (all A7 versions; fixed in A7.61). Workaround: switch off the SHADOW flag after replacing an entity mesh.

When z-fail stencil shadows are activated, a small shadow from the front cap of the shadow volume could be visible under some circumstances when the camera was looking precisely in the direction of the light (all A7 versions; fixed in A7.61).

Version 7.50 / lite-C 1.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.05 Beta / 7.06 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 / 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).


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.

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.

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

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