Warning: Declaration of thesis_comment::start_lvl(&$output, $depth, $args) should be compatible with Walker::start_lvl(&$output, $depth = 0, $args = Array) in /nfs/c03/h08/mnt/50298/domains/gamedev.michaeljameswilliams.com/html/wp-content/themes/thesis_18/lib/classes/comments.php on line 0

Warning: Declaration of thesis_comment::end_lvl(&$output, $depth, $args) should be compatible with Walker::end_lvl(&$output, $depth = 0, $args = Array) in /nfs/c03/h08/mnt/50298/domains/gamedev.michaeljameswilliams.com/html/wp-content/themes/thesis_18/lib/classes/comments.php on line 0

Warning: Declaration of thesis_comment::start_el(&$output, $comment, $depth, $args) should be compatible with Walker::start_el(&$output, $object, $depth = 0, $args = Array, $current_object_id = 0) in /nfs/c03/h08/mnt/50298/domains/gamedev.michaeljameswilliams.com/html/wp-content/themes/thesis_18/lib/classes/comments.php on line 0

Warning: Declaration of thesis_comment::end_el(&$output, $comment, $depth, $args) should be compatible with Walker::end_el(&$output, $object, $depth = 0, $args = Array) in /nfs/c03/h08/mnt/50298/domains/gamedev.michaeljameswilliams.com/html/wp-content/themes/thesis_18/lib/classes/comments.php on line 0
About โ€” Michael James Williams



I want to help people learn how to make better games. Right now, the best way I can do that is to provide a kick-start in topics I already understand: maths, physics, programming.

I’m focusing on Flash games, using ActionScript 3 (AS3) in particular.

My biggest feature at the minute is this 12-part Avoider Game Tutorial. It teaches you how to make a full game with Flash CS3 or CS4, even if you’ve never used Flash, or done any programming ever before. Following this, I’ve been writing a number of follow-up posts on how to improve your game even more; check them out using the Avoider Game Extras tag.

Once you’ve finished that, or if you already know the basics, you might be interested in some of my standalone posts. These are my favourites:

Extends, Override and Super — these three keywords form the basics of Object Oriented Programming in AS3. Find out how to use them here.

Seven Common Flash Game Complaints (and How to Avoid Them) — when you ask for feedback on your game, there are seven comments that keep coming up over and over again. Learn how to fix them first.

Simplify Flow Between Game Screens with the “Scene System” — based on a great article by RiverMan Media, this explains how to structure your game to make it easy to switch between splash screen, menu screen, play screen, and so on.

Any questions? You can contact me either through commenting on any post that allows it (including this one), via Twitter, or by using my Contact page.

If you’re sending me some Flash files to take a look at, and you’re using Flash CS4, please make sure that any FLAs are saved in CS3 format (you can do this in *File > Save As*) — otherwise, I won’t be able to open them!

I’m also pretty active on Flash Game License. My username on there is MichaelJWilliams — feel free to send me a PM.

Finally, if you want to keep up to date with what I’m writing, you can do so via RSS, or a free email subscription. See this page for more details. Although, to be fair, I very rarely write about Flash or game development these days; I’m now a data analyst, and I write about that on my data analysis blog.

{ 24 comments… read them below or add one }

StelmackStudios September 18, 2008 at 9:03 pm

Hey. I want to know MORE!!!! How much do you weigh lol. How much do your cats weigh? How much combined? How much just the cats combined? What are there names? How tall are htey and of what breed? See lol I could think of a million things!!!

MichaelJWilliams September 18, 2008 at 10:27 pm

I would like to thank you personally for taking such an unhealthy interest in my life ๐Ÿ™‚

Mushyrulez March 2, 2009 at 4:06 am

…Very unhealthy ๐Ÿ˜›

Kronosfere March 26, 2009 at 3:51 am

Hmm. Do you have any other programming language you are proficient in besides actionscript?

MichaelJWilliams March 26, 2009 at 11:46 am

A year ago I would have said ASP, C#, and FORTRAN… but I’ve been focusing almost exclusively on AS3 for such a long time I’m not so sure that’s true any more.

What about yourself, aside from AS3 and C++?

Kronosfere March 27, 2009 at 2:48 am

I wouldn’t say I’m proficient at AS3 yet. The course I’m currently in just barely brushes through HTML and Javascript. So… I guess that makes it just C++.

jay May 7, 2009 at 8:46 am

Im new with Flash and trying to learn AC3. This Avoid Game tutorial is the best tutorial I ever done! Michaels way to mix up well written description with own error and editing is awsome! Its much more easier to understand and very useful! I will follow this blog from now.

6/5 stars

//Jay from Sweden

MichaelJWilliams May 7, 2009 at 12:10 pm

Thanks so much, Jay! I’m glad you found it useful ๐Ÿ™‚

Graham (Tsolron) June 1, 2009 at 6:38 am

Your tutorials are great, but I was wondering if you could make a Platform / Physics tutorial.

I’m only partially through the AvoiderGame tutorial, so I don’t have a lot of knowledge about AS3 yet, but I think I’d like to create platform games more.

I did find several platform tutorials online, but they just say something like “add this code to your game here. It allows your character to move left and right”.
They don’t actually explain each part of the code, and it doesn’t teach you much.

Graham (Tsolron) June 1, 2009 at 6:46 am

To add on to what I said before, also on various tutorials I found, they have you add the actionscript in the keyframes, rather than into .as files.
I understand why you say that it’s better to use the .as files so if you do ever write a tutorial for platform games, I’d like it to be done in that style.

Michael Williams June 1, 2009 at 3:25 pm

Hey Graham

I would love to write a platformer tutorial, and came very close to starting one actually. The trouble is, there is a huge amount of stuff you need to know to write a platformer.

For example, there’s a fair amount of physics (as you mentioned), like gravity and friction (for the obligatory ice level) and so on. You also need to know how to break the laws of physics in some cases — like how Sonic can change his direction in mid-air.

Then there’s the case of physics simulation: issues like decent collision detection and accurate tick-timers.

On top of that, you’ve got to think about level design, artwork, enemy AI, boss battles… the list goes on.

Much of the physics and simulation could be taken care of simply by using a physics engine like Box2D (which is really worth checking out once you’ve got to grips with AS3). But then, does that count as learning about coding physics and simulation, or just learning how to use Box2D? And what if you come up with an idea that Box2D doesn’t automatically support?

I did draft out the steps for a tutorial that would take you from a basic understanding of AS3 all the way to creating a platformer and understanding the physics and code involved. On the way, you’d learn how to create smaller games, like Pong and Breakout, to help cement the new ideas in your mind. Unfortunately I realised it would take a very long time to get through it all, and I just can’t afford to do all that extra blogging right now.

Graham (Tsolron) June 2, 2009 at 12:04 am

I took a quick look at the files in that, but to me it’s quite confusing.

I think I’ll just continue with the AvoiderGame tutorials for now. Once I understand the language well, I’ll take another look at it.

Michael Williams June 2, 2009 at 12:12 pm

Cool. Emanuele has some great Box2D tutorials, if you’re interested later: http://www.emanueleferonato.com/category/box2d/

Snurre June 4, 2009 at 3:34 pm

If you really want to make a platformer right away, Mr Sun Studios did a nice tutorial about it:

Graham (Tsolron) June 5, 2009 at 2:43 am

I’m fine with making other types for now.

Jandel122 December 7, 2009 at 11:24 pm

Hey can i speak with you on MSN:

* MJW Edit: email address removed to prevent you from being spammed ๐Ÿ˜‰ *

Michael Williams December 8, 2009 at 3:23 pm

Hey Jandel122,

I don’t use instant messenger very much any more, I’m afraid. What did you want to talk about?

Nacho Lรณpez Games April 7, 2010 at 3:37 pm

Thanks Michael James Williams.

With your tutorial I have interested in Flash technology. Before this, I make games with Multimedia Fusion or Game Maker. Now I know what important is writing code.

I hope you earn enough money to do what you want, making games and teach other people.

Thanks Michael!

PD: Sorry for my english, I’m from Spain.

Michael Williams April 13, 2010 at 4:37 pm

Hey Nacho Lรณpez!

Thanks for your kind words ๐Ÿ™‚ I used to use MMF, too ๐Ÿ˜€ (Well, actually, I used to use Klik and Play :P)

Have you seen MMF’s SWF export? That’s pretty cool — you could combine Flash with MMF assets, maybe.

Manuel Ignacio Lรณpez Quintero October 7, 2010 at 1:27 am

Hi Michael again! I’m Nacho!

One of my first gifts was Klik and Play. A friend gave it to me when I was 15 and loved it.

To start using it when you were young is good. But then you know that you lose many possibilities.

Of course I do not speak badly about ClikTeam team.

Moving on, I want you to know that you are still the Flash mentor to many of us:


Keep up the good work! And please write an article!

Michael Williams October 7, 2010 at 3:45 am

I particularly remember the intro movie.

Oh man, just found this tutorial too. Classic!

Thanks dude ๐Ÿ™‚

naser kaware May 14, 2012 at 7:43 pm

i want platform game source code in class

McMosfet June 5, 2012 at 1:20 pm


I just finished your tutorial. It was so interesting.

I know it is from some time ago, hope you see this!

gameloon September 9, 2013 at 8:49 pm

buddy. i am a game developer. when i make a game for anyone what are the necessary steps to be sure that the world knows my company/I developed that game. I guess one is to have a preloader of my company, put my company logos in the game. What else can i do. Is it always best to sell games from FGL. what about selling it privately.

Leave a Comment

Writing code? Write <pre> at the start and </pre> at the end to keep it looking neat.