Glaciators “Post-Mortem” And A Look To The Future

It’s been over a month since we released Glaciators just in time to quality for January’s One Game a Month. It was a crazy rush to get it out the door after the idea came up at PEGJam 4, one of my favourite annual jams to attend.

The concept was born during the twenty-two hour road trip from Toronto to Winnipeg. Michael Todd (of Michael Todd Games) and I were discussing ideas for the jam. He described to me a game with no friction, where you had four arrows. What he was trying to describe was an Asteroids clone. I completely misunderstood and thought the game sounded incredible as an icy-arena deathmatch. After clarifying that I had an entirely different game in mind, Glaciators was kicked in motion.

Starting with the code name Icerena there were numerous discussions on whether or not a game featuring people primarily in parkas with harpoons would be considered racially charged. Ultimately it was decided that Ice Climbers was seen as just as a cute game, and there was no reason to worry about it too much. Particularly when you’re developing in the dead of winter during a snowstorm in -30°C weather in Winnipeg, everybody is wearing parkas anyway because absolutely nothing else will keep you warm. (Note: some local Winnipeggers can tolerate temperatures as low as -50°C with nothing but body hair. Do not attempt this at home.)

 

Blood on the ice

Blood on the ice

Enough of that. Let’s talk a bit of tech. Glaciators was created entirely in ActionScript 3 using the Flex SDK to compile to AIR. From the very beginning, the controls integrated my MacJoystickANE which permits the native input of gamepads and more importantly analog joysticks. The controls are a bit like traditional hockey games in that you push in the direction you wish to go, but skating momentum will force you to take a wide turn on the ice if you have some speed already.

Harpoon (technically javelin) throwing is very simple, it will always launch in the direction you are facing and you can press and hold the throw button to “charge” up a shot to throw it further. Being hit by a javelin is instant death. You start with only four of them, so if you waste all of them, you’ll need to collect more from corpses and the ground which can be a deadly errand in itself.

The gameplay ended up being very tight and crowds quickly started to gather around which you can see in this great Super Gamer Podcast for PEGJam 2013. Several times it was necessary to kindly ask people to stop playing so I could add a new feature. This was easily one of the best games I had ever made and I was extremely excited about the clean, competitive, addictive gameplay. Alec Holowka of Infinite Ammo, PEGJam organizer and Indie Game Musician Extraordinaire whipped together a jaunty soundtrack that fit the mood perfectly. Things could not have gone better.

Unfortunately, the sales of the game since its “commercial” launch have been icy at best (ha, ha.) Two weeks is not a lot of polish time, but I had hoped that the one dollar price point would be enough to convince folks to give it a shot. To date there have been literally 20 sales total – after PayPal’s cut, that’s $14 or so. Less if you consider that I will need to convert from USD to CAD.

Still, this has been an amazing learning experience – and I’m certainly not finished with the game yet. I’ve been hard at work on a Level Editor and a revamped physics engine for Glaciators which I plan to release in the near future. The game is too good to give up on. Glaciators v1.1 will be launched with a few extra arenas, some powerups and the new physics. I’d also love to redo the art, as I’m clearly not an amazing artist and the colors look intensely bad on Windows. Hopefully it can gain a little more traction then.

Until next time, keep your javelin off the ice.

Posted in Announcements, Technical | Tagged , , , , | Comments Off

Mac Joystick Input in AIR

using Adobe Native Extensions

When super cool dude Kyle Pulver asked around for help getting native joystick input for his super cool baby throwing game Offspring Fling, I figured it would be a great opportunity to improve my Flash chops a bit and maybe even get a ‘world first’ in the Mac AIR apps scene. (Okay, not really, but it sounded like a fun challenge!)

MacJoyANE is the result of a week of sweat, code and tears. The project consists of three main parts:

  • An XCode Project – builds a Cocoa .framework library
  • Flash Builder Project – builds an ActionScript .swc library
  • Build shell script – Takes the two library and compiles the final .ane (Air Native Extension)
  • This project links directly into the IOHIDManager for MacOS X and so far no issues have arisen, but it’s early days yet. It’s open source and I’m happy to take contributions.

    MacJoystickANE Project on GitHub

    Posted in Announcements, Technical | Tagged , | Comments Off

    Flash, HTML5, WebGL and Unity

    I’m a bit late to the party here, but the internet has been buzzing a lot lately with the ‘news’ that Adobe has killed Flash. Well, not quite.

    First off let’s put this into perspective. They’ve killed Flash Mobile, more specifically the plug-in that comes with mobile phones in their browser. Does this mean Flash on mobile and tablet platforms is completely dead and gone? No, in fact the majority of Flash experiences on mobile and desktop will likely move to AIR.

    Can AIR3 save Flash?

    Android phones can still use AIR, as will the RIM Playbook (ha ha.) iOS apps built with Flash are built in a different way, essentially having a version of AIR compiled into them – and iOS never permitted in-browser Flash – so it’s completely irrelevant to that platform anyway.

    Matter of fact I would say this announcement is a good thing. First of all, Android and Playbook will still get Flash Player 11, which is way advanced for a browser plug-in for your phone. Still I think the Flash pipeline is starting to breach into some really cool territory, with fully fledged 3D hardware acceleration and the ability to finally produce fully native apps (see Captive AIR Runtimes and other AIR3 features.)

    At least for the immediate future, AIR3 is a great step forward for game devs in Flash because it gives them a way to get their awesome experiences out to the world with minimal fuss.

    Still, stigma is a big thing on the web. HTML5 is the future, primarily because the number is higher than HTML4. It has exciting things available like Canvas and WebGL which mean Flash will soon be redundant. Well. Someday.

    HTML - The Future.. sort of

    See, we’re not quite there yet. For games, HTML5 relies heavily on WebGL to deliver good performance. The Canvas element (while cool) isn’t really up to speed in the performance arena. You can also resort to moving images around the screen with JavaScript and CSS, which is kind of a nasty hack in my opinion. But WebGL can do some really cool stuff!

    WebGL Demo

    Awesome WebGL Water FX

    Hopefully you can see that properly, it’s a really cool rippling water demo in WebGL (see preview image at right.) If you can’t – well – WebGL isn’t available to everyone for a few reasons. One would be that not all platforms and browsers support it. On one particularly important platform, it’s proprietary and only available to advertisers. Actually one other browser manufacturer that makes up fully 40% of the browsing world has no plans whatsoever to support it.

    There’s a number of other issues – incomplete HTML5 implementations aside, we’re plagued with other problems like people who don’t or can’t upgrade their browserperformance and inconsistent behaviour (see above.) But we’re getting there. Still, it’s hard to understand why we’re accepting these drawbacks now when we have a plug-in (Flash) that all but eliminates these problems.

    OK. So the word “Flash” isn’t sexy anymore in the tech world, especially not in the web world. More and more we’re seeing developers jump ship before the spectre of Steve Jobs crushes Flash for good. Personally I feel the jump to another platform is premature – especially HTML5 – but it seems to be raising awareness of another not-so-new contender in the web games arena, Unity.

    Unity 3D - Powerful, Easy, Awesome.

    Briefly stated Unity has some advantages over WebGL for game development that may allow it to really shine right now. For one, it performs consistently and quickly across all platforms. You’re not restricted to the browser – you can publish native apps for just about any platform, including all the popular consoles. It is a game engine and editor first – not simply a graphics library – so it can really help companies and developers play with ideas and publish something quickly. It does 2D handily as well as 3D, so it’s worth anyone’s time really.

    There’s a couple caveats to this post I’ve written. Probably the biggest one is that yes, HTML5 really is the future. For web browsing. That’s important – just as important as it was to move on from frame-based websites and table layouts to HTML4. It’s a good thing we’re moving on. It really is. There are also tools emerging which will make game creation for HTML5 less painful – Stencyl (not yet but soon,) Construct, GameSalad and others are all great programs to keep your eye on if you’re someone curious about game development and the fantastic new world of compliant browsers. Flash is also really good if you’re exporting native apps – nobody has to know that you bundled AIR in there and you can certainly make excellent experiences with it. Plus Flash already has some support for HTML5 and you can expect them to build upon that in the future. The bottom line is that Flash has a great pipeline for animation into code and you can still make incredible experiences with it. If you’re concerned about what is industry sexy though, it may pay to learn a new trick or two!

    Posted in Industry News, Technical | Tagged , , , , , | Comments Off

    Separating Axis Theorem

    The Separating Axis Theorem (SAT) is a staple of pretty much any physics engine in video games these days. Unfortunately so many sites breeze over it with a poor explanation and bunch of ambiguous code.

    This morning I set out to write up my own collision detection for convex polygons rather than relying on others’ premade packages. I think everyone has read the amazing metanet tutorial on collision detection, but if you’re looking for something a little clearer or just written in a different style this blog might help you out. Anyway, mission accomplished – I have a perfectly functioning OBB collision detector set up now for use in Eternity.

    Posted in Technical | Tagged , , , | Comments Off