<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5205384179247717220</id><updated>2024-10-07T07:54:05.460+03:00</updated><category term="drawings"/><category term="sketches"/><category term="haxe"/><category term="code"/><category term="modelling"/><category term="INSTEAD"/><category term="art"/><category term="characters"/><category term="postmortems"/><category term="lua"/><category term="particles"/><category term="tutorial"/><category term="underworld"/><category term="web"/><title type='text'>MMG articles</title><subtitle type='html'>Concepts, Ideas, Postmortems and Diaries of projects, developed by MMG group members.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-5460269964075146552</id><published>2015-05-03T21:34:00.002+03:00</published><updated>2015-05-03T21:35:21.443+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="haxe"/><title type='text'>InWeb adventures</title><content type='html'>Today i decided to start my new small project.&lt;br /&gt;
I will create web-based game - some sort of multiplayer survival game (something like die2nite).&lt;br /&gt;
&lt;br /&gt;
I will use haxe for it.&lt;br /&gt;
Will try to make it using:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ufront&lt;/li&gt;
&lt;li&gt;jive&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
So, that&#39;s it, in short words.</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/5460269964075146552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2015/05/inweb-adventures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5460269964075146552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5460269964075146552'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2015/05/inweb-adventures.html' title='InWeb adventures'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-969869031845329151</id><published>2013-12-07T21:11:00.000+02:00</published><updated>2013-12-07T21:11:11.057+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="haxe"/><category scheme="http://www.blogger.com/atom/ns#" term="particles"/><title type='text'>Usage of particle manager</title><content type='html'>So, here is a little how-to for subject.&lt;br /&gt;
First you need ParticleManager instance in your class (smoke for example)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;smoke = new ParticlesManager(1000, ParticleState.Update_particle, true);
emitterPosition = new Point(stageWidth + 40, stageHeight / 3);
addChild(smoke);
&lt;/pre&gt;&lt;br /&gt;
Then in some loop of your game (EnterFrame?) you have to emit particles&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;var speed_x:Float = -20 * (Math.random()) - 20;
var speed_y:Float =  14 * (Math.random()) - 7;
var state:ParticleState = new ParticleState(new Point(speed_x, speed_y), 1);
smoke.Create_particle(Assets.getBitmapData(&quot;assets/round_20.png&quot;), 
 new Point(emitterPosition.x, emitterPosition.y),
 0xff0000ff, 30, new Point(0.1, 0.1), state, 0, 0.2, 0.04); // look at ParticleManager code for params description
&lt;/pre&gt;&lt;br /&gt;
As you can see, you need ParticleState class for particles&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;package;

import flash.geom.Point;
import particles.Particle;

class ParticleState
{
    public var velocity:Point;
    public var lengthMultiplier:Float = 0.0;
 
 public function new(velocity:Point, lengthMultiplier:Float)
 {
  this.velocity = velocity;
  this.lengthMultiplier = lengthMultiplier;
 }
 
 public static function Update_particle(particle:Particle):Void //here you have to define how particles move
 {
  var vel:Point = particle.state.velocity;
  particle.position.x += vel.x;
  particle.position.y += vel.y;
  particle.bitmap.scaleX += (1 - particle.bitmap.scaleX) * particle.sizeReduction;
  particle.bitmap.scaleY += (1 - particle.bitmap.scaleX) * particle.sizeReduction;
  particle.bitmap.alpha -= particle.fading;
 }
}
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/969869031845329151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2013/12/usage-of-particle-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/969869031845329151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/969869031845329151'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2013/12/usage-of-particle-manager.html' title='Usage of particle manager'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-1153685948716036782</id><published>2013-08-30T14:45:00.001+03:00</published><updated>2013-09-13T18:41:00.848+03:00</updated><title type='text'>Reflector walkthrough</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/AQSMA0oaulg?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/1153685948716036782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2013/08/reflectorwth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1153685948716036782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1153685948716036782'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2013/08/reflectorwth.html' title='Reflector walkthrough'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-5613699899592877495</id><published>2013-08-28T16:38:00.002+03:00</published><updated>2013-12-07T21:19:10.637+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="haxe"/><title type='text'>Particles manager from gamedev.tutsplus.com</title><content type='html'>Made simple implementation of Particles manager for my game based on &lt;a href=&quot;http://gamedev.tutsplus.com/tutorials/implementation/make-a-neon-vector-shooter-in-xna-particle-effects/&quot;&gt;this article&lt;/a&gt;.&lt;br /&gt;
Here is Source code for it.&lt;br /&gt;
&lt;h3&gt;ParticlesManager.hx&lt;/h3&gt;&lt;pre class=&quot;brush: haxe&quot;&gt;package mmg.particles;
package particles;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
/**
 * ...
 * @author gordev
 */
typedef Action = Particle -&gt; Void;

class CircularParticleArray&lt;t&gt;
{
 private var _start:Int;
 private var _list:Array&lt;t&gt;;
 private var _targetClass:Class&lt;t&gt;;
 private var _args:Array&lt;dynamic&gt;;
 
 public var start(get, set):Int;
  public function get_start():Int { return _start; }
 public function set_start(value:Int) { _start = value % _list.length; return 0; }
 public var capacity(get, never):Int;
 public function get_capacity():Int { return _list.length; }
 public var list(get, never):Array&lt;t&gt;;
 public function get_list():Array&lt;t&gt; { return _list; }
 public var count:Int = 0;

 public function new(targetClass:Class&lt;t&gt;, initialCapacity:Int, args:Array&lt;dynamic&gt;)
 {
  _targetClass = targetClass;
  _list = [];
  _args = args;
  
  for (i in 0...initialCapacity)
        {
   _list.push(Type.createInstance(_targetClass, _args));
  }
 }
 
 public function get(i:Int):T
 {
  return _list[(_start + i) % _list.length];
 }
 
 public function set(i:Int, value:T):Void
 {
  _list[(_start + i) % _list.length] = value;
 }
}

class ParticlesManager extends Sprite
{
 private var update_particle:Action;
 private var particle_list:CircularParticleArray&lt;particle&gt;;
 
 public function new(capacity:Int, update_particle:Action, isDisplayList:Bool) 
 {
  super();
  this.update_particle = update_particle;
  particle_list = new CircularParticleArray&lt;particle&gt;(Particle, capacity, []);
  if(isDisplayList)
  {
   for(particle in particle_list.list)
   {
    addChild(particle.bitmap);
   }
  }
 }
 
 public function Create_particle(texture:BitmapData, 
  position:Point, 
  color:UInt, 
  duration:Float, 
  scale:Point, 
  state:Dynamic, 
  theta:Float = 0, 
  sizeReduction:Float = 1,
  fading:Float = 1):Void
 {
  var particle:Particle;
  if (particle_list.count == particle_list.capacity)
  {
   // if the list is full, overwrite the oldest particle, and rotate the circular list
   particle = particle_list.get(0);
   particle_list.start++;
  }else{
   particle = particle_list.get(particle_list.count);
   particle_list.count++;
  }
  
  // Create the particle
  particle.texture = texture;
  removeChild(particle.bitmap);
  particle.bitmap = new Bitmap(texture);
  addChild(particle.bitmap);
  
  particle.position = position;
  particle.color = color;
  particle.duration = duration;
  particle.percent_life = 1.0;
  particle.scale = scale;
  particle.bitmap.scaleX = scale.x;
  particle.bitmap.scaleY = scale.y;
  particle.orientation = theta;
  particle.state = state;
  particle.sizeReduction = sizeReduction;
  particle.fading = fading;
 }
 
 public function Update()
 {
  var removal_count:Int = 0;
  var index:Int = 0;
  for (i in 0...particle_list.count)
  {
   var particle:Particle = particle_list.get(i);
   update_particle(particle);
   particle.percent_life -= 1.0 / particle.duration;
   Swap(particle_list, index - removal_count, index);
   if (particle.percent_life &lt; 0) removal_count++;
   index++;
  }
  particle_list.count -= removal_count;
 }
 
 public function Draw(canvas:Bitmap)
 {
  canvas.bitmapData.fillRect(canvas.bitmapData.rect, 0x00000000);
  for (i in 0...particle_list.count)
  {
   var particle:Particle = particle_list.get(i);
   var origin:Point = new Point(particle.texture.width / 2, particle.texture.height / 2);
   var mat:Matrix = new Matrix();
   mat.translate(particle.position.x - origin.x, particle.position.y - origin.y);
   canvas.bitmapData.draw(particle.texture, mat); //and so on
  }
 }
 
 public function Move()
 {
  for (i in 0...particle_list.count)
  {
   var particle:Particle = particle_list.get(i);
   particle.bitmap.x = particle.position.x - particle.bitmap.width  * 0.5;
   particle.bitmap.y = particle.position.y - particle.bitmap.height * 0.5;
  }
 }
 
 public function Swap(list:CircularParticleArray&lt;Particle&gt;, index1:Int, index2:Int):Void
 {
  var temp:Particle = list.get(index1);
  list.set(index1, list.get(index2));
  list.set(index2, temp);
 }
 
 public function RenderBitmap(canvas:Bitmap):Void
 {
  Update();
  Draw(canvas);
 }
 
 public function RenderDisplayList():Void
 {
  Update();
  Move();
 }
}&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Particle.hx&lt;/h3&gt;&lt;pre class=&quot;brush: haxe&quot;&gt;package particles;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;

/**
 * ...
 * @author gordev
 */
class Particle
{
 public var texture:BitmapData;
 public var bitmap:Bitmap;
 public var position:Point;
 public var origin:Point;
 public var orientation:Float;
 public var scale:Point;
 public var color:UInt;
 public var duration:Float;
 public var percent_life:Float;
 public var state:Dynamic;
 public var fading:Float;
 public var sizeReduction:Float;
 
 public function new()
 {
  bitmap = new Bitmap();
  scale = new Point(1, 1);
  percent_life = 1.0;
 }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I will write about usage and step by step description later.</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/5613699899592877495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2013/08/particles-manager-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5613699899592877495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5613699899592877495'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2013/08/particles-manager-from.html' title='Particles manager from gamedev.tutsplus.com'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-5418762686775798279</id><published>2013-07-09T20:08:00.000+03:00</published><updated>2013-07-09T20:15:44.097+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><title type='text'>Goal based vector field pathfinding in Haxe</title><content type='html'>Here is nothing to say. Everything was clearly described &lt;a href=&quot;http://hub.tutsplus.com/tutorials/understanding-goal-based-vector-field-pathfinding--gamedev-9007&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
Here is jus my code in haxe implementing GBVF pathfinding class.&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;package com.nailedgames;

import flash.geom.Point;


typedef PathTile = {
    var x:Int;
    var y:Int;
    var step:Int;
}

class GBVF_pathfinding
{
    private var _tile_width:Int;
    private var _tile_height:Int;
    private var _field_width:Int;
    private var _field_height:Int;
    private var _field_wtiles:Int;
    private var _field_htiles:Int;

    private var _distances:Array&amp;lt;Int&amp;gt;;
    private var _vectors:Array&amp;lt;Point&amp;gt;;

    public var vectors(get,null):Array&amp;lt;Point&amp;gt;;

    public function new()
    {

    }

    function get_vectors():Array&amp;lt;Point&amp;gt;
    {
        return _vectors;
    }

    public function Init(tile_width:Int, tile_height:Int, field_width:Int, field_height:Int)
    {
        _tile_width = tile_width;
        _tile_height = tile_height;
        _field_width = field_width;
        _field_height = field_height;
        _field_wtiles = Std.int(field_width/tile_width);
        _field_htiles = Std.int(field_height/tile_height);
        _distances = new Array();
        for(i in 0..._field_htiles)
            for(j in 0..._field_wtiles)
                _distances.push(-1);

    }

    public function Calculate_field(walls_map:Array&amp;lt;Int&amp;gt;, x_block:Int, y_block:Int):Array&amp;lt;Point&amp;gt;
    {
        for(i in 0..._distances.length)
            if(walls_map[i] == 1)
                _distances[i] = -3;
            else
                _distances[i] = -1;
        Mark_tiles([{x:x_block, y:y_block, step:0}]);
        return _vectors;
    }

    private function Mark_tiles(points:Array&amp;lt;Pathtile&amp;gt;):Void
    {
        if(Lambda.empty(points))
            return;
        var neighbours:Array&amp;lt;Pathtile&amp;gt; = new Array&amp;lt;Pathtile&amp;gt;();
        for(point in points)
        {
            _distances[point.x + point.y*_field_wtiles] = point.step;
            if(point.x &amp;gt; 0)
            {
                if(_distances[(point.x-1) + point.y*_field_wtiles] == -1)
                {
                    neighbours.push({x:point.x-1, y:point.y, step:point.step+1});
                    _distances[(point.x-1) + point.y*_field_wtiles] = -2;
                }
            }
            if(point.x &amp;lt; (_field_wtiles-1))
            {
                if(_distances[(point.x+1) + point.y*_field_wtiles] == -1)
                {
                    neighbours.push({x:point.x+1, y:point.y, step:point.step+1});
                    _distances[(point.x+1) + point.y*_field_wtiles] = -2;
                }
            }
            if(point.y &amp;gt; 0)
            {
                if(_distances[point.x + (point.y-1)*_field_wtiles] == -1)
                {
                    neighbours.push({x:point.x, y:point.y-1, step:point.step+1});
                    _distances[point.x + (point.y-1)*_field_wtiles] = -2;
                }
            }
            if(point.y &amp;lt; (_field_htiles-1))
            {
                if(_distances[point.x + (point.y+1)*_field_wtiles] == -1)
                {
                    neighbours.push({x:point.x, y:point.y+1, step:point.step+1});
                    _distances[point.x + (point.y+1)*_field_wtiles] = -2;
                }
            }
        }
        Mark_tiles(neighbours);
        Assign_vectors();
    }

    private function Assign_vectors():Void
    {
        _vectors = new Array&amp;lt;Point&amp;gt;();
        for(y_tile in 0..._field_htiles)
        {
            for(x_tile in 0..._field_wtiles)
            {
                if(_distances[x_tile + y_tile*_field_wtiles] &amp;gt; 0)
                {
                    var left_dist:Int   = _distances[x_tile + y_tile*_field_wtiles]+1;
                    var right_dist:Int  = _distances[x_tile + y_tile*_field_wtiles]+1;
                    var up_dist:Int     = _distances[x_tile + y_tile*_field_wtiles]+1;
                    var down_dist:Int   = _distances[x_tile + y_tile*_field_wtiles]+1;

                    if((x_tile &amp;gt; 0) &amp;&amp; (_distances[(x_tile-1) + y_tile*_field_wtiles] &amp;gt;= 0)) 
                        left_dist = _distances[(x_tile-1) + y_tile*_field_wtiles];

                    if((x_tile &amp;lt; (_field_wtiles-1)) &amp;&amp; (_distances[(x_tile+1) + y_tile*_field_wtiles] &amp;gt;= 0)) 
                        right_dist = _distances[(x_tile+1) + y_tile*_field_wtiles];

                    if((y_tile &amp;gt; 0) &amp;&amp; (_distances[x_tile + (y_tile-1)*_field_wtiles] &amp;gt;= 0))
                        up_dist = _distances[x_tile + (y_tile-1)*_field_wtiles];

                    if((y_tile &amp;lt; (_field_htiles-1)) &amp;&amp; (_distances[x_tile + (y_tile+1)*_field_wtiles] &amp;gt;= 0))
                        down_dist = _distances[x_tile + (y_tile+1)*_field_wtiles];

                    _vectors.push(new Point(
                        left_dist - right_dist,
                        up_dist - down_dist));
                }else{
                    _vectors.push(new Point(0,0));
                }
            }
        }

    }
}
&lt;/pre&gt;Here is usage example:&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;var tile_width:Int = 40;
var tile_height:Int = 40;
var field_width:Int = 800;
var field_height:Int = 600;
gbvf = new GBVF_pathfinding();
walls_map = [
 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,
 0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,
 1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,
 0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,
 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,
 0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,
 ];
gbvf.Init(tile_width, tile_height, field_width, field_height);
var vectors:Array&amp;lt;Point&amp;gt; = gbvf.Calculate_field(walls_map, x_block, y_block);
&lt;/pre&gt;As a result you will have array of vectors coordinates relative to the center of tiles.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMl9FhQJYFmA4Q60pNlFHJPgQnmejnhv6ivT-pmdR4F7EM77kji18UPK_soxPt-O8yrPVUA7KnNq0Vi5Z7-IQonom2tYqbe-1Yjc_9vZ4y_Fg-P7O0V5EWiawUjUa-MtSDhWJ3ZrbNRI0/s1600/GBVF+pathfinding.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMl9FhQJYFmA4Q60pNlFHJPgQnmejnhv6ivT-pmdR4F7EM77kji18UPK_soxPt-O8yrPVUA7KnNq0Vi5Z7-IQonom2tYqbe-1Yjc_9vZ4y_Fg-P7O0V5EWiawUjUa-MtSDhWJ3ZrbNRI0/s320/GBVF+pathfinding.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/5418762686775798279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2013/07/goal-based-vector-field-pathfinding-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5418762686775798279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5418762686775798279'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2013/07/goal-based-vector-field-pathfinding-in.html' title='Goal based vector field pathfinding in Haxe'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMl9FhQJYFmA4Q60pNlFHJPgQnmejnhv6ivT-pmdR4F7EM77kji18UPK_soxPt-O8yrPVUA7KnNq0Vi5Z7-IQonom2tYqbe-1Yjc_9vZ4y_Fg-P7O0V5EWiawUjUa-MtSDhWJ3ZrbNRI0/s72-c/GBVF+pathfinding.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-1279955988395346228</id><published>2013-02-26T09:23:00.000+02:00</published><updated>2013-02-26T09:26:08.253+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><title type='text'>Movement of a player</title><content type='html'>Just my way to adjust player view depends on keys pressed.&lt;br /&gt;
That are indexes of our angles:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYUiOHdMHNgCJiVRgGXx2puoj7VRsD81qtjXsVIrqFSJKpDkwCVoZnaNlfwBeFIeTXhVULlzkGb25RnPoI-0Az_zEYgJ9EfMe7GSYqgWkAF0e7P7yXKO4AxHxwMnjrlGCv-EAjk_1wN98/s1600/keys.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYUiOHdMHNgCJiVRgGXx2puoj7VRsD81qtjXsVIrqFSJKpDkwCVoZnaNlfwBeFIeTXhVULlzkGb25RnPoI-0Az_zEYgJ9EfMe7GSYqgWkAF0e7P7yXKO4AxHxwMnjrlGCv-EAjk_1wN98/s1600/keys.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;// let&#39;s define keys, which will move player (keyCode, state)

private static var keys:Array&amp;lt;Array&amp;lt;Int&amp;gt;&amp;gt; = [[37,0],[39,0],[38,0],[40,0],[69,0],[65,0],[68,0],[87,0],[83,0]];
// define array, where angles will be stored
private var angles:Array&amp;lt;Int&amp;gt;;
// adjust angles to special indexes

private function Init(e:Event):Void // Event.ADDED_TO_STAGE
{
    angles = new Array&amp;lt;Int&amp;gt;();
    angles[1] = 0;
    angles[3] = 45;
    angles[2] = 90;
    angles[6] = 135;
    angles[4] = 180;
    angles[11] = 225;
    angles[7] = 270;
    angles[8] = 315;
}


public function on_key_down(e:KeyboardEvent):Void // KeyboardEvent.KEY_DOWN
{
    for(key in keys)
        if(e.keyCode == key[0] &amp;&amp; key[1] == 0)
            key[1] = 1;
}

public function on_key_up(e:KeyboardEvent):Void // KeyboardEvent.KEY_UP
{
    for(key in keys)
        if(e.keyCode == key[0])
            key[1] = 0;
}



public function on_enter_frame(e:Event):Void // Event.ENTER_FRAME
{
    var r_index:Int = 0;
    // up - down
    if(keys[2][1] == 1 || keys[7][1] == 1) {
        r_index += 1;
    }else if(keys[3][1] == 1 || keys[8][1] == 1){
        r_index += 4;
    }
    // left - right
    if(keys[0][1] == 1 || keys[5][1] == 1)
    {
        r_index += 7;
    }else if(keys[1][1] == 1 || keys[6][1] == 1){
        r_index +=2;
    }
    if(r_index != 0)
        this.rotation = angles[r_index];
}
&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;What is pros of that way for me:&lt;/div&gt;&lt;div&gt;- you can define not only array of angles, but array of Bitmaps or Sprites&lt;/div&gt;&lt;div&gt;- you can redefine array of angles (Sprites) on the way without any of code overhead&lt;/div&gt;&lt;div&gt;- cleaner code as for me (just two if - else)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/1279955988395346228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2013/02/movement-of-player.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1279955988395346228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1279955988395346228'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2013/02/movement-of-player.html' title='Movement of a player'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYUiOHdMHNgCJiVRgGXx2puoj7VRsD81qtjXsVIrqFSJKpDkwCVoZnaNlfwBeFIeTXhVULlzkGb25RnPoI-0Az_zEYgJ9EfMe7GSYqgWkAF0e7P7yXKO4AxHxwMnjrlGCv-EAjk_1wN98/s72-c/keys.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-4768427659213314019</id><published>2012-12-26T18:46:00.002+02:00</published><updated>2012-12-31T16:33:09.238+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drawings"/><category scheme="http://www.blogger.com/atom/ns#" term="sketches"/><title type='text'>Village (map sketch 2)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7A0PYx6SQi9KF5YMz3Z_wBmZIaicHTZYnpYrIiOUgiiQD2CL65NuQ6fh7MLudzeg97npAiihdjfraSkHCHAZLcTm5xxUr47x71ZJKUsYfkt73WUMco5nAqiiApsJKY9TQ_bHSQwzekwg/s1600/map.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7A0PYx6SQi9KF5YMz3Z_wBmZIaicHTZYnpYrIiOUgiiQD2CL65NuQ6fh7MLudzeg97npAiihdjfraSkHCHAZLcTm5xxUr47x71ZJKUsYfkt73WUMco5nAqiiApsJKY9TQ_bHSQwzekwg/s320/map.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUvh74yyDxR1LlSsWf7Y64cdG7C0MuXXc0U97_MzD-s6U8MuMBB-v9ofwcDnjQJddDSnXc1yjbQVzH6RsyXjLGGoxjTPw3eaBpBvc5VoZzlMPlkihvosBMjrOxVRsDmRfBSdnRdQvJU_w/s1600/map.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUvh74yyDxR1LlSsWf7Y64cdG7C0MuXXc0U97_MzD-s6U8MuMBB-v9ofwcDnjQJddDSnXc1yjbQVzH6RsyXjLGGoxjTPw3eaBpBvc5VoZzlMPlkihvosBMjrOxVRsDmRfBSdnRdQvJU_w/s320/map.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimB1jdC_pxByi7iqvTlFZpdK8VCKs8YRELl_qis3vhyOYu1ik2Jv-rVyuWEzvccMvAP4z0FYfptgNTwhehItUfDVVBL3dG6s-fVeCguv0LcsbbuVfg-K3wSDqLRbwqVqt6XF0BNDVO7uI/s1600/map.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimB1jdC_pxByi7iqvTlFZpdK8VCKs8YRELl_qis3vhyOYu1ik2Jv-rVyuWEzvccMvAP4z0FYfptgNTwhehItUfDVVBL3dG6s-fVeCguv0LcsbbuVfg-K3wSDqLRbwqVqt6XF0BNDVO7uI/s320/map.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrELr-kf-utaYb-gJwbJcQyf2NGUQzr0TukSRLgGsHmVdetBonOICVWwzh0hBnZoiFO9OFhodXaF8M8OiYOfMJeu51JZhsK8ZEa2p0gX3qa42sWxp8S5XEdJ3MMroZRGi7vMej0SS29WQ/s1600/map.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;269&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrELr-kf-utaYb-gJwbJcQyf2NGUQzr0TukSRLgGsHmVdetBonOICVWwzh0hBnZoiFO9OFhodXaF8M8OiYOfMJeu51JZhsK8ZEa2p0gX3qa42sWxp8S5XEdJ3MMroZRGi7vMej0SS29WQ/s320/map.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/4768427659213314019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/12/village-map-sketch-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4768427659213314019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4768427659213314019'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/12/village-map-sketch-2.html' title='Village (map sketch 2)'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7A0PYx6SQi9KF5YMz3Z_wBmZIaicHTZYnpYrIiOUgiiQD2CL65NuQ6fh7MLudzeg97npAiihdjfraSkHCHAZLcTm5xxUr47x71ZJKUsYfkt73WUMco5nAqiiApsJKY9TQ_bHSQwzekwg/s72-c/map.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-7298962166683588911</id><published>2012-12-24T23:01:00.003+02:00</published><updated>2012-12-24T23:01:27.396+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drawings"/><category scheme="http://www.blogger.com/atom/ns#" term="sketches"/><title type='text'>Village (map sketch 1)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqc7lbr8GGPuYGO0WICu9s6h8aAdvckkr3zL5vy7Oc-fBbXmdR4YHJykCW1_Jyvfwh064HOi5KpbdIA10g9JeLtYOI9CyGkogBvsgxiPPH9ZUX3cciPVW1wAxx3JbbhkOdDq6dmoQNySE/s1600/map.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqc7lbr8GGPuYGO0WICu9s6h8aAdvckkr3zL5vy7Oc-fBbXmdR4YHJykCW1_Jyvfwh064HOi5KpbdIA10g9JeLtYOI9CyGkogBvsgxiPPH9ZUX3cciPVW1wAxx3JbbhkOdDq6dmoQNySE/s320/map.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/7298962166683588911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/12/village-map-sketch-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/7298962166683588911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/7298962166683588911'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/12/village-map-sketch-1.html' title='Village (map sketch 1)'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqc7lbr8GGPuYGO0WICu9s6h8aAdvckkr3zL5vy7Oc-fBbXmdR4YHJykCW1_Jyvfwh064HOi5KpbdIA10g9JeLtYOI9CyGkogBvsgxiPPH9ZUX3cciPVW1wAxx3JbbhkOdDq6dmoQNySE/s72-c/map.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-4190894314328972442</id><published>2012-11-13T19:56:00.001+02:00</published><updated>2012-11-13T19:56:26.847+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sketches"/><title type='text'>New sketches pack</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzDOBBHEZ7JuI3xdJjOCydJmY0EfscK_PPqtTF0IFk6kn1nGP6R-tNfctBDcn4-9Qyc0zw0jpY6a_TaiY9GbbURqWneKbEi0STJLhzj5cGDDAzrs0zNS1RyBIvVpwDpa12icq9X359IE8/s1600/village.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzDOBBHEZ7JuI3xdJjOCydJmY0EfscK_PPqtTF0IFk6kn1nGP6R-tNfctBDcn4-9Qyc0zw0jpY6a_TaiY9GbbURqWneKbEi0STJLhzj5cGDDAzrs0zNS1RyBIvVpwDpa12icq9X359IE8/s320/village.png&quot; width=&quot;223&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheIEbEiRSghIFT09ifvuuCZglWGkEm-tYioOb2EGMsv8kf_vbfjZS0f2mVH5IVd0ytei7uubigB2y1oZ_NXb19SS1WRT2VXd2JBDUoUxnFRAHQB1aaqPGSNdfne8J-jkaB834FvtbHmyM/s1600/space+station.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheIEbEiRSghIFT09ifvuuCZglWGkEm-tYioOb2EGMsv8kf_vbfjZS0f2mVH5IVd0ytei7uubigB2y1oZ_NXb19SS1WRT2VXd2JBDUoUxnFRAHQB1aaqPGSNdfne8J-jkaB834FvtbHmyM/s320/space+station.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEwN2iKxvzoHj-Zfw0fLC79IHvxiC5NvxFK0rR9ixqPqqdfzAyWUe0DVbSjHOR0Sil2i3kYydv6JXrVO1bFEAn2IrrILvA2G4u18Uc_dtP4Fht2EWwCtZdpUb5Ak1UoXHku3XjbnQQrwI/s1600/space+station_1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEwN2iKxvzoHj-Zfw0fLC79IHvxiC5NvxFK0rR9ixqPqqdfzAyWUe0DVbSjHOR0Sil2i3kYydv6JXrVO1bFEAn2IrrILvA2G4u18Uc_dtP4Fht2EWwCtZdpUb5Ak1UoXHku3XjbnQQrwI/s320/space+station_1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS1yFZTvpVHEm3XaBI3bbiK0TJm7RyDwS4b_wU3BWLJOKw6EctaxM2yoKOPZc0q1ouplpVzrndN8b4TFhmkMgJf4P_lmhuqrh_Z91EH3BOmBNglk_zK5uW0SdO_Dvhyphenhyphen3w7smksWNHW4uA/s1600/space+station+escape.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS1yFZTvpVHEm3XaBI3bbiK0TJm7RyDwS4b_wU3BWLJOKw6EctaxM2yoKOPZc0q1ouplpVzrndN8b4TFhmkMgJf4P_lmhuqrh_Z91EH3BOmBNglk_zK5uW0SdO_Dvhyphenhyphen3w7smksWNHW4uA/s320/space+station+escape.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxoqBjLROjguugxwWk5q0BlxmmxWZl-6eWKh27WV5K9x7cWTOKm3GkI1l5IH3GR399l5BnDSqQqa3eYz-m7Qj9nrB8Sc7pSeYNjdfVVNSgMCzN_Wksy4RnkYGebOsO1y4DEdBHr3WTOnM/s1600/space+strategy.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxoqBjLROjguugxwWk5q0BlxmmxWZl-6eWKh27WV5K9x7cWTOKm3GkI1l5IH3GR399l5BnDSqQqa3eYz-m7Qj9nrB8Sc7pSeYNjdfVVNSgMCzN_Wksy4RnkYGebOsO1y4DEdBHr3WTOnM/s320/space+strategy.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjww4vBrpUG8w1o6XAbayP0yRGgxIjGmescT5BOqtbK4TqA1YdXX1FT8GJV7YQvX9JozipwQnvBKTa81h4C6OEh_sGpoYojsW9C0f5fRVyaXUwQSK0qCK1LmoCUQOeudhfFD7Wq9W5e5aE/s1600/stay+alive+robot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjww4vBrpUG8w1o6XAbayP0yRGgxIjGmescT5BOqtbK4TqA1YdXX1FT8GJV7YQvX9JozipwQnvBKTa81h4C6OEh_sGpoYojsW9C0f5fRVyaXUwQSK0qCK1LmoCUQOeudhfFD7Wq9W5e5aE/s320/stay+alive+robot.png&quot; width=&quot;241&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/4190894314328972442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/11/new-sketches-pack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4190894314328972442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4190894314328972442'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/11/new-sketches-pack.html' title='New sketches pack'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzDOBBHEZ7JuI3xdJjOCydJmY0EfscK_PPqtTF0IFk6kn1nGP6R-tNfctBDcn4-9Qyc0zw0jpY6a_TaiY9GbbURqWneKbEi0STJLhzj5cGDDAzrs0zNS1RyBIvVpwDpa12icq9X359IE8/s72-c/village.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-7182830394743019160</id><published>2012-08-30T21:06:00.001+03:00</published><updated>2012-08-30T21:43:28.535+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="haxe"/><title type='text'>SimpleCache in HaXe</title><content type='html'>Made SimpleCache class based on &lt;a href=&quot;http://www.ant-karlov.ru/TowerDefence9-keshirovanie-obektov.html&quot;&gt;Ant.Karlov tutorial&lt;/a&gt; using HaXe.&lt;br /&gt;
Here is class code:&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;package mmg;

class SimpleCache&amp;lt;t&amp;gt;
{
    public var instance(get, never):T;

    private var _targetClass:Class&amp;lt;t&amp;gt;;
    private var _currentIndex:Int;
    private var _instances:Array&amp;lt;t&amp;gt;;

    public function new(targetClass:Class&amp;lt;t&amp;gt;, initialCapacity:Int)
    {
        _targetClass = targetClass; // Base class of all of objects
        _currentIndex = initialCapacity - 1; // Index of current free object
        _instances = []; // Array of all instances

        // Fill it up
        for (i in 0...initialCapacity)
        {
            _instances[i] = getNewInstance();
        }
    }

    private function getNewInstance():T
    {
        return Type.createEmptyInstance(_targetClass);
    }

    private function get():T
    {
        if (_currentIndex &gt;= 0)
        {
            // Returning free object from cache
            _currentIndex--;
            return _instances[_currentIndex + 1];
        }
        else
        {
            // If cache is empty we should create one more instance
            return getNewInstance();
        }
    }

    private function put(instance:T):Void
    {
        _currentIndex++;
        // If cache is overfilled
        if (_currentIndex == _instances.length)
        {
            // We should put instance to the back of the instances array
            _instances[_instances.length] = instance;
        }
        else
        {
            // Putting instance to the free cell of array
            _instances[_currentIndex] = instance;
        }
    }
}
&lt;/pre&gt;Usage example:&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;// init cache
var cache:SimpleCache&amp;lt;ourobjectclass&amp;gt; = new SimpleCache(OurObjectClass, 50); 
// take on of instances
var tmp:OurObjectClass = cache.instance; 
tmp.doSomething();
// put object back to cache
cache.put(tmp); 
&lt;/pre&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/7182830394743019160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/08/made-simplecache-class-based-on-ant.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/7182830394743019160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/7182830394743019160'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/08/made-simplecache-class-based-on-ant.html' title='SimpleCache in HaXe'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-89184220862543093</id><published>2012-01-23T14:02:00.001+02:00</published><updated>2012-01-23T14:14:13.550+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="modelling"/><title type='text'>Ufo: regular ship</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9aQBC9j86-gP79PW9nQKq0f_kU-ZbYJgjRHhr2wnYq2Ns5iZsF7Q_dasHBgkI2WoFNIE0CukWzTSobeMZfwHNkaea0lJAST-nU4031VBATLdOUnx0v6OmTaqRkfcMl-ll8Xv-mCVMzAk/s1600/ufo_up_left.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9aQBC9j86-gP79PW9nQKq0f_kU-ZbYJgjRHhr2wnYq2Ns5iZsF7Q_dasHBgkI2WoFNIE0CukWzTSobeMZfwHNkaea0lJAST-nU4031VBATLdOUnx0v6OmTaqRkfcMl-ll8Xv-mCVMzAk/s200/ufo_up_left.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4_po5pWKz13sKOZHm_4T0tL60WcUf-o-Ts3ZwC57pn5Kd91enzojet7tzyb9KCuNL1vlOvdrOZidcZdYbwBnxzIpzeKNUO4ygx_Dfrd-MCiqYZsa0aQCkpWl2JCJc4mcbyXrvpjcRUug/s1600/ufo_up_right.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4_po5pWKz13sKOZHm_4T0tL60WcUf-o-Ts3ZwC57pn5Kd91enzojet7tzyb9KCuNL1vlOvdrOZidcZdYbwBnxzIpzeKNUO4ygx_Dfrd-MCiqYZsa0aQCkpWl2JCJc4mcbyXrvpjcRUug/s200/ufo_up_right.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkkPiZS-ruUs-nX59agW5thY_z0F6-BjBKSWWJBfoytG4rOnJuRWKx2EClo6nDzEZPLYr14LWFWEvqEjCU3Qx5c3CSIukydQpyi7mlj6EJKZodSyBGLY6upeEImEPqVas0a6TlekaayiQ/s1600/ufo_up.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkkPiZS-ruUs-nX59agW5thY_z0F6-BjBKSWWJBfoytG4rOnJuRWKx2EClo6nDzEZPLYr14LWFWEvqEjCU3Qx5c3CSIukydQpyi7mlj6EJKZodSyBGLY6upeEImEPqVas0a6TlekaayiQ/s200/ufo_up.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigvVuLcSvKIecr7_vZNjnbSKJxRWYkSDJBTC62W98HPRntO5SRR-_sU2UySClh3Q9_Xwriv0YpM7VlOLHFuIooYl5wTTrSEvqbM7Dg1PUM9ga3UtRnspB-wNbpI8ztNcNjL9kk5Jm2uhM/s1600/ufo_right.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigvVuLcSvKIecr7_vZNjnbSKJxRWYkSDJBTC62W98HPRntO5SRR-_sU2UySClh3Q9_Xwriv0YpM7VlOLHFuIooYl5wTTrSEvqbM7Dg1PUM9ga3UtRnspB-wNbpI8ztNcNjL9kk5Jm2uhM/s200/ufo_right.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8m04UoAzAuAcW9PhBAPIaXmmk8VUMNh1gMi0ILByoHy6t2jwBcuh3s4hyphenhyphenBTDzRswChIQFXoUyV5tg4FdIwtVaIcAy0LbLxnG3n_83-7N-LCH4Qz6ogC-o4G_ccvpv71fn8-KWuNSDQLM/s1600/ufo_left.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8m04UoAzAuAcW9PhBAPIaXmmk8VUMNh1gMi0ILByoHy6t2jwBcuh3s4hyphenhyphenBTDzRswChIQFXoUyV5tg4FdIwtVaIcAy0LbLxnG3n_83-7N-LCH4Qz6ogC-o4G_ccvpv71fn8-KWuNSDQLM/s200/ufo_left.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHtsVDE6BmpSUMZsVsl2j5qdbdsidRtp5H6QpD8vbk5ofvsl8b3yd0Q-sj6mv9a7pPfC3gBD3GA9cQ2je5a4kV3oGOiSX5qabnS8-KACkZxa31x5dxaNmJoP_tDrnbByMTI2msVJPXK0/s1600/ufo_front.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHtsVDE6BmpSUMZsVsl2j5qdbdsidRtp5H6QpD8vbk5ofvsl8b3yd0Q-sj6mv9a7pPfC3gBD3GA9cQ2je5a4kV3oGOiSX5qabnS8-KACkZxa31x5dxaNmJoP_tDrnbByMTI2msVJPXK0/s200/ufo_front.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5EaGi_NIXJvkg8TRLW4W139CFcZRlC6llMkYXRsnwswOdKRLp84XhgAxcpIGJGa57pe5AjNDNnrrAtAZKNGCd55XKLafE6h25hO4WPaTeJ1BiOOePRwBVXXohe6jQ7n6uduOvioN3Cm8/s1600/ufo_down_left.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5EaGi_NIXJvkg8TRLW4W139CFcZRlC6llMkYXRsnwswOdKRLp84XhgAxcpIGJGa57pe5AjNDNnrrAtAZKNGCd55XKLafE6h25hO4WPaTeJ1BiOOePRwBVXXohe6jQ7n6uduOvioN3Cm8/s200/ufo_down_left.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwTq1zNarhjlQSMnFqwwQ-M1_nl5ED6oIByp237sjiMkOrQEPeQ8fG1qR1lxwy_FCL96zhI0jnueyMysNBqP1fOcDYQVnEUmtSeD8Mo_o3LNVXNtOrkf6D9z8c3HBEciWAf42spGJEQGc/s1600/ufo_down_right.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwTq1zNarhjlQSMnFqwwQ-M1_nl5ED6oIByp237sjiMkOrQEPeQ8fG1qR1lxwy_FCL96zhI0jnueyMysNBqP1fOcDYQVnEUmtSeD8Mo_o3LNVXNtOrkf6D9z8c3HBEciWAf42spGJEQGc/s200/ufo_down_right.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirw6SDJ3406StvkPIIBcwbnyY3HC8X3urlMnakdGJfD1Yo5FL9h5ffLfM3BOIE6OEeS62HID7Y-ecnJw-HpWStnfqNKW1xjnVzj8MT9ciFOQnKtg8rB65SYy3MmexWmfnebe9He2LBugE/s1600/ufo_down.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirw6SDJ3406StvkPIIBcwbnyY3HC8X3urlMnakdGJfD1Yo5FL9h5ffLfM3BOIE6OEeS62HID7Y-ecnJw-HpWStnfqNKW1xjnVzj8MT9ciFOQnKtg8rB65SYy3MmexWmfnebe9He2LBugE/s200/ufo_down.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/89184220862543093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/ufo-regular-ship.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/89184220862543093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/89184220862543093'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/ufo-regular-ship.html' title='Ufo: regular ship'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9aQBC9j86-gP79PW9nQKq0f_kU-ZbYJgjRHhr2wnYq2Ns5iZsF7Q_dasHBgkI2WoFNIE0CukWzTSobeMZfwHNkaea0lJAST-nU4031VBATLdOUnx0v6OmTaqRkfcMl-ll8Xv-mCVMzAk/s72-c/ufo_up_left.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-1536319365857646394</id><published>2012-01-12T11:07:00.000+02:00</published><updated>2012-01-12T11:08:06.459+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drawings"/><category scheme="http://www.blogger.com/atom/ns#" term="sketches"/><title type='text'>Ufo prototypes, part 1.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY1VFdeQ3P2LBhJF16pMMDOWF6GrSq0XLZETI5Q8zLSyft9T7TJQnAwPpIEc5-4PrVubVI2fUyh8FZL35UdQjCBmbNepJ_nVyjQSlsbwJ9VwZ_u4t2OgSKneuCkj0OUCWr3lA9DbJ6r04/s1600/%25D0%25B2%25D0%25B5%25D1%2580%25D1%2585+prototype.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY1VFdeQ3P2LBhJF16pMMDOWF6GrSq0XLZETI5Q8zLSyft9T7TJQnAwPpIEc5-4PrVubVI2fUyh8FZL35UdQjCBmbNepJ_nVyjQSlsbwJ9VwZ_u4t2OgSKneuCkj0OUCWr3lA9DbJ6r04/s200/%25D0%25B2%25D0%25B5%25D1%2580%25D1%2585+prototype.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxCiHcLyW2iEUrLLo_Z-IdwQgAcKmFMjZLUs5-hKF9uwG6GhOgKhPBV4nO1iMgE6GOLAbTuXYl-0R1nJzJlm0o-lFg5y1KzX5wCFAgULF61zGvh6i2CN3Ry6AP6ciQzO1A3_2dIxAr3o/s1600/prototype.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxCiHcLyW2iEUrLLo_Z-IdwQgAcKmFMjZLUs5-hKF9uwG6GhOgKhPBV4nO1iMgE6GOLAbTuXYl-0R1nJzJlm0o-lFg5y1KzX5wCFAgULF61zGvh6i2CN3Ry6AP6ciQzO1A3_2dIxAr3o/s200/prototype.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/1536319365857646394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/ufo-prototypes-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1536319365857646394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1536319365857646394'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/ufo-prototypes-part-1.html' title='Ufo prototypes, part 1.'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY1VFdeQ3P2LBhJF16pMMDOWF6GrSq0XLZETI5Q8zLSyft9T7TJQnAwPpIEc5-4PrVubVI2fUyh8FZL35UdQjCBmbNepJ_nVyjQSlsbwJ9VwZ_u4t2OgSKneuCkj0OUCWr3lA9DbJ6r04/s72-c/%25D0%25B2%25D0%25B5%25D1%2580%25D1%2585+prototype.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-7381254602178117305</id><published>2012-01-05T10:09:00.000+02:00</published><updated>2012-01-05T10:09:08.323+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="modelling"/><title type='text'>Wolf model</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirDwhQ73ta7VQwQwacEZMrrm2_uOr4VN3kw51pfYbqb7_bt-U3UxvHDYYV0sXJVvjQUWZZqcz-lOO2er74M7b9T8_9RZPWBqxIdu8LWHmwoto_I2jkCXMNr_2CN3PQe5kuHV_tgcF1pf0/s1600/wolf.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirDwhQ73ta7VQwQwacEZMrrm2_uOr4VN3kw51pfYbqb7_bt-U3UxvHDYYV0sXJVvjQUWZZqcz-lOO2er74M7b9T8_9RZPWBqxIdu8LWHmwoto_I2jkCXMNr_2CN3PQe5kuHV_tgcF1pf0/s320/wolf.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Wolf model.</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/7381254602178117305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/wolf-model.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/7381254602178117305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/7381254602178117305'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/wolf-model.html' title='Wolf model'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirDwhQ73ta7VQwQwacEZMrrm2_uOr4VN3kw51pfYbqb7_bt-U3UxvHDYYV0sXJVvjQUWZZqcz-lOO2er74M7b9T8_9RZPWBqxIdu8LWHmwoto_I2jkCXMNr_2CN3PQe5kuHV_tgcF1pf0/s72-c/wolf.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-5568610648999408505</id><published>2012-01-04T21:18:00.001+02:00</published><updated>2012-01-04T21:18:17.803+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="INSTEAD"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Неофициальный репозиторий INSTEAD игр (public beta)</title><content type='html'>Вот и созрела бета &lt;a href=&quot;http://instead.nailedgames.com/&quot; target=&quot;_blank&quot;&gt;неофициального репозитория&lt;/a&gt; INSTEAD игр.&lt;br /&gt;
Добавляйтесь, играйте.&lt;br /&gt;
Обновления и улучшения обязательно будут.&lt;br /&gt;
Для заливки игр вход осуществляется через google аккаунты.</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/5568610648999408505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/instead-public-beta.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5568610648999408505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5568610648999408505'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/instead-public-beta.html' title='Неофициальный репозиторий INSTEAD игр (public beta)'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-2094831822967450422</id><published>2012-01-04T09:41:00.003+02:00</published><updated>2012-01-04T09:41:50.004+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drawings"/><title type='text'>Brewery game intro</title><content type='html'>Intro image for my current trash-quest game.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU_mtP78Ivqj6TSRp7g7MYwippXARCJsJHN3XVFzi-dIp0Re49pQbHOVn44fLRSzQN3Kftf7F03Fho3-ybgWCQ7CjNzaZ-5clqNvyHUunvcaS_JJokGk5pMpcp80dzpUWL8hrZ7SNcx9c/s1600/intro.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU_mtP78Ivqj6TSRp7g7MYwippXARCJsJHN3XVFzi-dIp0Re49pQbHOVn44fLRSzQN3Kftf7F03Fho3-ybgWCQ7CjNzaZ-5clqNvyHUunvcaS_JJokGk5pMpcp80dzpUWL8hrZ7SNcx9c/s320/intro.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/2094831822967450422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/brewery-game-intro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/2094831822967450422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/2094831822967450422'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/brewery-game-intro.html' title='Brewery game intro'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU_mtP78Ivqj6TSRp7g7MYwippXARCJsJHN3XVFzi-dIp0Re49pQbHOVn44fLRSzQN3Kftf7F03Fho3-ybgWCQ7CjNzaZ-5clqNvyHUunvcaS_JJokGk5pMpcp80dzpUWL8hrZ7SNcx9c/s72-c/intro.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-4196942570235028052</id><published>2012-01-04T09:29:00.003+02:00</published><updated>2012-01-04T09:38:10.427+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="modelling"/><title type='text'>Bear model</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA4EO9s-n8io7BOkmgHfJfYIqudS5jFD3nbjhIBz0mKL68_cqjLMKGIzpPmtXaTUddpxTe8nO0smSy-spkDG6SxhKo2Z0mLD33qtq3LFKb-xHDTD5707nQg5drZI5gwrK27I5iShtY5wo/s1600/bear.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA4EO9s-n8io7BOkmgHfJfYIqudS5jFD3nbjhIBz0mKL68_cqjLMKGIzpPmtXaTUddpxTe8nO0smSy-spkDG6SxhKo2Z0mLD33qtq3LFKb-xHDTD5707nQg5drZI5gwrK27I5iShtY5wo/s320/bear.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#39;s bear. Enemy prototype for one of my games.</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/4196942570235028052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/bear-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4196942570235028052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4196942570235028052'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2012/01/bear-model.html' title='Bear model'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA4EO9s-n8io7BOkmgHfJfYIqudS5jFD3nbjhIBz0mKL68_cqjLMKGIzpPmtXaTUddpxTe8nO0smSy-spkDG6SxhKo2Z0mLD33qtq3LFKb-xHDTD5707nQg5drZI5gwrK27I5iShtY5wo/s72-c/bear.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-3002245055804267007</id><published>2011-11-05T15:43:00.000+02:00</published><updated>2011-11-05T15:43:58.493+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="INSTEAD"/><category scheme="http://www.blogger.com/atom/ns#" term="lua"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Port your game for INSTEAD to flash</title><content type='html'>In this article i will show you how to port existing game for INSTEAD engine to flash app.&lt;br /&gt;
I will port tutorial game (tutorial3), which you can get with INSTEAD sources.&lt;br /&gt;
&lt;br /&gt;
You can read about INSTEAD on its &lt;a href=&quot;http://instead.syscall.ru/&quot;&gt;official page&lt;/a&gt; or on its &lt;a href=&quot;http://code.google.com/p/instead/&quot;&gt;Google Code page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I think it&#39;s enough, so let&#39;s start.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Few words about project structure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;overflow: auto;&quot;&gt;[DIR]InsteadFlash
 [DIR]adds
  [DIR]stead // lua files of INSTEAD engine
   ...
   flash.lua
   ...
   gui_flash.lua
   ...
  [DIR]theme
 [DIR]code
  Fish.xml
  PreloaderDum.as
  [DIR]neoart
   [DIR]flod // FLOD player (.mod player for flash)
    ...
    ModProcessor.as // modified a bit (method play returns SoundTransform, added setter for soundTransform)
    ...
  [DIR]com
   [DIR]fish
    AMainClass.as
    i_Button.as
    [DIR]instead // AS3 version of INSTEAD C code
     FS.as
     Game.as
     Instead.as
     InsteadArgs.as
     InsteadCursor.as
     InsteadEvent.as
     InsteadImage.as
     InsteadLink.as
     InsteadPicture.as
     InsteadScroll.as
     InsteadText.as
     Main.as
     SaveSlot.as
    [DIR]screens // About and Pause screens
     About.as
     Pause.as
  [DIR]games
   [DIR]tutorial3 // code of the game which we will port (not modified lua files)
    main-en.lua
    main-es.lua
    main-it.lua
    main-ru.lua
    main-ua.lua
    main.lua
  [DIR]mmg
   MouseWheel.as // class to grab mouse scroll in flash
   SoundManager.as // modified class for music play (added .mod files support) &lt;/pre&gt;
&lt;br /&gt;
Personally we are interested in SoundManager.as, InsteadPicture.as и FS.as (some times need to modify InsteadImage.as and InsteadLink.as).&lt;br /&gt;
&lt;br /&gt;
In folder games we should place our game files, such as images, sounds and lua files.&lt;br /&gt;
In file SoundManager.as we should embed sounds and music.&lt;br /&gt;
In file InsteadPicture.as we should embed images .&lt;br /&gt;
In file FS.as we will load lua files of our game and needed modules of INSTEAD engine.&lt;br /&gt;
In file InsteadImage.as and InsteadLink.as we link images, which should be displayed in text area.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Embedding of sound files (part of SoundManager.as source is hidden)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;package&lt;/span&gt; mmg
{

&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.media.Sound;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.media.SoundChannel;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.media.SoundTransform;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.events.Event;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.events.TimerEvent;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.utils.Timer;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.utils.ByteArray;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; neoart.flod.*;

dynamic &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;class&lt;/span&gt; SoundManager &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Object
{

    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../adds/theme/click.mp3&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; click:Class;&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;    //if you want to use mp3 file, you should jut embed it
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../games/tutorial3/ramparts.mp3&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; ramparts_mp3:Class;&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;    //if you want to use mod file, you should embed it as ByteArray&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;    //and create ModProcessor for it
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../games/tutorial3/ramparts.mod&#39;&lt;/span&gt;, 
    mimeType = &lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; ramparts_mod:Class;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; rampartsProcessor:ModProcessor = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; ModProcessor();&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; mus:Object;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; vol:Number=0.9;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; volFadeSpeed:Number=0.05;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; musEnable:Boolean=&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;true&lt;/span&gt;;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; curMusName:String=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; curCh:SoundChannel;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; offCh:SoundChannel;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; curVol:Number=0;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; curPos:Number=0;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; offVol:Number=0;
 
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; isplayed:Boolean=&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;false&lt;/span&gt;;
 
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; timerVolFader:Timer= &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; Timer(10);
 
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; t1:SoundTransform = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; SoundTransform();
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; t2:SoundTransform = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; SoundTransform();
 
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; function init():&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;void&lt;/span&gt; 
    {
        timerVolFader.&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;stop&lt;/span&gt;();
        mus = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; Object();&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;        //use that part if you are using mod files
        rampartsProcessor.&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;load&lt;/span&gt;(&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; ramparts_mod as ByteArray);&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;        mus[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ramparts.mod&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = rampartsProcessor;&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;        //use that part if you are using mp3 files
        mus[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ramparts.mod&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; ramparts_mp3();&lt;/pre&gt;
&lt;pre style=&quot;color: black;&quot;&gt;        mus[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;click&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; click();
    }
    ...
    some part of code is hidden
    ...
}
}
&lt;/pre&gt;
&lt;br /&gt;
All sounds should be pushed to the object mus[] = {}.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Embedding of graphic files (parts of InsteadPicture.as, InsteadImage.as and InsteadLink.as sources are hidden)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;package&lt;/span&gt; com.fish.instead
{
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.display.Sprite;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.display.Bitmap;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.events.Event;

&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;class&lt;/span&gt; InsteadPicture &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Sprite
{
    // graphic files
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/instead.png&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; instead:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/ru.png&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; ru:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/ua.png&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; ua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/es.png&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; es:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/gb.png&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; gb:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/it.png&#39;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; it:Class;
    // graphic files

    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; gameFiles:Object = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; Object();
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; containerMid:Number = 0;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; hiding:Array = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; Array;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; showing:Array = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; Array;
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; fading:Number = 0;

    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; function InsteadPicture()
    {
        gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;instead.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; instead;
        gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ru.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; ru;
        gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ua.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; ua;
        gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;es.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; es;
        gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;gb.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; gb;
        gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;it.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; it;

        &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;for&lt;/span&gt; each (&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; value:Bitmap &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;in&lt;/span&gt; gameFiles) 
        {
            addChild(value);
            value.visible = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;false&lt;/span&gt;;
            value.alpha = 0;
        }
        &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;height&lt;/span&gt; = 0;
        addEventListener(Event.ENTER_FRAME, DispatchPictures);
    }
    ...
    part of source code is hidden
    ...
}
}
&lt;/pre&gt;
&lt;br /&gt;
Embed files as usual and then put it into gameFiles object. As key you should use string, which should same as path to file related to the main.lua (main file of the game)&lt;br /&gt;
If some of pics should be displayed in text area, you should also put them into gameFiles objects in InsteadLink.as and InsteadImage.as files.&lt;br /&gt;
&lt;br /&gt;
Code of InsteadImage.as&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;color: black; overflow: auto;&quot;&gt;...
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; function InsteadImage(imgStr:String)
{
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ru.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.ru;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ua.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.ua;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;es.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.es;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;gb.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.gb;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;it.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.it;
...
&lt;/pre&gt;
&lt;br /&gt;
Code of InsteadLink.as&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;color: black; overflow: auto;&quot;&gt;...
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; function InsteadLink(linkStr:String, isImage:Boolean = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;false&lt;/span&gt;, parent:Sprite = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;null&lt;/span&gt;)
{
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ru.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.ru;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;ua.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.ua;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;es.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.es;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;gb.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.gb;
    gameFiles[&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;it.png&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;] = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; InsteadPicture.it;
...
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Embedding of game files and stead modules&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Code of FS.as&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;color: black; overflow: auto;&quot;&gt;&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;package&lt;/span&gt; com.fish.instead
{
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.utils.ByteArray;
&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;import&lt;/span&gt; flash.display.Bitmap;

&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;class&lt;/span&gt; FS
{
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/stead.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; stead_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/gui.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; gui_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/flash.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; flash_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/goto.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; goto_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/format.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; format_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/vars.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; vars_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/object.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; object_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/dash.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; dash_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/para.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; para_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/quotes.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; quotes_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/xact.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; xact_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../../adds/stead/timer.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; timer_lua:Class;
    // lua game files
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/main.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; tutorial_main_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/main-en.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; tutorial_main_en_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/main-es.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; tutorial_main_es_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/main-it.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; tutorial_main_it_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/main-ru.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; tutorial_main_ru_lua:Class;
    [Embed(source=&lt;span style=&quot;color: #e97722;&quot;&gt;&#39;../../../games/tutorial3/main-ua.lua&#39;&lt;/span&gt;, mimeType=&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;application/octet-stream&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;)]
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;const&lt;/span&gt; tutorial_main_ua_lua:Class;

    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; gameFiles:Object = &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; Object();
    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;var&lt;/span&gt; _filesystemRoot:String;

    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; function filesystemRoot():String
    {
        &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;return&lt;/span&gt; _filesystemRoot;
    }

    &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;static&lt;/span&gt; function Init(libInitializer:*):&lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;void&lt;/span&gt;
    {
        // game files
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://main.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; tutorial_main_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://main-en.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; tutorial_main_en_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://main-es.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; tutorial_main_es_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://main-it.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; tutorial_main_it_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://main-ru.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; tutorial_main_ru_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://main-ua.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; tutorial_main_ua_lua() as ByteArray);            
        // stead modules
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://goto.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; goto_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://format.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; format_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://vars.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; vars_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://object.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; object_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://dash.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; dash_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://para.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; para_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://quotes.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; quotes_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://xact.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; xact_lua() as ByteArray);
        libInitializer.supplyFile(&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://timer.lua&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;, &lt;span style=&quot;color: #e97722; font-weight: bold;&quot;&gt;new&lt;/span&gt; timer_lua() as ByteArray);
        _filesystemRoot = &lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;builtin://&lt;/span&gt;&lt;span style=&quot;color: #e97722;&quot;&gt;&quot;&lt;/span&gt;;
    }
}
}
&lt;/pre&gt;
&lt;br /&gt;
Embed needed files as usual, then put it into lua-alchemy vfs. You should make it in Init()  libInitializer.supplyFile(&quot;builtin://_path_to_file_related_to_root_of_game_&quot;, new _name_of_class_of_embedded_file_() as ByteArray). I wrote about it in &lt;a href=&quot;http://blog.nailedgames.com/2011/07/insteadf-postmortem.html&quot;&gt;previous article&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;I&#39;d like to thank&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Author of INSTEAD Peter Kosyh&lt;br /&gt;
Author of MouseWheel class Denis Kolyako&lt;br /&gt;
Author of lua-alchemy&lt;br /&gt;
Author of Flod&lt;br /&gt;
Author of SoundManager Oleg Antypov</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/3002245055804267007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/11/in-this-article-i-will-show-you-how-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/3002245055804267007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/3002245055804267007'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/11/in-this-article-i-will-show-you-how-to.html' title='Port your game for INSTEAD to flash'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-5928068534906306746</id><published>2011-10-27T13:58:00.000+03:00</published><updated>2011-10-27T15:08:57.818+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drawings"/><title type='text'>Background for one of the areas</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Plant background&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAcwAeaXCmJqbVaf2Ha8fgUsgF40KJrid_fXBzZoo4vyvjJTnfkftDHJsJAeKI2Sl-H1fY8s6Ps0Cnnp4HxLL8tLKYjGLeXN3P6mSAEhAhDHH0BqdAUDYxgr9wqrSfJ4CWsmawsxoe2_M/s1600/plantBack.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAcwAeaXCmJqbVaf2Ha8fgUsgF40KJrid_fXBzZoo4vyvjJTnfkftDHJsJAeKI2Sl-H1fY8s6Ps0Cnnp4HxLL8tLKYjGLeXN3P6mSAEhAhDHH0BqdAUDYxgr9wqrSfJ4CWsmawsxoe2_M/s320/plantBack.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/5928068534906306746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/10/plant-background.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5928068534906306746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/5928068534906306746'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/10/plant-background.html' title='Background for one of the areas'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAcwAeaXCmJqbVaf2Ha8fgUsgF40KJrid_fXBzZoo4vyvjJTnfkftDHJsJAeKI2Sl-H1fY8s6Ps0Cnnp4HxLL8tLKYjGLeXN3P6mSAEhAhDHH0BqdAUDYxgr9wqrSfJ4CWsmawsxoe2_M/s72-c/plantBack.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-6951407497589965459</id><published>2011-10-25T16:37:00.000+03:00</published><updated>2011-10-25T16:37:57.382+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drawings"/><category scheme="http://www.blogger.com/atom/ns#" term="sketches"/><title type='text'>Sketches for new game</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Pencil drawing&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhlAosiuCUDx0vY-ZgHvBB9R9XMPSLfI_t_qrgHxShn_na2S9WyBhQIlCDVkxRaxymJrtYUDKoLxHOlmzkSGESelB3R_6eq7fHE5fpINjON_NhZKMsGrjIga9ryAhaYGWrBxtYvYvphBY/s1600/smth.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;243&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhlAosiuCUDx0vY-ZgHvBB9R9XMPSLfI_t_qrgHxShn_na2S9WyBhQIlCDVkxRaxymJrtYUDKoLxHOlmzkSGESelB3R_6eq7fHE5fpINjON_NhZKMsGrjIga9ryAhaYGWrBxtYvYvphBY/s320/smth.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Vectorized part &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYlmyeInu2TTFil5OP1yy5Kp4iAZBhCbEWc2GnwxMBmXcvpQvSJ2pZ5dJh5L882Zg1bGE-7klPEIdyfmUdK13j3gb3m1_QsvSA4fG7Gf3gWc0N3X9S-0CtRVuJg0AwJ7RkRjSI4k1w6fY/s1600/plant_01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYlmyeInu2TTFil5OP1yy5Kp4iAZBhCbEWc2GnwxMBmXcvpQvSJ2pZ5dJh5L882Zg1bGE-7klPEIdyfmUdK13j3gb3m1_QsvSA4fG7Gf3gWc0N3X9S-0CtRVuJg0AwJ7RkRjSI4k1w6fY/s320/plant_01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/6951407497589965459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/10/sketches-for-new-game.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/6951407497589965459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/6951407497589965459'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/10/sketches-for-new-game.html' title='Sketches for new game'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhlAosiuCUDx0vY-ZgHvBB9R9XMPSLfI_t_qrgHxShn_na2S9WyBhQIlCDVkxRaxymJrtYUDKoLxHOlmzkSGESelB3R_6eq7fHE5fpINjON_NhZKMsGrjIga9ryAhaYGWrBxtYvYvphBY/s72-c/smth.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-190452516969056864</id><published>2011-10-03T09:46:00.000+03:00</published><updated>2011-10-03T09:46:51.296+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postmortems"/><title type='text'>INSTEAD(f) v0.0.2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
On September 20 i&#39;ve released 0.0.2 version of INSTEAD.&lt;br /&gt;
So, what changed? here&#39;s the list:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;My own HTML-like language parser with images support&lt;/li&gt;
&lt;li&gt;Pictures fading&lt;/li&gt;
&lt;li&gt;Support for menu clicks action&lt;/li&gt;
&lt;/ul&gt;
Seems that&#39;s all, but it was a long way.&lt;br /&gt;
&lt;a href=&quot;http://www.newgrounds.com/portal/view/579997&quot;&gt;Game on Newgrounds&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.kongregate.com/games/zaynyatyi/escape-the-toilet&quot;&gt;Game on Kongregate&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/190452516969056864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/10/insteadf-v002.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/190452516969056864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/190452516969056864'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/10/insteadf-v002.html' title='INSTEAD(f) v0.0.2'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-1098793388218575680</id><published>2011-07-12T10:22:00.000+03:00</published><updated>2012-07-25T20:42:50.737+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postmortems"/><title type='text'>INSTEAD(f) Postmortem</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;A few days ago I released the AS3 port of engine for text-based quests &lt;a href=&quot;http://draft.blogger.com/htt;://instead.syscall.ru&quot;&gt;INSTEAD&lt;/a&gt;.&lt;br /&gt;
So, some of the results, the difficulties encountered and future plans.&lt;br /&gt;
The biggest problem was to understand how supply embed files to the lua interpreter.&lt;br /&gt;
Much easier than I thought. &lt;br /&gt;
First create a class that will initialize the VFS:&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;package
{
    import flash.utils.ByteArray;
    import flash.display.Bitmap;

    public class FS
    {
        [Embed(source=&#39;file.lua&#39;, mimeType=&quot;application/octet-stream&quot;)]
        public static const file_lua:Class;

        private static var _filesystemRoot:String;

        public static function filesystemRoot():String
        {
            return _filesystemRoot;
        }

        public static function Init(libInitializer:*):void
        {
            libInitializer.supplyFile(&quot;builtin://file.lua&quot;,
                          new file_lua() as ByteArray);
            _filesystemRoot = &quot;builtin://&quot;;
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
Then we should initialize VFS and lua interpreter:&lt;br /&gt;
&lt;pre class=&quot;brush: haxe&quot;&gt;FS.Init(LuaAlchemy.libInit);
lua = new LuaAlchemy(FS.filesystemRoot());&lt;/pre&gt;The problem that I could not solve is to prevent page scrolling when scroll event occurs in flash.&lt;br /&gt;
&lt;br /&gt;
Also had to add some functions in lua wrapper for AS3. The list will add later.&lt;br /&gt;
&lt;br /&gt;
Future plans:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implement support of INSTEAD modules;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; support for pictures in the inventory and main text block;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; change TextField to something better with html support.&lt;/li&gt;
&lt;/ul&gt;Now the game is on:&lt;br /&gt;
&lt;a href=&quot;http://www.kongregate.com/games/zaynyatyi/the-returning-of-the-quantum-cat&quot;&gt;http://www.kongregate.com/games/zaynyatyi/the-returning-of-the-quantum-cat&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.newgrounds.com/portal/view/574142&quot;&gt;http://www.newgrounds.com/portal/view/574142&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/1098793388218575680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/07/insteadf-postmortem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1098793388218575680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1098793388218575680'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/07/insteadf-postmortem.html' title='INSTEAD(f) Postmortem'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-3597389173854365130</id><published>2011-06-15T14:32:00.000+03:00</published><updated>2011-06-15T14:32:57.603+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="art"/><category scheme="http://www.blogger.com/atom/ns#" term="characters"/><title type='text'>Billys moves. Part 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjApG0RlNCll943hKyjTjwnmykG2-iFnZdLHAWHNAd21R4EinyCDoUtCtMmiWgHfhRyap7KIUybnxzbCm7QyR_97_8ECWzZ0_nEvjwc5DrqKr10KpTqbi5stoOOvRNhmdpUvBVQEoXj1iU/s1600/basic_moves.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;136&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjApG0RlNCll943hKyjTjwnmykG2-iFnZdLHAWHNAd21R4EinyCDoUtCtMmiWgHfhRyap7KIUybnxzbCm7QyR_97_8ECWzZ0_nEvjwc5DrqKr10KpTqbi5stoOOvRNhmdpUvBVQEoXj1iU/s320/basic_moves.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Jumping. Standing. Walking.&lt;br /&gt;
Oh... he is so angry.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/3597389173854365130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/06/billys-moves-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/3597389173854365130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/3597389173854365130'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/06/billys-moves-part-1.html' title='Billys moves. Part 1'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjApG0RlNCll943hKyjTjwnmykG2-iFnZdLHAWHNAd21R4EinyCDoUtCtMmiWgHfhRyap7KIUybnxzbCm7QyR_97_8ECWzZ0_nEvjwc5DrqKr10KpTqbi5stoOOvRNhmdpUvBVQEoXj1iU/s72-c/basic_moves.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-4527748124133080676</id><published>2011-06-14T11:58:00.000+03:00</published><updated>2011-06-14T15:24:58.812+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="art"/><category scheme="http://www.blogger.com/atom/ns#" term="characters"/><title type='text'></title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHrl3X-K7CXv0B8vkIGFtWf9-7QT_GnaLMNXZKRM45BPaVAFOoWDznKmxpBVpmRDwYON8JTye-7b-MTLxFNUMCZH_f15FDFdpb4sXKAsgGbh5r2mhuy7OaEaA_i_f_M0zMMbkjC_vAoE/s1600/bad_billy.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHrl3X-K7CXv0B8vkIGFtWf9-7QT_GnaLMNXZKRM45BPaVAFOoWDznKmxpBVpmRDwYON8JTye-7b-MTLxFNUMCZH_f15FDFdpb4sXKAsgGbh5r2mhuy7OaEaA_i_f_M0zMMbkjC_vAoE/s320/bad_billy.png&quot; width=&quot;211&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Bad Billy and his bad gun :)&lt;br /&gt;
New character for my game.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Also animated gif.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtM6K-zc-Z1-KfaWclP2htLNokeEJjDmtKJEwKez2xePqXBjI_yynd3KEQFtmI8bh2nDNWCvBLmcuof3PK_KbO0VmeWc5Eou1ZsOKRkZjUgKBv7tJt4PlUkF7ddZKAdQiHEpu7BjjBChA/s1600/walk.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtM6K-zc-Z1-KfaWclP2htLNokeEJjDmtKJEwKez2xePqXBjI_yynd3KEQFtmI8bh2nDNWCvBLmcuof3PK_KbO0VmeWc5Eou1ZsOKRkZjUgKBv7tJt4PlUkF7ddZKAdQiHEpu7BjjBChA/s320/walk.gif&quot; width=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/4527748124133080676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/06/bad-billy-and-his-bad-gun-new-character.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4527748124133080676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/4527748124133080676'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/06/bad-billy-and-his-bad-gun-new-character.html' title=''/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHrl3X-K7CXv0B8vkIGFtWf9-7QT_GnaLMNXZKRM45BPaVAFOoWDznKmxpBVpmRDwYON8JTye-7b-MTLxFNUMCZH_f15FDFdpb4sXKAsgGbh5r2mhuy7OaEaA_i_f_M0zMMbkjC_vAoE/s72-c/bad_billy.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-9036384535573605857</id><published>2011-06-01T16:01:00.000+03:00</published><updated>2011-06-01T16:02:33.261+03:00</updated><title type='text'>bp_1 diary</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;I had one big idea in the past.&lt;br /&gt;
Decided to proceed with it slowly. Few hours a week. &lt;br /&gt;
Here will be full diary of that idea realization, cause that&#39;s mmg-groups project.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;Thoughts for today:&lt;br /&gt;
Four main locations.&lt;br /&gt;
&lt;ul style=&quot;text-align: left; color: black;&quot;&gt;&lt;li&gt;Space station.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Caves.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Hydroponics plantations.&lt;/li&gt;
&lt;li&gt;Dump.&lt;/li&gt;
&lt;/ul&gt;I haven&#39;t decided yet, will it be 3d or 2d. Most likely it will be 2d, cause i&#39;m not such a good modeler.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/9036384535573605857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/06/bp1-diary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/9036384535573605857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/9036384535573605857'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/06/bp1-diary.html' title='bp_1 diary'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5205384179247717220.post-1465019837709731933</id><published>2011-06-01T09:45:00.000+03:00</published><updated>2011-06-01T15:50:09.225+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="underworld"/><title type='text'>&quot;Underworld: Defense&quot; Postmortem</title><content type='html'>That was my fail. My fail - my experience.&lt;br /&gt;
&lt;a href=&quot;http://www.nailedgames.com/game?game=underworld-defense&quot;&gt;On my portal&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.newgrounds.com/portal/view/569999&quot;&gt;On newgrounds&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.kongregate.com/games/zaynyatyi/underworld-defense&quot;&gt;On kongregate&lt;/a&gt;&lt;br /&gt;
Few words about internals of game.&lt;br /&gt;
I&#39;ve decided to use Box2D for boat physics. In first versions that was 2.0.2 version, then i switched to 2.1a (&lt;a href=&quot;http://box2dflash.boristhebrave.com/&quot;&gt;boristhebrave&lt;/a&gt; project).&lt;br /&gt;
For the first time i used rater graphic for background and vector graphic for boat, buildings, connections and enemies. Performance was awful.&lt;br /&gt;
Then i&#39;ve switched to raster graphic, but in separate objects. That was better, but not enough.&lt;br /&gt;
Last graphic performance tweak - use CopyPixels (and draw) method and CacheAsBitmap on vector layer (connections).</content><link rel='replies' type='application/atom+xml' href='http://mmg-articles.blogspot.com/feeds/1465019837709731933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mmg-articles.blogspot.com/2011/05/underworld-defense-postmortem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1465019837709731933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5205384179247717220/posts/default/1465019837709731933'/><link rel='alternate' type='text/html' href='http://mmg-articles.blogspot.com/2011/05/underworld-defense-postmortem.html' title='&quot;Underworld: Defense&quot; Postmortem'/><author><name>George</name><uri>http://www.blogger.com/profile/04535211517841958067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>