Good news, readers! I think I’m pretty much done with Game Maker 2 for the time being.
As stated several times, I have run through this space trader game several times over the years, and I have gotten the development of certain parts down to a science. I can create a universe in Unity and for the web, but when it comes to GM2, I think I’m asking way too much of the platform.
Based on the marketing materials, it’s pretty obvious that GM2’s aim is to allow people to make…I don’t know how to classify them…games that exist “in the moment”. My trading game is at least 90% data driven: everything that gets put on the screen is put there because the data said it should be there, in that state, at that time. With GM2, it’s more immediate. When you swing that sword it does damage according to what the object properties were set to at runtime. If any data points change, it’s because another object (seen or unseen) has been triggered to modify those data points. Anything added at runtime has been specifically planned for.
GM2 is not a platform for data driven games. The reason I say this is because GM2 does not have a robust data storage system. There are at least five different data storage methods, and while I can see uses for each of them, working with them in the way I need to work with them is a laborious process that often times forces me to work backwards. I’m sure that with a native GM2 approach these structures are very usable as a one-off solution for saving games or tracking instances in the game (which is exactly what I suspect they were made for), but for a game idea like mine, with a whole universe of data to track, these structures are frustrating to work with.
I have managed to create “a universe” in data structures, but getting to use that data, even just to set up a room with a star and some planets, has been more time consuming than it really should have been. I have had to go back to the documentation not to learn how to perform a logical action, but to learn how GM2 wants me to perform this logical action. Anywhere else I know I’d be able to learn a convention for the platform and apply it in a way that analogous to other platforms, but here I have had to determine the convoluted way that GM2 wants me to get ID values of objects from other objects, to replicate code over and over just to drill down into my data structures (the deeper I have to go, the more lines of code it takes), and then how to do something as simple as loop through a collection. I have spent more time re-reading the same sections of documentation because GM2’s systems are not designed for what I want to do.
That’s the take home: the language works fine for side-scrollers or RPGs where the world can be designed by hand using the room editor because the scripting language is straightforward and declarative if you work mostly with static, placed objects. That is what the platform is really designed to support. For larger, data driven games like mine, this is simply not the best tool. I cannot spend any more time trying to fit this round peg into a square hole, because it’s taking up brain-space that I need to use to get back to working on my original version of the game.