gE Bug Hunt
Posted: Wed May 18, 2011 12:31 am
I'm compiling a bug list of all the known gE bugs so I can add it to the tracker. gE 1.5 will strive to eliminate as many bugs as possible, so we are trying to make a complete list. Here are the ones I could think of off the top of my head. There are more, so please fill in as needed, and I can add them to this list. I'll also be adding as many standalone ged examples of the bugs to help pinpoint the problems as I can. One area that I felt like there were several bugs was text actors, but currently can't think of what they were.
c: bugs in c functions.
memset does not work properly when setting to null.
Parent
-Currently actors that have parents have trouble converting their xy coordinates from relative to real, and have issues in general. When dragging an actor that is parented, it can occasionally jump to its relative coordinates in the real coordinate plane. This bug also happens when you unlock an actor that is parented, and even when you unparent an actor.
-CreateActor does not properly work when you specify the Parent Actor as the Parent Actor.
Animations
-Actors that have a transparent first frame do not activate their animations on start unless they are set to [Start] in the editor. It seems it has trouble initializing the actor, as this is fixed as soon as another actor references it. Actors with transparent first frames that have their animation set to move will be created properly.
Clones
-When using sequences, occasionally certain animations will move at faster or slower speeds. This is often noticeable when dealing with a lot of clones, and I have never seen it happen when only one instance of the actor is created. It though probably has to do with problems with sequences.
-When trying to replicate the bug mentioned above in windows 1.4.0, I couldn't, as another more pressing bug occurred. Sequences advance the frames of all clones using the sequence. So 1 clone will do the animation at the proper speed. 2 will cycle twice as fast, and so on.
-Deleting clone.0 will prevent you from ever getting clone.0 back. Not exactly a bug, but it'd be nice if new clones filled in the blank spots.
Tiles
-Tiles do not load properly when using LoadGame in the editor. So levels created with tile actors cannot be loaded while using gameEditor. This bug does not happen in exported versions though, but makes testing in editor harder.
-Tile actors and text actors are not supported by draw_from. This might belong as a feature request though.
Export
-A rather large problem, it seems you are allowed to have the view not be created on startup. By setting the [Create at startup:] button to no, the view does not get created in exported games. It does however still work during game mode. Another bug connected to this is that if the view is set not to create, actors may still parent the view, even though parenting to an actor that is set not to be created on startup is prohibited.
In exported versions, gE does not necessarily keep the same cloneindex values as they appear in the editor. So, if using cloneindex to differentiate menu pieces and other, it is likely to screw things up. Making gE create the actors with the proper cloneindexes consistently would make things a lot easier, and can prevent quite a bit of confusion.
MoveTo
-MoveTo does not work when specifying "Collide Actor".
MoveTo can cause teleportation if there is no difference in either x or y coordinates. This only happens when dealing with clones, and not consistently. I think it has to do with have MoveTo commands in the MoveFinish event, but this is unconfirmed. Similar symptoms as the next bug.
When given multiple MoveTo commands and PhysicalResponse (haven't tried to isolate it yet), the actor specified to move will teleport to its destination instead of moving to it at the designated speed.
-If you update an actor's position in the same script as a MoveTo call, and set it relative to the actor, it will use the original position for the MoveTo, instead of the updated one.
ZDepth
-ChangeZDepth does not return 0 range errors. The max zdepth it 35791, but setting it to anything above that will not cause ChangeZDepth to return 0 (even though zdepth won't be changed).
Event Disable
-Mouse enter events are disabled by EventDisable, but unlike mouse button down, it prevents the MouseEnter events of the actors below it. To reiterate, while you can click the actor underneath another actor with mouse button down disabled, you can not have mouse over events even if the above actor has mouse enter disabled.
Draw Actor
-If you don't have any reference to directional_velocity in a draw event, but use global code to change the actor's directional_velocity it will not update. You need to have a comment referencing directional_velocity or any other reference (such as directional_velocity;). This bug is untested for other events.
PlayMusic2
-Cannot infinite loop from the gui, so you have to set loop to 0 in script.
Crash Bug
-Mainly with unsaved files (can happen with saved files), clicking to add a script, but not clicking immediate action or wait for frames (brings you back to the script editor), then adding the script will cause the game to crash.
-Sometimes when commenting large lines, the game crashes.
iOS
Sound messes up when you lock screen.
Global Code
Sometimes a global script will not be initialized. This causes everything that relies on that script to stop working. Going back to the script and adding it will fix it, but it still happens occasionally.
Other: (These are weirder bugs that only occurred as the size of the project I was working on increased)
When dealing with lots of actors (happens randomly), cloning actors stops working. gE creates the clones, but they all share the same cloneindex. When this happens you cannot create anymore clones, as this problem will always occur. Fixable by restarting gE. gE's actor interface only registered a single clone.
A max of 4 rows of animations can display on my screen, and there is a point where it slightly exceeds the number of displayable animations, but does not let you click a button to show more. So, up to 3 (I believe) animations are uneditable until you add enough animations to make gE create the button.
gE would have problems adding Actor* parameters, giving an error like, cannot convert struct * to struct *. This happens with other pointer types as well, but either way this can cause all of your scripts that use the functions in that bit of code to stop working. Adding other global code scripts can stop it from displaying the error, and it can go away on reloads.
When having lots of variables, both declared through gE's gui variable creator, and in Global Code, removing variables through gE's gui can cause the game to crash. It was getting variables with similar prefixes confused, and since it was confusing it with Actor* variables it would crash. I had to comment out the Actor*s to delete the actor variables. The 6 or so variables all had the prefix enem.
I'm sure there are more, but that is all for now.
c: bugs in c functions.
memset does not work properly when setting to null.
Parent
-Currently actors that have parents have trouble converting their xy coordinates from relative to real, and have issues in general. When dragging an actor that is parented, it can occasionally jump to its relative coordinates in the real coordinate plane. This bug also happens when you unlock an actor that is parented, and even when you unparent an actor.
-CreateActor does not properly work when you specify the Parent Actor as the Parent Actor.
Animations
-Actors that have a transparent first frame do not activate their animations on start unless they are set to [Start] in the editor. It seems it has trouble initializing the actor, as this is fixed as soon as another actor references it. Actors with transparent first frames that have their animation set to move will be created properly.
Clones
-When using sequences, occasionally certain animations will move at faster or slower speeds. This is often noticeable when dealing with a lot of clones, and I have never seen it happen when only one instance of the actor is created. It though probably has to do with problems with sequences.
-When trying to replicate the bug mentioned above in windows 1.4.0, I couldn't, as another more pressing bug occurred. Sequences advance the frames of all clones using the sequence. So 1 clone will do the animation at the proper speed. 2 will cycle twice as fast, and so on.
-Deleting clone.0 will prevent you from ever getting clone.0 back. Not exactly a bug, but it'd be nice if new clones filled in the blank spots.
Tiles
-Tiles do not load properly when using LoadGame in the editor. So levels created with tile actors cannot be loaded while using gameEditor. This bug does not happen in exported versions though, but makes testing in editor harder.
-Tile actors and text actors are not supported by draw_from. This might belong as a feature request though.
Export
-A rather large problem, it seems you are allowed to have the view not be created on startup. By setting the [Create at startup:] button to no, the view does not get created in exported games. It does however still work during game mode. Another bug connected to this is that if the view is set not to create, actors may still parent the view, even though parenting to an actor that is set not to be created on startup is prohibited.
In exported versions, gE does not necessarily keep the same cloneindex values as they appear in the editor. So, if using cloneindex to differentiate menu pieces and other, it is likely to screw things up. Making gE create the actors with the proper cloneindexes consistently would make things a lot easier, and can prevent quite a bit of confusion.
MoveTo
-MoveTo does not work when specifying "Collide Actor".
MoveTo can cause teleportation if there is no difference in either x or y coordinates. This only happens when dealing with clones, and not consistently. I think it has to do with have MoveTo commands in the MoveFinish event, but this is unconfirmed. Similar symptoms as the next bug.
When given multiple MoveTo commands and PhysicalResponse (haven't tried to isolate it yet), the actor specified to move will teleport to its destination instead of moving to it at the designated speed.
-If you update an actor's position in the same script as a MoveTo call, and set it relative to the actor, it will use the original position for the MoveTo, instead of the updated one.
ZDepth
-ChangeZDepth does not return 0 range errors. The max zdepth it 35791, but setting it to anything above that will not cause ChangeZDepth to return 0 (even though zdepth won't be changed).
Event Disable
-Mouse enter events are disabled by EventDisable, but unlike mouse button down, it prevents the MouseEnter events of the actors below it. To reiterate, while you can click the actor underneath another actor with mouse button down disabled, you can not have mouse over events even if the above actor has mouse enter disabled.
Draw Actor
-If you don't have any reference to directional_velocity in a draw event, but use global code to change the actor's directional_velocity it will not update. You need to have a comment referencing directional_velocity or any other reference (such as directional_velocity;). This bug is untested for other events.
PlayMusic2
-Cannot infinite loop from the gui, so you have to set loop to 0 in script.
Crash Bug
-Mainly with unsaved files (can happen with saved files), clicking to add a script, but not clicking immediate action or wait for frames (brings you back to the script editor), then adding the script will cause the game to crash.
-Sometimes when commenting large lines, the game crashes.
iOS
Sound messes up when you lock screen.
Global Code
Sometimes a global script will not be initialized. This causes everything that relies on that script to stop working. Going back to the script and adding it will fix it, but it still happens occasionally.
Other: (These are weirder bugs that only occurred as the size of the project I was working on increased)
When dealing with lots of actors (happens randomly), cloning actors stops working. gE creates the clones, but they all share the same cloneindex. When this happens you cannot create anymore clones, as this problem will always occur. Fixable by restarting gE. gE's actor interface only registered a single clone.
A max of 4 rows of animations can display on my screen, and there is a point where it slightly exceeds the number of displayable animations, but does not let you click a button to show more. So, up to 3 (I believe) animations are uneditable until you add enough animations to make gE create the button.
gE would have problems adding Actor* parameters, giving an error like, cannot convert struct * to struct *. This happens with other pointer types as well, but either way this can cause all of your scripts that use the functions in that bit of code to stop working. Adding other global code scripts can stop it from displaying the error, and it can go away on reloads.
When having lots of variables, both declared through gE's gui variable creator, and in Global Code, removing variables through gE's gui can cause the game to crash. It was getting variables with similar prefixes confused, and since it was confusing it with Actor* variables it would crash. I had to comment out the Actor*s to delete the actor variables. The 6 or so variables all had the prefix enem.
I'm sure there are more, but that is all for now.