Category: development

DRM bug afflicts legitimate Game Maker Studio licensees

Game Maker Studio users should be advised of a potentially disasterous bug that can permanently disfigure their graphical resources.

I have (so far) been unaffected by this issue, and am unaware of what triggers it or who might be affected. From reading the story over at Gamemakerblog, it seems that it may have to do with Steam, but details are still unclear.

This is a good time to re-emphasize the importance of good backups. If you don’t have something to restore from, it’s sad, but you really only have yourself to blame for not having better backups.

GameMaker Studio even incorporates source control features that allow you to store your project resources in a Subversion repository. Anyone who uses subversion with their GameMaker projects should be pretty safe, as long as they have a version of their sprites checked in prior to the images being corrupted.

As well, it’s a good practice to maintain your graphics resources outside of your gamemaker projects. While useful, the built-in sprite editor is rudimentary, and many graphics artists prefer to work in a more robust professional quality tool, then import into GameMaker. If you work this way, you should still have your originals intact, and won’t be as badly affected by this problem.

I really hope that this incident will spur Yoyogames to look at its anti-piracy philosophy and find other controls that they can use to curb unlicensed use of the features that they reserve for paid licensees.

Cleveland Game Developers October Meetup

Last night was one of the more interesting Cleveland Game Developers meetups that I’ve been to in a while.

IGDA Ohio Chapter starting up?

We’re discussing becoming an International Game Developers Association chapter. Coincidentally, on my own initiative, I became a member myself just recently. I haven’t gotten very much use out of my membership so far, so I’m definitely welcoming of an official chapter starting up!

CGD member and Stark State College Computer Science and Video Game Development instructor Mike Geig, who is leading the initiative, says he is definitely working on starting this up, and the only question seems to be whether CGD would like to officially fold itself into this group, or remain an independent meetup group. Things are in the very early stages, so he’s still trying to figure out pretty much everything at this point.

Cleveland Game Devs Saturday Activity

This Saturday, October 20, CGD member Sam Marcus will be putting on a “thing” on random numbers. Sam always brings a potent blend of humor and math to his presentations, so I’m looking forward to learning more about randomness and how it can be used to good effect in games. I use randomized values quite a bit in my own projects, and I’m always finding new uses for them. I’m looking forward to learning some clever new stuff from Sam.

Exploding Rabbit

A new face showed up at our meeting and introduced himself as Jay from Exploding Rabbit, of Super Mario Bros. Crossover fame. He and his wife Iggy moved to Ohio from California recently, and have settled in the Cleveland area. I am glad to see more people who are working on serious projects coming to our meetings. It’s very cool to have people doing high quality work in the area.

Game Maker Wave Motion Tutorial

Following up on my motion and position tutorial, I present a tutorial on wave-motion. This was something I wanted to include in the original article, but I realized that there’s enough complexity to this concept that it merited its own separate article.

Wave Motion

Wavelike motion is any motion that involves periodic oscillation, not just linear undulating motion. (Other types of wavelike motion include pulsing and concentric ripples, for example.) But we’ll talk mostly if not exclusively about linear undulation, since it is easiest to understand, simplest to implement, and the basis for many others.

(more…)

GameMaker Studio support for Windows 8 is here

YoYoGames announced today that GameMaker Studio has just added support for Windows 8, and will allow publishing of games to the Windows Store. Moreover, this is not a module that you’ll need to pay extra for; it’s included with the Standard editionand up for free.

I’m presently still skeptical about Windows 8, and plan to be staying on 7 as long as possible, hopefully transitioning to Linux/Mac OS X when the time comes, but I’m always happy when YYG provides GameMaker devs with a means to make money.

It’s CRAZY how quickly these developments have been coming from YYG. They’re really in high gear lately.

Ludum Dare 24 Enhancement Postmortem

I spent the last month doing post-compo enhancements to my Ludum Dare 24 entry, Karyote, and I have to say, I am actually becoming pleased with the way my game has come together. I’m surprised, really, because for the longest time I felt that the game just wasn’t very good. (more…)

YoYoGames Announces GameMaker on Steam

This is some big news. YoYoGames is now distributing GameMaker Studio on Steam.

Apparently, this also will enable GameMaker developers who use Steam to release their games directly on Steam in the future. I have to look into this; I’ve been wanting to find a way to get games into the market for a while now. This might make it a whole lot easier

Update: It is possible to distribute games via Steam, through the Steam Workshop, but not for money. Sadface. :(

Come on, YoYoGames/Valve, let people who create content with your tools derive income from that content! It will incentivize content creation! It’s a bit strange to be selling a $500 professional software development suite to game developers and then make it more difficult than it needs to be to generate income with it.

GameMaker Position and Motion Tutorial

Motion is critical to just about any video game. Nearly every game has moving things in it, and how they move is a vital part of the game. Learning how to program motion and control it effectively is one of the most important parts of a successful game. There are a number of possible approaches to handling position and movement. Learning how these work will help you make better games.

This isn’t absolutely everything there is to know about motion, but it’s a great overview to start with, and covers everything I’ve learned with respect to motion in GameMaker Studio.  (more…)

GameMaker HTML5 – deeper impressions

For Ludum Dare 24, I worked on my project in Game Maker: Studio, and did most of my development work targeting HTMl5. I produced a Windows build as well as an HTML5 build, and have spent a lot of time enhancing the game since the compo deadline.

This has afforded me the opportunity to become much more familiar with GameMaker’s HTML5 shortcomings, so it seems like a good time to follow up on my initial impressions from the January beta. While most of the basic features are solid, there’s still a lot of bugs, unsupported features, and inconsistent implementations in the HTML5 runner. Unfortunately, it adds up to make the HTML5 module a bit lacking for serious game development.

Don’t get me wrong — it’s still very possible to make a decent, playable HTML5 game with GameMaker Studio. Just, if you’re hoping to be able to do absolutely everything in HTML5 as you can in Windows, you’re in for a long wait. While much of the framework runs equivalently, there are a lot of minor differences. And while these are minor details, producing a polished, professional game is all about minor details, and getting them right.

I still think there is a lot of promise for HTML5, but W3C, WHATWG, and the major browser developers have to pull together to solidify the technology standards. YYG can’t do some of the things with the HTML5 runner that they currently do in the Windows runner, without this happening. To their credit, they have been releasing updates rapidly, patching bugs almost weekly.

Unfortunately, this means that HTML5 games built in GameMaker Studio are not going to be as pretty or as polished as Flash can be, at least for the foreseeable future. Of course, Flash has many of its own problems: with the rise of the open HTML5 standards, Flash’s future is in doubt, and it seems to be in decline, so it’s not like it’s a great platform to pick up right now if you’re not already well versed in it. Unfortunately, the usurper isn’t quite ready yet. The W3C recently announced the HTML5 recommendation will be finalized in 2014, but even once that has been accomplished, it’s still up to the browser developers to support the standard consistently and completely — something they were never able to accomplish with HTML4. This points to HTML5 being a less solid platform than game developers might hope for.

Here’s some of the shortcomings I ran into while developing Karyote.

Color blending

The Game Maker HTML5 runner doesn’t support all the color blending modes that the Windows runner does. Color blending effects really make games look great when done well, so this is a huge disappointment graphically. I submitted a bug report for this and YYG closed it saying they can’t do anything to address it until the web standards catch up.

Surfaces

Surfaces kindof work in HTML5, but I have a major problem with my implementation in Karyote. Somehow, the game broke when I added a drawing surface, such that in normal run mode, most of the objects in the game don’t draw/don’t exist. I don’t have any understanding why, either.

It works fine in Windows, but in my HTML5 build it doesn’t work unless running in debug mode. The problem only exists when the game is not running in debug_mode, so debug mode is not helpful for me to trouble shoot with. In fact, the running version that I have up of the enhanced build currently is running in debug_mode, with the debug console hidden with CSS.

Creating sprites – no control over collision masks

This was my first game where I implemented procedurally generated sprites, and they work great in my Windows build, but not in HTML5. For some reason, when I create my sprite in HTML5, they don’t get a correct collision mask, and end up with a mask that is much too large, resulting in poor hit detection. It seems the collision mask is set to match the bounding box of the sprite, rather than the image. In the Windows build, the sprite automatically gets an accurate, precise collision mask.

There’s a gml function sprite_collision_mask() which is supposed to allow me to set the collision mask, but this doesn’t work in HTML5, either. In reading up on the issue, I learned this is a bug, and there’s presently a workaround available by using sprite_duplicate(), but this approach apparently can cause excess memory consumption and/or performance issues.

Drawing round objects are approximated

If I draw_circle() in gml, I don’t get a true circle. I get a polygon which has enough sides to reasonably approximate a circle, as long as the radius is sufficiently small. For even a moderately sized circle, you can see the flat edges and corners. Smooth, scalable vector graphics like you’d expect to see in an SVG or Flash animation don’t seem to be implemented yet.

Update: There’s a gml function, draw_set_circle_precision(), which can be used to set the number of sides in your circle-approximating polygon between 4 and 64. The more sides in your pseudo-circle, the slower they are drawn. This still isn’t a true circle, and will still have smoothness issues when scaled very large, but it’s better than nothing.

Conclusion

I still see much potential for HTML5 games, but until these issues have been fixed, it’s going to be hard for GM:Studio developers to equal the graphical quality of a good Flash developer. HTML5 is the heir apparent to replace Flash, but it’s still emerging and has yet to establish itself as a mature technology, and it will likely be a few years before this will happen.

Meanwhile, Flash is not the best game development platform, either, and it’s not the best web application platform, and while it’s under steady assault due to the mobile market spurning it, it’s still a more mature technology, and there are game development frameworks for it. While I can’t really recommend Flash to a new developer, if you’re a seasoned Flash developer you may want to stick with Flash for web browser games for a while longer yet, unless you really want to reach the mobile device market yet don’t want to do native development for some reason. But really, the answer for mobile devices is to do native development — the difference between a native Android or iOS game and what can be delivered through HTML5 is like night and day.

Or, if you’re really looking to make web browser games, you may want to take a look at some of the competing technologies, such as Construct, or Unity 3D, native HTML5, or something else.

GameMaker has some definite strengths, and is making steady strides, but the battle is far from over and there are other legitimate contenders in the market.

If you use GameMaker for other platforms, the HTML5 module is still worthwhile, but you’re not going to be able to do absolutely everything you want to be able to do with it. Buying it now still gives you a lot of capabilities, and if you haven’t yet, you’ll probably want to get started now in order to get familiar with them so that you’ll be ready to deliver robust, high quality games once the technology catches up. Waiting until the platform is perfect before jumping in is just not a good idea, as you want to have as much of a head start as you can get to sharpen your skills.

You’ll need to HTML5-ify a version of your project to work around some of the limitations of HTML5. Use your source control and fork a branch for your HMTL5 customizations and workarounds.

An HTML5 game has a lot of potential to be a good way to entice players to try your game, and may lead them to download your other builds, by providing a limited demo that runs right in their browser. And there are plenty of games that you can make right now that are “fully featured” as long as you don’t require the things that HTML5 isn’t capable of delivering right now. But if you want something with a lot of eye candy, the equal to what you can currently do on your Windows GameMaker projects, it’s just not there today.

GameMaker has a roadmap

A few months ago while I was submitting bug reports for the HTML5 beta, I’d asked one of the mantis bugtracker admins if there was a public roadmap for YoYoGames’ plans for the product. At the time, there wasn’t.

Now there is.

Currently, the document as is is very high level and doesn’t go into as much detail as I’d like, but it’s a start. It’s good to know that this exists now, where it didn’t a few months ago. Knowing what YYG has planned for the product is very useful for game developers who want features that don’t exist yet, and helps to foster conversation between them and the YYG developers who deliver those features.

Overall, I’m very pleased to see YYG being responsive and listening to their users. Over the last few months, I’ve been able to interact with prominent persons from YYG, through twitter and this blog, and I am very appreciative of this opportunity to interact with them, ask questions, and provide feedback.

Game Maker Studio 1.1 released

Yoyogames just released Game Maker Studio 1.1. It looks like there are a lot of positive new developments happening with the platform, and I’m really excited about a few of them. Lots of good new features!

New Pricing

YYG has changed the pricing structure again. The exiting news (for those who may have been reluctant to try Studio due to its higher cost) is that there is now a free edition, which gives beginners a way to get in to try things out. Unfortunately, Studio Free is more feature-restricted than the old Game Maker Lite. The 8.x line is still available for download and purchase, at the same prices as before, but the old version is a bit further deprecated now, lacking prominent position on the YYG homepage.

The new Standard Edition is still just $49, no different than Game Maker 8.x Standard. Professional remains at $99, with the same price for the additional modules that you can buy separately. Or, if you want everything all at once, you have the option of spending $499 for Master Edition, which saves you $99 over the cost of Professional + all the additional modules.

I haven’t heard whether they’re planning to allow early adopters of Professional to move to Master Edition at a discounted price yet, but even if they don’t it’s nice to see the price coming down.

Another nice freebie is that Professional allows you to test Android apps, even if you don’t have the license for the Android module. I’m particularly looking forward to finally getting into mobile development. I had not yet spend the money on the mobile app modules, so the free testing on Android is a great thing for me to get my start on Android.

Target platforms

Gone from the site is any mention of a Symbian module. I’m assuming that since even Nokia is giving up Symbian OS and has gotten in bed for better or worse with Microsoft’s Windows Phone 7, we may in time see a module to allow Windows Phone as a build target. [Update: on 9/20/2012 YoYoGames announced that Game Maker Studio will target Windows 8 and Windows Phone 8 platforms.]

I’d like to voice a desire for a linux build target module. Since Android and OS X are both based on unix, I’d hope that extending support to Linux would be feasible.

Developer Features

The new audio engine and room designer are welcome, and I’m interested to see what they offer. One of the audio limitations in Game Maker that I’ve wished to overcome is generating sounds procedurally. I see a lot of potential in musical games where the game objects can generate different tones and pitches depending on what’s going on in the game. Whether the new audio engine allows this or not remains to be seen — I haven’t had time to play with it yet.

The room editor improvements are always good to see, as well. I’d like to see YYG continue to develop the editor into a more usable level editor, with faster UI access to the different objects and tiles, so that building rooms becomes less tedious.

I’d also really like to see them provide some built-in room templates for “boilerplate” things such as the title screen, configuration screen, achievements and high scores, load/save screens, etc.

The really exciting new feature is the Developer’s Portal, with its analytics and monetization features. This will make it far easier for independent game developers to realize a return on their investment in the more expensive Professional license, and hopefully will help quell criticism of the higher pricing. Reducing the effort needed to make money with Game Maker is huge. I’m really looking forward to delving into these features and learning all about them.

What else could I wish for?

Anytime a new version gets released, I think about features I’d like to see. My current list:

  1. An interactive GML console. It’d be great to be able to write a line (or block, or function) of GML code and execute it in a console just so you can confirm that it does what you’re expecting quickly, without having to build and run a project. The instant feedback would speed up my development.
  2. Drag n Drop to GML converter built in to IDE.  Drag and Drop actions are the way newbies learn Game Maker. I also use them when I’m trying to throw something together quickly for a proof of concept, because it’s handy. How handy would it be to right-click on my Event and select a “Convert DnD to GML” command, and have it automatically convert those Drag and Drop actions into a single Execute GML Code action?
  3. Linux built target. I’d really like to see my Game Maker projects running on native linux someday.
  4. A cross-platform Game Maker IDE. YYG has announced that they’re working on the Mac version of the IDE. I’d like to see a Linux version at some point, too.
  5. A robust GML pause() function to allow for easy, painless implementation of pause. Or a family of functions that give a variety of approaches to pausing your game. Or maybe even a Pause event, so you can easily define what your objects do when the game is paused (I envision telling objects to stop their collision event handlers, but continue their drawing/sprite animation, stop making sounds but make the background music volume reduce, dimming the whole screen while displaying a pause message or pause menu.) Hmm…
  6. Room templates (mentioned above) to make all the typical non-game screens (title screen, configuration screen, highscore/achievements screen, etc.) easier and faster to configure.
  7. User Control Widgets — a set of skinnable, extendible UI widgets to make it easy to make buttons, text boxes, pulldown menus, listboxes and all the other controls that make up a UI. Just wrap up Qt or GTK+ and be done with it:)
  8. Expanded Object classes. Generic do-everything Objects are great for their flexibility, but it gets tedious re-implementing the same types of objects again and again. Developing generic solutions that you can import into your projects as needed takes time and, while a good way to really learn programming and the Game Maker framework, is hard to get right. It’d be really great if there were some common subclasses of Object built right in to Game Maker, for things like platforms, pickup items, particle systems, object spawners, bullets, and so on, to make game development even faster than it already is.
  9. HTML5 integration with popular CMS platforms such as WordPress, Drupal, Ruby on Rails, etc. I’d like to be able to present an HTML5 within a wordpress page or article without the need for iframes, and to store the project as assets in my wordpress media library somehow. And possibly other things.
  10. Better Drag and Drop hover text. If you use DnD actions in your events, you’ll know that when you hover over the action, a tool tip will appear telling you what it is doing. There’s room for improvement here, in principle it should be possible to word the tooltip text in such a way that it isn’t necessary to open up the action to see what it does — only to edit. I’ll have to remember to post an example later to make this clearer.
  11. Non-modal edit windows on Execute GML Code actions. It’s a pain not to be able to switch window focus when editing a Execute GML Code action. Script windows are not modal, you can freely switch between them and have more than one open at a time, so these should be the same way.
  12. A pony. Everyone wants a pony.