This is replaced by swfobjct.

This is part two of the series. You may want to check out part 1 first. Continue Reading »

Smart Choices! This is one of those high level rules that applies across a wide range of topics. It has application in everything from how you approach your user-interface, to your attitudes towards options screens and even as far reaching as API design. The basic premise is that developers often hide their inability to make the smart choice by delegating that choice to the user. Spend the time and the effort to make the smart choice so that your users don’t have to and your product will be significantly stronger as a result. Continue Reading »

Valuable Tools The built in MovieClip class is slow and bloated. For most high performance situations in a dynamic real time game, it is not going to going to perform well enough if we have lots of intense animations. Today’s article is going to try and establish a specification for an Animation library that uses BitmapDatas for maximum performance. Continue Reading »

UI Icons

BitmapDatas are a necessary part of a high performance game engine. Sometimes we can get away with haphazard BitmapData management, but more often than not, we need to be aware of where and how we are instantiating BitmapDatas so we can keep track of them and free up memory as appropriate. We also want to make sure we never instantiate two identical BitmapDatas. Today’s article presents a class for managing BitmapDatas which avoids some of the pitfalls associated with using Bitmaps. Continue Reading »

Particle Shower

There are a thousand important things to optimize in a game engine, but perhaps the most important optimization we can make is the renderer. The reality is that even though we have a bunch of fun new tools available to help squeeze a few more frames out of the Flash Player, it still sucks in terms of raw graphical power. Render speed will likely remain the bottleneck for our games for the foreseeable future. It is therefore very important for a developer to understand when and how to push the renderer, and that starts with a fundamental understanding of different rendering techniques available and how best to utilize them to maximize performance. Continue Reading »

Preloader

It turns out the preloader code in The Last Preloader You’ll Ever Need was not without its flaws. Today’s article presents an updated preloader that eliminates the added Flex framework fluff in the original preloader, and provides a helper class, SimulatedPreloader, that makes it super easy to test your preloader code. Continue Reading »

Friday is the usual post day, but I’m doing this one almost a week early - I hope you don’t mind. :) I set up a gamepoetry project at Google Code. I’ll be putting future source code up there as I figure it gives everyone a safer and more natural way to access the code and any updates it might receive. I will get around to migrating source code released in older articles, and hopefully use the opportunity to provide any updates that are necessary. This week’s post will be dedicated to updating The Last Preloader You’ll Ever Need. I took the opportunity to make some improvements to the source code, and that will be reflected in this week’s post that will be going up today (instead of Friday). Have a great week and see you next Friday.

The Google Code Project for gamepoetry

Coop

I have a deep fascination with cooperative games. I’ll forgive a game for a lot of defects if it has a fun cooperative mode available. I love to play cooperative games, so naturally I spend quite a bit of time thinking about cooperative game designs and the sort of cooperative games I would like to build. This article explores one facet of cooperative game design, and that’s dealing with player death. Continue Reading »

A common thing requested by clients is special behaviors when a swf is running on a particular site. Here’s a simple test for what domain your SWF is currently playing on:


        public function isPlayingAtDomain( a_domain : String ) : Boolean
        {
            var url : String = this.stage.root.loaderInfo.url;
            
            var urlStart : int = url.indexOf( "://" ) + 3;
            var urlEnd : int = url.indexOf( "/", urlStart );
            var domain : String = url.substring( urlStart, urlEnd );
            var lastDot : int = domain.lastIndexOf( "." ) - 1;
            var firstDot : int = domain.lastIndexOf( ".", lastDot ) + 1;
            domain = domain.substring( firstDot, domain.length );
            
            return domain == a_domain;
        }

Ghost TownMultiplayer games are hard to make, but those of us who are capable of pulling them off need to be aware of one critical mistake that far too many indie developers make. We don’t have the marketing reach that some of the big boys have, so we need to design for the growth stage of our game. I didn’t when I released my first indie multiplayer game and, sitting on Game Tunnel’s Monthly Panel, I see this same mistake being made by different developers every month. This could be the difference between your game flopping or building the momentum necessary to becoming successful. Continue Reading »