GM_Incompatibilities - hpgDesigns/hpgdesigns-dev.io GitHub Wiki
This is a list of all known incompatibilities with GM. This list does not including features that are simply just unimplemented yet, for that see ENIGMA:Todo. Note some perceived incompatibilities may also just be bugs.
Coding Incompatibilities
- List of Deprecated_GML behaviours
- List of :Category:Function:Obsolete
- In events GM handles separate code piece actions as different code segments whereas ENIGMA lumps all actions together as a single code segments. Thus is you use return; or exit; in a code piece in ENIGMA it will stop all following actions being executed in the event whereas in GM it will only exit the single code piece return; or exit; was placed in
- In ENIGMA you need to have used an object local variable (anywhere) within the object for it to be recognized as local to that object. This means you can't use local variables within with statements unless the variables have been used in that object somewhere
- When calling instance_destroy() and other such actions which end a code segment, in ENIGMA the code segment is exited instantly and the action is performed whereas in GM the rest of the code segment currently being executed is finished before the action is performed
- In GM when using non-integer values on integer argument GM rounds the number whereas in ENIGMA it floors it; note this also happens when using repeat(){}
- In GM image_angle is always bounded to the range [0, 360), ENIGMA does not do this
- In GM the creation event is executed after the instance creation code, it is reversed in ENIGMA with the instance creation code being executed after the creation event.
Graphical Incompatibilities
- Things like lighting and alpha channels (and other things) are handled slightly differently in OpenGL to DirectX so will be probably notice small differences in effects and graphical drawings from ENIGMA to GM
- OpenGL doesn't handle Z fighting the same as DirectX, so if you have textures drawn in the same location ENIGMA and GM may behave differently. Especially make sure to take note of this when using transparent drawing
- OpenGL isn't fond of rapidly changing the scaling when drawing something transparent.
- OpenGL handles fog differently to DirectX. This can cause unwanted effects on older graphics cards when using d3d_set_fog
- Surfaces use fbos in ENIGMA which aren't supported on some older graphics cards
Other Incompatibilities
- The ds_*_write/read functions use a different file format, so you will not be able to load saved lists from GM into ENIGMA and visa versa