Game Maker HTML5: First Impressions

[Editor’s note: Be sure to read the follow-up to this article.]

I’ve only been a Game Maker user since August 2010, but I have found it very easy to pick up and learn quickly — so much so that by February 2011, Packt Publishing noticed my blog and asked me to contribute technical review on their upcoming Game Maker Cookbook. Game Maker has its quirks, but it has one of the gentlest and most accessible learning curves of any programming environment that I’ve tried so far. It has its detractors, and it does have some weaknesses, but overall I like it a lot.

YoYoGames is giving away licenses for their still-beta Game Maker HTML5 for participants in Global Game Jam. Kudos to them. What a great way to support indie game developers! Considering that the beta for GM-HTML5 is $100 for a license, and Global Game Jam is free, this is a rather good deal. I happen to be participating in Global Game Jam this year, so it provided me with a code that allowed me to download a copy of the software for use with a time-limited license key.

Wasting no time, I spent the rest of the evening producing a quick demo game to get familiar with the new program, and learn how it works. I was able to build a mostly-working Space Invaders clone in just a few hours.

Here, then, are my thoughts on the product so far:

HTML5 as an application platform

The great allure to the World Wide Web as a software development platform is that it enables you to distribute software very widely very easily — as easily as hosting a web site. The web browser is nearly ubiquitous, and with the latest version of the major browsers, HTML5 is reasonably well-supported, even though the standard is still being worked on, and may in fact never be finalized.

HTML5 as a platform for software development offers universality, in that you can reach any platform that has a browser that supports HTML5. But this comes with the risk that different platforms may not conform to the still-a-work-in-progress HTML5 W3C recommendation. HTML5 is a shaky platform to build on for this reason, and may never become truly universal. HTML5 is really in the same boat as Java, which promised “write once, run anywhere”, but delivered “write once, debug everywhere.”

HTML5 developers will always be at the mercy of the browser developer, and the HTML5 standard. This isn’t surprising — any software developer is at the mercy of those in control over the platform their software will run on. But HTML5 is a maturing, de facto standard that is supported increasingly widely, and each web browser is bound to support it without 100% consistency.

Any web site is built from more than just HTML, of course. Commonly, the current generation of web-related technologies (HTML, CSS, Javascript, SQL, SVG, WebGL, and others) are lumped together under the HTML5 umbrella. This article on HTML5 as a Game Platform provides a good overview of what’s out there for a web developer to choose from.

There are many different tools that can be used to generate HTML5 applications; Game Maker is but one of them. Game Maker HTML5 concentrates on the HTML5 <canvas> element + Javascript. At least developers using Game Maker HTML5 will not have to worry directly about the HTML standard itself, or browser-specific differences in implementation of the standard — Game Maker developers have no control over the HTML built by Game Maker. However they will be at the mercy of YoYoGames’ ability to keep up with the state of the web browser and the HTML5 standard. As the <canvas> element is pretty stable, widely supported in modern browsers, this is hopefully a relatively solid foundation to build a game on.

Despite these dire warnings, HTML5 seems likely to be a good platform for development that can reach a majority of platforms with greater ease than just about anything that’s come before it. It’s definitely possible to create a high quality game experience that can be enjoyed easily by many.

Getting Into Game Maker HTML5

Actually building a game in Game Maker HTML5 should be very familiar to anyone who already has experience with other versions of Game Maker. No knowledge of HTML or Javascript is needed. The build process automatically generates the HTML5 application for you. This is a plus if you’re already knowledgable in Game Maker Language but not interested in HTML5 and all that entails. The positive way to look at this is you don’t need to know HTML5 applications to build a working HTML5 game.

On the other hand, Game Maker is often used as an educational tool for young programmers to develop fundamental programming skills. I foresaw opportunity for Game Maker HTML5 to act as a “gateway drug” to learning web development. If you were looking at Game Maker as a stepping stone to learning how to build Javascript applications with HTML5, you’re bound to be a bit disappointed. At no time does the developer interact directly with HTML or Javascript resources; they are generated by Game Maker when you build an HTML5 application. In this way, the HTML and Javascript are abstracted from the user, in much the same way that a compiler abstracts away the need for the programmer to learn machine language.

The resulting HTML5 file is still human readable; however, the Javascript code generated by Game Maker is obfuscated. You’re not going to learn Javascript by looking at this code. You may, if you’re extremely masochistic, take a stab at editing the built Javascript code, but it sure isn’t going to be a pleasure, and it would require expert knowledge in Javascript already to be able to reverse engineer the code.

I really wish that obfuscation was an option at build-time — I can understand the desire for some game developers to try to protect their code, and perhaps YoYoGames has some trade secrets in their HTML5 compiler that they want to protect as well. However, obfuscation always raises concerns of trust. Savvy web users are cautious about allowing Javascript to run, and obfuscated Javascript is obviously less trustworthy to run than expressively-written Javascript that shows its intent. Not that I would accuse YoYoGames of inserting anything malicious into the Javascript code that is generated by Game Maker, but what if they did? How would you know? What could you do about it?

I would really like to be able to look through the Javascript code and see if I can’t figure out why some feature that works when I build my project as a Win32 executable fails, and possibly implement a fix and communicate it back to YoYoGames so they can improve their product. In any case, human-readable Javascript code would be a real boon to any developer who is interested to learn more about building HTML5 applications. It doesn’t appear that YoYoGames provides this capability — at least, I wasn’t able to find it after a few hours of playing around with the software.

If you were hoping for a fun tool to enable you to learn HTML5 and Javascript, keep looking.

Update: If you build your project in debug mode, the javascript is not obfuscated. This gives you a window into how your game works in HTML5, and an opportunity to learn how Javascript works. I’d still like obfuscation to be an option that you can pick at build time for making regular builds as well. Hopefully YoYoGames can make that happen.

The Good

Your old Game Maker project on HTML5?

Game Maker supports importing old Game Maker projects created with Game Maker 8.1. Game Maker 8.1 can convert Game Maker 8.0 projects; I’m not sure about Game Maker 7 and earlier, as I’ve never used those versions, but I do know that Game Maker 8 could open .gmk project files created with Game Maker 7, usually without any compatibility problems. So, there is a reasonable path to taking an old game and converting it to HTML5. This may give older projects new life. Previous to HTML5, it was possible to play Game Maker games in a web browser, but it required installing the Game Maker plug-in, which often crashed, and wasn’t available for some common browsers. The comparative ease of creating native HTML5 games which run in any stock browser that supports <canvas> and JavaScript makes for a major improvement over the old paradigm.

Group Development Features

Game Maker has always been geared toward solo development and being self-contained. The downside to this is that it makes it difficult for groups to team up and work together on the same project. In the past, if you want to work as a group, one developer will have to act as a master project manager, and the other developers will need to coordinate their efforts to code to some agreed upon standards, especially object, resource, and variable names, and deal with exporting and importing. It really makes working as a team a drag.

Game Maker HTML5 improves upon this, by replacing the old .gmk self-contained project format with .gmx. The .gmx format is actually a directory, within which each individual component file of the game project is available for editing individually. This enables developers to work in teams as long as they stay out of each others way. I don’t have a second license installed on a second computer to test out how well this works, but it’s nice to see.

Export Project Feature

The other major new feature I noticed was an “export project” feature. I haven’t played with this yet to know how it works or what it gives you, but it may be that this helps with some of the issues that development teams experience when porting a Game Maker project to “the other OS”. Previously, Game Maker Standard supported exporting scripts, sprites, and other resources only, not entire projects.

Improved Code Editor, Room Editor

Not drastically, but the improvements that were introduced in Game Maker 8.1 are continued here. I haven’t used these features enough yet to fully appreciate how improved they are over the last release, but they are noteworthy improvements nonetheless.

On the downside, at times I find that it’s a bit aggravating to work between two different Objects, because opening an Event or Action still yields a modal properties dialog, which prevents you from switching back and forth between two open screens. This is still a problem in GM-HTML5.

New Help File

As expected, the Help file has been updated. Not only do they include the new features for HTML5, but it appears that the documentation has been re-organized a bit. It’s a lot of reading material, so I haven’t been all through it, but hopefully they’ve revised and edited to improve the content and make it easier to use.

The Bad

Pricey, Still in Beta

Game Maker HTML 5 has been available to the general public as a beta software for a few months now. YoYoGames has announced that they will charge $199 for a license after beta testing is over, but during the beta period it’s available for 50% off — $99. That’s $60 more than what they’re asking for the previous version, Game Maker Standard 8.1. For a beta.

My initial reaction to learning of this increase was dismay. This is a huge jump from what they used to charge. I bought my Pro license of Game Maker 8.0 when it was still $25; Game Maker Standard is now $40, and Game Maker HTML5 at $200 is 5x the cost of Standard, and 8x what I paid for Professional just over a year ago. It worries me that such a high cost will scare away amateurs and casual/hobbyist developers, and that for professional game developers, other products such as Unity or XNA Game Studio will be more attractive. If this concern bears out, YoYoGames could be pricing themselves out of their market.

I trust YoYoGames to understand their business more intimately than I do, so if this is a good decision for them and allows YoYoGames to stay in business, I’m for it. If $200 is too much money for you, Game Maker Standard is still around and will continue to be offered at the relatively low cost of $40, as is the free Game Maker Light (Standard with a few features locked until you pay for the upgrade), and either should be “good enough” for casual game development.

Unfortunately, “still in beta” really is true. While I found the software usable, and was able to create a running game with it, when I built the HTML5 version, there were a number of bugs with it which were not to be found in the Win32 .exe build. Obviously these issues are excusable, since it’s a beta, and I trust that YoYoGames will fix these issues before the product is out of beta, but it does merit mentioning them since, for now, it may limit what you’re able to do with your HTML5 builds.

So far, the features that have given me problems have been:

  1. Intersect Boundary event (detects when part of an object is outside the border of a room)
  2. Room Restart action

I’ll add more if I run into it — I haven’t but scratched the surface, and already two very common, useful language features do not work in any browser that I’ve tried.

I’m not sure how close YoYoGames are to taking the “beta” designation off and calling it a full-blown release, but a few months is a bit long by today’s standards. Prominent products like Google Chrome and Mozilla Firefox are being released on a development schedule measured in weeks rather than years. I’m sure YoYoGames has much less in the way of resources than Google, Mozilla, or Apple, so it’s to be expected that there’ll be more wait between releases. Nevertheless, they are going to need to improve their processes in order to reduce the lag time between releases.

Legacy weaknesses

Otherwise, Game Maker HTML5 is very much like previous incarnations. If you’re used to GM7 or GM8, you’re going to feel right at home. Of course, this means that you’re accustomed to, and willing to accept, some of the inherent weaknesses that have been part of Game Maker’s history for some time now. By which, I mean:

Debugging

Debugging in Game Maker consists of a rudimentary variable tracking function and runtime exceptions logging. Setting up variable watches is tedious, and needs to be re-done each time you run the game, although the trace configuration can be saved to a text file, and re-imported, rather than re-typed each time.

In my projects I’ve augmented these built in features with non-game functions that I use for development purposes.

For example, I took some file i/o functions from GML and built a logging system that I can use to track what my program does. Being able to read the logs and verify that a particular branch in my program was reached when the game logic that I wrote dictated that it should be is invaluable. There’s no line-by-line execution tracing, so this is all I can do, and without it I really would be stuck. Another “development” feature I’ve taken to adding into my game projects is some logic to enable me to view an Instance’s properties by clicking on it. This allows me to get at the state of any object I can see, without having to figure out some way to set up a variable trace. It’s a pain to have to re-implement these things again and again; it really is something that should be built into the framework so that when you’re running a game in Development Mode, it provides that feature to you for free.

On the other hand, having to build these things for myself has an intrinsic value as a learning experience. One of the things that I really enjoyed about learning Game Maker is how much it makes me appreciate things that more “mature” languages and development environments have built in. Game Maker’s simplicity enables a newbie developer to get by without these things, and the newbie developer’s newbness makes it likely that he will make mistakes and run into problems that these missing features can prevent or resolve. Hopefully, the developer realizes at a certain point that there is a need for these features, and then takes it upon himself to implement them on his own. Extending the environment in this way is an important step toward a programmer’s enlightenment, and Game Maker leaves some fruit hanging low enough that they can have the satisfaction of discovering these things for themselves.

Version Control

Game Maker projects consist of a single file, typically a .gmk or gm8. HTML5 introduces the .gmx file. I’ve never reverse engineered any of these, but it’s my understanding that they are all of these are essentially “containers” that store resources like sprites, sound effects, and fonts together with source code. The result is a self-contained, tidy, file; this is great for newbie developers who might be overwhelmed by a project consisting of multiple files and subdirectories. But it makes version control basically impossible. The closest thing Game Maker offers to version control is to save the last (up to 9) iterations of the project under a different name. This is a far cry from svn or git, and it’s too bad Game Maker doesn’t allow some way to look inside the .gm* container format and manage versions for the various components. It would be super sweet if YoYoGames eventually did build something like this, which would allow Game Maker projects to be properly versioned in a real-world version control system. I’ve heard that this may be coming in Game Maker Studio. I sure hope so.

The Ugly

The Game Maker HTML5 Environment uses non-standard themeing for its interface. I can’t fathom why they decided to break from the standard Windows Explorer theme, but perhaps it is intended to complement the color scheme of the YoYoGames web site, and aid in “branding” the Game Maker product.

Personally, I find the dark background/light text to be harder to read. I can live with it, but I’d prefer the standard defaults, the option to customize or skin the environment application.

The Game Maker Lineup

The product line for Game Maker is starting to feel a bit crowded. One thing I worry about is that YoYoGames won’t be able to provide full support to all products that they offer. Even now, the product is largely community supported. Fortunately, Game Maker has a large and enthusiastic community of developers. Currently, YoYoGames offers the following:

Title Platform Target Platform Price Description
GM Lite Windows Win32 Free The entry-level model for beginners dabbling in game development.
GM Standard Windows Win32 $39.99 The old flagship, formerly Game Maker Professional. The “full-featured” version; creates Win32 .exe files only.
GM Mac Lite Mac OS X Mac OS X, iOS Free The entry-level model for beginners dabbling in game development.
GM Mac Mac OS X Mac OS X, iOS $39.99 The sibling of “Standard”; creates Mac OS X .apps.
GM HTML5 Windows Win32, HTML5 $99 (early adopter beta discount)$199 (full price) Currently still in Beta.
GM Studio Windows Win32, Mac OS X, iOS, HTML5, Android ???? The new flagship, coming sometime in 2012.

Prior to GM-HTML5, one of the biggest problems with Game Maker as a development platform is that the Mac and Windows versions are only mostly compatible with each other; you can’t simply import a project built on Windows in to Game Maker Mac and hit build and expect it to work perfectly — certain functions are OS-dependent, and YoYoGames has a little more work to do if they want to completely abstract the underlying platform and let the designer concentrate simply on game development. It’d be great if you wanted to collaborate with someone running “the other OS” if you could simply swap project files and build and have a working product. As it is, you almost can, but not quite.

When I heard that Game Maker Studio was in the works, I hoped that it would simply replace Game Maker Standard, and become a platform-unifying product that consolidated all Game Maker users under one umbrella. Instead, it looks as though we’re headed toward balkanization, with Game Maker Standard, Game Maker Mac, Game Maker HTML5, and Game Maker Studio users fragmented into their sub-communities, each dealing with slightly different issues, with broad (but not 100% reliable) overlap. This will complicate the community’s ability to self-support, and could potentially be ruinous to the cohesiveness of the community that helps make Game Maker development enjoyable. The community is invaluable — it really isn’t too much to say that the community is the product — and I hope YoYoGames both recognizes this and continues foster a healthy and vibrant community. I know when I was starting out with my first project, had it not been for the community support forums, I would have had a much harder time figuring out Game Maker’s quirks, and the official support wasn’t nearly as helpful in supporting developer questions.

My advice to YoYoGames is to bring the community together around the upcoming Game Maker Studio product, unify the Windows and Mac OS X developer experience, phase out the other products, since they’re redundant once Studio is out, and price Studio at a point that allows YoYoGames to stay in business and is yet attractive to casual/amateur developers while giving everyone professional-quality tools.

Summary

  • Expensive relative to previous versions.
  • Same old Game Maker, now can target HTML5.
  • Still in Beta, don’t expect fully working games in HTML5 just yet.
  • Generated Javascript code is obfuscated.

Verdict

Weak Buy

If you already like Game Maker, are an early adopter or an enthusiast for the Game Maker platform, go for it. If want to make your games more easily accessible to the world, HTML5 promises to do that for you, albeit with some kinks to work out, and the discount price for buying in during the beta period is a good incentive to buy now. Getting into it now will mean you’ll be ready to release HTML5 games that much sooner.

Otherwise, you may prefer to wait for Studio, or remain on Standard indefinitely. I imagine YoYoGames will make an upgrade path to Studio so that developers who invest in HTML5 will not feel like they’ve wasted their money. Global Game Jam participants will be able to buy Studio at 50% off.

6 Comments

Add a Comment
  1. I agree that the products should be unified. There should be only one Game Maker and like 4 licences. Free (Export to current platform with limitations), Standard (Can export to Windows/Mac), Pro (Windows/Mac/HTML5) and Studio (Win/Mac/HTML5/Android etc.)

    This would also speed up the development from yoyogames’ perspective.

    I can’t really blame yoyogames because I know how a company works, however I believe they are going the wrong direction. Game Maker has several issues (performance, bugs). I would fix those first then move on to porting the games in other platforms.

    And also the pricing needs a bit revision. I believe a $60 for GMHTML5 would be fair and for studio with all platforms a $100 sounds alright.

      

  2. Nice review! Thanks! I am glad that you have enjoyed using GM:HTML5, it would have been nice to mention the update mechanism and that we are regularly fixing the reported bugs with releases regularly (generally each week, though a bit slower since Christmas).

    If you build your game in Debug (the red arrow button rather than the green button) then your game code is not obfuscated (though the GameMaker runner itself is still obfuscated), and you can then use the built-in debuggers of the browser to single step and generally debug the converted GML code.

    You can also switch the skinning off by going to preferences and selecting the GM8 skin (this effectively turns off all the skinning functions).

    On Version Control the switch to GMX format, which is just XML and so is human readable means that our users can, for the first time, actually use Source Control on projects, currently the user has to manage this themselves, but automatic control is being added to GM:Studio.

    Because of Legacy functions expecting to take a project from GameMaker 7, 8 or 8.1 and get it working directly on a new target platform will always require some rework, it is possible, we do this internally with our own projects .

    Going forward GM:Studio allows targeting games for multiple platforms (Windows, Mac, iOS and Android) and we are working hard on making that easy to use for everyone. We look forward to getting it into everyones hands.

    Russell

      

    1. Russell, thanks for all of that information. When I was writing the review, I couldn’t find that skinning option in Preferences… I’ll have to look harder.

      The update mechanism is a good thing; I didn’t mention it because it’s pretty common with most software these days. But it’s definitely appreciated that there’s an easy way to receive improvements and bugfixes :)

        

  3. With GM9 we will be moving pretty much to the model that you have suggested Lite, Standard and Studio will come from the same codebase (we are moving all the legacy code from Delphi).

    Most of the performance and bugs issues are being addressed while we make the move – we are consistently updating all the products, some faster than others.

    As to price, I do not set that but our business needs to recoup the investment and if you compare our tools against others out there we come out as way cheaper for comparable tools. We are committed to maintaining the Lite (Free) and Standard ($40) at those sort of prices (Free will stay free but Standard price may increase over time) going forward.

      

    1. I’m glad to hear that. It’s important to have healthy financials in order to fund continued development and innovation. Setting prices is a tricky science, and I’m glad to know that you’re committed to keeping the price of Standard low enough to avoid cost being a barrier to entry for new developers who are dipping their toe into game development for the first time.

        

  4. Thanks for the great write-up, I’ve been trying to decide if Game Maker HTML5 is worth it for me. This guide hits all of the key points in a cohesive and easy to understand way!

      

Leave a Reply