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…)

Seidio 3800mah extended battery: suddenly it’s like I have a phone

Since I got my Android phone in May, I figure it’s a good time now to revisit my earlier review.

After six months of having my phone, I established a routine I’ll call the Battery Anxiety Lifestyle. I would drive to work, about a 40-minute drive, and between unplugging from my charger when I woke up and getting to work, I’d have already lost anywhere from 5-10% of my charge. By noon, I was down to about 70%, and by the time I got done with lunch, I was at 50% and entering “power saving mode”. I’d plug in to re-charge and by mid afternoon I’d be back up to 100%, and have enough battery to get me through an evening of being not umbilicaled to a wall socket. And, well, as long as I got home by around midnight or so, I’d be down to around 20-50% depending on how much I used the handset in the evening.

Plainly, the Samsung Galaxy S2 is geared toward a sedentary lifestyle, where you’re never inconvenienced by having to sit tight by a wall outlet for a couple hours. At least, that’s how it works if you actually use your phone.

I got sick of that, and last week I broke down and bought a $60 extended battery from Amazon. It’s a Seidio 3800mah and today was my first day with it in, and I feel liberated. I didn’t have to charge in the middle of the afternoon, and I’m still above 50% charge at 8:30pm. I really have to wonder why this isn’t the way it is for everyone, why you have to spend another $60 to get a special battery to have a phone that you can actually use.

The biggest problem with this bigger battery is that it requires a bulging back plate. Now, I don’t mind the added mass or bulk at all, but no one seems to make any kind of protective armor case that will fit the handset with the extended battery in place. So I have to adjust to transitioning from Battery Anxiety to Drop Paranoia. To try to protect the handset a little, I bought a soft, silicone rubber case for around $3, and cut out the back of it so the bulkier backplate protrudes outward. It basically gives me a bumper around the edge of the phone, which I hope will be adequate protection in the event I drop it on a hard surface.

I really don’t like this solution, for a number of reasons: One, the cutting job I did looks like a sixth grader’s shop project. Two, I don’t think it fits or protects as well as before I cut it. Three, it covers the side buttons for power and volume. You can feel them through the case, and press them still, but it feels a lot less precise. Still, I consider the battery capacity to be essential, and so I’ll have to live with it. I’m usually very careful and protective of my handset and don’t drop it very often, so hopefully it’ll hold up.

Before I switched to the bulkier battery, I was using a hard Body Glove case that I liked a lot. This chopped soft silicone boot is passable, but inferior. I really want there to be armored cases designed for extended battery covers! No one seems to make them, and they should. Really, the extended battery should be mandatory, and ruggedized phones should be mandatory as well. I don’t understand how people can get by with a dinky battery and an unprotected handset. There’s a ton of accessories out there for the Galaxy SII, yet no one makes an armored protective case for an SII using an extended battery. There should be. Most people with an extended battery would buy one, and their existence would probably boost sales of the batteries.

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.

Site Update: Wider is Better

I’ve widened the wordpress theme for the site a bit more. This should allow for larger images, videos, and games. Unfortunately at the moment I think it’s made the text a bit harder to read than the narrower-width column was. I’m not entirely sure what to do about that at the moment. I’m interested in your feedback, obviously, so if this is too wide for your screen, or you don’t like it for some other reason, be sure to leave a comment and let me know.

Site update: Now using Google Translate

I’ve added a new feature to the site today, Google Translate’s website translator. This will enable you to tranlate the site automatically into over 60 languages.

Hopefully this will help readers who are more comfortable reading in another language to make use of the information I provide here. I have no idea how well the translator works, but I hope it does a good enough job to convey the understanding.

Keep in mind if you write a comment, I only speak English. If you post a comment in another language, I will try to translate it using the service, and will reply in English, which you will need to translate in order to read.