tag:blogger.com,1999:blog-64266369508310768782024-02-07T14:17:35.480-08:00FlashGameMakerOpen-Source AS3 Game EngineAngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-6426636950831076878.post-48874072236258824132012-11-21T13:06:00.004-08:002012-11-22T11:52:01.906-08:00Kawaii<b>Game Concept</b><br />
<div style="text-align: justify;">
The Kawaii project is a serie of games elaborated with FlashGameMaker in
collaboration with BladeSquad, a talented Graphist who worked for Ankama Studio. He pretty much came up with the ideas and arts.<b> </b>Together we imagined 3 concept games that we named <b>KawaiiWorld</b>, <b>KawaiiOlympic </b>and <b>KawaiiIsland</b>...</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://apps.facebook.com/kawaiiisland/"><img border="0" height="111" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7xw3CrYkJgr-6JHAu1M1auRTiKHEyKkpVhZsPTDYp91iEFiG8Cjd1yldh9012-zPoxpSNLZY-npT32a2WBgg3pIm9aMTWPSxcRLWlkSnMJRXQkv6XzhCYz6SqEYffzCnkAWeVMhtavjls/s200/kawaii.jpg" width="200" /></a></div>
<a name='more'></a><br />
<b>Kawaii World</b> is a platform game based on a circular map<b>. </b>The main idea was to used a planet rotating on itself but we couldn't find a good game mechanic.<b><br /></b><br />
<center>
<embed allowscriptaccess="always" base="http://angelstreetv2.free.fr/FlashGameMaker/" height="345" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="http://angelstreetv2.free.fr/FlashGameMaker/FlashGameMaker_KawaiiIsland.swf" type="application/x-shockwave-flash" width="400"></embed></center>
<br />
<b>Kawaii Olympic </b>is a simple arcade game inspired from Sega Olympic Game (or the most recent Mario and Sonic at the Olympic games)<b> </b><br />
<center>
<embed allowscriptaccess="always" base="http://angelstreetv2.free.fr/FlashGameMaker/" height="345" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="http://angelstreetv2.free.fr/FlashGameMaker/FlashGameMaker_KawaiiOlympic.swf" type="application/x-shockwave-flash" width="400"></embed></center>
<br />
<b>Kawaii Island </b>is an isometric social game<b> </b>game were you have take care of a baby and left on his own on a mysterious Island. Try the demo on <a href="http://apps.facebook.com/kawaiiisland/">Facebook </a>!<br />
<br />
<u>Development progress </u><br />
<div style="text-align: justify;">
We managed to get a descent User Interface and demo of what the game would look like. We even started to integrate the demo on Facebook. But the scope and perimter was not well defined so i dropped the project to focus on LittleFighterEvo which I believe will be easier to complete.</div>
<br />
<u>Screenshots</u><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkCR2vwfwSfWh9IxN_oSzfVvVrPxROo6_NpJcK1fBD1IfNxituoKGlObgpU14JpfEbaoP2TyXqFMNNQQ_l6IZ2r5AEXyIuDKDb4slGWABl-Mm12sMtRRpJM3rjeKdqNHM0ugi3o6NNYsVr/s1600/ui1.jpg"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkCR2vwfwSfWh9IxN_oSzfVvVrPxROo6_NpJcK1fBD1IfNxituoKGlObgpU14JpfEbaoP2TyXqFMNNQQ_l6IZ2r5AEXyIuDKDb4slGWABl-Mm12sMtRRpJM3rjeKdqNHM0ugi3o6NNYsVr/s200/ui1.jpg" width="200" /></a></td>
<td><a href="http://www.blogger.com/blogger.g?blogID=6426636950831076878"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipm3cbfLGbOW0DAAFXSr8LomvN1-uHon3jk2R_NXu09iO2QZhVSBlJisMbcILTkTvSifI8ooIF3ROqLBpe8r98gtPo6HCKh7MH4IB6uXzQHczPeF6SrfwoZONuuR8055Q8cp-KQp7enzOT/s1600/ui2.jpg"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipm3cbfLGbOW0DAAFXSr8LomvN1-uHon3jk2R_NXu09iO2QZhVSBlJisMbcILTkTvSifI8ooIF3ROqLBpe8r98gtPo6HCKh7MH4IB6uXzQHczPeF6SrfwoZONuuR8055Q8cp-KQp7enzOT/s200/ui2.jpg" width="200" /></a></td>
</tr>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgul4d3pU_slTtlrOr6rODOiztv7KAhGc9oULLtlMzyD8TgVTuDX18OC_pubcZ9F4ZDlR7HPQ-f8cO8yh0HLqjD2K1WWEjXXZ96SpXVtlDNfER-GFD2YH7AaTPQidVTDegUn7Cb-NQTdext/s1600/ui3.jpg"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgul4d3pU_slTtlrOr6rODOiztv7KAhGc9oULLtlMzyD8TgVTuDX18OC_pubcZ9F4ZDlR7HPQ-f8cO8yh0HLqjD2K1WWEjXXZ96SpXVtlDNfER-GFD2YH7AaTPQidVTDegUn7Cb-NQTdext/s200/ui3.jpg" width="200" /></a>
</td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj27lb6lluIhSdz4cO44vyQ1zw6DGMPqpIHwjhLP7kZdWn8pHLVHIMnjo7uVsrikQvbPig2WSBSBmkWXPVGGc6kZOvDAsPIbFOpDC8fdyezWHIajptDuR9D-jn7teLdfK4eO9Y52WJjveks/s1600/kawaiifbscreen.jpg"><img border="0" height="142" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj27lb6lluIhSdz4cO44vyQ1zw6DGMPqpIHwjhLP7kZdWn8pHLVHIMnjo7uVsrikQvbPig2WSBSBmkWXPVGGc6kZOvDAsPIbFOpDC8fdyezWHIajptDuR9D-jn7teLdfK4eO9Y52WJjveks/s200/kawaiifbscreen.jpg" width="200" /></a>
</td>
</tr>
</tbody></table>
AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com0tag:blogger.com,1999:blog-6426636950831076878.post-14187417115419507272012-11-19T13:01:00.001-08:002012-11-22T11:52:39.880-08:00Finite Machine State for gamingI have made my first tutorial on the topic Finite Machine State. I tried to apply this concept to simple gaming examples. FSM are mainly used for AI but could also be used for other stuff such sa organising game workflow. Just a tricky example with the famous puzzle game <span class="game_strong"><span style="color: #cc0000;">Wolf, Sheep & Cabbage</span>.</span><br />
<span class="game_strong">Rules are simples, you have to h</span>elp aman in aboat to move the wolf, the sheep and the box of cabbage
to the other side of the lake. You can only bring one of these with you at a time. It is very
important to note that the unguarded wolf will eat the sheep and the
unguarded sheep will eat the cabbage, when the man isn’t around.Without saying more I can tell you that FSM can help you create this king of brain game.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcO3VyI0JtsSO2fIRy4GlTjOiN5tUK_jpVaAT0-X-NcuQpBsSmXU_-6Pp_wDgGC5_SNfS6_Bi1SvLtnGNa0EetrnXow_GpiKTQsxmjQqaagoLIyNgGreH5sQvXT2ZjHwpL5IBXY8eQgLe/s1600/wolf1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcO3VyI0JtsSO2fIRy4GlTjOiN5tUK_jpVaAT0-X-NcuQpBsSmXU_-6Pp_wDgGC5_SNfS6_Bi1SvLtnGNa0EetrnXow_GpiKTQsxmjQqaagoLIyNgGreH5sQvXT2ZjHwpL5IBXY8eQgLe/s1600/wolf1.gif" /></a></div>
<br />
French version available on <a href="http://forums.mediabox.fr/wiki/tutoriaux/flashplatform/jeux/machinesetats" target="_blank">Mediabox</a>.
<a name='more'></a><br />
<hr />
<span style="font-size: large;">Finite Machine State [English Version]</span><br />
<span style="color: #cc0000;">-- I am currently translating...I used googled translation to fasten the process...Working in progress</span><br />
<br />
<u>Introduction</u><br />
The finite state machines also called <span class="st">finite-state automaton or state machine</span>, is an abstract concept used in and mathematical
computer. They are used in various fields such as electronics, robotics and programming. PLCs are often used to model complex problems where there is a finite number of possibilities.
<br />
"A <b>finite-state machine</b> (<b>FSM</b>) is an abstract concept often used to design both computer programs and sequential logic circuits. It is conceived as an abstract machine that can be in one of a finite number of <i>states</i>. The machine is in only one state at a time; the state it is in at any given time is called the <i>current state</i>. It can change from one state to another when initiated by a triggering event or condition, this is called a <i>transition</i>. A particular FSM is defined by a list of its states, and the triggering condition for each transition."(Wikipedia)<br />
<br />
<div class="level4">
A state machine is essentially composed of: <br />
<ul>
<li class="level1"><div class="li">
States (A starting element and any number of elements come) </div>
</li>
<li class="level1"><div class="li">
Actions (or functions) </div>
</li>
<li class="level1"><div class="li">
Events </div>
</li>
<li class="level1"><div class="li">
Transition </div>
</li>
</ul>
<ul>
<li class="level1"><div class="li">
States determine the context in which the actions are executed. It can only be in one state at a time. </div>
</li>
<li class="level1"><div class="li">
The actions represent the work to be performed by state. </div>
</li>
<li class="level1"><div class="li">
Events must determine when carrying out the actions. </div>
</li>
<li class="level1"><div class="li">
Transitions determine how to move from one state to another </div>
</li>
</ul>
(<a class="urlextern" href="http://lamsonproject.org/docs/introduction_to_finite_state_machines.html" rel="nofollow" target="_blank" title="http://lamsonproject.org/docs/introduction_to_finite_state_machines.html">http://lamsonproject.org/docs/introduction_to_finite_state_machines.html</a> )</div>
<br />
<br />
<u><span style="color: black;">Example: The wolf, the goat and the cabbage</span></u> <br />
<div class="level4">
<b>(Extract from article</b><a class="urlextern" href="http://www.liafa.jussieu.fr/%7Ejep/PDF/Automates.pdf" rel="nofollow" target="_blank" title="http://www.liafa.jussieu.fr/ jep ~ / PDF / Automates.pdf">Finite Automata</a> by Jean-Eric Pin)<br />
"A smuggler must move from one bank to another wolf, a goat and a salad. However, the boat can carry only one passenger out of himself. Of course, he can not leave the wolf and the goat alone unattended, otherwise the wolf will eat the goat. Same thing for the couple goat salad because the goat dream of eating salad. Can you help the ferryman? "(Example also presents in the game Professor Layton on Nintendo DS) <br />
<br />
To solve this puzzle it is possible to use a state machine. <br />
<ul>
<li class="level1"><div class="li">
You can define the <b>states</b> by the presence of players on the opposite bank (or similarly the bank of origin). The possible states are as follows: </div>
</li>
<li class="level1"><div class="li">
N / A: no player on the opposite bank </div>
</li>
<li class="level1"><div class="li">
S: Salad on the opposite bank </div>
</li>
<li class="level1"><div class="li">
C: Goat on the opposite bank </div>
</li>
<li class="level1"><div class="li">
L: Wolf on the opposite bank </div>
</li>
<li class="level1"><div class="li">
P: Ferryman on the opposite bank </div>
</li>
<li class="level1"><div class="li">
And any combination SC, SL, SP, CL, CP, SCL, SCP, CLP, SCLP </div>
</li>
</ul>
We are 14 states <br />
<ul>
<li class="level1"><div class="li">
Possible <b>actions</b> are: </div>
</li>
<li class="level1"><div class="li">
Cross only P </div>
</li>
<li class="level1"><div class="li">
Cross the wolf L </div>
</li>
<li class="level1"><div class="li">
Cross C with goat </div>
</li>
<li class="level1"><div class="li">
Cross salad with S </div>
</li>
</ul>
<ul>
<li class="level1"><div class="li">
The <b>events</b> are triggered by the person trying to make the puzzle. It triggers the action was performed. </div>
</li>
</ul>
<ul>
<li class="level1"><div class="li">
<b>Transitions</b> are passages from one bank to another (0 / P 0/SP, 0/CP, 0/LP, P / SP, P / 0, SP / 0 etc ...) </div>
</li>
</ul>
</div>
<u>Transition diagram></u> <br />
<div class="level4">
A state machine can be represented by a transition diagram. Two possible solutions are represented by the transition diagram below: <br />
<a class="media" href="http://forums.mediabox.fr/wiki/_detail/tutoriaux/flashplatform/jeux/enigme.jpg?id=tutoriaux%3Aflashplatform%3Ajeux%3Amachinesetats" title="tutorials: flashplatform games: enigme.jpg"><img alt="" class="media" src="http://forums.mediabox.fr/wiki/_media/tutoriaux/flashplatform/jeux/enigme.jpg" /></a></div>
<u>Implementation</u> <br />
<div class="level2">
Generally a state machine is programmed intuitively conditionally in a single class.
It is however essential for complex systems separate states into
different classes to facilitate the development and maintenance of the
code. </div>
<br />
<u>Binary Example:</u>The light<br />
<div style="text-align: center;">
<a class="media" href="http://forums.mediabox.fr/wiki/_detail/playground/exemple_etats_binaires.png?id=tutoriaux%3Aflashplatform%3Ajeux%3Amachinesetats" title="playground: exemple_etats_binaires.png"><img alt="" class="mediacenter" src="http://forums.mediabox.fr/wiki/_media/playground/exemple_etats_binaires.png" /></a></div>
<div class="level4">
<br />
- Two states: On or Off (lightIsOn / lightIsOff)<br />
- Two actions: Turn on or
Turn off the light (SwitchOn, switchOff)<br />
- An event: Press the switch
(Key.isDown)<br />
- Two transitions: On /Off and Off/On <br />
<br />
<code class="prettyprint">
if (Key.isDown && lightIsOn) </code><br />
<code class="prettyprint"> switchOff (); </code><br />
<code class="prettyprint">else if (Key.isDown && lightIsOff) </code><br />
<code class="prettyprint"> SwitchOn ();
</code><br />
<br />
When a machine is composed of a large number of states, if using, and / or switch to encode a state machine is not enough. To avoid overcrowded classrooms of thousands of lines of code, it becomes necessary to organize the code in several classes. </div>
<br />
<u><span style="color: black;">Practical Example of PLC: The security code</span></u> <br />
<div class="level5">
<b>(Excerpt from the course</b> <span style="color: black;"><a class="urlextern" href="http://translate.googleusercontent.com/translate_c?depth=1&hl=fr&rurl=translate.google.fr&sl=fr&tl=en&twu=1&u=http://jacques.weber.pagesperso-orange.fr/telecharge/automates.pdf&usg=ALkJrhhX5Q5Mchnj3v0rRVXP3zumbhXAkw" rel="nofollow" target="_blank" title="http://jacques.weber.pagesperso-orange.fr/telecharge/automates.pdf">Computer Industrial PLCs</a> by Jacques Weber / Souhil Megherbi) </span><br />
<span style="color: black;"><a class="media" href="http://forums.mediabox.fr/wiki/_detail/tutoriaux/flashplatform/jeux/digicode.jpg?id=tutoriaux%3Aflashplatform%3Ajeux%3Amachinesetats" title="tutorials: flashplatform games: digicode.jpg"><img alt="digicode.jpg" class="mediacenter" height="185" src="http://forums.mediabox.fr/wiki/_media/tutoriaux/flashplatform/jeux/digicode.jpg" title="digicode.jpg" width="400" /></a></span> <br />
"A digital code comprises a 16-key keypad which constitutes the input
of a controller whose output controls only the opening of a door. We restrict ourselves to a rudimentary digital code in which the PIN is fixed once and for all, without modification possible. Imagine, for example, the opening of the door is achieved by providing the C94 (as cachan + department). Obviously the controller must be informed that the user has opened the door, it is the role of signal "open". ' </div>
<br />
<u><span style="color: black;">Modeling finite state machine</span></u> <br />
<div class="level5">
The work of the PLC can be summarized by the following diagram: <br />
<span style="color: black;"><a class="media" href="http://forums.mediabox.fr/wiki/_detail/tutoriaux/flashplatform/jeux/puzzle-adventures-2.jpg?id=tutoriaux%3Aflashplatform%3Ajeux%3Amachinesetats" title="tutorials: flashplatform games: puzzle-adventures-2.jpg"><img alt="puzzle-adventures-2.jpg" class="mediacenter" height="120" src="http://forums.mediabox.fr/wiki/_media/tutoriaux/flashplatform/jeux/puzzle-adventures-2.jpg" title="puzzle-adventures-2.jpg" width="400" /></a></span> </div>
<u><span style="color: black;">Conditional Programming</span></u> <br />
<div class="level4">
In the example of the three-digit security code, use nested if is
reasonable but we can already realize how the code will become more
complex if you choose to create a digital code 5 or 6 digits. <br />
<code class="prettyprint">
var state: int = 0; </code><br />
<code class="prettyprint">if (Key.isDown) { </code><br />
<code class="prettyprint"> if (state == 0) { </code><br />
<code class="prettyprint"> if (C == key.keyCode) { </code><br />
<code class="prettyprint"> state = 1; </code><br />
<code class="prettyprint"> else {</code><br />
<code class="prettyprint"> state = 0; </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint"> }else if (state == 1) { </code><br />
<code class="prettyprint"> if (key.keyCode == 9) { </code><br />
<code class="prettyprint"> state = 2; </code><br />
<code class="prettyprint"> </code><code class="prettyprint"><code class="prettyprint">}</code>else {</code><br />
<code class="prettyprint"> state = 0; </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint"> }else if (state == 2) { </code><br />
<code class="prettyprint"> if (key.keyCode == 4) { </code><br />
<code class="prettyprint"> open(); </code><br />
<code class="prettyprint"> </code><code class="prettyprint"><code class="prettyprint">}</code>else { </code><br />
<code class="prettyprint"> state = 0; </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint">}
</code>
</div>
<br />
<u><span style="color: black;">Object Oriented Programming in the state machine</span></u> <br />
<div class="level4">
An example of a structure used to program a state machine OOP (inspired RichardLord) <br />
<ul>
<li class="level1"><div class="li">
A class that stores FiniteMachineState states and defines the transitions from one state to another. </div>
</li>
<li class="level1"><div class="li">
An interface that defines the methods IEtat Enter, Exit and Update are the actions to perform. </div>
</li>
<li class="level1"><div class="li">
A class that implements the interface IEtat State. </div>
</li>
<li class="level1"><div class="li">
Several states that classes inherits from the State. </div>
</li>
</ul>
Each <b>state</b> is independent. <br />
<b>Events</b> (key press) can trigger <b>actions</b> (open the door) under certain conditions and / or may result in <b>transitions</b> (State1/State2, State1/State3, State2/State1, state2, STATE3, State3/State1). <br />
MachinesEtats is the main class defined as default application
(DocumentClass) FiniteStateMachine It instantiates the class that stores
the state defines the initial state and the current state, and finally
manages transitions. In our example of digital code we must define the three states with the initial state as State1. Then adds a listener to handle keyboard events. <br />
<br />
<code class="prettyprint">private function _start (): void {
// - Instantiate the state machine
_fsm FiniteStateMachine = new ();
// - 3 states are added to the machine _fsm.addState ("State1", new State1 (_fsm)); </code><br />
<code class="prettyprint"> _fsm.addState ("state2", new state2 (_fsm)); </code><br />
<code class="prettyprint"> _fsm.addState ("STATE3", new STATE3 (_fsm)); </code><br />
<code class="prettyprint"> // Add a listener to keyboard events </code><br />
<code class="prettyprint"> addEventListener (KeyboardEvent.KEY_DOWN, _onKeyDown, false, 0, true); </code><br />
<code class="prettyprint">} </code><br />
<br />
<code class="prettyprint">// When you press a key on the function onKeyDown call the current state </code><br />
<code class="prettyprint">private function _onKeyDown ($ evt: KeyboardEvent): void{ _fsm.currentState.onKeyDown ($ evt); </code><br />
<code class="prettyprint"> _dynamicTF.text evt.keyCode.toString = $ () // Displays a textField the key pressed
} </code><br />
<br />
ISTATE is the basic interface <br />
<code class="prettyprint">
ISTATE {</code><br />
<code class="prettyprint">public interface
function enter ($ previousState: State): void // Called On entering the state </code><br />
<code class="prettyprint">function exit ($nextState: State): void // Called on leaving the state
function update (): void / / Called while in the state
finiteStateMachine </code><br />
<code class="prettyprint">function get (): FiniteStateMachine;
finiteStateMachine </code><br />
<code class="prettyprint">function set ($ finiteStateMachine: FiniteStateMachine): void;
}
</code><br />
<br />
IDigiCodeState interface is specially created for the tutorial. It defines the action following the keyDown event <br />
<code class="prettyprint">
flash.events.KeyboardEvent import; </code><br />
<code class="prettyprint">IDigiCodeState {</code><br />
<code class="prettyprint"> public interface
function onKeyDown ($evt:KeyboardEvent): void // Called on keydown event </code><br />
<code class="prettyprint">} </code><br />
<br />
State is the abstract class that implements both interfaces <br />
<code class="prettyprint">
flash.events.KeyboardEvent import; </code><br />
<code class="prettyprint">public class State implements ISTATE, {</code><br />
<code class="prettyprint"> IDigiCodeState
protected var _finiteStateMachine: FiniteStateMachine = null; </code><br />
<code class="prettyprint"> public function State (fms: FiniteStateMachine = null): void { </code><br />
<code class="prettyprint"> _initVar (fms)
}
// Init Var</code><br />
<br />
<code class="prettyprint"> private function _initVar (fms: FiniteStateMachine = null): void {
_finiteStateMachine = fms; </code><br />
<code class="prettyprint">} </code><br />
<br />
<code class="prettyprint">public function set ($finiteStateMachine: FiniteStateMachine):void{ </code><br />
<code class="prettyprint"> _finiteStateMachine = $ finiteStateMachine; </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">public function get finiteStateMachine () {</code><br />
<code class="prettyprint"> FiniteStateMachine
_finiteStateMachine return; </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">public function onKeyDown ($evt: KeyboardEvent): void { </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">public function enter ($previousState: State): void { </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">public function update (): void { </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">public function exit ($nextState: State): void { </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">}
</code><br />
<br />
<br />
State1 is the initial state: None entered digit <br />
<code class="prettyprint"><code class="prettyprint">import </code>flash.events.KeyboardEvent; </code><br />
<code class="prettyprint">public class State1 extends State {// inherits from State </code><br />
<code class="prettyprint">public function State1 ($fms: FiniteStateMachine = null) { </code><br />
<code class="prettyprint"> super ($ fms); </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint">// ------ On Key Down ------------------------------------ </code><br />
<code class="prettyprint">override public function onKeyDown ($ evt: KeyboardEvent): void { </code><br />
<code class="prettyprint"> if ($ 67 == evt.keyCode) {// 67 is keycode for the C </code><br />
<code class="prettyprint"> trace ("Transition to State1 state2"); </code><br />
<code class="prettyprint"> _finiteStateMachine.changeStateByName ("STATE2"); </code><br />
<code class="prettyprint"> else {</code><br />
<code class="prettyprint"> trace ("Remain in State1"); </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint">}
</code><br />
<br />
State2: is the second state: A number entered <br />
<code class="prettyprint"><code class="prettyprint">import </code>flash.events.KeyboardEvent;</code><br />
<code class="prettyprint"> public class State extends state2 {// inherits from State </code><br />
<code class="prettyprint"> public function state2 ($ fms: FiniteStateMachine = null) { </code><br />
<code class="prettyprint"> super ($ fms);
} </code><br />
<code class="prettyprint">function onKeyDown ($ evt: KeyboardEvent): void { </code><br />
<code class="prettyprint"> if ($ 57 == evt.keyCode) {// 57 is the keycode for 9 </code><br />
<code class="prettyprint"> trace ("Transition to STATE3 state2"); </code><br />
<code class="prettyprint"> _finiteStateMachine.changeStateByName ("STATE3"); </code><br />
<code class="prettyprint"> }else {</code><br />
<code class="prettyprint"> trace ("Back State1"); </code><br />
<code class="prettyprint"> _finiteStateMachine.changeStateByName ("State1"); </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint">}</code><br />
<br />
<code class="prettyprint"></code>STATE3 is the latest state: Two digits entered <br />
<code class="prettyprint"><code class="prettyprint">import </code>flash.events.KeyboardEvent; </code><br />
<code class="prettyprint">public class STATE3 extends State {// inherits from State </code><br />
<code class="prettyprint">public function STATE3 ($ fms: FiniteStateMachine = null) { </code><br />
<code class="prettyprint"> super ($ fms); </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint">// ------ On Key Down ------------------------------------ </code><br />
<code class="prettyprint">override public function onKeyDown ($ evt: KeyboardEvent): void { </code><br />
<code class="prettyprint"> if ($ 52 == evt.keyCode) {// 52 is the keycode for 4 </code><br />
<code class="prettyprint"> _open () </code><br />
<code class="prettyprint"> </code><code class="prettyprint"><code class="prettyprint">}</code>else{ </code><br />
<code class="prettyprint"> trace ("Return to State1"); </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint"> _finiteStateMachine.changeStateByName ("State1"); </code><br />
<code class="prettyprint">} </code><br />
<code class="prettyprint"> private function _open(): void { </code><br />
<code class="prettyprint"> trace ("Open Door") // Trace Door Open
trace ("Back State1"); </code><br />
<code class="prettyprint"> _finiteStateMachine.changeStateByName ("State1") // Go back to the initial state </code><br />
<code class="prettyprint"> } </code><br />
<code class="prettyprint">}
</code>
</div>
<br />
<u><span style="color: black;">Sources (open source):</span></u><br />
<div style="text-align: center;">
<img alt="http://forums.mediabox.fr/wiki/lib/plugins/wrap/images/note/48/download.png" class="decoded" src="http://forums.mediabox.fr/wiki/lib/plugins/wrap/images/note/48/download.png" /><span style="color: black;"> </span></div>
<div style="text-align: center;">
<span style="color: black;"><a class="media mediafile mf_zip" href="http://forums.mediabox.fr/wiki/_media/tutoriaux/flashplatform/jeux/source.zip" title="tutorials: flashplatform games: Source.zip">Source.zip</a> </span></div>
<div style="text-align: center;">
<span style="color: black;">(heavily inspired tutorial RicharLord) </span></div>
<br />
<u><span style="color: black;">Conclusion</span></u> <br />
<div class="level2">
A state machine is the conceptualization of a situation, a system or a
problem in the form of states, actions, transitions and events. <br />
We can say that if it is possible to represent a structure in the form
of states, actions, transitions and events, then this is a conceptual
representation or state machine.</div>
<span style="color: black;"><u>Another practical example:</u> <span style="color: black;">C</span>ar</span> <br />
<div class="level4">
To go further, the site <span style="color: black;"><a class="urlextern" href="http://translate.googleusercontent.com/translate_c?depth=1&hl=fr&rurl=translate.google.fr&sl=fr&tl=en&twu=1&u=http://active.tutsplus.com/tutorials/actionscript/the-power-of-finite-state-machines-concept-and-creation/&usg=ALkJrhjOdm02tyE0TERcqtUC1hhQGIpHKA" rel="nofollow" target="_blank" title="">active.tutplus</a> graphically presents the more complex case of a car. In this example, state machines are very useful for organizing code and facilitate maintenance. </span><br />
<span style="color: black;"><a class="media" href="http://forums.mediabox.fr/wiki/_detail/playground/voiture.jpg?id=tutoriaux%3Aflashplatform%3Ajeux%3Amachinesetats" title="playground: voiture.jpg"><img alt="voiture.jpg" class="mediacenter" height="245" src="http://forums.mediabox.fr/wiki/_media/playground/voiture.jpg" title="voiture.jpg" width="400" /></a></span> </div>
<u><span style="color: black;"><span style="color: black;">Useful </span>Links</span></u>: <br />
<div class="level2">
- <span style="color: black;"><a class="urlextern" href="http://translate.googleusercontent.com/translate_c?depth=1&hl=fr&rurl=translate.google.fr&sl=fr&tl=en&twu=1&u=http://www.richardlord.net/blog/finite-state-machines-for-ai-in-actionscript&usg=ALkJrhj9QdyPi9HeFN6QG0dLttXAXmrJ1Q" rel="nofollow" target="_blank" title="http://www.richardlord.net/blog/finite-state-machines-for-ai-in-actionscript">Richard Lord</a> : Blog </span><br />
- <span style="color: black;"><a class="urlextern" href="http://translate.googleusercontent.com/translate_c?depth=1&hl=fr&rurl=translate.google.fr&sl=fr&tl=en&twu=1&u=http://active.tutsplus.com/tutorials/actionscript/the-power-of-finite-state-machines-concept-and-creation&usg=ALkJrhhmzCjtQaHPL3DOd5JvicqHjEfIdA" rel="nofollow" target="_blank" title="">ActiveTutsPLus</a> : Tutorial</span></div>
AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com0tag:blogger.com,1999:blog-6426636950831076878.post-64649489560221709072012-11-19T11:26:00.001-08:002012-11-21T12:31:09.358-08:00Little Fighter EVO<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0IhdpvRRcbunXQrUbkNqIFGc5XgeVjrVINarBqYfaCAGLxYNY8O7Qk0Q-UHQYvQf9luxT_S0BKYw-8-Sg8ud9ExVMhQQ0bT2-fqktbxzqQlEg3GB1JjpdNggG5MVn6j-HDPJ4TWgqzMm8/s1600/davis_f.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0IhdpvRRcbunXQrUbkNqIFGc5XgeVjrVINarBqYfaCAGLxYNY8O7Qk0Q-UHQYvQf9luxT_S0BKYw-8-Sg8ud9ExVMhQQ0bT2-fqktbxzqQlEg3GB1JjpdNggG5MVn6j-HDPJ4TWgqzMm8/s1600/davis_f.png" /></a><br />
<a href="http://angelstreetv2.free.fr/LittleFighterEvo/swf/LittleFighterEvo.html" target="_blank"><b>Little Fighter EVO</b></a> is a fun and light game for all ages.During the game you will control fighters, with special individual attacks and abilities for each fighter.The game includes one on one battles, team battles, stages, levels, tournaments and much more.You can even play net battles against your internet buddies. The game was originally made by <a href="http://lf2.net/">Marti and Starky Wong</a> for PC.<br />
<br />
I am currently working on a web and mobile version <a href="http://angelstreetv2.free.fr/LittleFighterEvo/swf/LittleFighterEvo.html" target="_blank">Little Fighter Evo</a>, powered by FlashGameMaker.
<br />
<a name='more'></a><br />
<b><span style="font-size: small;">Development Plan</span></b><br />
<div style="text-align: left;">
I plan to develop this project in two steps. </div>
<div style="text-align: left;">
First of all, I need to recreate the gameplay of the original game. </div>
<div style="text-align: left;">
In second, I will add the Evolution my French touch to this game with a social integration onf FB, new game mods such as a Story mod where you can create your own fighter and make it evolves or a Death mod where I will try to create the strongest AI that I will defy you to win against.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXXOXHqJoifnE6CrRuCkQB8V0bwdKDwOV_3QCwPNJS-2DgrtrWYTkXLusXfuRGkDK7HtlRttro-5b0YjSh3hEP2T2jvDzqrsZCRIUFij17oxHpio0wjBcHnfjrtRjqRha8BG3mOAl9uBry/s1600/Little+Fighter+2-2.0b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXXOXHqJoifnE6CrRuCkQB8V0bwdKDwOV_3QCwPNJS-2DgrtrWYTkXLusXfuRGkDK7HtlRttro-5b0YjSh3hEP2T2jvDzqrsZCRIUFij17oxHpio0wjBcHnfjrtRjqRha8BG3mOAl9uBry/s200/Little+Fighter+2-2.0b.jpg" width="167" /></a></div>
<div style="text-align: center;">
<b><a href="http://apps.facebook.com/littlefighterevo" target="_blank">Facebook App Here</a></b><br />
<b><a href="http://angelstreetv2.free.fr/LittleFighterEvo/swf/LittleFighterEvo.html" target="_blank">Mirror Link</a> </b>
</div>
<br />
<b>Screenshot<span style="color: #0000ee;"><span style="font-size: large;"> </span></span>(original game)</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinzajFuOBADTyVa2JrMOMXaB-5T2p6_ix9JdxC6H2Z3jjome8qu8iGvN6uNkfzlViZLcSsoEEbUTPia2gycSz24hDOjmKH4q2xcZDAEqtDfNCzr7P-y_5CxTdTmKW9OqgOsqIRZz5nl9bB/s1600/little_fighter_games_action-20126.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinzajFuOBADTyVa2JrMOMXaB-5T2p6_ix9JdxC6H2Z3jjome8qu8iGvN6uNkfzlViZLcSsoEEbUTPia2gycSz24hDOjmKH4q2xcZDAEqtDfNCzr7P-y_5CxTdTmKW9OqgOsqIRZz5nl9bB/s400/little_fighter_games_action-20126.jpeg" width="400" /></a></div>
AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com1tag:blogger.com,1999:blog-6426636950831076878.post-19934496391332548142012-11-19T11:20:00.002-08:002012-11-19T12:04:15.122-08:00Iann Bunnies BenchMarkI tried to recreate the <a href="http://blog.iainlobb.com/2010/11/display-list-vs-blitting-results.html" target="_blank">bunnies experiment of Iann Lobb</a> using FlashGameMaker. Following is the result of my experiment:<br />
<center>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhNwYxSphaWg3BSyRhunYpwlFuDbPRxeiEhqantJz0J2fnjDUr-QQLgilRNMMK8cDCYRMyum4kkxhBrIZJoA2HcFYZY-KF6ff_eWu0BngxNSM7XwudnRHZIDokprCF_zTVEng9YxEVyVwM/s1600/Sans+titre2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhNwYxSphaWg3BSyRhunYpwlFuDbPRxeiEhqantJz0J2fnjDUr-QQLgilRNMMK8cDCYRMyum4kkxhBrIZJoA2HcFYZY-KF6ff_eWu0BngxNSM7XwudnRHZIDokprCF_zTVEng9YxEVyVwM/s1600/Sans+titre2.jpg" /></a><br />
<b><a href="http://angelstreetv2.free.fr/FGMv2.1/demo/ianBunnyMark.html" target="_blank">Click Here</a></b> <a href="http://code.google.com/p/flashgamemaker/downloads/list" target="_blank"><b>Source </b></a></center>
<br />AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com0tag:blogger.com,1999:blog-6426636950831076878.post-53692951038221975452012-11-19T11:18:00.001-08:002012-11-19T11:59:58.741-08:00Mini games demoWhen I was working for TheBroth on the game BarnBuddy I was explained that an issue was the limited numbers of sprites they could display on the screen. Therefore, I tried to show them what they could do to resolved this issue. Using FlashGameMaker you can display easily 300 clips in the same time. They can be swf or spritesheets based. I also worked on mini games we could integrate to the original game to level up the fun. Please have a look:<br />
<table cellspacing="5"><tbody>
<tr><td><b><a href="http://angelstreetv2.free.fr/FGMv2/demo/barnbuddy.html" target="_blank">Barnbuddy Experiment</a></b>
<span style="font-size: large;"><a href="http://www.blogger.com/"><img border="0" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrI25Ol832IifpSJ0YoYq2Yyz2kQ6_-woG1ca6JHFSmPb3-ffGSwCeKvdLM1iQuOGDFlJRM-_5riEIhLrpl36ykJz3Q70Vi6lo4nMjzoLx9HHfBqvrbsrW0tEJFGxPMGt_FSqfuYvKJ6Y0/s200/bunny.jpg" width="200" /></a> </span>
</td>
<td><b><a href="http://angelstreetv2.free.fr/FGMv2/demo/barnbuddy_fox_minigame.swf" target="_blank">Run Foxy! Run!</a></b> <b><a href="http://angelstreetv2.free.fr/FGMv2/demo/barnbuddy_fox_minigame2.swf" target="_blank">Jump Foxy! Jump!</a></b>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_d9HBwkzqPzyuMYmYlWPRxORsvAh9tIjv9dAiZIKLLh1ovrX6ZBr5jvWP0lv7RxAK1Rf8oXfCa5DBtLtediZgqyLnn5-F-a8XVaXkt6K8X4yXN9Y3C_vzY8NjWF2AtAyRoxBMa1Y5MqcG/s1600/fox.jpg" style="clear: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_d9HBwkzqPzyuMYmYlWPRxORsvAh9tIjv9dAiZIKLLh1ovrX6ZBr5jvWP0lv7RxAK1Rf8oXfCa5DBtLtediZgqyLnn5-F-a8XVaXkt6K8X4yXN9Y3C_vzY8NjWF2AtAyRoxBMa1Y5MqcG/s200/fox.jpg" width="200" /></a>
</td>
</tr>
</tbody></table>
<div style="color: #cc0000;">
<a name='more'></a><span style="font-size: large;">The Barnbuddy ex<span style="font-size: large;">periment</span></span></div>
Largely inspired from <a href="http://blog.iainlobb.com/2010/11/display-list-vs-blitting-results.html">Iain Lobb</a> the barnbuddy experiment is a demo showing that with a nice copypixel and blitting we can display a significant amount of movieclip with a reasonable fps and memory. Also the depth-sorting is properly managed please try to drag some foxes or pandas.<br />
<div style="text-align: center;">
<b><a href="http://angelstreetv2.free.fr/FGMv2/demo/barnbuddy.html" target="_blank">Click Here</a></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/"></a></div>
<div style="color: #cc0000;">
<span style="font-size: large;">Doodle Fox Game</span></div>
Google have launched what they called Doodle Games. Its a bunch of casual games about the Olympic Games. The HTML 5 integration is bluffing bug the concept is quite old. I was also working on mini games of the same kind for Barnbuddy. Check them out on the links below: <br />
<div style="text-align: center;">
<b><a href="http://angelstreetv2.free.fr/FGMv2/demo/barnbuddy_fox_minigame.swf" target="_blank">Run Foxy! Run!</a></b>
<span style="color: #cc0000;"><b></b></span><b><a href="http://angelstreetv2.free.fr/FGMv2/demo/barnbuddy_fox_minigame2.swf" target="_blank">Jump Foxy! Jump!</a></b></div>
AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com0tag:blogger.com,1999:blog-6426636950831076878.post-14874006960446296502012-11-19T10:20:00.000-08:002012-11-19T11:59:42.118-08:00How Big is your TileMap?A tile based game is a game based on tiles as fundamental element.<br />
Many famous games such as Zelda use this concept.<br />
A common problem for tile based game is the map creation.<br />
We often are limited in terms of size. But I found a way around this issue.<br />
I use a combination of map comression with the Run-Length alogrithm, copyPixel and Blitting to display a huge map.<br />
<br />
<div style="text-align: center;">
Try it yourself ! <b><a href="http://angelstreetv2.free.fr/FGMv2/demo/tileMap.html" target="_blank">Click Here</a></b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://angelstreetv2.free.fr/FGMv2/demo/tileMap.html" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img align="top" border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49Rkovxq1clTl7ze3laeeKFvSAG0tIuj_EsW9aoT7kMBBACC-aH6POiIWle6DbNI4VzOIalT8GcGzvI-tR_sMYJO0e4ho_iJt1tnYc6Vxbhm67vjR0jiwbGofsW7fP9lw733ipkZ1CNW_/s320/tileMapPreview.jpg" width="320" /></a></div>
<div style="text-align: center;">
<b>(</b>Please scroll the map with your mouse and try to reach the edge of this gigantic map of 500.000 tiles.)</div>
AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com0tag:blogger.com,1999:blog-6426636950831076878.post-81577661191504464632010-10-28T18:54:00.001-07:002012-10-05T10:58:58.021-07:00Presentation<center>
<embed allowscriptaccess="always" base="http://angelstreetv2.free.fr/FlashGameMaker/" height="345" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="http://angelstreetv2.free.fr/FlashGameMaker/FlashGameMaker_KawaiiIsland.swf" type="application/x-shockwave-flash" width="400"></embed></center>
<br />
<b>What is FlashGameMaker?</b><br />
FlashGameMaker is a game engine. <br />
FGM makes it easy for Flash ActionScript game developers to make 2D side-scrolling and isometric action games. <br />
Built in AS3, FGM is an open-source collaborative project. The main goal of FlashGameMaker is to facilitate and enhance the quality of web games. <br />
<a name='more'></a><b>Context</b><br />
<a href="http://code.google.com/p/flashgamemaker/">FlashGameMaker</a> answer to the needs of people to create games. Thanks to its flexible entity-component architecture, FlashGameMaker permits people to create their own games in no time without having strong skills in programmation.<br />
<br />
<b>Community</b><br />
<a href="http://code.google.com/p/flashgamemaker/">FlashGameMaker</a> is not only aimed to developer. Graphist, sound artists or writter can contribute by providing ressources or selling them on the portail (soon available). Moreover, all games created with FGM are considered intellectual property. Therefore, being part of the community will permits people to share or market their talents.<br />
<br />
<b>Collaboration</b><br />
<a href="http://groups.google.com.au/group/flashgamemaker">Join us</a> on Google Group. Coders, graphist, sound artists, writers and web designers are welcome to catch with us and participate to the project. You can also contact me at joachim_djibril[at]hotmail.com.<br />
<br />
<b>Games</b><br />
<span style="color: orange;">Kawaii-Island</span> is one of the first game made with FlashGameMaker in collaboration with BladeSquad a talented graphist from Ankama Studio. The game is in working progress. Try <a href="http://flashgamemakeras3.blogspot.com/p/marketing.html">it </a>now!!!AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com2tag:blogger.com,1999:blog-6426636950831076878.post-16358710952097641922010-10-28T18:53:00.001-07:002012-11-17T14:56:03.731-08:00Monetizing<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh4qxtfC4ojswPxZd9LTxtkHy41Ntz-Qyje5dE4W0Tjm2qm9KosreKACMunp2laUQrFS6c9PZb_yP0IswVjKLeyj1MmcXSjLaaJRvrvt-7ZUxI6XXUMA0D90WS0j5MlJn2kE_n67CH9oJ1/s1600/money-bags3.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh4qxtfC4ojswPxZd9LTxtkHy41Ntz-Qyje5dE4W0Tjm2qm9KosreKACMunp2laUQrFS6c9PZb_yP0IswVjKLeyj1MmcXSjLaaJRvrvt-7ZUxI6XXUMA0D90WS0j5MlJn2kE_n67CH9oJ1/s200/money-bags3.jpg" width="200" /></a></div>
<span style="color: orange;"> Monetizing Flash Games </span><br />
There is many way to make money with flash games. The most common strategies are integration of ads, sponsorship, licensing, paying games (subscription or selling), prizing contest and marketing of virtual-goods. FlashGameMaker is designed to create infinity of games.By using FGM you will be able to create more games, in less time with a better quality and make more profit.<br />
All games created with FGM are the creator's intellectual property.<br />
<br />
<div style="color: orange;">
Market Your Talent</div>
The most interesting element of FGM is to gather talented people willing to distribute game ressources. Components, graphics, sounds, writings<br />
are elements that you can share of market to the FGM community.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9UC7NJrDGZg2Ay5hfSS1Pf6rdYf9BwGq72jgIx2edYYxFgKX60bvCoJ3QQZ4XSUm9YxxsuGoCiN7G7UzPZky5xTv1YIAVGGgy0DaGcn6-iKd6W2jSZ2gEwHo0305AyHKph9DiwtOzmWc-/s1600/contribute2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9UC7NJrDGZg2Ay5hfSS1Pf6rdYf9BwGq72jgIx2edYYxFgKX60bvCoJ3QQZ4XSUm9YxxsuGoCiN7G7UzPZky5xTv1YIAVGGgy0DaGcn6-iKd6W2jSZ2gEwHo0305AyHKph9DiwtOzmWc-/s1600/contribute2.png" /></a></div>
AngelStreethttp://www.blogger.com/profile/10830803887882150303noreply@blogger.com2