Get the full commented source code of

HTML5 Suika Watermelon Game

Talking about Actionscript 3 and Flash.

Time to learn something about particle systems… the term particle system refers to a computer graphics technique to simulate certain fuzzy phenomena, which are otherwise very hard to reproduce with conventional rendering techniques. Examples of such phenomena which are commonly replicated using particle systems include fire, explosions, smoke, moving water, sparks, falling leaves, clouds, fog, snow, dust, meteor tails, hair, fur, grass, or abstract visual effects like glowing trails, magic spells, etc.

If you want more information about particle systems, refer to official Wikipedia page.

Today I want to introduce you Allen Chou‘s Stardust Particle Engine.

The main Stardust features are:

* Supports 2D and 3D.

* Easy to extend for custom initializers, actions, fields, deflectors, clocks, and 2D/3D renderers.

* Includes 3D extensions for ZedBox, Papervision3D, and ND3D.

* Includes a native 3D renderer.

* Supports masking (particles can be masked out for actions).

* Supports gravity and deflector simulation.

* Supports action triggers (for creating complex particle behaviors).

* Supports XML serialization.

On the official page you can find a lot of examples, and this is a quick example I made following the basic tutorial

import flash.display.Sprite;
	import flash.events.Event;
	import idv.cjcat.stardust.common.actions.*;
	import idv.cjcat.stardust.common.clocks.*;
	import idv.cjcat.stardust.common.initializers.*;
	import idv.cjcat.stardust.common.math.*;
	import idv.cjcat.stardust.twoD.actions.*;
	import idv.cjcat.stardust.twoD.emitters.*;
	import idv.cjcat.stardust.twoD.initializers.*;
	import idv.cjcat.stardust.twoD.renderers.*;
	import idv.cjcat.stardust.twoD.zones.*;
	public class stardust extends Sprite {
		public function stardust() {
			var emitter:Emitter2D=new Emitter2D(new SteadyClock(0.5));
			var sprite:Sprite = new Sprite();
			addChild(sprite);
			var renderer:DisplayObjectRenderer=new DisplayObjectRenderer(sprite);
			renderer.addEmitter(emitter);
			var displayObjectClass:DisplayObjectClass=new DisplayObjectClass(star);
			var position:Position=new Position(new Line(0,0,500,0));
			var velocity:Velocity=new Velocity(new SinglePoint(0,5));
			emitter.addInitializer(displayObjectClass);
			emitter.addInitializer(position);
			emitter.addInitializer(velocity);
			var move:Move = new Move();
			var deathZone:DeathZone=new DeathZone(new RectZone(0,0,500,400),true);
			emitter.addAction(move);
			emitter.addAction(deathZone);
			var drift:RandomDrift = new RandomDrift();
			drift.randomX=new UniformRandom(0.1,0);
			var oriented:Oriented = new Oriented();
			oriented.offset=180;
			emitter.addAction(drift);
			emitter.addAction(oriented);
			addEventListener(Event.ENTER_FRAME, emitter.step);
		}
	}
}

That gives this result:

but I am not learing this engine for the sake of learning a particle engine… I am going to use it in my upcoming games so expect tutorials about using it in game design.

Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.