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
Seven Common Flash Game Complaints (and How to Avoid Them) β€” Michael James Williams

Seven Common Flash Game Complaints (and How to Avoid Them)

by Michael James Williams on April 9, 2009 · 22 comments

in Game Design

Leaf with blemish
Photo by shaferlens.

*In the above photo, a small blemish draws attention away from the rest of the leaf. In a Flash game, a small mistake draws attention away from your actual gameplay.*

FlashGameLicense allows developers to post feedback on each other’s games, and see the feedback that others have written. If you read through enough of these, you’ll notice that the same complaints keep popping up over and over again. Fortunately, they’re very easy to fix.

In this post I’ll cover **seven common complaints, and how to avoid them**.

###1. “I hate having to switch between mouse and keyboard”

Have you ever played a room escape game where all the interaction worked through the mouse, apart from one screen where you had to use your keyboard to enter a code into a graphical keypad?

How about a platformer where all movement was controlled using the arrow keys and the space bar, but whenever you finished a level you had to click a button to move on to the next one?

When developing a game, you’re constantly switching your hands between the keyboard, the mouse, and maybe even a graphics tablet or MIDI instrument, in order to handle all of your different tasks. So when testing the game, it doesn’t feel like a big effort to be shifting your position every now and then.

For the player, it’s a different story. It’s difficult to really get into a game if it keeps changing the control scheme. It’s also hard to get comfortable and relaxed. So don’t make the player alter their position unless it’s absolutely necessary.

Try to play through your game from start (or even from the menu screen) to finish **without moving your hands’ resting position**. If you can’t do that, it’s time to make some changes.

###2. “The fonts are rubbish”

I think everyone’s been caught out by this at some point. By default, if you use a font in your game that the player doesn’t have installed on their computer, they’ll see one of the default fonts — like Times New Roman — instead. Boring!

There’s a really simple fix for this: all you have to do is **embed your fonts**.

If you’re using the Flash IDE, follow this excellent tutorial from headjump.de to make sure all your fonts are packaged with your game.

For Flex, check out this guide on the Adobe site.

###3. “It doesn’t fit on my screen”

Just because a game is a good size when played in the standalone Flash player doesn’t mean it’ll be a good fit for a browser. Remember, you don’t control the user’s screen resolution, the height of their taskbar, the number of toolbars they have installed, the layout of the portal webpage where they play the game…

I once played a game that was slightly too tall for the screen, so I scrolled the page to fit as much of it on as I could. Without realising it, I’d accidentally positioned the game so that I couldn’t see the lives counter! I just assumed there were infinite lives — you can imagine my surprise when I got game over πŸ˜‰

The question of the “perfect dimensions” comes up over and over again, and there’s really no One True Answer, but if you’re looking for a general rule of thumb, make your game **no larger than 640 pixels wide and 480 pixels tall**. Yep, 640 by 480, just like the old days (though you’re not limited to VGA colours :P). This will be small enough to fit on just about any games portal with just about anybody’s screen resolution.

**Update:** Emanuele Feronato has posted a breakdown of the most commonly used game sizes on his blog here, and Iain Lobb posted his thoughts on resolutions here.

###4. “I couldn’t turn the sound off”

Remember, a lot of people play Flash games when they should be doing something else. The last thing they want is some looping pop music blaring out of their speakers — it’s a bit of a giveaway. Even if that’s not the case, there’s a million reasons why they would want to get rid of your game’s sound without muting their entire computer, so it’s up to you to let them do so by **adding a mute button**.

There’s a decent forum post over at actionscript.org explaining how to do this in AS2.

For a great AS3 tutorial, check out 8bitrocket.

###5. “I wanted a pause button”

It’s easy to get distracted while playing a Flash game. If someone IMs you, or you get an email, or you want to eat a sandwich, you don’t expect to have to wait through a really long cutscene before you can do anything about it. Most games feature a **pause button** that let the player do something else without having to worry about what’ll happen to their game state.

Of course, the situation gets a little more complicated in a multiplayer game. And in a single-player game, there’s the chance that the pause button could be used to cheat, if the player is scored based on time. But if the player can’t walk away from your game for a minute without risking losing anything, they’re just going to walk away anyway — after having closed it.

I’m having difficulty finding a really good tutorial on this subject for AS2, can anyone recommend one?

Ryan from Untold Entertainment recently wrote a great tutorial on how to do this in AS3.

###6. “I couldn’t tell whether it was loading or had crashed”

OK, I’m sure everyone reading this knows that **preloaders** are mandatory for Flash games. An animated screen showing the progress of the game’s download is most common, but you could get away with a static screen with the word “loading” on it.

For AS2, here’s the simplest tutorial I know, from PoisonSky and courtesy of FrozenHaddock.co.uk.

For AS3, I found 8bitrocket’s tutorial very useful and in-depth.

If you’re doing a pure AS3 project (as opposed to one using the Flex or Flash frameworks), check out The Last Preloader You’ll Ever Need, Really at gamepoetry.

Note: Sadly gamepoetry seems to have disappeared from the Internet. Instead, I suggest The Comprehensive Guide to Preloading a Single SWF File.

Whirled automatically adds a preloader to games on their site, as does Mochi for games using their ad system, but it’s always worth knowing how to roll your own.

###7. “I want to see my high score!”

If you’re going to include a scoring system in your game, then for goodness’s sake **let the player compare their performance against other people’s!**

Again, portals like Whirled and Kongregate have built-in high score tables, and Mochi and Hallpass provide APIs that make it easy to keep the scores of players from all the other websites.

Storing the score is only the first step, though. Too many games add an artificial barrier before the player can submit their score — sometimes before the player can *see* the scores! This must be avoided.

Imagine being in an arcade and having to struggle through all 25 levels of a space shooter before finally getting to enter your initials. It doesn’t really inspire you to come back if you were having trouble at level nine, does it? Now imagine that you only get shown the list of high scores on the game over screen, rather than when the game’s in attract mode. Hardly seems worth competing for.

Bottom line: if you measure the player’s achievements on any points system, add a leaderboard, and let players use it at any time possible.

###What do You Think?

It won’t take long to fix these problems, particularly if you look out for them from the start of development. And once they’re out of the way, players have to start telling you the problems with your *actual gameplay* πŸ˜‰

So what do you think? Any other common complaints that you’ve come across?

{ 22 comments… read them below or add one }

Marcin Horoszko April 9, 2009 at 7:03 am

Very useful advices. Especially 3, 4 and 7. In 1, the best idea for me is to use keyboard and mouse at the same time.

MichaelJWilliams April 9, 2009 at 12:38 pm

Cheers Marcin. Do you mean designing the game to use both, or using both as a player?

Marcin Horoszko April 9, 2009 at 9:18 pm

Using both as a player. Of course if game need it πŸ™‚ Something like movin by a keys, and aimin with mouse.

MichaelJWilliams April 10, 2009 at 1:05 am

What if it’s a two-hands-on-keyboard game? πŸ˜‰

Some great additions by @UntoldEnt:

  • Room escape games hiding things in single pixel hotspots
  • Wordy instructions
  • Inappropriately selectable text
Heywood April 10, 2009 at 8:25 am

Sweet article! Yeah, i’d second “wordy instructions”. Probably the thing that scares me off most often. With so many poor quality games out there, chances are it will not be worth it to read pages of instructions before you begin, then you just try something else instead.

I think a better idea would be to have any instuctions be more subtle, like a sign in the background (see any nitrome game) or ‘tool tips’ that appear when you’re doing a certain task.

MichaelJWilliams April 10, 2009 at 10:37 am

Thank you. Yeah I agree with you, I don’t fancy sitting through 15 pages of instructions before starting the game; if it’s that complicated I’d rather play Civ.

Signs are great — that way you can introduce new skills throughout the game, rather than force the player to memorise everything about everything at the start.

Tool tips are an excellent suggestion too, that way you can give the player a “hint” if they’ve just forgotten about a certain skill or how to use it.

FrozenHaddock April 12, 2009 at 8:24 pm

Great list, and thanks for the link πŸ™‚

I’ll second “Inappropriately selectable text”, that stuff is -really- annoying, and so easy to get rid of!

MichaelJWilliams April 13, 2009 at 12:10 am

Thanks, FH. By the way, I don’t suppose you know of a “pause button” tutorial for AS2, do you? (Or maybe someone who could write one!)

Oh and yeah, that is so frustrating; for anyone reading, just change that little drop-down list from “dynamic text” or “input text” to “static text”. That’s it!

FrozenHaddock April 24, 2009 at 9:39 am

Or of course, for dynamic boxes, uncheck “Selectable” under text properties πŸ˜‰

And I don’t, AS2 doesn’t have an easily implementable pause function, I end up testing any movement, sound, scoring and visual effects against a ‘game’ boolean, and then usuing the pause button to shift between true/false.

If you find an easier way than that, pray tell πŸ˜›

MichaelJWilliams April 25, 2009 at 3:59 pm

Ha, whoops, good point πŸ˜‰

Dang, that’s a shame. I don’t know… I guess if all the code for an object is in its own onEnterFrame then it’d be difficult to have a global pause function.

PoisonSky May 7, 2009 at 8:53 pm


Nice by the way.

ImJake9 June 23, 2009 at 5:35 pm

An easy way for a global pause function (even if everything is on an onEnterFrame function) is to create a Boolean value called paused. Then, in the function, you can create a conditional to check if paused is true or false. If it’s true, execute the code “else”, make a pause screen or the like.
But great article! I certainly will consider these problems before I post any games. Thanks a lot!

Michael Williams June 23, 2009 at 5:47 pm

Hullo PoisonSky!

Ah, good idea ImJake9 πŸ™‚ Glad you liked the post.

FlashN00b October 12, 2009 at 9:02 pm

Thx, especially font embedding helped me a lot, since this is an issue which truly sucks…

Michael Williams October 13, 2009 at 1:51 am

Argh, yes, font embedding is so annoying. According to Bram Van Damme Flash CS5 is going to do things better — like it’ll let you embed a font once across the entire FLA, rather than having to do it once per text field. Frankly I was amazed Flash didn’t do that already.

Hissing Kitty February 6, 2011 at 4:32 pm

No complaints about flash games here, but then again we don’t usually get nerds around our parts. Our site tends to attract the runt of the mill pizza hut and ebay consumers πŸ™‚

Math October 5, 2011 at 4:50 pm

Thanks for sharing these. I was forgetting to put the loading screen and the score system… i remembered here… thanks!

Bryon (ASCubed) July 9, 2012 at 4:16 am

Preloader links are dead:

New link for “PoisonSky and courtesy of FrozenHaddock.co.uk”

New Link for “8bitrocket’s tutorial very useful and in-depth”

Unable to recover the 3rd link.

Michael James Williams August 1, 2012 at 8:57 pm

Damn. Thanks for the updates.

Bryon (ASCubed) August 1, 2012 at 10:07 pm

Anytime, Glad to see it got approved πŸ™‚

Leave a Comment

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

Previous post:

Next post: