Your View on GameMaker?

Game maker is pretty awesome.
When you start out and you have no Idea of how to make games, nor you know how to program, game maker is the perfect start, IMO.
You don’t need to tell your students what a main function is or what a game loop is. All that stuff isn’t there. Game maker was from the beginning on learning game technique algorithms and learning how math has to do with games: “How can I make my platform player jump and get pulled back from gravity?”. Those questions are answered with those totally awesome click! Oh of course! reactions. And those are awesome, everyone knows them. And that’s why I loved learning with game maker.

Later I switched to java mainly because I don’t know how to “access” game entities. In game maker it’s possible to get the nearest entity from relative to the entity you call the [icode]instance_nearest()[/icode] (iThink) function from and it’s also possible to save an entity you create from [icode]entity = instance_create()[/icode], but it doesn’t give you complete freedom, and back then I didn’t knew any other answers to that.
Also, game maker can be really slow. And actually that’s the main reason I switched.

TL;DR: Game maker is really the best thing for learning to program and especially learning how to program games.

[quote=“matheus23,post:21,topic:42401”]
Is GM really the best thing for learning how to program? I wouldn’t argue that it may be one of the better gateways into programming games, but I would think that first you would need a fundamental understanding of programming before you can move on to programming games.

Just wondering :slight_smile:

[quote=“heisenbergman,post:22,topic:42401”]

And I think exactly that is the interesting thing: With game maker you don’t start out with a fundamental understanding of programming. And if you ever tried out game maker without knowing how to program, you will see that you will first start with getting the idea of the algorithm: If my player is standing on something and you press a key on the keyboard, the player should jump. You don’t care about something that doesn’t make sense for you yet: Main methods / classes, code in general.

That is the Idea you get, when you don’t worry about the code. To get that idea you don’t need to teach anything about programming to the people. If you start telling students ‘Oh well, there’s the if statement and the else and there are methods and functions and datatypes’, they’ll stare at you and say: ‘Now why does that even exist, for what do I need that? Why? I just want my player to jump…’

But if you go the other route and start getting the algorithm and Idea first and then tell them how to express your thoughts in code, they’ll say: ‘Oh, that’s what code was made for! Awesome!’ and ‘Ah, that’s how I’d use the if-statement’ and ‘Oh, that’s why you need to make a difference between numbers and strings…’

I like to go the way
game practice -> code theory instead of
code theory -> game practice, because the theoretical stuff won’t tell you anything about how to use it. Often people get bored because of the theory, or they don’t quite understand it and they won’t be motivated anymore.

I think Game Maker is really cool. It’s great for doing some quick and dirty prototyping, at the very least. And you can make “good”/commercial games with it (Spelunky, Hotline Miami, and Gunpoint being prime examples). I think the basic fact is that speed isn’t a huge issue with every single game that one might well create. If speed is going to be an issue, Game Maker probably isn’t good for that project. That doesn’t make it a bad platform. It just means that it’s not the right tool for that particular job. And I think that treating it as “less than,” just because a lot of stuff can be abstracted via its drag-and-drop game building model, is shortsighted. Game design isn’t just about hardcore programming. I understand that a lot of people who are into the programming side of it want to think that there’s something inherently better about what they do, but you can make good things with even the simplest, and tiniest variety, of tools. That goes for most things, not just video games.

Another thing I would like to note, is that people program software to help make our lives easier. That’s the entire point, to make it easier. Creating a program with a more simple GUI which is easy to use helps us get things done faster. This can some-what be said about GameMaker. This is why game engines have their own SDKs, this is why microwaves have a button to do something for you so you don’t have to. We might be in a future where there is no programming required at all to make a game, and GameMaker could possibly be a pioneer of this.

*Apologies if this is hard to understand

It’s pretty much taken for granted in mainstream educational theory that while we’re pretty good at fitting our existing abstractions onto new tasks and experiences, new abstractions are not something we can easily acquire out of thin air with a mere description of them. For that, we have to reason from the concrete to the abstract. Even people who are skilled at “book learning” (I’d count myself in that group) are usually just good at running some kind of visualization in their heads. A really common trap for such people is getting a wrong analogy and sticking with it because they haven’t had any opportunity to test out their mental model in the real world.

Telling someone who’s never programmed before what a loop is by telling them about variables, and instructions, and flow of control, is either going to (a) take forever, (b) leave them with a lot of wrong assumptions they’ll run smack into later, and probably © both. Showing them a loop that actually does something, perhaps by showing the single step, then the next step, then the loop through the steps, will make it all “click” that much faster.

The functional programming crowd (which I’m also a member) hates to hear this next part, but I think that’s why people tend to take to imperative programming more easily than functional. It’s easy to imagine the little execution counter as perhaps each line mentally hilighted as you execute it, left to right, top to bottom, just like reading, plus all the variables in their boxes clicking with each new value. Not too many people manage to do beta reduction and graph rewrites in their head though. Now at a larger level, I think FP actually becomes the easier thing to keep track of (hundreds of those variables clicking away? no thanks) but it certainly isn’t as accessible when starting out when things are simpler.

I don’t really get what that has to do with Game Maker exactly, you didn’t even mention it once :smiley:

But other than that this is an excellent comment on the FP stuff. I want to find someone, who hasn’t studied maths in college, but learned a functional language as first programming language. A language like haskell. I don’t think that’s possible. Probably there are some guys, but I doubt that.

Really great comment, which summarizes a thought I’ve had, too.
I don’t think telling people about currying (which is one of the simpler constructs in functional programming), before they ever wrote a single program in an imperative language won’t make them have that ‘click’ moment.

The GM discussion had veered off a bit into “learn a real programming language first” vs “play with the tool first and learn later”, which caused me to wander off into that whole pedagogy lecture. I’m not a big fan of GML the language, but it gets the job done I suppose, and I’ve certainly seen worse.

I do think FP could easily be taught as a first languages, and stuff like SICP does pretty decently at it, though the language might need some, well, dumbing down or spicing up for those who aren’t taking it as a college level course. It’s good material, but boy is it dry. Are we likely to see something like GameMaker using a functional language? Probably not. Inform 7 is fairly declarative, but really more a gimmicky syntax than anything really powerful, and not designed to run at anything resembling the speed like a graphical game would demand.

[quote=“sproingie,post:28,topic:42401”]
I think the key to GML is that it’s generic enough in how it functions that you don’t have to spend a lot of time learning it if you’re used to other curly-bracket languages like C, C++, or Java. You can pretty much dive right in and be correct in your assumptions about how the code works, and what it will do.

I used to be brilliant at FP at university. In fact I think I might have been one of about 3 people in the entire year that seemed to understand it, and for that reason I think it’s never going to go anywhere further than specialists. I wouldn’t use it now, that’s for certain, but mostly because in Java I’ve finally found a tool that does everything I could ever need in a way that’s easy to grasp.

GameMaker is a brilliant tool because it allows people to understand some of the high-level game development concepts without having to get bogged down with low-level concepts. A slightly more hands-on alternative might be Blitz Basic in one of its various incarnations.

Cas :slight_smile:

I don’t understand how you could ever go back into a language that doesn’t support passing functions, when you’ve ever tried out a function that supports that. :clue:

I’ve never needed to pass a function… I’ve found that creating little anonymous inner class implementations of interfaces works fine for me.

See, as I don’t design language frameworks or write compilers, most of this fancy stuff isn’t really necessary to write perfectly normal code in real life.

Cas :slight_smile:

Reading this thread yesterday reminded me about tools like GameMaker.

I tried it a few years ago.
Downloaded it again yesterday, and boy it’s so fast. By the time I setup a new java project in Netbeans, I already have a small running game in GameMaker, with a background, keyboard controls, collisions, moving characters, and score displayed.

I guess I’ll play with it some more for the next days :smiley:
Might even buy it…

Though I love programming (especially in Java), I have to admit finishing a game in java is too hard for me: I get lost too fast toying around with OpenGL, physics and other fancy tech stuff.

With GameMaker, I could forget about technology for a while, and I could concentrate on the dawn game. That felt so good… ;D

I work as a coder during the day, using GameMaker is also more relaxing. Coding day and night gets tiresome after some time…

NONSENSE! ???

“Tiresome” more in the sense “boring”

I started in coding in Basic, but I have dabbed in GM a little bit.

Programming just has a lot of layers of abstraction when designing. You have a lot of things to think about when designing simple objects. Like to create an inventory (totally simplified example). In programming, I have to break it up into steps.

What technology do I need for the job?
Is there a library I can use that can do this efficiently?
What functions and primitive types do I need for the items?
Where do I put this in the game?

GM pretty much just cuts out the clutter.

Where do I put this in the game?

In GM, things are made a lot easier, but a whole lot less flexible. In programming, you get a whole lot of flexibility but you have to do a lot of the thinking yourself. Each of these tools offer a trade-off.

As for my thoughts, a tool is a tool. The hardest part is deciding what tool works best for the game you want to make. I took up real languages when I got really frustrated at GM limitations. I was willing to switch when I felt the tool wasn’t meeting my requirements. I do agree that “making a game” is the hardest part. Going into GM first is a good starting point to see if you are up to the challenge. It has a very very high “instant gratification” ratio that can’t be found in programming.

Programming needs a very patient mind and dedicated will to create good results. There is a high requirement to search for your own solutions in order to obtain results. Programming always is working to challenge you to get the best possible result. That is why, when jumping into games, it is totally advised to head for libraries.

GM is just a layered script over a real language, and is just as beneficial for learning to make games. It is when you start to feel limited, then it is probably better to move to a language.

I played a bit more with GameMaker (GM), and I have to say it’s very capable !
I bought the standard edition, and I’m satisfied so far.

Here are the views from a 10-year experienced dev, after a week of toying with GM in the evening:

The bad:

  • commercial, need to spend at least 50 bucks if you want to get rid of the limitations of the free version
  • primitive UI. The many popups are annoying. Usable nonetheless.
  • lack of true IDE: we’re very far from Netbeans, Eclipse & co
  • after lurking on the internet, it seems Yoyo games (the owning company) has a bad reputation of being just lazy and milking the product, but they’re getting better with the Studio edition
  • it seems GM (the editor, not the final exported player) is not well supported on Mac. But I’m using a PC, so I don’t care
  • GML is primitive, you feel it very quickly (though not as ugly as many pretend): not OO (the bigget OUCH!), inconsistent syntax, can define functions but you have to create a “script” for each one, etc… but for a seasoned developer, it’s just another so-so language. You can write like C code, and you’re done. Being a developer helps a lot here, otherwise it may be confusing for a newcomer, especially memory management of dynamic resources allocated on the heap. Also have to be very careful with the scope of the variables: global, local to the script, or instance variable. Also a lot of people say GML and GM are encouraging bad coding practice. Maybe true for non developers, but you can write manageable code in GM. The only problem I’m seeing for bigger projects is if you want to rename resources (objects, sprites, rooms, etc…) then you have to rename it in your code too, which is spread in multiple places. That is a major drawback.

The good:

  • it does what it pretends: to quickly prototype and make 2d games
  • The pathfinding functions are great and easy to use
  • The engine is fast, you just have to make sure you’re not wasting computing power, like in any other language/engine. I don’t believe anyone now saying GM is slow, they’re just using it wrong.
  • can export to iOS, HTML5, Android, Mac, PC, Ubuntu, though each module is expensive (more than the engine itself). Mac and PC are included for “free”
  • lots of useful functions for drawing, gameplay, collision checking etc… for example you can draw offscreen on volatile surfaces, you can do in-app purchases and use analytics
  • gives access to low level 3D (Direct3D, OpenGL) functions, which is cool for someone who already knows 3D programming
  • not too restrictive licensing: can activate the product on 3 machines at the same time
  • shaders are on the way! http://www.yoyogames.com/tech_blog/22
    http://www.youtube.com/watch?v=I5GABPHMDns
  • good documentation, and good tutorials
    – LLVM on the way http://gmnewsbite.net/2013/04/22/yoyo-games-show-the-power-of-llvm/

Compared to Unity (I’m no expert at Unity, only have completed one simple 2d game in it, and many 3d prototypes with the free 3.5)

  • GameMaker is much faster to develop with and also much cheaper for 2d games. No need to spend $1,500 and to look for extensions in the asset store, the good ones being easily above $100, more than the pro edition of GameMaker
  • for 3D games, well Unity is of course a saner choice, though in GM you can play with low level Direct3D functions, which can be more than enough for “simple” games
  • unity is a lot more polished, professional, and modern than GM, with a capable IDE, and a choice of modern languages

Compared to Construct 2 (only used it to prototype a single game 6 months ago):

  • GM is more powerful, because I can code if I want. For instance, I can’t live without Perlin noise, fractals and other random goodness, so in construct 2 I’m screwed
  • Construct2 is easier for beginners on small projects: it’s fully drag’n drop, BUT this approach quickly shows its limits for larger games, with more complex logic. It’s less readable than code, and takes longer to change with lots of mouse cliking.

Overall, the word that comes first to me when using GameMaker is “enjoyable”.
One more tool in my toolbox!

I did a game design course which used Gamemaker exclusively for prototyping new stuff and exploring different scenarios that make games fun… It was pretty quick to change basic stuff, and very useful for working out how characters moved or should be controlled.