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?