Moderators: Despellanion, Dr. Best

A statement on Game Maker

Dr. Best
Forum God
Dr. Best
Forum God
Joined: March 16th, 2005, 8:47 pm

January 17th, 2008, 11:18 pm #1

Hi everybody,

This post by Bami is the cause of this topic. Originally I wanted to post this in the Tech Demo topic, but it lead off-topic too strong, so I am posting this here instead. In this topic I want to precisely point out something I have been saying quite a couple of times before in a less clear way. I want to express my personal feelings about Game Maker and want to confront you with some thoughts. Hopefully you won't feel offended by it. It's understandable that you are biased.

Game Maker is what it is meant to be. It is not more than this. It is an application, which is meant to make simple games, through a simple interface with a simple programming language. Game Maker is extremely user-friendly and it's awesome how fast one can learn to make games with it. So in this way it is a really good application. Unfortunately it's being misapplied quite a lot. When you start working with Game Maker the ease is really amazing. You learn how to make games within one day. And you (usually) don't stop learning, you get better and better with it. This makes it very understandable that people try to use their knowledge to drive Game Maker further and further towards it's limits. The only problem is that these limits are set very low.

Game Maker is a simple application to make simple games and it's really good at being this, but on the other hand it is absolutely unsuitable to make programs that need to perform computing-time intensive operations or need to work with very complex structures. The second point (with the complex structures) is avoidable. Programming complex structures in the GML is hard, but it is possible. The first point is a limit that can be avoided only in one way. Outsourcing to DLLs.

I know what I am talking about. The performance is simply awfully bad. I realized this while I've been working on the Tech Demo. I tried to implement some simplistic culling techniques for the forest and it immediately dropped the frame rate to three. I hadn't been doing anything big with Game Maker for years, so I never really noticed how very low its performance actually is, but while working on the Tech Demo this changed. To get some more concrete numbers for those of you who don't believe in anything different I did a little benchmark. Nothing that could be called representative, but it shows how basic the difference in terms of performance is. I wrote a simple code with a mathematical operation that gets executed in a loop in both Game Maker and C++. The code took about 15 seconds to execute in both, but in C++ I had it running through a billion times, while it did it only ten million times in Game Maker. That makes a factor of hundred.

I do not want to say that Game Maker is programed poorly or anything like this. C++ is a pre-compilable language, while the GML gets compiled at runtime. For this reason it is just natural that Game Maker is a lot slower than C++. The only thing I want to point out is that Game Maker is not made to be used for big projects and for this reason it is just not suitable for them.

I don't plan on making anything big with Game Maker again. This doesn't mean, that Ultimate 3D will be canceled, because the majority of the work on Ultimate 3D is done in C++, only the interface work is done in Game Maker and I can use Ultimate 3D independent from Game Maker, but it does mean that I won't make anything as big as the Tech Demo again in Game Maker. The work with Game Maker has been frustrating me quite a lot. Being limited through Game Maker, while I knew that I could do significantly better things was frustrating.

Of course it can be fun to drive Game Maker towards its limits. Others are trying to make awesome tech demos that are less than 48 kb in size. Limiting yourself in a way like this brings in new challenges. Though there are many projects, that aren't being developed in Game Maker because the developer searches the challenge, but due to the lack of an alternative. The developers have just gotten addicted to the ease of Game Maker. And whenever somebody says, that Game Maker is unsuitable for their project the reaction is announcing bigger features and more details, to prove the opposite.

Obviously not everybody can or wants to learn how to develop complex 3D games in a pre-compiled language and of course this is a lot more complicated than working with Game Maker. But the general overestimation of Game Maker leads to nothing but canceled projects.

What's the biggest project that has ever been finished in Game Maker, if you define big through graphics and complexity? The answers may differ, but there never has been anything really huge. In the best case they look as if they would be five years old although they need high end PCs to run (see the Ultimate 3D Tech Demo). As soon as problems come up that are in a way computing time intensive there are only two answers. The first one is the common one in the modern world, outsourcing. Game Maker isn't doing the hard work then. The other one is the common one in the GMC, aborting the project. Ultimate 3D is a way to use solution number one, but what's the point of outsourcing parts if you can get the whole production to the low-income country ... uhm ... I mean high-performance language?

If you look at Game Maker as what it is meant to be it is a great software that deserves its popularity, but if you look at Game Maker as what it is being used for it is an inefficient, inflexible, unreliable and uncomfortable tool. This post is not meant to offend anybody. I do not want you to cancel your big projects and I do not want you to quit Game Maker. I just want to point out the existence of a strange attitude precisely. Maybe you should think about your maxims. What do you really want? Creative games, with interesting ideas and a plain but appropriate implementation? Then you are perfectly served with Game Maker. Or are your ideals of good games borrowed from commercial AAA titles? Then you should either reconsider your ideals or spend a year or two on concentrated studies of a pre-compiled programming language and open-source 3D engines.

My personal consequences from the above realizations are the following: I have decided to work less with Game Maker in the future. As I already said I won't work on a project as big as the Tech Demo in Game Maker again. I will improve the internal structure of Ultimate 3D so that its use with C++ becomes more comfortable (I already have been doing this for one year now). Though there definitely will be still new versions of Ultimate 3D for Game Maker. I like this community and it is great to get that much feedback on Ultimate 3D. Without a community like this the development of Ultimate 3D would become senseless. So don't be afraid, this project won't be canceled within the near future. The next two versions are already planed in detail. I may also participate in some bigger projects, which don't have to do with Game Maker, but there aren't any concrete plans for this so far.

This post has become very long, but I think it also has become quite good. I never pointed out my feelings towards Game Maker that precisely before and now that I have done it I feel a bit relieved. Before it probably sounded quite contradictory when I held "hate speeches" against Game Maker. Now it is hopefully comprehensible. I don't have any idea what I expect as answers in this topic. Probably many of you won't agree with me and will defend Game Maker. If this happens there must be some kind of misunderstanding, because I did not offend Game Maker. Well, to end this post with another sentence, that has the potential to lead this topic towards a big controversy:

I guess Mark Overmars would agree with me,
with friendly regards,
Dr. Best
Quote
Like
Share

Eansis
Forum God
Eansis
Forum God
Joined: June 15th, 2007, 9:48 pm

January 17th, 2008, 11:31 pm #2

My problem with C++ is that not everything is included to start making projects with it. You cannot even find a function list in the helpfile! You have to find everything through Google, or buy an expensive book. This is not very professional or user-friendly. And I am stuck with Dev C++ because of my bad PC. Well, Dr. Best, in a few years GM will be pre-compiled, so don't completely abandon GM just yet.
VOTE FOR BUDDY ROEMER HE'S A STRAIGHTFORWARD, DOWN TO EARTH AMERICAN GUY WHO ISN'T PART OF THE BIGBROTHER CONSPIRACY
Til'c wrote:Things will not calm down Daniel Jackson. They will infact calm up.
Quote
Like
Share

gamemakerguy1560
Forum God
Joined: March 21st, 2007, 9:21 pm

January 18th, 2008, 12:19 am #3

exactly right, gamemaker wasn't made for big projects, but it's still good. as far as 2D games go, gamemaker is the best thing i've found for it. Ultimate 3D is the solution for gamemaker's lack of 3D support.

i've always thought a good option for U3D would be tyo write the DLL in a way that is can be called in a separate c++ program, as a replacement of gamemaker. you could also have a simple program that would write the C++ files (most likely as a project file to be opened up and compiled by a compiler, unless you blended it with an open source compiler). the program is made in such a way that it has a special language that is simple like gamemaker's GML, but instead of the language being compiled at runtime, when it is saved, it can be 'translated' into C++, making the program an interpretor for users who are past gamemaker, but not yet to c++.
Quote
Like
Share

skarik
Forum God
skarik
Forum God
Joined: October 4th, 2006, 11:56 pm

January 18th, 2008, 3:21 am #4

wrote:You cannot even find a function list in the helpfile!
You can in mine. :P
wrote:i've always thought a good option for U3D would be tyo write the DLL in a way that is can be called in a separate c++ program, as a replacement of gamemaker. you could also have a simple program that would write the C++ files (most likely as a project file to be opened up and compiled by a compiler, unless you blended it with an open source compiler). the program is made in such a way that it has a special language that is simple like gamemaker's GML, but instead of the language being compiled at runtime, when it is saved, it can be 'translated' into C++, making the program an interpretor for users who are past gamemaker, but not yet to c++.
That's cool, but it's still a game maker, and likely a bit hard, is it possible Dr. Best?
Quote
Like
Share

gamemakerguy1560
Forum God
Joined: March 21st, 2007, 9:21 pm

January 18th, 2008, 4:15 am #5

well, the 'semi-compiler' shouldn't be too hard, all it really is is a text editor that translates a simple code into c++, like for example:

the c++ code for the 'hello world' program:

Code: Select all

#include <iostream.h>

main()
{
    cout << "Hello World!";
    return 0;
}
would be simplified as:

Code: Select all

PrintMessage(0,0,"Hello World");
...or something similar to that...

really similar to gamemaker, except that instead of the code being compiled at runtime, the program just exports the necessary files into a specific folder and then you compile the files, and you've got your game.

basically it's like telling someone, who knows c++ perfectly, what you want to do, and they put it into c++. rather simple concept, the program itself could in fact be made in gamemaker. if i knew c++ better i'd try and make it lol

but it U3D could be used by a separate c++ application, that would totally increase it's capabilities, gamemaker is too slow...
Quote
Like
Share

skarik
Forum God
skarik
Forum God
Joined: October 4th, 2006, 11:56 pm

January 18th, 2008, 4:25 am #6

wrote:basically it's like telling someone, who knows c++ perfectly, what you want to do, and they put it into c++. rather simple concept, the program itself could in fact be made in gamemaker. if i knew c++ better i'd try and make it lol
Step 1: Make a good text editor in GM. That's hard as it is.
(Unless you use the WinApi DLL's).

Y'know, would there even be a point to do major computations in C and everything else in GM? I mean, just move it all to C then, right? I was thinking about the AI of my game, that right now, from a dang turret, GM stuffs up. Not to mention a few other things. Did anyone notice that about 100 instances of CreateCube and Step slow the game down a ton, but when the step event is deleted, or is updated in another object, it [the game] goes twice as fast?
Quote
Like
Share

Matrix_Square
Elite Member
Matrix_Square
Elite Member
Joined: February 1st, 2007, 2:14 am

January 18th, 2008, 8:31 am #7

Dr. Best wrote: The other one is the common one in the GMC, aborting the project.
Definitely... I've personally had to abandon a project because I was simply pushing GM too far.

I was drawing a lot on the screen with a lot of particles (and 3 views--for co-op), and the average FPS couldn't even hit 30 without some HUGE compromises and removal of a lot of particle effects... That's NOT acceptable!

I totally agree with what you're saying, Dr. Best. With GM, the sky isn't the limit, your imagination isn't the limit... the speed is the biggest limit.

I truly hope, with GM 8.0, YoYoGames can increase the speed of GM's runtime engine... Because right now, only the simplest of games will ever run at a solid 30 or 60FPS...

Not to put this post off topic or anything, but to those that want speed AND relative ease of use for programming simple GM-grade games, you should check out PyGame and Python-Ogre. PyGame is great for making 2D games like GM, except it's faster and it's also multi-platform (like Java). Python-Ogre is a C++ Ogre3D wrapper for Python (so the rendering engine is still running at C++ speed!).

I've been learning Python for some time now, and I'm slowly moving onto PyGame (One day, I hope I can start making full-fledged 3D games in Python-Ogre :P). Let me tell you... even though Python is interpreted (kind of like GM), the speed is MUCH faster than GM! It's at least 10 times faster, and with Psyco (No, it's not those insane guys in Mental Hospitals :lol:!), it becomes even faster!

You don't think 10x faster is anything worthwhile?
Lets take Dr. Best's example: the culling algorithm, in theory, would still run at 30FPS in Python, even though it's running at 3FPS in GM.

I think that's a huge difference...

It's a shame I probably won't ever get to learning C++... My heart just isn't in full-fledged programming :(. I want to be able to make prototypes and simple games, easily and quickly. And up until recently, GM has served that purpose well. The next step: Most likely switching to PyGame.
Quote
Like
Share

Despellanion
Forum God
Joined: March 26th, 2006, 8:41 pm

January 18th, 2008, 10:03 am #8

Well, this was old news :lol: Good post, though. I know that Game Maker is hyper-slow, I realize this everyday, but the general purpose of my big project is to push the limits (my own and especially Game Maker's limits). Anyway, I hope to create my next big project in Delphi which I am currently still learning.
Quote
Like
Share

Dr. Best
Forum God
Dr. Best
Forum God
Joined: March 16th, 2005, 8:47 pm

January 18th, 2008, 10:51 am #9

Hehe, now I know what kind of feedback I wanted. This kind :lol: ! Here are some comments on your comments ^_^ .

@ Eanbro
Eanbro wrote:My problem with C++ is that not everything is included to start making projects with it. You cannot even find a function list in the helpfile! You have to find everything through Google, or buy an expensive book. This is not very professional or user-friendly. And I am stuck with Dev C++ because of my bad PC. Well, Dr. Best, in a few years GM will be pre-compiled, so don't completely abandon GM just yet.
Your problem with C++ is that you want it to be like Game Maker. But the difference is so very basic and big, that you will never get it to be like this. C++ is language that can be used for almost every purpose (although it is often not the best choice). For this reason it's complexity is a lot higher. There's not a three hundred built-in functions you have in C++. There's thousands of important libraries, and all of them are a lot more complicated than Game Maker in it's completeness. I already told you this in a PM, but if you want to work with C++ and don't just want to do this in a way like "Well, I will outsource these twenty lines of code from Game Maker to a DLL." then you should really get a good book about C++. It is the best and fastest way to learn it. And what's the big deal of spending 30$ on it? It's worth it. And if you are too stingy for this you can still find tons of complete C++ tutorials on the web. Just don't search for single functions or problem solutions, but learn C++ from scratch.
And as far as I know the GML itself will never be pre-compiled. This would be very unusual. YoYo Games is just planing on rewriting the runtime compiler to improve the performance.


@ gamemakerguy1560 and everybody else who reacted to this idea
gamemakerguy1560 wrote:i've always thought a good option for U3D would be tyo write the DLL in a way that is can be called in a separate c++ program, as a replacement of gamemaker. you could also have a simple program that would write the C++ files (most likely as a project file to be opened up and compiled by a compiler, unless you blended it with an open source compiler). the program is made in such a way that it has a special language that is simple like gamemaker's GML, but instead of the language being compiled at runtime, when it is saved, it can be 'translated' into C++, making the program an interpretor for users who are past gamemaker, but not yet to c++.
This would work, but it seems somewhat weird to me. There are lots of user-friendly programing languages, which get compiled at runtime and are still a lot faster than GML. Popular examples are Lua and Python. If I would ever make some game creation software by myself it would probably use Lua.

@ skarik
skarik wrote:Did anyone notice that about 100 instances of CreateCube and Step slow the game down a ton, but when the step event is deleted, or is updated in another object, it [the game] goes twice as fast?
Well, that's the point. In Game Maker you have to worry about things like this. In C++ it's absolutely usual to have functions that get called 10000 times a second. A very good example is the triangle intersection test function of Ultimate 3D (GetDistanceToModel(...)). As the name triangle intersection test implies it has to be done for every triangle. So for every triangle a code gets executed that is a lot more complicated then the code in the Step() script of Ultimate 3D. This can easily happen 300,000 times a second. Though it doesn't slow down the game that significantly.

@ Matrix_Square and Despellanion
It's good to see how you get rid of your Game Maker addiction :lol: . Most other languages, no matter whether they are compiled at runtime or at compilation time, are faster than the GML. Actually the GML is the slowest one I know. It's not surprising though. Mark Overmars can't mess with the developers of Python or Lua, especially because he never wanted to do so ^_^ .
Quote
Like
Share

Ruud v A
Forum Leader
Ruud v A
Forum Leader
Joined: September 21st, 2007, 1:41 pm

January 18th, 2008, 3:44 pm #10

So if you don't make big projects in GM anymore, maby it's a good idea to make Ultimate3d a c++ library like e.g. Allegro. I know c++, but making games with it is very hard. Handeling objects and positions like in GM is not the problem, but graphis is very hard. You already used other programs than GM for U3D, like the model viewer, so would this be possible? It would make games a lot faster and still easier to program in c++.
Veniogames
V&#275;nit, ut m&#275; occid&#277;ret.

I will not use Ultimate3d 2.x.x anymore - I am an Ogre C++ programmer.
Quote
Like
Share