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:
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.
This is the list of all Gamestudio/A6 and A7 bugs reported since 2003 (version 6.1), and their fixes and workarounds. If you want to apply a workaround only to a certain engine version, use the version variable to check. The most recent bug list can be found at http://manual.conitec.net/bugs.htm.
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.
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.
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).
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.
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.
Map Entities placed in WED are rotated by 90 degrees when displayed by the engine (fixed in A7.04). Workaround: wait for Prerelease 7.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).
The IGNORE_PASSABLE flag of the c_trace function was always set in the OBB collision detection (all A6 and A7 versions; fixed in A7.04). Workaround: Only set an entity's PASSABLE flag if you want it not to be detected.
inkey() caused its string to appear on a wrong line when it was a part of a multi-string TEXT object with a TTF font (all A6 versions; fixed in A7.04). Workaround: Use inkey() only for single-string TEXT objects.
The AABB collision detection (ent_move() as well as c_move() with USE_AABB) used a wrong angle for the collision with map entities under some circumstances, for instance at the Weather Room in the Techdemo (fixed in A6.58.0). This is a severe bug and can be a 'showstopper'. Use version 6.50 at your own risk. If you are using the AABB collision detection, walk through all places in your level and check whether entities can walk through walls or become stuck in some places.
EVENT_TOUCH and EVENT_RELEASE were sometimes triggered on different objects when the mouse touched a sky sprite (all A6 versions; fixed in A6.60.2). Workaround: Set the UNTOUCHABLE flag for the sky sprite.
video_window didn't work when NULL was given for the position or size vectors (fixed in A7.01.0). Workaround: Give the real position and size.
On some machines, not all initial windows resolutions were recognized properly (fixed in A6.58.0). This could lead to a wrong initial resolution and enven a crash on old systems (Win98) that didn't support the resolution set with video_mode. This is a severe bug and can be a 'showstopper' on Win98 systems.
dplay_diag didn't work under some circumstances (all A6 versions; fixed in A6.59.0).
In pan_setpos the number of the panel element started with 0 instead of 1. All element numbers in panel functions begin with 1 (all A6 versions; fixed in A6.59.0. The manual was also wrong here).
Frame rates above 400 fps could lead to a wrong time_step value and consequently to a too-fast movement and too.short wait times on PCs with extremely high frame rates (all A6 versions; fixed in A6.58.0). Workaround: Check that your levels won't run faster than 400 fps; otherwise use fps_max to limit the frame rate.
A script syntax error while debugging code in a single-step session (SED Debug Run) could lead to an engine crash (A6.40 and above; fixed in A6.58.0). Workaround: Before you're sure that your code has no syntax errors, better don't single step through it.
snd_create allocated a buffer that was not freed afterwards when loading an ogg sound (all A6 versions; fixed in A6.50.3). Workaround: Use defined SOUND objects or media_play for ogg sound files.
hitvertex returned a vertex index beginning with 0 instead of 1 (fixed in A6.50.3). Workaround: Add 1 to hitvertex.
video_switch caused a crash on some 3D hardware when a render target (view.bmap) was active at the same time (all A6 versions; fixed in A6.50.3). Workaround: Set the bmap parameters of all views to NULL before calling video_switch.
The material TANGENT flag swapped the tangent u and v vectors, which sometimes led to light coming from a wrong direction on normal maps (all A6 versions; fixed in A6.50.3). Workaround: swap tangent and binormal when calculating a world to tangent transformation matrix.
c_trace requires polygonal targets for USE_BOX, and thus doesn't return the correct distance when a model was hit in OBB mode with USE_BOX, but without USE_POLYGON set (fixed in A6.45+). Workaround: Manually set USE_POLYGON when USE_BOX is set.
add_resource didn't work as described (all A6 versions; fixed in A6.50). Workaround: use the RESOURCE statement for adding resources.
MDL skin effects - also used by ent_mtlset - only worked properly when they don't use external material skins and other material parameters (all A6 versions; fixed in A6.45). Workaround: Split the model in several sub-models when you need to use different skin effects that require external materials.
Saving strings set to zero length - for instance through str_cpy(my_string,"") - can cause a crash on game_load (fixed in A6.43). Workaround: Don't copy empty content into a string before saving it.
Functions affecting the texture of an entity, like ent_preload or bmap_for_entity, produced a crash message when applied to a texture-less entity. Fixed in A6.42 (they'll now just return NULL). Workaround: Take care not to use texture functions on entity skins that don't have a texture.
d3d_autotransparency does not work when using a 16-bit image (BMP or PCX) in combination with a transparency color that has a component above 128 (80 hex). Workaround: Use either 24-bit images (TGA), or use a transparency color with the RGB components all below 128 (80 hex). Fixed in A6.42.
SED Panel Editor did not find its script on Windows 98 or ME systems with a blank in the Gamestudio installation path (like "C:\\Program Files\GStudio6"). Workaround: Enter the Gamestudio path in the SED configuration in Win95 notation with a tilde, like "C:\Progra~1\GStudio6".
The SED Print function was reported not to work in all combinations of printers and fonts used. Workaround: Print your source files with a different program, like Windows Notepad(R).
MED Engine Preview does not find external textures in subfolders under some circumstances. Fixed in A6.42. Workaround: have the models using external textures in the main folder, together with their textures.
User-assigned view entity materials weren't saved by game_save, causing an error when reloading the level (fixed in A6.45). Workaround: Only use their predefined materials for view entities.
TEXT scale can lead to wrong clipping of scaled texts under some circumstances. Fixed in A6.41.
ent_blendpose didn't blend the poses correctly if the percent parameter exceeds 99.9. Fixed in A6.41. Workaround: Keep the percent parameter below 99.9.
Entity.PARENT pointed to a different entity than assigned in WED (fixed in A6.34.4). Workaround: Set entity.parent by script.
The ENT_SENDNOW function caused overshoot effects under some circumstances in multiplayer games when movement prediction was enabled and the update rate was low (fixed in A6.34.3). Workaround: disable movement prediction and increase the entity update rate.
In the A6 plugin SDK, the mouse and joystick key variables in avars.h were shifted by 1, i.e. vars->mouse_right was assigned to the left mouse key and so on (fixed in A6.33.6).
Collision detection by c_... instructions was restricted to a range of 65,000 units from the level center (fixed in A6.32.1).
SEND_VAR_TO and SEND_STRING_TO sent the vars and strings to all clients when all entity updates were disabled (fixed in A6.33.6). Workaround: have at least one entity with sending updates enabled.
MOVIES played on an overlay bitmap - i.e. a sprite - that was not visible before movie start could lead to wrong movie colors (fixed in A6.33.1). Workaround: Make sure that the sprite is visible before the movie starts, or use a non-overlay model.
D3D_TRIPLEBUFFER was set at 1 at game start on T&L cards (fixed in A6.32.7). Workaround: insert 'var d3d_triplebuffer = 0;' at the beginning of your script.
PH_ITERATIONS must be set at 0 when using limit values for hinge and wheel constraints (fixed in A6.33.0).
PHENT_ADDCENTRALVEL behaved unstable when time_smooth was nonzero (fixed in A6.32.7). Workaround: Set time_smooth at zero when using phent_addcentralvel.
BEAM and STREAK must not be set at the same time for particles (in A6.32.6 STREAK is ignored in that case).
VIDEO_WINDOW only moved the window to another position if a window size was given at the same time (fixed in A6.32.4). Workaround: Give a size when moving the window.
WMB entities created by ENT_CREATE could have 'gaps' in walls under some rare circumstances if their angles stay at zero (fixed in A6.32.3). Workaround: Set pan briefly at a small value like 0.01.
ON_D3D_LOST crashed under some circumstances when exiting the engine (fixed in A6.32.1). Workaround: Set on_d3d_lost to NULL before executing exit().
MULTIPLAYER games require a level to be loaded. Without a level, send instructions don't work under some circumstances, and as a consequence, SESSION_CONNECT fails (fixed in A6.32.1). Workaround: Always load a level in multiplayer mode and use the -c command line option for connection to a session.
C_TRACE returns passable blocks even if IGNORE_PASSABLE has been set. Workaround: For passable geometry, create a separate WMB entitiy and set its flag to PASSABLE. For invisible but not passable geometry, set the NONE flag for the block's surfaces.
The material TANGENT flag had no effect on models that are rendered during FREEZE_MODE at 1 or above (fixed in A6.32.1). Workaround: Wait until the models are rendered for at least one frame before setting freeze_mode.
C_ROTATE and PATH_NEXTNODE both only work with the MY entity (fixed in A6.32.1). Workaround: set MY to the entity parameter before calling the instruction.
SND_STOPALL was missing in the DLL SDK (added in A6.32.1)
C_TRACE set its return value at the traced distance when nothing was hit (in the next update it will then return 0 instead). Workaround: Use trace_hit to detect whether something was hit or not.
DPLAY_MAXCLIENTS had no effect (fixed in A6.32.1).
Multistring Truetype texts displayed one string less when INKEY was applied to one of the strings (fixed in A6.32.0)
'FUNCTION NOT AVAILABLE' warnings are issued when the warn_level is set at 2 or above and a DLL plugin is used (fixed in A6.32.0). Workaround: do not set warn_level at 2 or above when using DLL plugins. You can safely ignore the warnings.
When setting the UNLIT flag by script, the engine sometimes also changed its material to mat_unlit (fixed in A6.31.0). Workaround: manually set the material if desired, either to mat_model or to mat_unlit.
PATH NODE POSITIONS were numbered in a different way in the engine than in WED (fixed in A6.30.5).
INKEY sometimes didn't restore the old string content properly when ESC was pressed (fixed in A6.30.2).
SED BETA VERSION EXPIRED - version 6.22 contained a SED that gave this message at startup. Update to 6.31 or download a new SED from the download page.
VECSKILL13 wasn't passed correctly to shaders (fixed in A6.30.2).
GAME_SAVE didn't work properly if no level was loaded before (fixed in A6.30.1).
NEGATIVE TEXTURE SCALES in WORLDCRAFT MAPS weren't imported correctly (fixed in WED 6.264).
VIDEO_WINDOW produced a wrong window size when the window border and size was changed at the same time and another window resize instruction was performed afterwards (fixed in A6.23.6).
MDL5 files were exported with wrong vertex animation positions (fixed in MED 6.187).
ACTIVATE_TRIGGER had a wrong value (fixed in A6.23.2). As a workaround, replace it by ACTIVATE_SONAR.
PROC_KILL(1) could not be called by an entity that was assigned to the WATCHED pointer (fixed in A6.23.2).
MOUSE_FORCE was not time compensated, resulting in a lower mouse force at higher frame rates (fixed in A6.23.2).
MICKEY.X/Y/Z was set at -1 if the mouse pointer was outside the engine window and the window focus was lost (fixed in A6.23.2).
PLUGINDIR = "." doesn't work for the work folder (fixed in A6.23.1). As a workaround, give the relative folder name, like "..\\work".
PH_WHEELs used to bend a little at high rotational speed (fixed in A6.23.0 - wheels will now stay in place even at higher velocities).
EVENT_BLOCK was not reported by c_move (fixed in A6.23.0).
Calling PHENT_SETTYPE() on the same entity multiple times could lead to memory leaks (fixed in A6.23.0).
Setting ENTITY.FRAME to an invalid value, like 0, could lead to a crash under some circumstances (fixed in A6.23.0).
Early 6.22 beta version, circulating in the warez scene (WED/About reports 6.22, engine startup reports 6.20.2). Publish and Build functions are partially disabled, some engine functions don't work... and distributing games made with that version has proven to be very, very expensive.
EVENT_BLOCK was not supported by c_move and c_trace (fixed in A6.22.2). ENABLE_RENDER material events affected shader and effect constants only after rendering under some circumstances (fixed in A6.22.2).
The WED SUN LIGHT setting produced a too strong effect due to a wrong light factor (fixed in Map Compiler 6.21). NOTE: If your levels compile too dark after the fix, increase the sun light values.
When leaving a fullscreen game with [ALT_TAB], non-changing dynamic lights were extinguished (fixed in A6.22.0).
Some surfaces were not shaded correctly by SUNLIGHT in extremely large levels (fixed in map compiler 6.20).
CD_PLAY() returned always 99 instead of the real number of tracks (fixed in A6.21.4).
BUTTON_OFF was not always triggered when the mouse left not only the button, but the whole panel within one frame (fixed in A6.21.4).
The precaclulated BOUNDING BOX of a model was dislocated if the model's origin was horizontally displaced (fixed in A6.20.4). Workaround: center the origin horizontally or set the bounding box manually.
BUTTON CLICKS were wrongly registered when a button covered the upper left corner (0,0 position) and the mouse was clicked outside the engine window (fixed in A6.21.4). Workaround: Don't have a button at the 0,0 position.
PIXEL_TO_VEC didn't read the correct alpha value from the pixel under some circumstances (fixed in A6.21.4).
TXT_LOAD didn't read a string if it contained only one character (fixed in A6.21.3).
Exceeding the CLIENT LIMIT (4 clients on Commercial Edition only) could produce a crash in multiplayer mode (fixed in A6.21.3).
Playing a FULLSCREEN VIDEO through MEDIA_PLAY only displayed an empty canvas when a level was not yet loaded or there was no panel behind the media_layer (fixed in A6.21.3). Workaround: Display an arbitrary panel when playing a video before the level is loaded.
The SENDPACKET DLL function produced an error on the receiving client when a packet was received just after a client connects to the server and the ReceivePacket pointer was not yet set (fixed in A6.21.3).
BUILDING a small level with a HYPERTHREADED pentium 4 system does not work in multiprocessor mode (fixed in Map Compiler 6.13). Workaround: switch to single processor mode by setting "CPUs to be used" at 1.
ENT_BONERESET resetted the whole branch (fixed in A6.21.3).
Loading a level could cause the physics engine to crash under some rare circumstances (fixed in A6.21.3).
Sometimes moving PHYSICS ENTITIES collided with other non-passable physics entities even if those were assigned to the same group. Since objects of the same group are usually attached to each other this resulted in erratic behavior (fixed in A6.21.3).
Pressing the SPACE or RETURN key during gameplay could cause a following ERROR OR WARNING MESSAGE BOX to be acknowledged unintentionally (fixed in A6.21.1).
Plugins from the ACKNEX_PLUGINS folder - including the debug.dll - were only automatically opened if the current work folder was located in the GStudio directory (fixed in A6.21.1).
In standalone server mode (-sv) the EXIT instruction didn't close the server window automatically. A click on the close icon was required (fixed in A6.21.1).
The -NC command line option of the Pro Edition caused the resource name and nexus value not to be taken over in a released version created with PUBLISH or RESOURCE (fixed in A6.20.1). Workaround: Give the resource name (without .wrs extension) and the -nx command line option additionally.
WED didn't display terrains with 24 bit TGA skins (fixed in WED 6.11).
DIGIT didn't clip the value at the maximum number of digits (fixed in A6.12.9).
On fixed length strings the INKEY cursor didn't reach the last character (fixed in A6.12.9).
INCLUDE crashed when including an empty file (fixed in A6.12.8).
ENT_BONEMOVE and ENT_BONESCALE sometimes moved the affected bone to a wrong position (fixed in A6.12.8).
ACKLOG.TXT contained lots of "time:" values due to a temporary diagnostics output mistakely left in the release version (fixed in A6.12.8).
TRANSPARENT VIEWS produced rendering errors in some configurations (fixed in A6.12.6).
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