Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - photonstorm

Pages: [1] 2
releases / MOVED: Escape From Melakka
« on: Sat, Apr 14, 2012 »
This topic has been moved to games.

help / Superb reference site
« on: Tue, Sep 27, 2011 »
Just had to post this, even though it's not flixel specific! features gameplay videos of pretty much every NES game ever. They also run SNES Guide, N64 Guide and TG-16 Guide.

Basically if you're lacking inspiration for a game, or need to reference an old classic, then hit up these sites and check out a gameplay video. I picked one at random (Eliminator Boat Duel) and it had a superb parallax clouds effect I really feel like re-creating in flixel :)

So yeah, lots of inspiration to be found!

help / An important question about my Flixel book
« on: Mon, Sep 5, 2011 »
As some of you know I have been busy planning a book on game development with Flixel. However while sitting down to do the chapter list tonight it occurred to me that perhaps I was approaching it the wrong way. So I'm posting this up in the hope that I'll have enough feedback from you all to guide it to the correct result.

My dilemma is simply this:

A) Do I write a traditional book with chapters, bits of in-line code and illustrations?

B) Or do I attempt something a little more modern? By this I mean an online resource that contains all of the book content, but without the restrictions that paper publishing imposes on you. I.e. I can display full blocks of code collapsed for readability. I can embed swfs so you can actually see right away what effect the code had. If needs be I can use audio or video to enhance the learning. The content would be similar, it would just be embellished. A lot.

Don't get me wrong, I love books. I love buying them and thumbing through them at my leisure. But when it comes to books about coding I tend to nearly always want those while I'm next to my PC - especially books with a heavy reference or cookbook section to them.

With a book ultimately about game development, which is what mine is, I'm left wondering if it wouldn't serve the reader better to literally be able to see exactly what a piece of code will do. To be able to play it, right there in the page. And visually demonstrate what happens if you then tweak that code. The whole book would be available from the start, you wouldn't have to wait for new content to be written. And it wouldn't be a subscription service either: Just pay once for a login.

But I'm worried if you will actually "trust" buying access to a "book web site" from me - rather than something physical you can hold in your hands. Price-wise it won't be any difference to a print version, but how would you feel about access to a book site instead of a real book?

So please leave your comments and let me know what you think.

Hey guys,

I'm going to build a GUI style system to add to the Flixel Power Tools - something like window controls, text boxes, buttons, etc. Ideally it could be used in an RPG game, but basically anything that needs a GUI interface.

So I'd love to know - what sort of things / features would you like in it? If you could show me examples by linking to other games that have them, that'd be awesome.



help / New Flixel Book - suggestions wanted!
« on: Tue, Jul 19, 2011 »
Hey all,

As has been let out of the bag in my blog post, I'm working on a "Building games with Flixel" book for Packt Publishing.

I'd love to get your comments about what you would really like to see covered in it, and what experience level it should be aimed at.

Do you want beginner level code / examples? Or more advanced? And what style of game/s should it try to cover making? Or should I skip that entirely and create it more like a cookbook - so a chapter on explaining how to use sprites, collision, movement, etc?

The idea is that the book is a short-form digital one (with print copy if wanted). So not a massive 300+ page one, more a 70 page much more focused title - allowing me to write it faster rather than the usual 10 months it takes.

chat / Forum Upgrade
« on: Thu, Jul 7, 2011 »
After putting up with masses of spam we finally decided enough was enough. So last night I upgraded the forum to SMF 2.0, as you can probably tell by the especially "non-flixel" looking theme and smell of fresh paint.

There are lots of nice enhancements (such as being able to upload attachments and embed Flash files), but the biggest changes is this:

For New Members - ALL of your posts will be moderated before appearing on the forum.

Once you have made enough sensible non-spam related posts you are automatically upgraded to a full Member. At that point your posts are no longer moderated. The threshold is pretty low, but enough that it should allow us to catch most spammers right from the start.

Spot any problems with the new set-up? Please email us:

help / Flixel Power Tools
« on: Thu, Jun 16, 2011 »
Latest Version: 1.9
Released: October 11th 2011
Example Demos: 86

Quite frankly flixel is awesome. It allows for very rapid game development. And while it does a lot for you, it is lacking in a few  areas. After all itís just a framework, and frameworks are meant to be built-upon.

That is where the Flixel Power Tools come in. They are a set of classes, all neatly arranged in a single package that use the new plugin architecture of Flixel 2.5. They push flixel just that bit further and cover a lot of fundamental ground for you. The Flixel Power Tools are for Flixel 2.5+ only, they will not work with earlier versions.


The following classes are available in the latest version:

The FlxSpecialFX class supports its own plugins for creating special effects. Currently this includes:

  • BlurFX
  • CenterSlideFX
  • FloodFillFX
  • GlitchFX
  • PlasmaFX
  • RainbowLineFX
  • RevealFX
  • SineWaveFX
  • StarfieldFX


There's also a Demo Test Suite which include loads of easy-to-follow examples of the tools in action, with a funky menu system and a visual way to actually see what they do. I always find it easier to learn by looking and then dissecting code! The full source code is on github, including all 77 demos.

Be sure to try the Credits button :)

Getting Started Guide

There is now a comprehensive 6-page Getting Started Guide in the Docs folder. Download the zip or checkout from github and get reading! It should help beginners get started a lot faster.

The library and Test Suite will continue to expand, and they will be kept in-line with the flixel codebase, which is rapidly changing at the moment.


The Flixel Power Tools can be found on github:

You can download a zip file containing everything or checkout the repo. There is a dev branch, which contains the "bleeding edge" and work in progress stuff. "master" is the most current stable version.

Any questions about any of the tools? Ask me here :)

help / MOVED: hiring someone to help with flixel
« on: Thu, Jun 2, 2011 »
This topic has been moved to chat.

help / Flixel Power Tools v1.6 released
« on: Tue, May 17, 2011 »
It's late and I'm super-tired, so I'll keep this short:

v1.6 is officially out:

and you can do really cool stuff like this:


help / Flixel Power Tools v1.4 released
« on: Thu, Apr 28, 2011 »
I'm pleased to announce that I released v1.4 of the Flixel Power Tools tonight. I have re-factored all of the tools so they now run as native Flixel plugins, something Adam added to 2.5 (I suspect after I wore him down on gtalk with requests for it :). The Flixel plugin structure is great, because plugins can be registered with the framework once and then run independently of your game state, with hooks into the core update loop. Sweet.

As well as the 2.5 updates I also added 2 new classes and loads of Test Suite demos that I'm really stoked about. The new classes are:


This class allows you to take screen grabs of your game as itís running. And then save that grab as a PNG locally. The screen grab process can be bound to a Hot Key, or called directly. You can control if the mouse pointer is hidden before capture or not, and you have full control over which part of the screen is captured. It defaults to the whole screen, but any rectangle region is valid (and can even be passed in real-time, see the Camera Test Suite example!)

At the moment I see this class as being useful during development to take quick grabs, but I'll update it so that you could use it in an actual game, as right now Flash Player security restrictions don't allow the FileReference Save window to open because I don't trigger it on a MouseEvent. But this will be fixed :)

The next class is ...


This class is a powerful way to create scrolling regions in any FlxSprite. A good example may be a background sprite which has a seamless (tiling) texture on it. With this class you can make the texture scroll at any speed in any direction seamlessly but keep just one sprite on-screen. You can create as many scrolling zones as you like in one sprite, and add as many sprites as you like to the FlxScrollZone manager! Itís fast enough that the x/y scroll speeds can be fed to it in real-time. Lots of Test Suite examples showcase the various ways this can be used. The important thing to remember is that even with all that scrolling going on, the x/y values of the sprites being used are never touched. Perfect for game backdrops, sequences, skies, etc.

Grab these and the rest of the Flixel Power Tools :)

help / Flash Player 11 / Molehill available
« on: Sun, Feb 27, 2011 »
I'm sure lots of you will have picked this up elsewhere, but just in case not - Adobe have released Flash Player 11 / Molehill for developer testing. This is the 3D GPU accelerated version of Flash and from the demos I've seen tonight it's really kicking ass!

Get the release from here:

Oh and this is pretty exciting as well:


help / Flash Game Dev Tips
« on: Sat, Feb 19, 2011 »
I've started writing a series of Flash Game Dev Tips. They provide solutions for common flixel (and general flash / game dev) related issues. Some as a result of threads I read here, others from my own game making.

Here are the current articles:


Tip #1 Ė Creating a cross-game communications structure

Tip #2 - Flixel and TweenMax pausing together

Tip #3 - Bullet Manager, Part 1

Tip #4 - Bullet Manager, Part 2 (building a shmup)

Tip #5 - Configure your Games in Real-Time

Tip #6 - Setting-up FlashDevelop and Flixel for the first time

Tip #7 - Introducing the Flixel Power Tools

Tip #8 - Building a shoot-em-up Part 3, Return Fire

Tip #9 - Dealing with a lack of motivation to finish your game

Tip #10 - Flixels Internal Structure and Performance Tips

Tip #11 - The Flixel Display List Explained

Tip #12 - Building a Retro Platform Game in Flixel, Part 1

Tip #13 - Building a Retro Platform Game in Flixel, Part 2

Tip #14 - How to create a Flixel plugin (with tinted mirrored camera example!)

Tip #15 - Collectable Particles in Flixel (with demo and source)

I'll keep this post updated with the list of articles. But if you would like to request an article then please do so!

games / Cat Astro Phi
« on: Tue, Dec 7, 2010 »
Hi all,

Am happy to say that our new flixel game is now out!

Called Cat Astro Phi it's a sci-fi action adventure, done in the style of the Gameboy classics of years gone by :)

You can play it on NewGrounds (11 medals to unlock)



games / [Finished] Quartet
« on: Fri, Jun 25, 2010 »

Myself and iLKke have released our latest Flixel game - Quartet.

It's a slightly quirky reaction/puzzle game, put together extremely quickly a few weeks ago.

Please have a play :)



releases / FlxBitmapFont released
« on: Thu, May 20, 2010 »
Hi all,

I've released my Bitmap Font class for Flixel 2. It allows you to easily use proper bitmap fonts in your games. Implementation is pretty easy, and the fonts extend an FlxSprite meaning you can throw them around, collide with them, etc. To change the text on display just use: fb.text = "new text"

You can find full details on my blog, including a link to Google Code project where there is a download containing example code and pretty comprehensive documentation.



help / z-depth on sprites in a group
« on: Sat, May 15, 2010 »

I'm curious but has anyone found a nice way to do z-depthing on FlxSprites within an FlxGroup?

At the moment the order in which you add() the sprites in the group determines the draw order. But there seems to be no way to move them around once you've added them, or add them in a specific place (like addChildAt()).

I really need to be able to have sprites change depth appearance if they are below (on the Y axis) each other.

Suggestions? :)



help / Ogmo Editor
« on: Sun, Apr 11, 2010 »
Saw this today - looks pretty sweet. Not sure I like the idea of making an XML file before I can start editing, but it does make sense / have advantages.

Wonder if support for this is worth adding to Flixel? :)

chat / Edge magazine interview with Adam (Issue 214)
« on: Fri, Apr 9, 2010 »
I received my copy of Edge magazine today, and there's a really nice 3 page piece on indie game making, with plenty of stuff from Adam (including a few photos, one of which makes him look like a night club bouncer)

It's a good read though, so grab a copy :) It's the May 2010 issue with the female "pleasure toy" looking PS3 "Move" controller all over the front. I'm in the UK, I think Edge also publishes in the US, but I don't know if the content is the same.

I'm having trouble trying to work out just what FlxU.collide is supposed to do? By my understanding it should stop the two objects from colliding? But it doesn't seem to - if I give the collide() function a FlxSprite and an FlxGroup they just float right through each other.

Should I override something within each, that gets notified when the collision happens?

I am calling FlxU.collide in my update (every loop). If I do the same for a tilemap, it works fine. Suggestions anyone? :)

help / FlxSnake Game for Flixel 2.23 with source
« on: Fri, Mar 19, 2010 »
Hi all,

After seeing a thread about making a snake game in Flixel I figured I'd throw together an example in my lunch break. This may prove useful if you are trying to do something similar. Basically the whole game lives in 1 (pretty short) FlxState file. So you can literally just drop it into a project, configure your to point to it, and Bobs your Uncle.

It will scale to whatever width/height you want (minimum of 128x128) so long as the width/height are multiples of 2.

Code: [Select]
 * FlxSnake for Flixel 2.23 - 19th March 2010
 * Cursor keys to move. Red squares are fruit. Snake can wrap around screen edges.
 * @author Richard Davey, Photon Storm <>

import org.flixel.*;

import flash.utils.getTimer;

public class FlxSnake extends FlxState
[Embed(source = "org/flixel/data/beep.mp3")] protected var SndBeep:Class;
[Embed(source = "org/flixel/data/flixel.mp3")] protected var SndMusic:Class;

private var score:FlxText;
private var fruit:FlxSprite;

private var isAlive:Boolean;
private var snakeHead:FlxSprite;
private var snakeBody:FlxGroup;
private var addSegment:Boolean;

private var nextMove:int;
private var snakeSpeed:int;

public function FlxSnake()

override public function create():void
isAlive = true;
addSegment = false;
snakeSpeed = 150;
nextMove = getTimer() + snakeSpeed * 2;

// Let's create the body pieces, we'll start with 3 pieces plus a head. Each piece is 8x8
snakeBody = new FlxGroup();

spawnNewBody(64 + 8, FlxG.height / 2);
spawnNewBody(64 + 16, FlxG.height / 2);
spawnNewBody(64 + 24, FlxG.height / 2);
spawnNewBody(64 + 32, FlxG.height / 2);

// Get the head piece from the body For easy later reference, and also visually change the colour a little
snakeHead = snakeBody.members[0];
snakeHead.createGraphic(8, 8, 0xFF00FF00);
snakeHead.facing = FlxSprite.LEFT;

// Something to eat
fruit = new FlxSprite(0, 0).createGraphic(8, 8, 0xFFFF0000);

// Simple score
score = new FlxText(0, 0, 200);
FlxG.score = 0;


override public function update():void

if (isAlive)
// Collision Checks

// 1) First did we hit the fruit?
if (snakeHead.overlaps(fruit))
FlxG.score += 10;
addSegment = true;;

// Get a little faster each time
if (snakeSpeed > 50)
snakeSpeed -= 10;

// 2) Did we hit ourself? :)
// We set the deadSnake callback to stop the QuadTree killing both objects, as we want them on-screen with the game over message
FlxU.overlap(snakeHead, snakeBody, deadSnake);

score.text = "Score: " + FlxG.score.toString();

if (FlxG.keys.UP)
snakeHead.facing = FlxSprite.UP;
else if (FlxG.keys.DOWN)
snakeHead.facing = FlxSprite.DOWN;
else if (FlxG.keys.LEFT)
snakeHead.facing = FlxSprite.LEFT;
else if (FlxG.keys.RIGHT)
snakeHead.facing = FlxSprite.RIGHT;

if (getTimer() > nextMove)
nextMove = getTimer() + snakeSpeed;
score.text = "GAME OVER! Score: " + FlxG.score.toString();

private function deadSnake(object1:FlxObject, object2:FlxObject):void
isAlive = false;;

private function placeFruit(object1:FlxObject = null, object2:FlxObject = null):void
// Pick a random place to put the fruit down

fruit.x = int(Math.random() * (FlxG.width / 8) - 1) * 8;
fruit.y = int(Math.random() * (FlxG.height / 8) - 1) * 8;

// Check that the coordinates we picked aren't already covering the snake, if they are then run this function again
FlxU.overlap(fruit, snakeBody, placeFruit);

private function moveSnakeParts():void
// Move the head in the direction it is facing
// If it hits the edge of the screen it wraps around

var oldX:int = snakeHead.x;
var oldY:int = snakeHead.y;

if (addSegment)
var addX:int = snakeBody.members[snakeBody.members.length - 1].x;
var addY:int = snakeBody.members[snakeBody.members.length - 1].y;

switch (snakeHead.facing)
case FlxSprite.LEFT:
if (snakeHead.x == 0)
snakeHead.x = FlxG.width - 8;
snakeHead.x -= 8;

case FlxSprite.RIGHT:
if (snakeHead.x == FlxG.width - 8)
snakeHead.x = 0;
snakeHead.x += 8;

case FlxSprite.UP:
if (snakeHead.y == 0)
snakeHead.y = FlxG.height - 8;
snakeHead.y -= 8;

case FlxSprite.DOWN:
if (snakeHead.y == FlxG.height - 8)
snakeHead.y = 0;
snakeHead.y += 8;

// And now interate the movement down to the rest of the body parts
// The easiest way to do this is simply to work our way backwards through the body pieces!

for (var s:int = snakeBody.members.length - 1; s > 0; s--)
// We need to keep the x/y/facing values from the snake part, to pass onto the next one in the chain
if (s == 1)
snakeBody.members[s].x = oldX;
snakeBody.members[s].y = oldY;
snakeBody.members[s].x = snakeBody.members[s - 1].x;
snakeBody.members[s].y = snakeBody.members[s - 1].y;

// Are we adding a new snake segment? If so then put it where the final piece used to be
if (addSegment)
spawnNewBody(addX, addY);
addSegment = false;


private function spawnNewBody(_x:int, _y:int):void
snakeBody.add(new FlxSprite(_x, _y).createGraphic(8, 8, 0xFF008000));



Just create a file called and drop all of the above into it.

Questions? Feel free to ask.

Pages: [1] 2