take this branch as a start to move even further to Studio
That was one of the points. I would suggest to use Studio for Ubuntu and MacOS ports without plugins support, and 8.1 for the vanilla full-featured Windows version.
or maybe there's a way to abstract away the differences and make the code work with either GM8 or GM8.1
It's somewhat possible, but not easy and quite pointless, since 8.0 build will not be able to operate properly with 8.1 because of string support changes. Problems outweigh the benefits.
- performance
Much better, since the YoYo guys bringed up the hardware acceleration, fixed the main loop timing and so on.
- compatibility (operating systems? extensions?)
OS support is mostly the same as in 8.0 (at least this operates without any problems on my good old WinXP SP3). Extensions are properly supported until they begin to use something encoding-related (for example, default 'GM Windows Dialogs' which wasn't rewritten to support UTF-8, so in 8.1 it requires strings to be converted to ANSI and then back). For such cases I've created a GM8 compatibility extension, I'll upload this on my GitHub soon. BTW, port doesn't utilize it.
- further effort (adapting existing mods)
I don't think that this will require so much effort because porting the whole GM was pretty straightforward (I was able to connect and play for a while on '[EU] Parisian Paradise' right after project conversion, without making any change). The biggest problem I can imagine for now is usage of
string_insert() since it wasn't adapted for UTF-8, so it's actually
string_byte_insert().
- anything else you can think of
Pros are: fuckton of bugfixes; UTF-8 so we can implement langpacks (I had invented an amazingly good pattern for this); full text search in the IDE; more common codebase with possible Studio 1.4.9999 port (I pretty doubt that Studio 2 will be suitable).
Cons are: annoying bug about invalid runner data in the IDE (I made a .cmd that restores the original and placed it in Start Menu) and possible runner bugs (although I've managed to fix a big part of them using the
surface_free() trick, some of them may be in other places).
I also would suggest to examine the official Release Notes for the 8.1.x version branch.
http://www.gamemaker.cc/archive/gm4win_release-notes.htmlAlthough apparently 8.1 has (better?) hardware acceleration, I didn't find any performance difference in this thread
This is a very lightweight example actually.
Some thoughts:
-"Disabled check for argument initialization in Global Game Settings."
Why? This looks like really bad practice
It's temporarily (I hope) and just for porting purposes. Also some plugins may rely on this.