I am messing around with Game Maker in my free time. I learned some Java at school but never really understood the object oriented principles. When I got to know Game Maker I was surprised that game development would be that easy. Game Makers scripting language is extremely easy to pick up and it's somehow "object oriented" design pattern is very easy to understand. However there are a few bugs and ways to go in Game Maker I don't really like. So as I'm using a Mac I started to learn Objective-C which also isn't that hard. The harder part would be getting to know Cocoa and when to use it's functions and which of them. Syntax is just syntax. As Apple has now an own game framework "Sprite Kit" I'm curious if I should use that. I'm not even thinking about creating games full time for cash. It's just something I like to do in my spare time. So when messing with Game Maker, you will probably see me trying to understand things like the Bresenham-Algorythm, how Springs in games work, which possible implementations of water there are and so on and further implementing these things into Game Maker.

I also compiled some of my Game Maker projects to OS X and recognized that these Game Maker exported projects eat up a big amount of CPU. I think that the export modules provided by Yoyo are not that great performance wise. Moreover I think that Game Maker isn't a performance master at itself and thats just because how it works. My first implementation of water was cell based. So in a grid of 120x80 "pixels" one cell represents a water "particle" that gets created by water spawners. This water object is then checking every step if it should fall or move left or right. Filling half of the screen which results in 3*4800 if conditions every frame lowered the frame rate from 60 to 20. I know that that is not the best implementation. Every particle system can handle more particles without performance drops. However I still think that there is a lot of overhead created by Game Makers architecture.

Water example: In an object oriented language the object water_spawner would just initialize water objects out of the water class. The water class would still contain these conditions if it should move down left or right but that would be all. I think that Game Maker objects are even checking for more that what is scripted in their step event. This is quite a workaround of an explanation but I think the point is clear. An engine where you could decide what an object will actually do could handle more water cells than Game Maker because of less overhead. Moreover if this engine is system native, the compilation would be "higher quality" I guess.

I know that Objective-C is not the fastest of all languages nor is Sprite Kit the fastest framework. I'm just searching for something that is faster and more flexible than Game Maker and also OS X native. I don't want to spend time learning a framework which when able to work with it wouldn't be capable of handling bigger projects if I really wanted to create full games some day. I know there is Unity which would probably a very good solution but then again I would have to learn C#.

So would a transition to Sprite Kit make sense? Or is Objective-C that slow that it and Sprite Kit wouldn't be faster than Game Maker? Is it capable of handling bigger projects? I'm not talking about Crysis. I'm talking about 2, maximum 2.5D pixel art games but heavily rely on physics simulations or shader use.

So whats the best way to go in terms of performance? Objective-C with Sprite Kit or Unity, or would Game Maker still be faster?

  • \$\begingroup\$ The right framework to use for hobby projects is the one that makes sense to you and you like working in. For simple games & experiments like you describe, your choice of language is not likely to be a hard barrier - Objective-C, C#, they'll both perform well enough for your purposes. I work in Unity in C# in my spare time because that's what I like, and I haven't yet hit the ceiling of what I can do with it. I find it convenient how much is built into Unity that I can leverage without reinventing the wheel, but others prefer the control of working with leaner frameworks — it's all preference. \$\endgroup\$ – DMGregory Dec 3 '15 at 5:49
  • \$\begingroup\$ I'm not asking what is the best or where to get started. I'm more asking if there are frameworks for OS X I don't know yet and if Sprite Kit is capable of bigger projects or if there are better options. And instead of just putting this question on hold, you could've gave me some advice where to post such stuff. "based on opinion"....like nothing we say, do and post is based on opinions huh? Even programming related answers are just opinions. The answer of 2+2 is just an opinion. Numbers are just axioms. Where is the borderline? \$\endgroup\$ – user148013 Dec 3 '15 at 9:26
  • \$\begingroup\$ "I'm not asking what is the best"...you realize that you literally ask "would just Unity [be] the best." The borderline here is that the help center defines questions about which technology to use as off-topic on this site - because only you can decide what technology is right for your project and your workflow (especially in the absence of explicit selection criteria, as here), and an answer for one project isn't transferable to another. StackExchange works best for questions with a correct answer, like "what steps will fix this problem?" \$\endgroup\$ – DMGregory Dec 3 '15 at 13:28