I was originally thinking of creating a game with Python and SFML. I understand Python is slow compared to C++, but how is it compared to Game Maker?

The main reason I ask is I recently played a Game Maker game (The Iconoclasts) which ran at a fairly bad frame-rate on my computer (GMA 950). I'm worried I would have similar performance issues with Python/SFML.

5 Answers
5

To say "Python is slow compared to C++" is a generalization that ignores a lot of real-world practicalities and is usually a poor kind of judgement to rely on. What you really want to do is look at what a particular language or technology can bring to the table in terms of your needs and, similarly, evaluate any potential downfalls of that technology against your needs.

If you are having to ask this kind of a question, there is a very good chance that the limiting factor in terms of performance of any game you make will be you and not the technology choices themselves. Consequently the optimal choice is the one that empowers you the most, in other words, the technology or language you already know best.

As for the poor performance of the Game Maker game you played, that could be attributable to a number of factors, some of which are specific to that game, such as specific poor code that may have been written via Game Maker's tools or scripting languages. It isn't necessarily a fault of Game Maker itself.

If I had to guess the biggest reason that the game you played runs so slow is not that it's a game maker game, but that game maker markets itself specifically to non-programmers. Because you have non programmers making games it's highly likely that the game in question uses some very inefficient algorithms that cause it to run slow.

As in most cases, the speed of the language will only lightly affect the overall performance of the program. When people say "omg this language is 50% slower than this other language" and the speed is still stupid fast in both cases then you'll find little to no discernible difference to the end user.

Game Maker is a good beginner's tool. But I recommend moving upward to bigger and better programs if you have any previous programming experience. I used GameMaker for a college 2D game development course, it has a nice, easy to use drag and drop system. The problem, however, is that the program's drag and drop doesn't use the most efficient (or logical) commands. Plus the drag and drop doesn't support a lot of the advanced commands that the program is capable of executing, so the programmer has to get creative with it, or learn to code. If you learn to use GameMaker code, however, then you would be able to get around that with relative ease.

But, it can be hard to learn a code for one single program with the busy schedules we all have, which is most likely why you experienced the slow performance.

But as Kort Pleco previously stated, most language speeds are not noticably different.. It all depends on how the code is written and executed. A lot of redundancies can make it considerably slower, which is normally due to a lack of experience in coding.

For the game I am working on, I use a diamond-square algorithm to randomly create terrain upon starting a new game.
To decide between using python with pygame for the project or GameMaker, I implemented the terrain generator in both. Pygame performed slightly faster, but the difference was negligible.
Ultimately I chose GameMaker as I can work much faster in it.

The accepted answer is dead on but I just wanted to add my 2 cents as a GM user for nearly 8 years.

GM did have many issues with optimizations so there is some legitimate concern. There are a group of deprecated methods *_variable_exists? that used to exist in Gamemaker pre-studio. Because of this convenience method it was leveraged in almost every imaginable library and extension that was written for GM.
Turns out these methods were horribly expensive and were causing major issue when running large scale games.

So there are many cases where GM can be really bad but with proper knowledge and careful use it is no less legitimate than any other method (unity2d,pygame,etc.). Just make games and have fun.