Aug 122014

How good are your motor skills? It’s time to know it!
Train them while you have fun with FingerOut! A challenging game where you can improve your abilities while you have fun.

FingerOut is one of my last personal project. I decided add it to the App Store to see if I can earn some money to improve the game by adding new game modes, better sounds and graphics, etc.

I’m really exited to see if the people will like the gameplay, I think it is a not common proposal.

Please try the game and give your support for a new indie developer!

Soon I will write about my current main project.


App Store

Feb 152010

Detonator for Unity makes incorporating good explosions easier for all types of developers. At its most basic level, Detonator is a component that can be attached to any GameObject. At runtime it then creates an explosion with configurable color, size, duration, detail, and sub-elements like sparks, smoke, and shockwaves. For those that want to dig in a bit, Detonator is an explosion framework. Customize each sub-component or create new ones if you want to write a bit of code. Tweak detail levels with a single parameter and save your favorites to prefabs… or dynamically link color to damage type and size to damage amount!
The Detonator Parametric Explosion Framework has been developed by Ben Throop for the Unity Summer of Code 2009.

This is an amazing extension for your projects in Unity3D.



Read more about this in the Ben Throop Blog

Click in any image bellow to see the demo scene in action. You need to have installed the Unity plugin.


Feb 152010


Flash Media Server (FMS) is a proprietary data and media server from Adobe Systems (originally a Macromedia product). This server works with the Flash Player runtime to create media driven, multiuser RIAs (Rich Internet Applications). The server uses ActionScript 1, an ECMAScript based scripting language, for server-side logic. Prior to version 2, it was known as Flash Communication Server.
Flash Media Server is a hub, Flash based applications connect to the hub using Real Time Messaging Protocol (RTMP). The server can send and receive data to and from the connected users with live web FLV player installed. Connected clients can make Remote procedure calls (RPC) on the server-side and the server can call methods on specific clients. A SharedObject can be used to synchronize complicated data structures and call remote methods on multiple clients in one go by having clients subscribe to a shared object. Standard ActionScript objects are transported across the NetConnection using the Action Message Format (AMF) which is handled transparently by the server and flash client.
The server also allows users to receive and publish net streams. When viewing a net stream the user can either create their own to view a remotely stored Flash Video (FLV) or the server can instantiate a net stream and play a video on it, the latter method means that every user will be at the same point in the video when they subscribe to it as they are all viewing the same stream.

The FMS streams video, audio and data files in real time for Flash based interactive applications.

Influxis is a specialist in Adobe Flash Media Interactive Server 3.5 (FMS or FMIS). FMS powers interactive Flash applications including on-demand and live video broadcasts, real time communications, interactive classroom environments, multi-user collaboration, multi-player gaming, audio streaming, live data streaming, and more.

Our services include hosting, pre-built applications, and FMS user resources, which make Flash Media Server affordable and easy to begin working with immediately.

Top Ten Reasons To Choose Influxis (from his website)

  • FMS Experts: Influxis is the only FMS specialist in the market, and supported by an internal team of professional Flash experts and developers.
  • Adobe Partnership: Influxis is privy to the latest Adobe information, beta programs, and among the first to market new FMS products.
  • Pricing Tiers: Influxis offers pricing plans to accommodate all levels, from small scale experimental to a full dedicated server network for the most robust applications.
  • Pre-built Applications: Influxis has built an entire library of customizable applications for your use. All come with .FLA files, and come with URL’s for easy linking or you can embed the code directly into your website. Or an easy file download and upload to your website. All designed to get you started fast.
  • We’re Developers Too: Our staff are all full-time FMS developers – we understand. We offer help with minor modifications to your applications. Also find a bevy of resources available including Influxis Labs, FAQ’s, Forums, Tutorials, and our own in-house developer staff.
  • Customer Service: Influxis strives to go the extra mile and provide friendly and knowledgeable staff to assist you whether it is just getting started or resolving an issue.
  • Easy to Use & Get Started Immediately: Your Influxis account is activated immediately upon sign up, and the Influxis Wizard file manager makes it easy to organize your files, upload new applications, and you have complete control over your account settings.
  • Worldwide Network: Influxis has an international network (US and European locations) for fast delivery and streaming to all reaches of the world. We also can integrate our specialized Flash Media Interactive Server network with any third party CDN with our hybrid FMS/CDN solution.
  • No Contracts: Month-to-month service provides you flexibility for short-term projects and advertising campaigns. Event pricing is also available.
  • Customers Trust Us: Customers include Fortune 500 companies, world-class universities, advertising agencies, government services, professional sports, developers, and many more who entrust us to host their FMS applications.

I would like to add a point in this list, something I value so much about Influxis, it is they are one of the biggest sponsors in all flash scene, they are present if not all, in the majority of events related to this sector.
Well all this by way of introduction, here I leave 2 examples using FMS, the first is a pre-built application that offers Influxis , is a simple chat but set in a 3D scene. The second example is made by my, it is a example of SharedObject, this is the simplest way to keep customers connected between them, are very useful and easy to use. I am currently developing an interactive whiteboard, I hope to have it soon.
Last but not least, I would like to speak about my experience using Influxis. I didn’t know nothing about FMS, but start with it was very easy. The control panel of Influxis was very helpful to start with FMS, is very simple to handle the server with it (load-unload project, create new projects, setup domains to work with your apps, etc), algo is very nice to have the pre-built applications to see what you can do or directly to use it. Besides the disposition of the support team is remarkable, it is a pleasure to engage with them, so that others say to recommend Influxis and hosting solution for their projects with FMS, have very flexible prices, so I find it very handy for all (plans from $6 a month). Look at his website and see what I’m talking about.

Pre-Builded App Massiva3D

massiva3D, 3D chat app

SharedObject example

Open the example 2 times clicking the image, then drag the logos and you will see how update both windows.
SharedObject Example

Feb 122010

What is HYPE?

HYPE is a creative coding framework built on top of ActionScript 3. A major goal of HYPE is to allow newcomers to Flash and ActionScript to creatively play and express themselves while they are learning how to program.

To get started, the user needs only the most basic knowledge of programming – variables, conditionals, loops, and functions, for example.

As the user learns more about programming they can extend HYPE and thus grow their skills, while at the same time inspiring the next generation.

Now, that’s not to say HYPE is just for people who are new to programming. Instead, HYPE is for anyone, regardless of skill, who wants to play with code. Fundamentally, the point of HYPE is to make Flash fun again. We made HYPE to help bring back the playfulness that once defined our community.

Download and setup

The first thing you have to do is download the source from the HYPE web site or directly click here. Also you can download the lib from github.

To use the HYPE in our projects we have two ways to setup the library, the first way is using the MXP file that you can install into your Flash IDE using “Adobe Extension Manager CS4”, I never use this way, for this reason I recommend you read the installation page in the HYPE web. The second way (I use) is to set the path to the HYPE source in the source paths of Flash IDE (edit – preference – actionscript – Actionscript 3.0 settings). Now you are ready to start with HYPE.

Fast class description

  • BitmapCanvas: Captures a specifed target DisplayObject to a bitmap and displays it.
  • FilterRhythm: Rhythm to continuously apply a set of filters to a BitmapData instance.
  • DirectionalVibration: Vibrates a property in an directional manner.
  • ColorPool: Colorist that applies colors from a specified pool.
  • GridLayout: Layout that produces a simple grid.
  • ObjectPool: Creates and manages pools of objects.
  • Oscillator: Oscillates a property with a specifed wave function.
  • ShapeLayout: Layout that produces random points all of which are on a specified shape.
  • SoundAnalyzer: Analyzes sound frequency data and aggregates the resulting data.
  • Swarm: Makes the target object chase after a point.
  • MouseFollow: Makes the target track the mouse.
  • SimpleBallistic: Moves an object in a simplified ballistic path.



Links about it


Video channel at Vimeo

Feb 082010

I’ve been worried about this topic for a long time now, especially when I work as freelancer. Because every time I demo a project to a clients, I always fear they will decompile the SWF and disappear. I might be paranoid, but not too far from reality. Fortunately I’ve never had any problems like this, but I still prefer to be protected. Besides, these attacks are used for other purposes such as intellectual property theft, search for security flaws and exploits, and so on. It is also a very important issue when your application is of commercial value, as it is even more tempting to get the full benefit in a gruesome way.
Anyone with a copy of a Flash decompiler such as ASV or Sothink Decompiler can look at your ActionScript code. Suddenly, your licensing code, copy protection mechanisms, and proprietary logic are available for all to see – whether it’s legal or not. Anyone can use the details of your software for whatever reason they like. They can search for security flaws to exploit, steal unique ideas, crack programs, etc.

ActionScript is very easy to decompile. There are over 22 decompilers today. This is not a design flaw in the language; it’s a reality of all interpreted language such as Java, .NET, etc.

The encryption of the SWF (more like the code obfuscation) is to make the code difficult to understand. It’s noteworthy that it’s not actual encryption.

Despite all the protection it gives us, the obfuscation code is still vulnerable to illegal redistribution; anyone can download the SWF and republish it. To solve this issue, secureSWF has a protective system of domains (the movie will only work on the list of domains we specify) and also an encrypted loader (generates a separate swf to load our movie, assigns an encrypted name to the swf and decrypt it at runtime making it harder to download our swf), the grace of this protects us from attackers or SWF rippers grabbers.

secureSWF is the most sophisticated ActionScript obfuscation, code protection, and SWF encryption solution for Adobe’s Flash and Flex.
It provides state-of-the-art techniques to stop Flash decompilers, prevent illegal copying and redistribution, and help you increase your Flash application’s security.

What secureSWF’s SWF Encryption Does

  • Control Flow Obfuscation
  • Changes possible areas of the code flow that doesn’t affect the way the application runs. It also inserts extra control flow statements in certain areas of the code to make decompilation virtually impossible.

  • Dynamic Code Wrapping
  • Dynamically wraps up the ActionScript byte-code blocks in SWF files to make finding entry points of the code very difficult for Flash decompilers. This will usually crash the decompiler.

  • Statement-level Randomization
  • Will randomly restructure the sequence of the byte-code instructions that the decompiler uses to reform a complete ActionScript statement. It removes all the possible links between the compiled byte-code and the ActionScript source code making decompiling a very difficult process.

  • String Encryption
  • Will replace sensitive literal strings in your code with a function call that gets the string from an encrypted byte array.

    The Information secureSWF Removes

  • Packages (and internal namespaces for AS3)
  • Classes
  • Functions (getters and setters as well)
  • Variables (local and global variables for AS1 and AS2)
  • Handles Inheritance and Polymorphism
  • Dynamic Variables (even the ones done by AS2 eval)
  • Removes Function Parameters Names
  • Frame Labels
  • Symbol Instance Names
  • Button Names
  • Textfield Names
  • Edit Textfield Variables
  • SWF Metadata
  • ActionScript 3 Metadata
  • Getting Started secureSWF

    secureSWF Manual


    Only to show you the result of the secureSWF encryption I wrote this basic class.

    	import flash.display.Sprite;
    	import flash.display.StageAlign;
    	import flash.display.StageQuality;
    	import flash.display.StageScaleMode;
    	public class Main extends Sprite
    		private var _draw:Sprite;
    		public function Main()
    		private function testFor():void
    			for (var i:int = 0; i < 10; i++) 
    		private function createDraw():void
    			_draw = new Sprite();
    			_draw.graphics.drawRect(0, 0, 100, 100);
    		private function configStage():void
    			stage.scaleMode = StageScaleMode.NO_SCALE;
    			stage.quality = StageQuality.BEST;
    			stage.align = StageAlign.TOP_LEFT;
    	import flash.display.*;
    	public class do extends Object
    		public function do(  )
    			var _local_1:boolen;
    			var _local_2 = false<NULL&param2;
    			if( _local_2&&_local_1 )
    			if( _local_2 )
    				if( _local_2 )
    					if( _local_2&&_local_2 )
    						this. do();
    		private function if(  ):void
    			var _local_1:boolen;
    			var _local_2 = ^===<-^false++;
    			if( _local_1 )
    				 case = new Sprite();
    				if( _local_2&&this )
    				addChild(this. case);
    				if( _local_2&&_local_1 )
    					this. case.graphics.beginFill(16711680);
    					if( _local_1 )
    						_local_2 = 0>0;
    						drawRect(,this instanceof 0-0,100,100);
    						this. case.graphics.endFill();
    		private var  case:Sprite;
    		private function break(  ):void
    			var _local_1:boolen;
    			var _local_2:Object;
    			if( _local_2 )
    			stage.scaleMode = StageScaleMode.NO_SCALE;
    			if( _local_2 )
    				stage.quality = StageQuality.BEST;
    				if( 0-0||this )
    					stage.align = StageAlign.TOP_LEFT;
    		private function  do(  ):void
    			var _local_2 = true as param2>=param2;
    			var _local_3:boolen;
    			var _local_1:int;
    			while( _local_1<10 )

    You can see, the result is very crazy, but the code executes exactly the same as the original. For this example I used the standard encryption preset (among other presets), but with more security settings my decompiler crashed. Very nice!!
    Well, this example is the end of my post. I hope you like it. Any comment or suggestions will be welcomed.

    Sponsored by secureSWF

    Nov 232009


    Well, once again writing about Unity3D, the latest good news is that now the engine is free but it has some restrictions (no dynamic shadows, shaders, etc). I recommend to everyone who is interested in developing games to download it, start to play, enjoy it!!.

    The images above belongs to the actual version of a racing game prototype that I am working on in my free time. The demo has bugs and is not finished yet, but I want to show you the posibilities of Unity3D Pro and its dynamic shadow system. I hope you enjoy this demo, feel free to leave me any comments or suggestions.


    Oct 282009

    Testing whether a point is inside a polygon is a basic operation in computer graphics. Here a example of how to do that in a very simple way.

    private function insidePolygon(pointList:Array, p:Point):Boolean
    	var counter:int = 0;
    	var i:int;
    	var xinters:Number;
    	var p1:PointTest;
    	var p2:PointTest;
    	var n:int = pointList.length;
    	p1 = pointList[0];
    	for (i = 1; i <= n; i++)
    		p2 = pointList[i % n];
    		if (p.y > Math.min(p1.y, p2.y))
    			if (p.y <= Math.max(p1.y, p2.y))
    				if (p.x <= Math.max(p1.x, p2.x))
    					if (p1.y != p2.y) {
    						xinters = (p.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
    						if (p1.x == p2.x || p.x <= xinters)
    		p1 = p2;
    	if (counter % 2 == 0)


    Oct 142009

    In this first post I will tell you about the new features that are coming with AIR 2.0

  • Start native processes and applications: In AIR 2.0 you will be able to start a native application installed in the OS from you AIR application. This is very very useful.
  • Native Installers: You’ll also have Native Installers for the OS. You will be able to generate .exe, .dmg, .rpm or .deb when you package the file. Obviously the .air file is also included in the list.
  • New classes. FilePromise, URLFilePromise: You will use these classes when you want to download a file from the server but you don’t have the file reference yet. That’s why you will be telling AIR that you have a promise of a file.
  • Socket servers: This is an extraordinary feature. You will be able to configure and start a socket server from the AIR application. We know that FlashPlayer can connect to socket servers but now you will be able to start one from the AIR app and also secure socket servers with TLS
  • IPv6: Now you’ll have compatibility with IPv6.
  • NetworkInfo class: With this new class we can check detail information about the network in the hosting device. Information like the interfaces that are available in the host.
  • UDP support: We can now connect by UDP.
  • Audio encoding: This is an extraordinary functionality because with this feature we will be able to record the sound captured by the microphone without any server like FMS or any other. Basically we can encode the sound raw info as a sound.
  • Global Error Handling: Have you ever tried to handle the multiple errors that you forgot to catch ? Now we can do it. The global error handling will work as a general try and catch block for any exception that could happen during the app execution.
  • JavaScript Debugging and profiling: The ability to debug and profile javascript code in the AIR app will be integrated into the AIR 2.0 runtime. Profiling will be only available from Aptana.
  • New webkit features: Now the engine has a module that supports CSS3 :-D, custom styles can be applied to scrollbars, we can break up text across columns, and more.
  • Profiles for AIR applications: Defined in the application descriptor, we now have a set of profiles that enable/disable some functionality in the Application. We have a “desktop” profile, a “NativeDesktop” profile (for native installers), “mobile” profile (for mobile AIR applications) and “extenden mobile” profile.
  • AIR Mobile applications: Yes, we can now create AIR applications for mobile devices, including the iPhone and the applications for iPhone will be package as .ipa, a native iPhone Application.
  • Sep 282009

    Here my last example using Unity3D, it is a very simple First Person Game. I made it following the fps tutorial from official web site of unity (view tutorial). All model are from free 3d models pages and is the part that take more time in the example :)..

    View EXAMPLE

    unity3D example 3

    unity3D example 3

    unity3D example 1

    unity3D example 1

    unity3D example 2

    unity3D example 2


    Aug 192009

    To find used zone of a image I use this code.

    //Create a color mask with a alpha tolerance value. (_alphaTolerance is the percent)
    var maskTolerance:uint = Math.round((2.55) * (100 -_alphaTolerance)) << 24;	
    //Get used zone
    var usedZone:Rectangle = image.bitmapData.getColorBoundsRect(maskTolerance, maskTolerance, true);


    Get Adobe Flash player