Thursday, 18 October 2012

Create a Simple Asteroids Game Using Component-Based Entities


I recently wrote a tutorial for GameDevTuts+ where I show how to set up an entity composition system in ActionScript3 and use it to create a simple asteroids-style game. If that gets you excited, go read it!

Part 1: Avoiding the Blob Antipattern: A Pragmatic Approach to Entity Composition

Part 2: Create a Simple Asteroids Game Using Component-Based Entities

Full source on Github

Tuesday, 18 September 2012

Dungeon of Math - an Adventure Time game we made in 48 hours


Me and Amanda made this game over the weekend for the Fantastic Arcade Game Making Frenzy Adventure Time Game Jam (wow, that's a mouthful!). Enjoy: http://www.adventuretimegamejam.com/submissions/69-dungeon-of-math

Friday, 22 June 2012

Mochi London 2012 - Come meet me!

I spoke at Mochi London last year, and I'm pleased to say I'll be back this year with a brand new talk (all about the making of Super Gun Kids). The main conference is on Saturday 15th September 2012 at King's College London, which is a great space, and it's completely FREE! Come meet the UK Flash game developer community!

http://mochilondon2012-estw.eventbrite.com/

Thursday, 31 May 2012

Super Gun Kids: Progress Report



About two years ago, I decided that I want to gradually transition from being a freelance Flash dev to being an indie games dev – a full time one, if possible. I can now assure you, friends,  it’s not as easy as it looks! After a couple of false starts, I’m finally working full time on my own game, with a pretty healthy timescale and high spirits. But jeez Louise, it’s scary. Seriously, it take takes stones of steel! Here’s my progress...

Firstly, where’s Alice?


I spent a big chunk of November and December working on a prototype for Alice: Beyond The Looking Glass, which is a linear puzzle-platformer adventure. I came up with some cool stuff technologically, developing a 2D bones animation system, and getting Flash to do 1080p resolution at 30fps without hardware acceleration, which wasn’t easy. But as Xmas approached, I started to have doubts about the project. I think the theme, setting and gameplay were totally wrong for the Flash portals I was developing for. Despite my best efforts, without hardware acceleration I could never quite get the visual smoothness and impact I was going for. And even though I love Amanda’s character designs, I started to have doubts about the monochrome visual style we were doing. I lost my mojo, man. Fudge!



I put Alice on ice, and took a freelance contract in London, returning with my mojo restored (and some money). So I came back to do Super Gun Kids, the platform-shooter-RPG I’ve had planned since finishing Owl Spin, when I vowed to give all future games MOAR GUNS. Alice isn’t dead – Amanda is going to rethink the visual style and I’m going to move the code over to HaxeNME so I can get the smooth HD visuals I was aiming for, and make it a cross-platform downloadable game. But anyway, that’s the future (hopefully not too distant) – the present is all about kids with guns. I was able to merge most of the engine development work I did on Alice into SGK, so it wasn’t totally wasted effort, thank Zeus. I’ve still only spent less than 3 months on Super Gun Kids, which in indie game terms is the blink of an eye (games like Fez and Braid had incubation/dev periods spanning many years, not that I’m comparing my little Flash game to those juggernauts). But still, staying motivated for many months, working on your own, is challenging. That’s why I made this Spotify playlist of motivational 80s movie montage music! Glob knows how people keep motivated for multiple years on one game. Knowing you have funding must help a lot. I’d recommend you have 6 months to 1 year’s living/business expenses saved before embarking on a full time indie project. I didn’t, but you should!

Animation


My bones animation system parses MovieClip timelines and stores the position and rotation of each body part in an array. I can then play this animation back at different speeds, and even merge multiple animations. This way I can have a single skeleton for each character that can be styled in any way and perform any action animation. Unlike most of the game, this feature is finished and it works. Anatomical!



Styling


A big part of the SGK gameplay is levelling, upgrading and customising your character, so I’ve put a lot of work into the inventory system. Player characters have a base naked body with a choice of boy/girl, five different skin tones and loads of different faces. On top of this sit their clothes and weapons. This also makes it very easy to make humanoid enemies, so expect a lot of them. So far I have zombies working, and they’re quite amusing.





2 Player


Super Gun Kids will be fully playable in 2 player local co-op mode. As far as possible I’ve tried to make it so that the two players are equal in how the game treats them, but I've had to make a couple of compromises. The main issue is that I've had to address is what to do if the players walk away from each other so that they end up of opposite sides of the screen/level. To allow some freedom to do this, I zoom the camera out, but I can’t keep zooming out til the characters look like ants, so when the players reach a certain distance apart, I have to teleport player 2 back to the position of player 1. It works pretty well, and for fairness you can swap which player is “player 1” at any time. Easy as childbirth. As full-screen mode doesn't support the full keyboard in the version of Flash I’m using, you won’t be able to play full-screen co-op in the browser. I know this sucks massively, and I’m probably going to do some kind of downloadable version (with AIR) in the future where this feature works. I need to make sure when I negotiate with sponsors that I leave this avenue open. I wouldn’t expect to make any real money from it, but it would be nice to know that  a “definitive” version of the game exists somewhere. The same goes for joypad support.


Pathfinding


Many platform games have really dumb enemies that can’t do much more than stand in one place shooting, or patrol left and right. Sometimes you want this, but sometimes it would be cool to have enemies that can chase you, no matter where you go. Par exemple, SGK has ninjas. Do you think a ninja is going to walk back and forth while you bound overhead across platforms? No, she’s going to race right up those platforms and slit your throat! By defining a web of nodes and connections in the level editor (I’m just using Flash CS5 as the level editor), enemies in SGK can have a good understanding of the terrain. Combined with AStar pathfinding, they know how to get from any point in the level to anywhere else, or they can freely wander the level, looking for targets (you). I’ve also implemented traditional patrol routes, so I think I’ve covered all the bases. Zing!


Weapons


I’m most of the way there with the weapons system now. I’m aiming to have about 30 weapons, I wasn’t sure at first whether to go with the Super Crate Box idea, that each weapon is like a unique character, or the more standard RPG approach of dozens of weapons each just slightly different. In the end it’s probably somewhere in-between. I have the first 15 or so weapons finished and balanced pretty well against zombies. It was useful to think about weapons in terms of how many shots it would take to down a zombie. So if I want the double-barrel shotgun to kill in 1 shot, then working backwards a normal shotgun can be 2 shots, the magnum in 3 shots, normal pistol in 4 shots, and baseball bat in 5. That feels about right. To keep the ammo system manageable, I’m trying to stick to 5 basic types: bullets, shotgun shells, explosives, gasoline and batteries. Explosives will power all the things that go boom including mines, rockets and grenades. Batteries are for the energy weapons. Gas is for the chainsaw and flamethrower. Bullets and shells should be obvious. I also have the shop basically finished now. After lots of deliberation, I decided in the end that you can sell weapons without penalty. I think this will encourage experimentation with different weapon combos, and hopefully keep the lower-powered weapons in rotation for a bit longer. Enemies’ random loot drops can include any of the ammo types, so I’m hoping the best strategy will be to keep at least one weapon for each type, rather than just using your favourite weapon through the whole game.


Sound


I’ve sourced all the music for the game and I’m really happy with it. For future games I’d like to work with a composer to get an original score, but for this game I’m happy with what I have lined up. I have songs! I’ve rewritten my sound player class to make it more usable, and I’m going to open source it (in fact if you can’t wait, here it is) because I hate the stupid hoops AS3 makes you jump through just to play sounds and set their volume. Sourcing sound effects is a really laborious process, involving trawling literally thousands of sounds on SoundRangers.com and xxxxxx, but I’m hoping to get a chunk of it done this week.

Violence


Something I’ve had to think a lot about is the level of violence in the game. Even though it’s a game about guns, my inner-Nintendo wants to keep the violence cartoonish and minimal. Crazy, huh!? Anyways, I found that I need to have a few impact splats to “sell” the effect of getting shot, but as a compromise, I’ve made it pink rather than red, so it’s “life force” rather than blood.

Level design


I must admit, I don’t have a lot of this done yet, other than a couple of ideas on trusty graph paper, but I can reveal the game has 3 locations to explore – city, haunted house and factory. Standard tropes all the way for this game! What did you expect, originality? Amanda is doing the background parallax layers for each level, which should look ace. To be honest, level design is the bit I’m least comfortable with, but I’m hoping by the end of this project I’ll have learned to love it.


Logo and box art

Thanks to Amanda, SGK now has a great logo and wicked “box art” which will also be the intro to the game. Amanda has also designed the map screen, which I was originally going to do with vectors, but looks so much better with her digital painting jazz.

It’s all fun and games until I run out of money

So that’s Super Gun Kids for now. I’m busting my bones to try and get the game finished before we run out of money to live on. Frugality is one of the greatest virtues of an independent developer. We’ve swapped driving and shopping at Sainsbury’s for riding our bikes and shopping at Aldi, and already massively reduced our overheads. I hope to launch the game across Flash portals at some point in the summer. If it’s a success I’ll no doubt return for endless sequels. If it’s a failure, well I tried my best and I’ll just come back with something else (whilst weeping into my pillow). This project has made me find out a lot about myself and the kind of games I want to make, and I’ve really come to realise that performance of the software renderer in Flash is really out of scale with the things I want to do. I’d love to follow up Super Gun Kids with a HaxeNME or Stage3D driven sequel, but another important indie lesson: do one project at a time... and finish it!

Bye now!

Iain

Thursday, 23 February 2012

Help me make this Canvas benchmark faster

I'm doing another round of benchmarks at the moment. This new one is called PirateMark. It tests how many big rotating sprites can run on a particular engine/platform at 960x720 resolution, at 60fps. So far it's not looking very promising for HTML5 canvas - I can't get 60fps even with just 1 sprite, and at 30fps I can only get 10 sprites going. But as you may know, I'm not really a canvas/javascript expert, so maybe you can help. JavaScripters - I am laying down the gauntlet! Make this faster! Please leave suggestions and links to your own version in the comments. Because there's no native sprites with rotation in canvas, the code uses a light framework I wrote at Seb's creative JS course. It may be that I'm doing it hopelessly wrong.

Tuesday, 21 February 2012

Celebrating 20 Episodes of The Creative Coding Podcast



Last January, me and Seb Lee-Delisle had an idea to record our Skype chats, and launched The Creative Coding Podcast. Here we are just over a year later, and we've got 20 episodes! We've had an amazing year, been nominated for a .net magazine award for best podcast, had 18 world-class guests and been downloaded almost 200,000 times! Please enjoy the latest episode or have a browse through the archives for something that takes your fancy.

Episode 1 – Web games, HTML5 and Jangaroo
Episode 2 – Mobile Devices Special
Episode 3 – Molehill and Processing with Jer Thorp
Episode 4 – Flash Special (plus WebGL and Unity3D)
Episode 5 – Game Design and Conference Etiquette with Ryan Henson Creighton
Episode 6 – openFrameworks, Adobe CS5.5 and multi-touch gaming
Episode 7 – openFrameworks and Open Source with Pete Hellicar and Joel Gethin Lewis
Episode 8 – Rome, Chrome and Angry Birds
Episode 9 – Processing and Cinder with Robert Hodgin (Flight404)
Episode 10 – Teaching Game Development, Stencyl and New York
Episode 11 – Eyeo Festival with Golan Levin and Ben Fry
Episode 12 – Art from code with Casey Reas and Marius Watz
Episode 13 – JavaScript, Corona and Seb’s jumbotron
Episode 14 – Live from Flash on the Beach! With Lee Brimelow, John Davey and Keith Peters
Episode 15 – Unity3D with Aras Pranckevičius
Episode 16 – Flashageddon with Stacey Mulcahy
Episode 17 – coding a platform game, haXe NME and Big Spaceship’s Joshua Hirsh
Episode 18 – How to teach programming, with Daniel Shiffman
Episode 19 – Trolling, jQuery and Open Frameworks with Joshua Noble
Episode 20 – CSS Special with Val Head

Monday, 13 February 2012

I'm speaking at Flash Gaming Summit in San Francisco



If you're in San Francisco on March 4th 2012 for GDC (or any other reason) you can come along to Flash Gaming Summit and hear a brand new talk from me called "Two Dimensions of Awesome", where I'll be presenting the research and development work I've been doing for Super Gun Kids and Alice: Beyond the Looking Glass. Drop me a tweet if you want to grab a coffee!

Here's the sessions description:


Two Dimensions of Awesome - Advanced ActionScript for Platform Games

Stunning console games Limbo and Rayman Origins have shown a glimpse of what is possible in two dimensions. It is my goal to take 2D Flash games beyond the retro pixelated aesthetics of Flixel and create rich immersive worlds closer to the state of the art found on games consoles. In this session I will present my research into advanced 2D game development, including: •Collision detection beyond tile-based maps - irregular shaped terrain. •Using Flash Professional as an advanced level editor. •Moving from sprite sheet animations to dynamic bones animation. •Managing screens, input and audio with better APIs. •Tweaking game variables at runtime. •Creating an immersive 2D camera with parallax scrolling. •Striving for 60fps with Starling and haXe NME.