=== Bugs in Game Make 8.0 === ATTENTION: This is my second try to send letter to you. I do not receive any answer after first. Maybe you just do not receive it. Or you would not answer, but… Just tell me that you received and read my text! New bugs (which were not in my first letter) are described below at the end. ===== Bugs in Game Make 8.0 …Please forgive me if I write to wrong direction, I just do not know how to use your [Bug Tracker] and have no time to search on your forums… And excuse my bad English! Here is a list of errors if Game Maker 8, what I have found. Some from them was in Game Maker 7 too. Checking [Global Game Settings > Treat the close button as key]: Go wrong if [Let end the game] was not checked. Even if I have both events (Esc and Close) to {game_end()} Solve: Use always both options unchecked, but all [Close button] events could be {event_perform(ev_keypress,vk_escape)} Checking [Global Game Settings > Treat uninitialized variables as 0]: Gives full impossibility to use [variable_global_exists] and [variable_local_exists] functions. And any game with them will absolutely go wrong! Solve: Never use this options. Try [error_occurred] in code where that options was needed. But sometime it is hard to predict how game reacts after different errors (ignore line and go on, fall from current [code action] or even start next step immediately) First sprite often have sprite_index=0 what produces very much errors! Because I set many variables default to 0, and if I wish to use {if sprite_exists(spr) then sprite_delete(spr)} with [spr] accidentally set to zero, I just destroy one of my sprites. After exporting and importing resources it creates many troubles, as any sprite now can be [0]. Solve: Create one or two spare empty sprites (and other resources) to hold zero index. Function [keyboard_check] sometimes gives wrong result: In complex tangled code, where many object read keystrokes as events and as functions inside code (and in scripts), using [keyboard_check] often do not return correct value, but must do that. Solve: Use [keyboard_check_direct] function instead. It always gives exact return. Extension function [GM Windows Dialogs > wd_message_show] produces runtime errors! When [wd_message_set_text] was called with a string variable that contains any real value from function [string], but not with a constant string expression. Even if I try to use concatenated values in any other variable (or script result). Error becomes visible only after the end of game. Solve: No, but [wd_message_simple] working correct. [The keyboard] – Not all key can be scanned: Wrong key detect in keys: [TAB], [ENTER] (on numpad), [APPLICATION] and [+] (but can be mapped, for example to F12), [PRINT SCREEN], [BREAK], [ALT] and [F10] (freezes window for a while), [SCROLL LOCK] and [CAPS LOCK] (cannot change state). Solve: Accurately test all used keys to correct response. Function [io_clear()] does not block keyboard and mouse events from executing: When an object detects a stroke or click, corresponding event is performed. And if I use [io_clear()] in that action, it cannot prevent system from executing this event in all other objects. If them changed or created – event any way will be played. It is very annoying, when I use a button to display a file choosing dialog window. Then the click to [OK] or [CANCEL] is read by object, which now under mouse cursor, and event performed for this instance too. Solve: Create an [alarm] event on lead object and set timer to [1] on every click. But check it before: if that alarm larger than 0 then [exit] or something. [Code Editor] tail of long line became invisible: But it stays there. Pressing [END] key will show it. Solve: Use [Ctrl+Left] and [Ctrl+Right] to scroll line on words. [Code Editor] end of comment [*/] treated as error without actual comment start [/*]: It must be a green text which will be ignored as simple comment! Solve: Always use [ // */ ]. [Code Editor] – Hint with an array (such as alarm[0..11]) will write "[0..11]" in code: This is not what I want! I must always delete that code, because no one function writes self arguments! Why arrays do it? [Code Editor] – Good and necessary, but nonexistent things: Words like [andif] + [orif]. To speed up comparing process like in Delphi, when if first condition completely defines result, then next conditions will not being calculated. So expression like [ if a=b and c=d {x=0;y=0} ] can be written as [ if a=b {if c=d {x=0;y=0}} ] for speed reasons. But better write something like [ if a=b andif c=d {x=0;y=0} ] to reduce [ {} ] in code. [orif] is similarly, but the code is stranger a bit: [ if a=b {x=0;y=0} else {if c=d {x=0;y=0}} ]. For example when instead of [c=d] any slow function was used. With [orif] it will be simply: [ if a=b orif c=d {x=0;y=0} ]. Of course, words OR, AND, ANDIF and ORIF can be mixed together. Is it possible? Many long [else] branches when comparing a value several times. Look: [ if (a>b) {val=1;str=">"} else {if (ab) {val=1;str=">" elseif (a Recent files] refreshes registry data only at exit of Game Maker: When I open a .gmk file, upgrade my game, and save as new file. If program crashes (what never was happened itself, but system errors and fails, glitch, viruses and power switch off…) – at new starting, then in menu a most resent file will not exist. Because Game Maker do not save those information. And sometimes I open old file and work on it. And when try to save to new name (_01, _02 etc.) I find forgotten last file! And I had to merge changes in both file. Solve: Re-run Game Maker after each saving as new file. Functions like [date_datetime_string] will give different results on different windows locale languages: It is very bad! Because I wrote an auto replace script for this string, to change all [:] to [_] and use as filename for logging document. And I surprised when on one computer my program fail! On it this function gave [/] character in string. Of course, it was not replaced and the file would not created. Solve: never use this function. Create own script to make datetime string. Compiler does not change / optimize the code: Why I can see almost all my GML code in RAM of running game? Ok, it is interpreted, not compiled to assembler. And so? Why comments and spaces with empty lines exported to EXE as well? Is there is no optimization and code cleaner mechanism? Why there are no methods to import a code from text document? Game Maker can print meanings of all objects by pressing [Show Object Information] button. But how about to change code outside and then put it back to Game Maker? [Extension Packages] bug: I cannot install no one extension package when folder [extensions] does not exist. Room [Creation code] shortage: To test, have a room any creation code I must press such button. But objects with creation code are highlighted in editor, why whole rooms are not? ==== Your big fan of Game Maker, Kly_Men_COmpany.