Create a Flash game like Snowflakes

Today I enjoyed a cute game called Snowflakes and I am about to show you how to create the main engine behing the game.

Snowflakes

The game is simple: a bunch of stars (snowflakes in the game, but I guess the author new saw the snow…) is falling from the sky, and you can affect their direction with your mouse, blowing them around.

Only two objects in this movie, the star and the mouse pointer.

This is the AS2 version, tomorrow I’ll publish the AS3 one.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// mouse cursor replacement
Mouse.hide();
_root.attachMovie("pointer","pointer",_root.getNextHighestDepth());
// max stars on stage
max_stars = 20;
// current stars on stage
stars_on_stage = 0;
// gravity
gravity = 0.1;
// this is the influence distance
// using influence and real_influence I perform the square root only once
// when the distance from the mouse and the star is less than real_influence
// then the star is affected by the mouse
influence = 625;
real_influence = Math.sqrt(influence);
// friction
friction = 0.9;
// divider, to make stars move slowly
divider = 50;
// main function
_root.onEnterFrame = function() {
	// should I add a star?
	if (stars_on_stage<max_stars) {
		//adding a star
		stars_on_stage++;
		starobj = _root.attachMovie("star", "star_"+x, _root.getNextHighestDepth(), {_x:Math.random()*450+25, _y:Math.random()*50-100});
		// star initial speed
		starobj.xspeed = 0;
		starobj.yspeed = 0;
		// function the star will execute at every frame
		starobj.onEnterFrame = function() {
			// gravity
			this.yspeed += gravity;
			// calculating the distance from the star and the mouse
			// without square roots
			dist_x = this._x-_root._xmouse;
			dist_y = this._y-_root._ymouse;
			distance = dist_x*dist_x+dist_y*dist_y;
			// if we are in the radius of influence...
			if (distance<influence) {
				// ...apply a force to the star
				// force is determined by mouse distance and speed
				xforce = mouse_speed*dist_x/divider;
				yforce = mouse_speed*dist_y/divider;
				this.xspeed += xforce;
				this.yspeed += yforce;
			}
			// adding friction 
			this.xspeed *= friction;
			this.yspeed *= friction;
			// updating position
			this._y += this.yspeed;
			this._x += this.xspeed;
			// make the star rotate
			this._rotation += (this.xspeed+this.yspeed);
			// if the star reaches the bottom of the stage, remove it
			if (this._y>300) {
				stars_on_stage--;
				this.removeMovieClip();
			}
		};
	}
};
// function to be executed by the mouse pointer
pointer.onEnterFrame = function() {
	// calculating the distance from the last point the mouse was spotted
	// and the current mouse position
	dist_x = this._x-_root._xmouse;
	dist_y = this._y-_root._ymouse;
	mouse_speed = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
	// minimum speed = minimum force applied
	if (mouse_speed<0.2) {
		mouse_speed = 0.2;
	}
	// updating pointer position
	this._x = _root._xmouse;
	this._y = _root._ymouse;
 
};

And here it is… now you can affect stars movement like in the original game.

Adjust gravity, influence, friction and divider to fine tune gameplay.

Download the source code.

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 4.86 out of 5)
Loading ... Loading ...
Flash Templates provided by Template Monster are pre-made web design products developed using Flash technology.
They can be easily customized to meet the unique requirements of your project.
Be my fan on Facebook and follow me on Twitter! Exclusive content for my Facebook fans and Twitter followers

This post has 9 comments

  1. robby

    on August 29, 2008 at 11:50 pm

    cute little game, but it sure could use some relaxing music :D lol.

  2. Doggy

    on August 30, 2008 at 11:01 am

    cool

  3. Nonitt

    on August 30, 2008 at 11:50 am

    this version is more easier than the real game :S

  4. Create a Flash game like Snowflakes - AS3 version : Emanuele Feronato

    on August 30, 2008 at 11:30 pm

    [...] announced in Create a Flash game like Snowflakes, here it is the AS3 [...]

  5. ericzoo

    on September 5, 2008 at 4:52 pm

    Hi, this is so nice. I plan to use it as basis for a game… i will be sure to notify you if my game is finished. Can i request a tutorial for a game like the Grow series specifically the seemingly random sequence of animation. thanks. You are a god amongst flash developers.

  6. junior

    on September 8, 2008 at 10:43 pm

    e presiso baixar que programa para mim fazer estes jogos

  7. Koi Games

    on September 17, 2008 at 4:24 pm

    Flash CS 3.

  8. Chrisby

    on December 8, 2008 at 5:52 am

    When you use a button to go to the next frame, the stars still come! How do you stop this?

  9. Sean

    on February 6, 2009 at 3:31 am

    I have the same problem. What I’m trying to do is remove the movieclip at the same time that the event happens to take it to the nexty frame. Yeah, it’s not working. Apparently, I’m missing parameters.