First public beta of Minko 2 is available

AS3 Game Gears Blog , 2 Comments

You can start playing with Minko 2 from now on because its first public beta is available on Github. Minko1 was already a powerful engine/tool, but Minko2 goes even further with more speed and features.

Its rendering pipeline is now faster, showing an impressive(insane?!) +3000% performance boost in the best cases.  It also has a simple API to program the GPU. The complete list of new features you can check here.

Head to Github and start testing now! As soon as Minko2 is released, I will update the Minko entry here on the site.

Playtomic

Tracking , , | 1 Comment

Playtomic is a sophisticated analytics platform for casual and social games. It is an intelligence tool that offers deep insight into how people play your game and offers actionable data for improving your game and your players’ experience.

Some features:

  • Real time game analytics that are highly flexible with custom metrics and custom level metrics allow you to monitor your games success, identify problems and improve engagement.
  • Heatmaps that will show you in detail why players are unable to complete levels, and anything else you can imagine.
  • Highly detailed link tracking giving you detailed analysis on clicks on links in your game without routing the traffic through any external scripts.
  • Level sharing API allows your players to save the levels they make in your game, share them to permanent links on your or your sponsor’s website, rate and play levels.
  • Leaderboards can be created from within your game dynamically, come in high and low score modes, and include custom data that can also act as a filter automatically giving you leaderboards for levels, characters or anything else in your game.
  • GeoIP API can be used to identify which country a player is in for localization, ads or anything else.
  • GameVars provide you with variables you can update from within Playtomic to change your game at any time – advertise your latest game, adjust difficulty and more.
  • Distribution for Flash games, or if you’re a publisher you can download games for your site.
  • Custom databases you can use for surveys, feedback or anything else through our friends at Parse

Sample

package {
	import Playtomic.*;
	public class TestAnalytics {

		private static var level_number:int = 1;
		private static var seconds:int = 60;
		private static var retries:int = 3;
		private static var shots:int = 5;
		private static var coins:int = 18;
		private static var coinstotal:int = 20;
		private static var x:int = 100;
		private static var y:int = 125;
		public static function test():void {
			Log.Play();
			Log.Freeze();
			Log.Play();
			Log.UnFreeze();
			Log.ForceSend();

			Log.CustomMetric("ViewedCredits"); // metric, names must be alphanumeric
			Log.CustomMetric("Credits", "Screens"); // metric with group, groups must be alphanumeric
			Log.CustomMetric("ClickedSponsorsLinks", "Links", true); // unique metric with group
			Log.LevelCounterMetric("Deaths", level_number); // names must be alphanumeric
			Log.LevelCounterMetric("Restarts", "LevelName"); // level names must be alphanumeric
			Log.LevelCounterMetric("Restarts", "LevelName", true); // unique only
			Log.LevelAverageMetric("Time", level_number, seconds);
			Log.LevelAverageMetric("Retries", level_number, retries);
			Log.LevelAverageMetric("Retries", level_number, retries, true); // unique only
			Log.LevelRangedMetric("Shots", level_number, shots);
			Log.LevelRangedMetric("PercentCoinsCollected", level_number, int(coins / coinstotal * 100));
			Log.LevelRangedMetric("Shots", level_number, shots, true); // unique only
			Log.Heatmap("Metric", "Heatmap", x, y);
		}
	}
}

AlternativaGUI

UI , | 1 Comment

AlternativaGUI  is a library for creating user interfaces with different complexity. Due to the presence of the base classes only it allows greater flexibility in terms of creating new components or modifications of existing ones. The library offers a wide range of user interface elements such as buttons, containers, linear containers, scrollbar, tools for working with raster graphics and more.

Some features:

  • Flexibility: the library allows to create various graphics and can control their properties.
  • The quickness of creating unique component: through the use of base classes, the creation and management component runs on a deeper level.
  • High performance: performance is achieved by the efficient work of all components of the interface in a single system.
  • LOD elements: allows you to develop an interface for different screen resolutions.
  • User friendly API: working with components AlternativaGUI is like working with the standard classes such as Sprite.

StageWebViewBridge

Misc , | 6 Comments

StageWebViewBridge is an extended version of flash.media.StageWebView, which is a class to display HTML content in a stage view port. It provides simple means to display HTML content on devices where the HTMLLoader class is not supported.

Some features of StageWebViewBridge:

  • Extends Bitmap class, you can modify his x,y,alpha,rotation,visible, etc ( Version 1 Beta )
  • Communicates Actionscript with Javascript.
  • Communicates Javascript with Actionscript.
  • Load local files and resources in a easy way.
  • Extends loadString method with AS3 – JS communication.
  • Extends loadString method to load local resources.
  • Lets you take an SnapShot to use as the bitmapData of the bitmap.

Sample

// create StageWebViewBridge instance
// new StageWebViewBridge( x,y,width,height )
var view:StageWebViewBridge = new StageWebViewBridge( 0, 150, 320, 280 );

// add listener for when page becomes loaded
view.addEventListener( Event.COMPLETE, onViewLoadComplete );

// enable javascript to call function helloWorldFromJS
view.addCallback('helloWorldFromJS', helloWorldFromJS );

// load content to the view
view.loadLocalURL('appfile:/index.html');

// as StageWebViewBridge extends Bitmap
// we can now add it to the displaylist
addChild( view );

// event listener that gets called on page load complete
function onViewLoadComplete( e:Event ):void
{
        trace('view loaded');
        // call a javascript function after the page loads
        // that will do an alert with the date passed from as3
        view.call('helloWorldFromAS3', null, new Date().toString() );
}

// function to be called from JS
function helloWorldFromJS( at:String ):void
{
        trace('helloWorldFromJS called from JavaScript at '+ at );
}

GaforFlash

Tracking , | 1 Comment

GaforFlash is a lib with an API for Google Analytics data collection. It works as a standalone lib or as a Flash/Flex component.

Sample

package
{
    import fl.video.FLVPlayback;

    import com.google.analytics.AnalyticsTracker;

    import flash.events.MouseEvent;    

    /**
     * The VideoTracker sample class.
     */
    public class VideoTracker
    { 

        private var _tracker:AnalyticsTracker;
        private var _vid:FLVPlayback;

        /**
         * Creates a new VideoTracker instance.
         */
        public function VideoTracker( tracker:AnalyticsTracker , vid:FLVPlayback )
        {

            this._tracker = tracker;
            this._vid = vid;

            /* All tracking of clicks is done below. Here we track clicks instead of FLV VideoEvents
             * because the we want to track user interaction and the player sends VideoEvents even
             * when a user doesn't click on anything.
             */
            _vid.playButton.addEventListener( MouseEvent.CLICK, onPlayEvent );
            _vid.stopButton.addEventListener( MouseEvent.CLICK, onStopEvent );
            _vid.pauseButton.addEventListener( MouseEvent.CLICK, onPauseEvent );
            _vid.backButton.addEventListener( MouseEvent.CLICK, onBackEvent );
            _vid.forwardButton.addEventListener( MouseEvent.CLICK, onForwardEvent );
        }

        public function onBackEvent(e:MouseEvent):void
        {
            _tracker.trackEvent( "video", "back" );
        }

        public function onForwardEvent(e:MouseEvent):void
        {
            _tracker.trackEvent( "video", "fast_forward" );
        }

        public function onPauseEvent(e:MouseEvent):void
        {
            _tracker.trackEvent( "video", "pause" );
        }        

        public function onPlayEvent(e:MouseEvent):void
        {
            _tracker.trackEvent( "video", "play" );
        }        

        public function onStopEvent(e:MouseEvent):void
        {
            _tracker.trackEvent( "video", "stop" );
        }

    }
}