A list over gm-functions that need to be avoided is needed.
Alone the posibillity to remove all comments is valuable. ...a feature that really ought to be implicite in the gm-build to exe process.. pfuii yyg.. pfyiii.. +booo
Unfortunately the problem doesn't really have a solution. Interpreter-dependent functions -- i.e. variable_global_exists, variable_local_exists, variable_global_get, variable_global_array_get, variable_global_array2_get, variable_local_get, variable_local_array_get, variable_local_array2_get, variable_global_set, variable_global_array_set, variable_global_array2_set, variable_local_set, variable_local_array_set, variable_local_array2_set, execute_string, execute_file, object_event_add, timeline_moment_add, room_set_code -- depend on resource names being known at programming time. Consider this code:
sfx = 'iab' + 'le';
some_val = variable_local_get( 'som' + 'e_' + 'var' + sfx );
There's no plausible way for an obfuscator to avoid breaking code like the above, unless it decides not to obfuscate "some_variable". But if it can't decipher the name of the variable to begin with, it won't know not to obfuscate it.