Tilebased games in Flash 5 - Part 3

Before we go into scrolling, I thought it would be a good idea to look into some tips and tricks that can be helpful.

The first thing is to NOT draw(draw means attach tiles) the map directly on the stage, instead draw it in an emtpy "container"-movieclip. Something like:
// first attach an empty movieclip
this.attachMovie("empty", "container", 0);

// then draw the map inside the container
for ( i = 0; i < mapHeight; ++i ) {
	for ( j = 0; j < mapWidth; ++j ) {
		this.container.attachMovie("tile", "t_"+i+"_"+j, ++d);
		this.container["t_"+i+"_"+j]._x = j*tileW;
		this.container["t_"+i+"_"+j]._y = i*tileH;
This makes it so much easier to move the map. If we were to make it scroll, just move the container instead of moving all the tiles individually.

For speed, donīt draw tiles that donīt contain anything or add something visualy. Like in Super mario for example, there is no point in drawing the blue sky tiles, itīs better to just have background movieclip and just change the color, depending on if itīs a black or blue background.

If youīre gonna make a scrollable game, use BITMAP-graphics for the tiles, one tile - one gif. Why? Because itīs soo much faster for flash to draw bitmaps on the screen, instead of complex vector-graphics. A little bug/feature you might run into is that when making a gif exactly, say 16x16 pixels, it will bleed in flash(look strange on the edges). This can be solved by making it 18x18 pixels instead, and then making a 1x1 pixel transparent frame around the actual 16x16 graphic.

Try to use LOW-quality when running the game, this can make a huge difference in some cases. You will of course have to adapt the graphics to work in low-quality, but that shouldnīt be a problem if you just use bitmaps.

Use as FEW enterFrame loops and frame loops as possible. When running many multiple loops it can get quite processor-intensive, thus making it run slow and sloppy. And we donīt want that, do we?

Try to make the game-engine as flexible as possible. Do it using OOP(Object Oriented Programming) if you know how to. This will make more complex games much, much easier to develop. In these tutorials we wonīt make any OOP beacuse it can be a little harder to understand for some people and it might not be as straightforward as it is now. And Iīm not really that good at it either :)

Some people think that they can make full-blown 3d-shooters in flash. I havenīt seen one single good example of this, and I think itīs just stupid to try :) Go with shockwave, wildtangent or something thatīs suitible for that purpose, donīt beat a dead horse.

Come up with your own work-flow, something you feel comfortable with. Donīt just follow the bouncing ball and belive that Iīm some sort of expert on this area. I can asure you Iīm NOT. There are probably many better and faster ways to do games in flash, you find them!
Study classic game-titles on systems like: nintendo, c-64, spectrum, sega, atari, amiga, gameboy and so on. Try to make a basic engine of one you like. Itīs usually much easier to do that, than coming up with a totally new idea, it works perfectly for learning purposes.

Donīt expect to learn everything within a week, it takes some time and it has to, thatīs the whole concept of learning... It goes something like this:
progress = time*practice;
Ok, enough of this rant. On to the scrolling.

(C) OutsideOfSociety 2002.