I've been switching to Flash 10 for my game experiments. Flash 10 offers new graphics APIs, and opens up new approaches for how to deal with game objects. I wanted to compare these approaches:
Note that there's actually a lot more flexibility than just three options. There are three ways to draw polygons (lineTo, drawPath, or drawTriangles), two object management approaches (using Sprite, or managing the list manually), and whether to defer drawing using IGraphicsData. Which approach should I use for a game like my spaceship demo?
ConvenienceOne of the things I love about Flash is that drawing is pretty convenient, especially with Sprite objects, bitmap handling, translation/rotation, easy filters like drop shadow, and vector drawing. For example:
var s:Sprite = new Sprite(); s.beginBitmapFill(texture, null, false, true); s.drawPath (Vector.<int>([1, 2, 2, 2]), Vector.<Number>([100, 0, 164, 0, 164, 64, 100, 64])); s.endFill();To rotate or translate the game objects, set the s.x, s.y, and s.rotation fields. When you need a new game object, instantiate a Sprite and insert it into the hierachy; when you want to remove one, remove the shape. Flash handles the rest.
With Flash 10, the IGraphicsData interface lets you store graphics commands in objects, and then draw with them later. You can either call commands similar to the Flash 9 API, or you can store graphics data in a more direct form. Once you've assembled all the graphics objects, you can draw them all using Graphics.drawGraphicsData.
v[0] = new GraphicsBitmapFill(texture, null, false, true); v[1] = new GraphicsPath (Vector.<int>([1, 2, 2, 2]), Vector.<Number>([100, 0, 164, 0, 164, 64, 100, 64])); v[2] = new GraphicsEndFill(); graphics.drawGraphicsData(v);You can draw each of these to a separate Sprite, or you can assemble them all into one big vector and make a single call to Graphics.drawGraphicsData. The main value I think is to be able to batch them up, so I decided to make a single call, but that means I need to manage translation and rotation myself. Instead of creating new graphics data objects, you can update them every frame. Each of my game objects can keep a reference to where in the graphics data array it is represented, and then when I want to update the game object, I can change the corresponding GraphicsPath object. For rotation, I need to edit the path and also the bitmap rotation in the GraphicsBitmapFill object.
Adding and removing game objects is a little trickier. Either I can rebuild the entire vector every time, or I can build something similar to a memory allocator, so that I can reuse parts of the vector. I haven't yet decided how I'm going to handle this (my tests so far have a fixed number of game objects).
The Flash 10 Graphics.drawTriangles interface is somewhat inconvenient when working with 2D data. It requires that all polygons be decomposed into triangles (not hard to do but it's an extra step). The function takes a list of vertices, a list of indices that point into the vertex vector, and texture coordinates.
graphics.beginBitmapFill(texture, null, false, true); graphics.drawTriangles (Vector.<Number>([100, 0, 164, 0, 164, 64, 100, 64]), Vector.<int>([0, 1, 2, 2, 3, 0]), Vector.<Number>([0, 0, 1, 0, 1, 1, 0, 1])); graphics.endFill();Here too I need to handle translation and rotation myself, by updating the vector. However I don't need to rotate the bitmaps because drawTriangles takes care of this for me. Adding and removing objects is similar to the previous case, in that I need to handle it myself.
Overall, the traditional API is most convenient, but deferring the drawPath by putting it into a GraphicsDataPath is convenient too. The drawTriangles interface is least convenient, except for not needing to rotate bitmaps.
PerformanceI've found that my intuition hasn't been a great guide for understanding Flash performance. My intuition told me that approach 1 (Sprite objects) would be slower than approach 2 (global graphics data list), and approach 3 (triangles) would be fastest of all.
I wrote a test program that drew 400–1000 square objects on the screen at once and moved them around. I also put in options for rotation (because many of the objects in the spaceship demo were rotating), use bitmap or vector graphics (I like noise in art and bitmaps seem to be the way to make that), using outlines for vector graphics (I like outlines!), and animating bitmaps.
My general conclusions, for this style of game:
The performance of drawTriangles (even when I used GraphicsTrianglePath) was a disappointment. My thanks to Alex from Wild Shadow Studios for his help in understanding the APIs and performance.
RenderingIt wasn't enough for drawTriangles to be slower for this type of game. I've also had issues with the bitmap rendering. Here's a 64x64 test image drawn in several ways:
Note that images 1 and 2 look the same. This is as it should be. If I believe the documentation, image 5 should look the same as 1 and 2. But it doesn't.
As far as I can tell, drawTriangles is assigning a u/v coordinate of 1.0 to be pixel 62 instead of pixel 63. If you look closely, you can see the gray pixels are getting blurred (stretched). A “fix” for this is in image 6, where I set the u/v coordinate to 1.0 + 1/64, so that it picks pixel 63. With this hack, the image matches the reference image 1.
Images 3 and 4 are the same as 1 and 2, but rotated 90 degrees clockwise. Images 7 and 8 are the same as 5 and 6, rotated 90 degrees clockwise. Notice that 7 is incorrect (it should match 3), but it's incorrect in a different way than 5. Instead of losing the yellow and blue edges, it loses the green and yellow edges. The hack in image 6, when applied to 8, fails. That means it's not as obvious as pixel 62 instead of 63; there must be a weirder issue that I don't understand.
These issues with drawTriangles rendering make it hard to recommend for 2D graphics. I don't need everything to be exactly the same, but I do plan to draw 1-pixel outlines around my sprites, and drawTriangles can't preserve the outline. Even worse, as I rotate my game's objects, the outlines will appear and disappear.
The drawTriangles API also has some weird effects when using Flash's built in zoom function (right click and choose Zoom In). It also doesn't seem to be happy when using bitmap fills with repeat set to true. And it doesn't seem to handle texture scaling as well as the regular APIs (it's possible they aren't using mipmaps).
ConclusionsFor both convenience and performance for games like my spaceship demo, I think I should have every game object store some IGraphicsData objects, and also store a vector of all of them. I had thought that drawTriangles might be better, but it's both slower and less convenient. It also doesn't look as good. I think I might take a look at drawTriangles for 3D perspective graphics, or if I had lots of triangle data, but for 2D or orthographic 3D, I think it's probably not the best choice for me right now.
The 41,000+ games uploaded at YoYoGames.com have now been played over 10,000,000 times in total.
Although this is a nice milestone figure for the site to reach the number of game plays per day has not increased over the past year.

The game with the most plays by far remains sakisa’s Crimelife 2 which has now been played nearly 300,000 times accounting for almost 3% of total game plays on the site.
What is it with those expected on GMLive not turning up? Dan Eggers (as usual) was absent yet for some reason the hosts were still expecting him to turn up along with last weeks co-host Robin Monks.
It was understandable therefore that the show didn’t start off particularly strongly with many topics briefly skipped over in the first half hour of the show before a break was taken for music. Afterwards the show continued on a stronger note when a representative from the Game Maker Community Game (monocledsardine) came on to speak about the progress of their project so far. Although I haven’t been following the GMCG I still found this by far the most interesting feature today as he took questions from callers and those left in the chat.
Brian Fetcher made a few short appearances throughout the show but as usual the main presenters were Joshua Pedroza and producer Jonathan Martin.
Despite the rather poor presentation of content towards the beginning of the show the stream was much smoother than a fortnight ago when there were several inexplicable pauses without speech or music. The end of the show, as always, was full of pauses as people ran out of things to say and for a while no one took charge of closing the show.
The on page listener counter logged a maximum of 15 listeners throughout the duration of the one and a half hour broadcast.
You can listen again to a re-run of the show (minus all music but the starting theme) below:
Listen again:
Right click to download MP3 (76.9 MB)
Moment of the show: monocledsardine overhearing a conversation about calling him “Salmon”.
This Saturday GMLive will broadcast their third live global Game Maker radio discussion.
Topics that will be talked about include GameJolt’s latest contest, the return of Prodigygm magazine as Tailware Times, Sandy’s recent appearance at the Casual Games Forum in London and the Halloween episode of Game Maker TV.
No-one from the Game Maker Community Game turned up on the previous show but we are promised some GMCG content this time including an interview with the project’s lead composer and a question and answer session.
The show starts at 4pm GMT/11am EST. You can get the time in your location here.
Missed the previous show? Listen again.
Sometimes, it’s the simplest of games that are the most addictive. David Scatliffe’s “Mouse No. Probably A Rat” was an example of this (see my last review). So is this arcade offering – Jack Brockley’s “Circum Skull”, which I noticed in the mid-week community links posted just before this review (stuck for games to review – again, if youknow of any games you’d like to see reviewed let me know). This is even simpler than MN.PAR, but still manages to be addictive goodness.
In the game, a skull is firing bullets in 360 degrees. You have to avoid said bullets, which like to twist and turn to make evasion difficult. And, well, that’s it. No firing at the skull, no levelling up. You just avoid bullets. The only difference in later gameplay is that you have to avoid more bullets. The “arena” is a fairly small square, the skull’s in the middle, and you’re hopefully wherever the bullets are not. Circum Skull’s gameplay reminded me a little of one of my previous releases (which I won’t name to avoid self-advertising), but better, because it’s more playable, more fun, and features the addiction-increaser, online highscores.
So, with the incredibly simple gameplay in mind, the graphics don’t have to accomplish much. Circum Skull is an entry into a competition with the theme “retro horror”, which fits – the skull, its bullets and your ship are all blocky, single-colour (well, white) sprites, on a solid black background. The menu follows in the gameplay’s monochrome footsteps. It’s very simple, and very fitting.
The sound is the weakest area. The game’s sound effects are simple and fitting (wonder if I’ll ever get bored of saying that), but it’s the music where the game stumbles. The few-seconds-long loop grates fairly quickly, and has a noticeable delay when looping. It doesn’t break the game, though you might get more enjoyment out of it if you turn your speakers off.
Games are short (if you survive longer than ten seconds you’re doing well), quick to restart, and addictive. I spent several minutes trying to get a score I felt would look good in a screenshot, 69 (I got up to 73 in that game), only to find when submitting it that someone had managed over 500. I blame that on the game’s only problem – corners are pretty much safe zones. Still, well worth the 1.5MB download.
Pure competitive games of luck between strangers are rare beasts and for good reason. They manage to keep losers around, but the games hardly ever considered fun. Some gambling games may qualify (such as horse betting), yet it is telling that the vast majority of players lose.

GameJolt have launched their third contest.
The week long game making competition has the theme ‘Minimal’ and is open to users of any development software. The winner gets to pick a game of their choice from Steam.
Full details at the GameJolt forum.
At today’s Casual Games Forum in London YoYo Games Ltd CEO Sandy Duncan spoke of the merits of micropayments.
Micropayments (wiki article) are transactions with a unusually small monetary value often used to unlock extra features in games. In 2007 90% of Habbo Hotel’s $60M+ revenue came from the sale of virtual goods.
I didn’t buy a £295 ticket to attend the conference so didn’t see Sandy taking part in a debate on the best business models of casual gaming companies. CasualGaming.biz however were present and to quote Will Freeman from the site:
“If you look at it as something like gambling in reverse, where every now and then you have to put in a little money, it is very addictive,” added YoYo Games CEO and founder Sandy Duncan. “It plays on human behaviour, and in that context out of all the funding models microtransactions are perhaps the most pervasive and important.”
- Will Freeman, CasualGaming.biz
For over a year now YoYo Games have expressed their desire to eventually sell some of the best of games from more than 40,000 that have uploaded to their website.
The seventh full episode of Game Maker TV has today been released.
Cobwebs and a pumpkin have invaded Dan’s garage as the Halloween special episode takes a look at the Top Five horror games made in Game Maker and reviews a Zombie game as well as providing a run down of community news.
Regarding a comment made by Joshua Pedroza within the episode – Game Maker 8 does not have Mac support. As far as I know Game Maker 8 and Game Maker 7 for Mac are different products.
What are your thoughts?
See also: September’s episode 6
“Mouse No. Probably A Rat” is the latest game by David Scatliffe, a Game Maker user beginning to enter the spotlight for his addictive, retro-styled arcade games. Created in under three hours for a competition on popular site The Poppenkast, it is a game inspired by “Squid Yes! Not So Octopus!” – and it shows. Not necessarily a bad thing, but it will usually mean this game is compared unfavourably in reviews. Because of this, for the duration of my review of the game I’m going to pretend I’ve never played, or even heard of, SY!NSO!.
So, with that out of the way, MNPAR is a pixelated arcade game in which you blast your way through a never-ending wave of enemies. As you progress, the number of enemies on-screen increases, as does their ability to shoot. Your ship can only take one collision before it explodes so very quickly the game becomes hectic. It also becomes harder to destroy these enemies – you can only shoot in the direction you’re facing so, to hit the ones coming at you from the side, you’ll need to keep moving.
To be honest, it was a good decision to make games quick, because in terms of gameplay MNPAR is a little limited. The fact you’re likely to be dead within a minute means you’re cut off before repetition comes and grabs you by the throat. For a game made in under three hours, though, the gameplay is as good as it needs to be – quick, fun, and thanks to the addition of online highscores, pretty addictive.
As with Scatliffe’s former work, MNPAR’s graphics are fairly retro in style. Certain aspects go against this, including a strong glow around your bullets, but amazingly they never feel out of place. The effects are laid on thick but not distractingly thick, and give the game a very pleasing aesthetic. The interface is simple but doesn’t really need to be any more complicated – unlike with Death Worm, the simple one-colour-font score indicator works in this. The only problem, a common one with Game Maker games and a small one, is that use of the hash hasn’t been disabled in usernames, so you can run your name onto several lines, though this is unlikely to affect the online highscore display.
The sounds were functional, if pretty obviously made with SFXR (a program a huge number of developers have started using since Cactus’ game design speech at this year’s IGS). What got my aural attention, though, was the music – a fitting, catchy track that had me play the game twice just for listening pleasure.
So, on the whole, even removing the creation time from the equation this is an above-par arcade shooter. Its slight gameplay limitations are disguised by good-looking graphics, instant replayability, online highscore-aided addictiveness and a great backing track. Consider the game recommended – you can play it online or download it at Game Jolt.
Formerly known as “Prodigy Game Magazine“, Nathan Hurde has released a new issue of his magazine (direct pdf link). Last released in June, a new issue (issue 5) was finally released here at the end of October. The new title of the magazine is now “Tailware Times”. The magazine opened with a note from Nathan Hurde which included the reasoning for the new name:
“Instead we will use our new name “TAILWARE”. You all know
that life would be so much easier with a tail, so you gave you one. Tailware will of
course feature the content of its predecessor, ProdigyGM, however.”
The magazines layout has seemed to downgrade from the previous issue, with issue 5 reverting back to a simpler black and white style. The content was written in a similar style to previous versions of the magazine which involved some rather bland writing that sometimes appeared to be opinionated:
“This game is waaay better
than Realm One Online, Whispered Scroll Online, Goomba
Online, and Realm One Online. Yes, you heard me!”
The issue features an interview with Ben who is the creator of Processing. A face off between Game Maker and Processing was then featured, with Game Maker taking the winning position. The issue also featured other unprofessional things, such as Nathans personal attack on GMTV for featuring him in their top 5 fails from episode 6. The magazine also features some nice reviews of some various games and other previews and interesting articles.
28 days ago, Sandy Duncan announced that he would be holding a competition to see who could make the best new logo for GM8. Earlier today, he announced that the time for submitting your entries has now come to a close. The winners(s) will be picked out of the 500+ submissions that were entered by the creator of Game Maker, Mark Overmars, and announced some time this weekend.
YoYo Games Ltd are currently trying to raise new investment in the company.
We recently posted documents which showed that in the two years to 31st October 2008 YoYo Games lost more than £420,000 (~$680,000 USD). Speaking on this weekend’s GMLive host Joshua Pedroza said that although he is “not allowed to say much about this” the UK-based business is “undergoing a funding operation”.
Another source has also indicated to Game Maker Blog that YoYo CEO Sandy Duncan has been in discussion with venture capitalists.
It looks like YoYo Games are entering a busy period with the release of Game Maker 8 not far away (the logo contest closed today with more than 500 entries), new funding and a planned new office.
Thanks for all of your entries (more than 500)
The deadline for entries has now passed
I will create a short list and Mark Overmars and I will decide on the winner(s) as soon as possible.
I expect we will be able to make an announcement this weekend .
Earlier today the owner of Game Maker Station, Frederick Watson, sent an e-mail to 64Digits administrator Arcalyth requesting a “merge” with the still popular Game Maker community.
Frederick presents the proposed merge as a rare and lucky opportunity for the often-troubled site which has over 15,000 registered accounts.
“The only thing keeping 64 Digits alive is the blogs. 64 Digits has a dead forums & not so active blogs. If you merge, you will have a very active forum to go on, active blogs, active school, active chat room, and much more.
What’s in it for you? Your administrators will be given administrator ranks on Game Maker Station, and your moderators will be given moderator ranks as well. Our website games pages are still under construction, but it is not impossible to move all of the games from 64 Digits to Game Maker Station. Trust me, our staff has a way of doing things. Also, you won’t have to pay for your domain anymore which will mean extra money in your pocket.
Not to worry, we may have slightly strict rules on the forums, but on our chat rooms and blogs, our rules are pretty much the same as yours.
I think this could be a great opportunity for both of us. We have so much in common.
If you turn this offer down, you will only be given 2 more weeks to change your mind. After that, it’s final and my offer will no longer be valid.
Please think about what I have just told you. This may sound useless to you, but the whole point of this merge is to JOIN TOGETHER and BECOME ONE. As silly as it may be, this can actually make us stronger, better, and we will both reap the rewards.
I hear you are extremely busy and this will give you peace of mind having less on your TO DO LIST and more to be able to get done in your life.
This is why I am not interested in merging GMS over to 64 digits. It’s simply because: 1). Your forums are dead 2). your blogs are nearly dead 3). even if we were to merge and bring more traffic, it would be too difficult to work out all of services and extra websites and communities who are connected to Game Maker Station.
If you are interested, PM or Email me and let me know. The third part of the merge takes 1 day and the other half will take 1 week.
PART 1 – Move all admins & mods to gms. This will require each one to sign up and give me their profile URL’s
PART 2 – Put nothing but a link on your website (home page) that says “64 Digits has merged with Game Maker Station. CLICK HERE TO GO TO GMS” and
PART 3 – We will move all archives to GMS. This includes Games, Examples, etc. We’ll even try to move posts.
- Frederick Watson
Sounds more like a takeover to me and most of the 64digits members. 64digits is just the latest site Fred has tried to get to join Game Maker Station with GMLive having declined a recent request.