• Home
  • Contact
  • Careers
  • Socialize With Us:
  • Send us Mail
  • Follow us on Twitter
  • Join our Facebook Group
  • /
  • Linkedin
  • /
  • Vimeo Videos
  • /
  • Youtube
  • /
  • RSS Feed
  • Search Site

  • About UsAwards & Bio
  • PortfolioOur Latest Work
  • TrainingTips & Tutorials
  • BlogGreat Articles

You are here: Home / Tag: Flash

Tag Archive for: Flash

Adobe Max 2013: Best Gaming Sessions

Category: Industry News     |     Tags: AIR, AS3, Flash, Games, Mobile

I recently covered an Introduction To Adobe Game Developer Tools. With excitement and momentum (created primarily by Stage3D and its Starling Framework) we see proactive, positive marketing by Adobe for gaming and the Flash Platform. The community hopes this will help keep the Flash Platform in the minds of business leaders and developers as a viable technology for new projects.

Adobe recently announced the details for the annual Adobe Max conference. Thankfully, in 2013 we see a focus on gaming.

Adobe Max 2013

Adobe MAX 2013 will be at the L.A. Convention Center & Nokia Theatre L.A. LIVE on May 4 – 8, 2013

(From Adobe Marketing:) Adobe MAX is all about creativity and expressiveness. If you create, you won’t want to miss MAX. Designers, developers, strategists, video professionals, photographers, and more all come to MAX to exchange ideas and inspiration. Together with industry pros and visionaries, you’ll learn about the latest technologies, techniques, and strategies for delivering your best creative work. Come to MAX and explore how creativity is changing the word and what part you have to play in that change. And every full conference MAX pass includes a one year membership to Adobe Creative Cloud*

Adobe Max 2013: Gaming Sessions

Here are the game-related sessions we can look forward-to;

ID TITLE DATE TYPE
L7804 Building a Platformer Game with the Starling Framework Monday 5:00 PM, Tuesday 3:00 PM Lab
L7902 Developing Multiplatform Games with the Adobe Gaming SDK Monday 12:45 PM, Tuesday 12:30 PM Lab
PB7682 Building Games with the Adobe Gaming SDK Sunday 9:00 AM Preconference BYOD Lab
PB7683 Advanced Flash Gaming Development with the Latest Adobe Technologies Sunday 9:00 AM Preconference BYOD Lab
S7802 Adobe Gaming Roadmap Monday 2:00 PM Session
S7805 Wired Up: Integrated Tools for Game Creation Tuesday 1:00 PM Session
S7862 Becoming a Successful Game Developer with Adobe Flash Tuesday 4:00 PM Session
S7904 ActionScript Game Frameworks Panel Wednesday 9:30 AM Session
S8022 Mastering Multiplayer Stage3D and AIR game development for mobile devices Monday 2:00 PM Session
S8202 Extending Mobile Games with AIR Native Extensions (ANEs) Tuesday 8:30 AM Session
S8362 Next-Generation Runtime for Adobe Gaming Tuesday 8:30 AM Session

Next Steps

  • Read my recent Introduction: Adobe Game Developer Tools article
  • See the full Adobe Max 2013 list of sessions
  • We at RMC are excited to collaborate with you. We are experts in Flash Platform Gaming, and more. Not sure if HTML5, Unity, or Flash is right for your next project? Just ask!

ActionScript 4.0 Revealed

Category: Industry News     |     Tags: AS3, Flash

Over the past year I’ve been learning more HTML5 frameworks. Frequent leaders of our site here may remember I’ve done some analysis on HTML5 Game Frameworks as well as HTML5 App Frameworks. A major significant lack in the HTML5 ‘solution’ is the limitations of JavaScript. I was delighted to come across the official Adobe Roadmap (See ‘Members Resources’ below) for the FlashPlatform. An exciting inclusion in the roadmap is what’s up for “ActionScript Next” (Codename) or as I choose to call it ActionScript 4.0.

UPDATE (January 30th, 2013): ActionScript “Next” (aka 4.0 as I call it here) has been explicably removed from the Adobe Roadmap.

UPDATE (June 15th, 2012): Adobe announces the plan for concurrency in Flash Player and AIR – Workers.

ActionScript 4

The range of applications and content for ActionScript has shifted significantly in recent years, while the ActionScript 3 language remains virtually unchanged since its introduction in 2006. Adobe believes it is time to revise the language to carefully steer its further evolution towards greater expressiveness as well as productivity and performance gains.

From a language design standpoint, Adobe uses the following assumptions as a guide for next-generation ActionScript development:

  • Increasing demand for long-term productivity benefits such as robustness, modularity, and maintainability to complement shorter-term productivity benefits characteristic of scripting languages, such as speed of development
  • Demand for high performance increases
  • Demand for hardware utilization increases

First, Adobe plans to make significant performance increases in the short term with a goal of continuing performance improvements over the long term. Performance is the primary goal when we approach how to evolve ActionScript. Second, Adobe aims to increase developer productivity by simplifying the language, improving tool support, and boosting bug prevention. Finally, having reduced unnecessary complexity, we will be in a position to innovate within the Flash runtimes much more quickly.

Features Currently In Discussion;

  • Stringent static typing as default, with optional dynamic typing: Most stretches of most programs are expected to benefit from static typing. However, ActionScript 3 tends to lapse into dynamic typing all too easily in places where absolutely stringent static typing would be preferable. This will be corrected. Dynamic typing will still be available when needed, but it will no longer be the default for ActionScript, and it will need to be enabled explicitly.
  • Type inference: Type declarations will only be necessary in certain strategic places. Everywhere else the compiler will automatically infer suitable type declarations and treat the whole program as statically typed, even though the programmer does not have to state any types. Thus the convenience of untyped programming can be approximated quite well, while providing the performance advantages of typed programming.
  • Hardware-oriented numeric types: For example, int , uint , float , float4 , byte , short , long , etc. (the exact set of types is still under discussion). Currently in ActionScript 3 integer values can overflow into floating point values. This will be changed so that numeric operations will never change the underlying representation of the numeric. We foresee this addition greatly reducing implementation complexity and improving runtime performance.

These are just a couple of areas that we are focusing on. We will update this document as our thinking evolves and solidifies around how the language and virtual machine will change.

Compatibility

Its is stated that AS4 will not be completely compatible with AS3. So maybe there will be a compiler option and one must choose EITHER one or the other (similar to the mutual exclusive option between AS3 and AS2. Depending on the amount of changes in AS4 we may see a new virtual machine inside the player designed to run only the AS4. Currently there are two VM’s – one for AS3 and one for older ActionScript.

Wishlist

Many developers have been dreaming (ex. here & here) of features for ActionScript for ages. Some features I would love to see;

  • Abstract Classes with Abstract Methods (ASL-18) – Well, do I have to have to say something about that wish? Basically abstract classes are such an essential thing, I am still wondering how Action Script made it to 3.0 without them. Just documenting which Methods must be overridden is not enough. And the known workarounds are really… well… hm… forget it – this is a compiler thing, which cannot be checked at runtime.
  • Generics (FP-811) – The Vector class is a good start – but it’s not well supported in Flex 3 (keyword: data binding) and it’s not a generic concept. There should be something like Generics in Java that provide type checking at compile time, but can also be used for any custom class, just like in Java.
  • Enums – While I have a (almost) perfect workaround for Enums in AS3, it would be great to see native language support.
  • Singletons – I have a fantastic workaround for Singletons in AS3
  • Improved ‘Event Listener’ syntax and performance. I like the features offered by the AS3-Signals project.
  • Operator Overloading (ASL-10) – Still missing it in Java and this is, where Action Script could actually beat Java. I don’t want to have another equals method for comparing arbitrary classes for equality – I want to be able to simply override the == operator to be able to compare any two objects for equality. Or the + operator for concatenating two data structures. Just like in C++ or smalltalk.
  • Method Overloading (ASL-9) – While ActionScript provides an easy way to simplify methods with long parameter lists using default values for parameters it’s not enough to justify not having method overloading. I do not want to have to write methods like doSomethingWithString(value:String), doSomethingWithInt(value:int), doSomethingWithObjectA(value:ObjectA),…

ActionScript 4.0 Code Samples (A Proposal)

AbstractClassDemo

package
{
	//class must be subclassed before instantiation
	abstract public class AbstractClassDemo
	{
		public function AbstractClassDemo()
		{
		}
	}
}

AbstractMethodDemo

package
{
	public class AbstractMethodDemo
	{
		public function AbstractMethodDemo()
		{
		}

		//Method must be overridden before usage
		abstract public function sampleMethod () : void
		{
		}
	}
}

DestructorDemo

package
{
	public class DestructorDemo
	{
		//constructor
		public function DestructorDemo()
		{
		}
		//destructor, called upon instance deletion
		public function ~DestructorDemo()
		{
		}
	}
}

Enums

package
{
	public enum EnumSample
	{
		ENUM_SAMPLE_A;
		ENUM_SAMPLE_B;
	}
}

 

package
{
	public class EnumDemo
	{
		public function EnumDemo()
		{
			trace (ENUM_SAMPLE_A); //[EnumSample ENUM_SAMPLE_A]
			trace (ENUM_SAMPLE_B); //[EnumSample ENUM_SAMPLE_B]
			trace (ENUM_SAMPLE_A is EnumSample); //true
                        trace (ENUM_SAMPLE_A is EnumSample); //true
                        trace (ENUM_SAMPLE_A == ENUM_SAMPLE_B); //false
		}
	}
}

GenericsDemo

package
{
	public class GenericsDemo <AGE_TYPE, NAME_TYPE>
	{
		private var _age  : AGE_TYPE;
		private var _name : NAME_TYPE;

		public function GenericsDemo(AGE_TYPE : aAge, NAME_TYPE, aName)
		{
			_age 	= aAge;
			_name 	= aName;

			//Later, in use, declare types at runtime for the generic
			//var genericsDemo : GenericsDemo<Float,String> = new GenericsDemo<Float,String> (10.0, "Flash");
		}
	}
}

MethodOverloadingDemo

package
{
	public class MethodOverloadingDemo
	{
		public function MethodOverloadingDemo()
		{

			//The implementation of this AS3 Syntax
			//	can now be overloaded in AS34
			_sampleMethod();
			_sampleMethod(10.0);
			_sampleMethod("10.0");
		}

		/**
		 *
		 * @return void
		 *
		 */
		override public function _sampleMethod () : void
		{
			trace ("Parameters - None");
		}

		/**
		 *
		 * @return void
		 *
		 */
		override public function _sampleMethod (aValue_float : Float) : void
		{
			trace ("Parameters - Float: " + aValue_float);
		}

		/**
		 *
		 * @return void
		 *
		 */
		override public function _sampleMethod (aValue_str : String) : void
		{
			trace ("Parameters - string: " + aValue_string);
		}

	}
}

NumericTypesDemo

package
{
	public class NumericTypesDemo
	{
		public function NumericTypesDemo()
		{
			//specificity helps ram usage
			var sample_int 		: int 	= 10;
			var sample_uint 	: uint 	= 10;
			var sample_float 	: Float = 10.0;
			var sample_float4 	: Float4= 10.0;
			var sample_byte 	: Byte 	= 1;
			var sample_short 	: Short = 10;
			var sample_long		: Long 	= 10;
		}
	}
}

OperatorOverloadingDemo

package
{
	public class OperatorOverloadingDemo
	{
		public function OperatorOverloadingDemo()
		{
			//The implementation of this valid AS3 Syntax
			//	can now be overloaded in AS34
			this +  10.0;
			this -  10.0;
			this * 	10.0;
			this /  10.0;
			this == 10.0;
			this += 10.0;
			this -= 10.0;
			this *= 10.0;
			this /= 10.0;

			//Etc...

		}

		/**
		 * Add
		 *
		 * @return Float
		 *
		 */
		override public function operator== (aValue_float : Float) : Float
		{
			//	Mimic default implementation
			if (super.operator==(aValue_float) ) {
				return true;
			} else {
				return false;
			}
		}

		/**
		 * Add
		 *
		 * @return Float
		 *
		 */
		override public function operator+ (aValue_float : Float) : Float
		{
			//	Mimic default implementation
			this = super.operator+(aValue_float);
			return this.toFloat();
		}

		/**
		 * Etc...
		 *
		 *
		 */

	}
}

SingletonDemo

package
{
	public class SingletonDemo
	{
		//private constructor mean 'Singleton'
		private function SingletonDemo()
		{
		}
	}
}

StaticTypingDemo

package
{
	public class StaticTypingDemo
	{
		public function StaticTypingDemo()
		{
			//compiler determines type by default
			var sample1 = 10;
			trace ("sample1: " + sample1); 	//10
			trace (sample1 is uint); //true

			var sample2 = -10;
			trace ("sample2: " + sample2); 	//-10
			trace (sample2 is int); //true

			var sample3 = 10.0;
			trace ("sample3: " + sample3); 	//10.0
			trace (sample3 is Float); 		//true

			//dynamic type in strategic places
			var sample4 : int = 10.0 as int;
			trace ("sample4: " + sample4); 	//10
			trace (sample4 is int); 		//true

		}
	}
}

Next Steps

  • What would you like to see in AS4? Comment below!
  • Download the Official Adobe Roadmap for Flash / ActionScript 4.0 (See ‘Member Resources’ below)

Member Resources

'Free Member'-Only Content

You must be a 'Free Member' to see this content. With your access you will enjoy members-only content like this, HD video tutorials, and access to complete source code.

Ready To Join?
  • Sign up for 'Free Member' level now. Its free!
  • Sign up for 'Paid Member' level to enjoy much, much more! (Invite Only)
Already A Free Member?
  • Log in and enjoy!

Fixing Memory Leaks with Adobe Flash Builder

Category: Quick Tips     |     Tags: AIR, AS3, Debugging, Flash, Flex, Optimization

On a recent project, we had a performance problem. The AIR project’s requirements include the heavy adding/removing of UI elements and over time we could easily see the performance slowed. We knew there was a something wrong. It was a memory leak. A memory leak starts when an object is stored in memory but cannot be accessed by the running code. When the undesired object cannot be freed from memory, and is not usable, it is a leak. Over time the application may leak (or re-leak the same issue) more and more. Eventually the application may show signs of the leak or even become unusable.

User Experience Symptoms Of  A Memory Leak

  • During regular use the application becomes more and more sluggish/slow. If there is nothing ‘new happening’ onscreen and no heavy ‘rendering’ it is more obvious to notice the Framerate-per-second (FPS) lower. You can use a small debug window (such as Hi-Res-Stats formerly MrDoobs Stats) to show the current FPS and estimated ram usage to help you notice this. If you see the FPS run at 30 for example during the first minute of use and 20 after 5 minutes, there may be a memory leak.
  • The application quits suddenly. This could be for many reasons, but it may be that the application runs out of memory.
  • Flash throws the memory-specific error ‘flash.errors.MemoryError’
Even if you see one of these symptoms it may not be obvious that there is a problem or that the problem is a memory issue. Or perhaps your development machine is high powered with ample RAM, yet your target user’s machines are slow. You don’t see the issue, but your users will. So how can we diagnose the issue. Luckily, the Flash Builder IDE has a ‘Profiler’. This program runs alongside your application and serves several key roles. You can monitor your applications USAGE of memory over time, and see a live list of all OBJECTS in memory (including references to those objects).

Profiling To Find Evidence Of A Memory Leak

  • Run your application with the Flash Builder Profiler. Run -> Profile As… -> etc…
  • Watch the ‘Memory Usage’ Panel
  • Look at the curves of Peak Memory (Red) and Current Memory (Blue). The analysis is totally application dependent. In your particular application, if you expect memory not to grow, but you see it grow, that is a problem. If you expect the memory to drop (UI removed from stage, arrays and vectors emptied, etc…) and you don’t see it drop, that is a problem. Herein lies the art of memory profiling. Consider to add a button to ‘Reset Application’, then click it and see that indeed the Current Memory drops to zero (0).
  • Watch the ‘Live Objects’ panel. Compare the 1. ‘Cumulative Instances’ and 2. ‘Instances’. For each object. #1 shows the total objects every created since the application started and #2 shows only those currently in memory. If these numbers are the same, and should not be, that is a problem. Perhaps you feel you have deleted a sprite from the stage or deleted another object from memory yet it still exists.


Tools And Tips For Finding And Fixing Memory Leaks (Must Read!)

  • Memory Tracker – http://divillysausages.com/blog/tracking_memory_leaks_in_as3.
  • Solving Memory Leaks (FANTASTIC!) - http://www.tikalk.com/flex/solving-memory-leaks-using-flash-builder-4-profiler
If you want to play with a simple example you can download the example below (See ‘Member Resources’) below.

Example 1: Without Memory Leak

package
{
	import flash.display.Sprite;
	import flash.events.Event;

	//USE A LOW FRAMERATE, SO WE CAN STUDY CLOSELY
	[SWF(frameRate="1")]
	public class MemoryLeakDemo extends Sprite
	{

		private var listOfDots_vector:Vector.<CustomDot>;
		public function MemoryLeakDemo()
		{
			//REPEAT SOME CODE EVERY SECOND
			addEventListener(Event.ENTER_FRAME, _onEnterFrame);

			//CREATE A LIST
			listOfDots_vector = new Vector.<CustomDot>();
		}

		protected function _onEnterFrame(event:Event):void
		{
			//EVERY FRAME WE...

			//1. CREATE A NEW 'DOT' (A Red Circle Sprite)
			//MEMORY NOTE: 	'var' is a temporary variable.
			//So CustomDot has 0 (permanent) references
			var customDot : CustomDot = new CustomDot();

			//2. ADD TO THE STAGE
			//MEMORY NOTE: 	So CustomDot has 1 (permanent) reference; 'this'
			addChild(customDot);

			//3. REMOVE TO THE STAGE
			//MEMORY NOTE: 	So CustomDot has 0 reference
			removeChild(customDot);

			//So...
			//THERE IS NO LEAK
			//The GC will *mark* the 'customDot' as having 0 references and
			//The GC will *sweep* it away from memory.

		}

	}
}

Example 2: With Memory Leak

package
{
	import flash.display.Sprite;
	import flash.events.Event;

	//USE A LOW FRAMERATE, SO WE CAN STUDY CLOSELY
	[SWF(frameRate="1")]
	public class MemoryLeakDemo extends Sprite
	{

		private var listOfDots_vector:Vector.<CustomDot>;
		public function MemoryLeakDemo()
		{
			//REPEAT SOME CODE EVERY SECOND
			addEventListener(Event.ENTER_FRAME, _onEnterFrame);

			//CREATE A LIST
			listOfDots_vector = new Vector.<CustomDot>();
		}

		protected function _onEnterFrame(event:Event):void
		{
			//EVERY FRAME WE...

			//1. CREATE A NEW 'DOT' (A Red Circle Sprite)
			//MEMORY NOTE: 	'var' is a temporary variable.
			//   So CustomDot has 0 (permanent) references
			var customDot : CustomDot = new CustomDot();

			//2. ADD TO THE STAGE
			//MEMORY NOTE: 	So CustomDot has 1 (permanent) reference; 'this'
			addChild(customDot);

			//2B. CREATE ANOTHER REFERENCE TO THE DOT
			listOfDots_vector.push(customDot);

			//3. REMOVE TO THE STAGE
			//MEMORY NOTE: 	So CustomDot has 0 reference
			removeChild(customDot);

			//So...
			//THERE *IS* A LEAK
			//While we are correctly calling removeChild
			//There is a reference left in '2B' above.

		}

	}
}

Next Steps

  • Download the code and check it out! (See Member Resources)
  • Comment below with your thoughts.
  • NOTE: Flash Builder 4.7 (BETA2) has new Profiler called “Monocle“. It looks very exciting, yet this article focuses on the currently available (non-BETA) profiler.

Member Resources

'Free Member'-Only Content

You must be a 'Free Member' to see this content. With your access you will enjoy members-only content like this, HD video tutorials, and access to complete source code.

Ready To Join?
  • Sign up for 'Free Member' level now. Its free!
  • Sign up for 'Paid Member' level to enjoy much, much more! (Invite Only)
Already A Free Member?
  • Log in and enjoy!

Considering Flash-To-Mobile Development

Category: Industry News     |     Tags: AIR, Flash, Flex, HTML5, Mobile

THE CHOICES

Software development has gone mobile. We see a large audience using smartphones and tablets, and as developers/marketers/entrepreneurs we want in. When planning such a project there are myriad decisions.

CHOOSE – THE PLATFORM

The choice of target platform (e.g. iOS) and target device (e.g. iPad2) is a primary consideration. Apple’s iOS hits the majority of the market but with time others will mature and may offer more competition. Moreover to hit your market you may be best served to offer your software to more than one platform and more than one device-per-platform. Quite quickly a rather conservative project can target 5-10 unique pieces of hand-held hardware.

CHOOSE – THE DEVICE

Each device offers unique features. The market-penetration, platform, processor-speed, input-capabilities, screen-size, and other factors are all important. Two major form-factor camps are ‘phone’ size and ‘tablet’ size. There is some overlap between these categories such as the Samsung Galaxy 1000.

CHOOSE – THE MONETIZATON

There are many monetization schemes possible. Here are a few of the popular ones;

  • Free – To gain experience and reputation.
  • Freemium – Offer a free version and market within the experience for a pay-version with more features.
  • Ads – Integrate video ads, animated ads, or still ads into the experience.
  • Micro-transactions – Offer bite-sized purchase opportunities which enhance the experience.

CHOOSE – THE DEVELOPMENT PATH

When the platform(s) and device(s) have been chosen, the path to develop must be chosen. In general there are two strategies

a) Native App Development – This means you use the 1st-party language (and tools) offered by the platform creators. This means using XCode tool with Cocoa framework coded with the Objective-C language when developing for iOS. Native development generally offers the very best potential performance (i.e. for high-end gaming) and tightest integration to the devices (e.g. detect battery level, etc…) and OS/marketplaces (e.g. iOS in-app-purchase).

b) Non-Native App Development – Many 3rd parties offer code libraries and tools to ‘speed up development’. Some of these are in the native language and some are not. Some of these non-native solutions offer the ability to ‘code once (so to speak) and deploy to multiple platforms’.

c) Mobile Web Development – Instead of a standalone application, an experience can be made available via web-browser and development to fit the size of the target (mobile) device(s). With HTML5 much is possible, but in general this is used for less-expressive less-device-specific experiences. It can also be a very inexpensive way to ‘break into mobile’, as you can use assets/code from your existing website..

CROSS-PLATFORM DEVELOPMENT

While the ability to develop one project for multiple platforms offers many advantages in saved development time and ease in maintenance, it also offers many challenges. Designing a compelling application that takes advantage of the unique features of each device and looks polished on the dizzying array of screen sizes out there can be daunting. For Flash-To-Mobile there are many resources on Adobe’s Mobile Devnet to help you learn the basics.

BACKEND

It is possible for an application to be self contained, including all data/assets with the original install. This is common for games. However many projects require internet connectivity. The data/assets loaded can reside on existing servers outside of your control, or can reside on your own servers. Custom backend solutions using typical backend languages (c++, Java, PHP, Python, etc…) may also be required. All of this depends on your particular project. In general any of the development-paths can contact any of these backend solutions, but some may connect more easily than others.

EXAMPLE…

Let’s assume you have a great new game and want to capture a ‘big audience’ with ‘modest investment’. If the application does not require deep-device-integration a recommended choice is to target both iOS (iPad1/iPad2, iPhone3G/iTouch3G, iPhone4G/iTouch4G) and Android (various devices). If your team has Flash expertise the Flash-To-Mobile publish path may be ideal.

FLASH-TO-MOBILE

With Flash CS6 and more-so Flash Builder 4.6, Flash/Flex developers can publish ONE codebase to MULTIPLE platforms. Using Adobe’s AIR 2.7 (latest public release) you can develop many platforms & Devices.

Compatible Target Platform/Devices: Web-Browser (Mac+Windows+Linux+Non-iOS Mobile Browsers), Desktop (Mac+Windows+Linux), iOS (Ipad1+Ipad2, iPhone+iTouch 3rd Generation, iPhone+iTouch 4rd Generation-Retina), Android (Myriad Devices), Blackberry Tablet OS (Blackberry Tablet).

Supported Flash-To-Mobile Device-Specific Features: Flash-To-Mobile does offer view-persistance, data-persistance, video playback, still-camera capture, still-camera-roll save/load, internet access, in-app web-browsing, accelerometer/gyroscope, Microphone, Geolocation, Multitouch, File-system access. Not all devices offer the same features. In the future ‘Native Extensions’ (see below) offer a solution.

Project Setup: A recommended options is one bulky Flex Library with (most) all code and assets, and then one Flex Project *PER PLATFORM*. You add/edit to the library and publish each of the projects as needed. You can test with an mobile-emulator (fastest) window that appears on your computer, or on the device via USB (best to test hardware features like accelerometer. The ‘flash’ code is converted to ‘native code’ (so to speak) before deployment.

Deployment: Upon completion the platform-specific file is uploaded to the platform-specific marketplace (e.g. iTunes’ App Store for iOS). A Flash-to-Mobile project sits along-side native applications. Ostensibly users have no idea the application was developed with non-native tools. The marketplaces do not delineate this or otherwise make that info available in any way to users. The end-user experience can be indistinguishable from a native app (project type and project polish depending).

NATIVE EXTENSIONS

In light of the ‘Device-Specific’ features listed above, Flash-to-mobile currently leaves us without everything we may want to do (e.g. iOS in-app-purchase). The yet unreleased (release date is ‘early October 2011′) Adobe AIR 3.0 will include ‘Native Extensions’. In short, this allows for *ANY* Flash-to-mobile project to access *ANY* feature on *ANY* supported device (Android / iOS / Blackberry Tablet). Developer will require knowledge of both AS3 (flash) as well as the Native language(s) on the target device(s) to add new features. Or your team can find free and premium extensions which the community could share. This is not just for mobile, this technology will also allow AIR on desktop computers and AIR on TV’s to integrate with those devices too.

LINKS

Native Mobile Development

  • Google Android
  • Apple iOS
  • Blackberry Tablet OS

Marketplaces

  • iOS App Store (iTunes)
  • Google’s Android Marketplace
  • Amazon’s Android Marketplace

Non-Native Mobile Development – Flash-To-Mobile

  • Flash-To-Mobile (Using Flash and/or Flex) for iOS/Android/Blackberry Tablet OS… also Desktop/TV/Browser
  • Success Bringing Flash Games to iOS
  • AIR 2.6 (Available in Full Release) – Commonly in use today.
  • AIR 3.0 (Available in Public Beta Now) – Offering Native Extensions and more.
  • Example of Best-Seller Flash-To-Mobile Game for iOS
  • Example of Best-Seller Flash-To-Mobile App for iOS
  • Flash-To-Mobile for iOS – Using SWC files to build large Flash and AIR projects with multiple SWF files

Non-Native Mobile Development – Others

  • Corona for iOS/Android
  • Corona vs Adobe AIR (Great Article)
  • RhoMobile for iOS/Android
  • Appcelerator for iOS/Android
  • Mosync for iOS/Android
  • Phonegap for HTML5 Mobile-Browsers

THE FUTURE

Some of what is coming in the future is listed below.. This may or may not all be included in the very-next tools. Recently Adobe has announced What’s new in Flex 4.6 SDK and Flash Builder 4.6.

I. The Second Coming (Halleluiah) – Flash-To-Mobile Native Extensions

This future feature will ostensibly allow Flash-To-Mobile projects to access *ANY* feature on *ANY* targeted device (e.g. in-app-purchase on iOS).

  • Adobe AIR 3.0 Native Extension – Explained!
  • Adobe AIR 3.0 Native Extension – Demo Mapview on iOS
  • Adobe AIR 3.0 Native Extension – Tutorial 1
  • Adobe AIR 3.0 Native Extension – Tutorial 2

Updated Febrary 23, 2012: See Here…

II. The Second Coming (Halleluiah) – Stage3D


Stage3D (Formerly codenamed ‘Molehill’) is a set of API’s available in the future that will ostensibly allow Flash Browser projects (using Flash Player 11) and Flash-To-Mobile projects (using Adobe AIR 3.0) to show high-grade hardware rendered 3D. Finally, the Flash Platform can truly compete as a 3D gaming engine. The same API (despite the name) can also be used for radically improved 2D gaming performance too.

NOTE: These API’s are low-level and challenging to understand. We expect 3rd parties will wrap this functionality with easy-to-use API’s for free/premium use.

  • Stage3D – Explained!
  • Stage3D – Demo!
  • Stage3D – How-To! (For 3D Gaming)
  • Stage3D – How-To! (For 2D Gaming)
  • Unreal Releases ‘Citadel’ – The first interactive demo of UNREAL engine running in Flash Player.
  • BlackSun Game for Stage3D

Update March 10, 2012: See Here…

III. The Second Coming (Halleluiah) – Air 3.2 = Stage3D for Mobile + Many Stage3D Frameworks

So with AIR 3.2  (See Adobe Press Release) we can use Stage3D for mobile. This means GPU-Accelerated graphics on iOS/Android. I think there is a marketable benefit on getting the Flash Player to compete against other 3D gaming solutions (such as Unity3D) and perhaps compete less with emerging 2D gaming solutions (such as HTML5 gaming) so I can sympathize with Adobe’s (better late than never) focus on 3D for Flash. This article “Why Starling (or any other 2D framework on top of Stage3D)?” explains some really good reasoning.

An unknown HTTP error occurred. Please examine shortstop's debug output for further details

Mind-blowing Demo’s of AIR 3.2 on mobile

  • Five AIR 3.2 Stage3D Mobile Demos That Will Knock Your Socks Off 
  • Spaced Away is the first game in the iOS app store to feature Stage3D by developers Falanxia.

Regardless of why, Stage3D is here, and Starling’s power lies in how it uses the Stage3D – first available in Flash 11 and AIR 3.0. Stage3D is designed for GPU accelerated 3D. While its possible to use the Stage3D API’s directly, it is very difficult. There are 3D frameworks for AS3 , but for many game developers we can exploit its power for 2D gaming. That’s why Starling focuses purely on 2D. So an API like Starling helps developers make great content – quickly.

AS3 frameworks use Stage3D for 3D gaming;

  • Flare3D,
  • Alternativa3D,
  • Away3D,
  • Minko

AS3 frameworks use Stage3D for 2D gaming;

  • Starling
  • ND2D
  • M2D
  • AtomEngine
  • Citrus Engine (Recently Upgraded To Stage3D)

Key Articles I’ve written on the subject

  • Intro To the Starling Framework (Read It!)
  • Angry Birds Launches on Facebook with Starling

Stage3D Games

Spaced Away

Spaced Away

Falanxia brings its FWA Award –winning space physics puzzle game to both iPad and your web browser.

Play game Learn more

Angry Birds Facebook

Angry Birds Facebook

Join your friends on Facebook to take out Rovio’s famous pigs with enhanced special effects.

Play game Learn more

Waste Invaders

Waste Invaders

Waste Creative’s tech demo lets you blast aliens at a silky smooth 60 fps, across browsers and iPad, with Stage3D.

Show demo Get the source

Alternativa3D Engine for Adobe Flash Goes Open Source

Category: Industry News     |     Tags: 3D, API, Flash, Games

The Alternativa3D 3rd-party 3D engine for the Flash Platform recently announced it is going open source after 6 years of closed development. An example of this kick-ass engine is the recent release of LastStand Deadzone for Facebook.

The source code is published on the GitHub, and support can be found on the Knowledge Base and community discussion can be found on the forum.

No concrete reasons are given for the change to open source.

The Alternativa company hopes that the community will continue to use and extend the engine. It hopes this is only the beginning of a new life for the engine.

Going Open Source (Is Not Evil)

Going open source is interesting. Open source is the philosophy which promotes free distribution of a code-base and the community involvement to modify that code-base. Many AS3 projects start as open source and I think the general reception is ‘wow, thanks for starting this project, I may use it, and maybe I’ll even help extend it’. However the community response seems to be quite different if a close project exists for some time as a closed project and then goes open source. It feels to many like the project which was ‘created for my use for free’ now has been ‘abandoned’.

The community reaction to the Adobe Announcement that Flex went open source was strongly negative. Same when the popular Pushbutton Engine was recently rebranded as the community-based ‘Smash‘ game engine.

These fear based reactions are reasonable. The feeling is that what was once taken for granted as a concrete cared-for project now has a questionable future. However like most fear based reactions they are not beneficial reactions.  Project owners are free to chose if/when they release a project open source, and the community can care for a project or choose an alternative. The power is in the hands of the community.

Conversely, and open source project that becomes closed and introduces fees to the community (I have no examples of that) is indeed sad. But that is not the case here.

Stay Tuned

  • Sign up for ‘Free Member’ level of this blog now. Its free!
  • Like RMC on Facebook. We like likes!
  • Follow @srivello on Twitter.

What do YOU Think?

  • Is going open source good or bad?
  • Please comment below.

Adobe Flash Player Premium Features for Gaming

Category: Industry News     |     Tags: Business, Flash, Games

So…

On March 28th, 2012 Adobe Announced “Adobe Flash Player Premium Features for Gaming“. Adobe will have new pricing for those creating certain types of advanced content. Content that is much more performant and of much higher quality than what developers (and their end-audience) are used to seeing in the browser.

It is my estimation, that the amount of current projects that this pricing will affects is very small. The amount of developers now or in the future that this pricing will affect is very small. However overreaction and misunderstanding about Adobe, this announcement, and the last 6 months of related news does have a negative affect on public perception, business owners, and the technologies chosen for new projects.

Before the community takes it out of context that “Adobe explains that in the near future, some developers will be required to pay Adobe on royalties from their projects” and overreacts about it — here is a clear programmer-friendly explanation shown below.

Who Pays?

Image URL: http://www.RivelloMultimediaConsulting.com/wp-content/uploads/2012/03/adobe_flash_player_premium_v1.jpg

How Much?

Let’s assume a company (or individual) creates a royalty-applicable project (see above). Here are a few sample payment scenarios to Adobe. If my math is wrong, please send a comment below. Prices are USD$.

  • 50,000 revenue (or less):  Payment to Adobe = 0
  • 75,000 revenue:  Payment to Adobe = 2,250
  • 100,000 revenue:  Payment to Adobe = 4,500
  • 500,000 revenue:  Payment to Adobe = 40,500
  • etc…

Community Reaction

Using Google, Twitter, and Facebook we see the reaction of the community over this announcement. The gross majority of media, bloggers, and developers are exaggerating the effect of this announcement. I appreciate the anger, but not the libel. Many err to say something like ‘all Flash developers will pay Adobe soon’, which is as we I’ve outlined here, not true.

The few balanced reactions to the announcement are here;

  • Rob Rusher’s -  Adobe Flash Player licensing doesn’t apply to you!
  • Lee Brimelow’s – Quick comments about Unity and premium features 
  • Any more?

Full disclosure: Some of those listed are of course Adobe employees or have an otherwise vested interest in Adobe’s side.

Related Posts

  • Setup Flash Builder For AIR 3.2 Stage3D for iOS/Android
  • FlyerGame – One Game, Many Many Frameworks
  • Angry Birds’ Screams on Facebook with Flash
  • Considering Flash-To-Mobile Development

Stay Tuned

  • Sign up for ‘Free Member’ level of this blog now. Its free!
  • Like RMC on Facebook. We like likes!
  • Follow @srivello on Twitter.

The Vocal Minority

Bad press will hurt Flash being chosen for new projects. That I agree with and that is sad. Blame the messenger sure, but also blame the sensationalism of the community.

Truly, relatively few developer’s projects are affected directly by this pricing. And the quality offered by ‘Flash Player Premium’ is different than what is currently considered ‘Flash’ and is so high-quality that there are no rival alternatives to in-browser technologies. Don’t agree..

  • Please comment a  link to any ‘Flash Player Premium’ project (Using BOTH API’s mentioned, regardless of revenue) which is in-development or already launched?
  • Please comment a link to any in-browser non-Flash project that rivals the quality of a ‘Flash Player Premium’ which is in-development or launched?

What do YOU Think?

  • Is this good or bad? Remember taxes pave your roads. Ha.
  • Please comment below.

Setup Flash Builder For AIR 3.2 Stage3D for iOS/Android

Category: Quick Tips     |     Tags: AIR, Flash, Flex, Mobile

Stage3D was introduced in Flash Player 11. It allows for GPU-Accelerated 2D and 3D performance in the Flash Player that is 1000x faster than before. It was not publicly available for AIR mobile projects until AIR 3.2.

There are lot of new significant features like mouseLock, middle click, right click, silent auto-update and Stage3D on mobile.

Super Easy Setup

  1. Download the new SDK (“Step 2″)
  2. Unzip the new SDK
  3. Open Flash Builder. Open Preferences. Search for “Installed Flex SDKs”. Look at the URL for an existing SDK. See the image below.
  4. Open Finder (or Windows Explorer) to that ‘sdks’ folder. Drag the new SDK next to the existing sdk(s).
  5. Open the same Flash Builder Panel. preferences panel again. Choose ‘add’ and browse to the new SDK. Don’t set it as ‘default’. But for each new project you create, it will be a choice for you to use.

For Step #3

Thats it. Enjoy!

Next Steps

Checkout other related articles.

  • Intro To The Starling Framework For AS3 with Stage3D
  • Angry Birds’ Screams on Facebook with Flash with Stage3D
  • What *IS* Wrong With AIR 3.0 Native Extensions!

Robotlegs Framework Template

Category: Quick Tips, Source Code, Standards & Best Practices     |     Tags: AS3, Flash, Flex, Mobile, Robotlegs

Robotlegs (from Robotlegs.org) is  a great architectural framework for AS3. It works for both Flash and Flex projects. I have been a fan since the beginnings of the framework and I even created the official “Robotlegs Framework Diagram“.

One of the drawbacks of using an architectural framework is the time required to setup the project. To help new developers, veteran developers, and myself, I create and update several templates for Robotlegs (RL). Each is a complete publishable “Hello World” type project. When I start any new RL project I begin with one of these Robotlegs Templates (RLT).

It kicks ass, enjoy!

Screenshots

It is a simple app. (Note images may vary slightly depending on template)

Mix-ins

I combine RL with some other fantastic technologies in some templates.

  • AS3-Signals – Events replacement
  • BabelFX – Language localization
  • Union Platform – Multiplayer

Next Steps

  • RLT_Web_Flex – The original! (See ‘Member Resources’ below)
  • RLT_Web_Flex_AS3Signals – My favorite! (See ‘Member Resources’ below)
  • RLT_Web_Flex_AS3Signals_BabelFX – (See ‘Member Resources’ below)
  • RLT_AIR_FlexMobile_AS3Signals_BabelFX – (See ‘Member Resources’ below)
  • RLT_AIR_FlexMobile_AS3Signals_Multiplayer – (See ‘Member Resources’ below)

Member Resources

'Free Member'-Only Content

You must be a 'Free Member' to see this content. With your access you will enjoy members-only content like this, HD video tutorials, and access to complete source code.

Ready To Join?
  • Sign up for 'Free Member' level now. Its free!
  • Sign up for 'Paid Member' level to enjoy much, much more! (Invite Only)
Already A Free Member?
  • Log in and enjoy!

Angry Birds’ Screams on Facebook with Flash

Category: Industry News     |     Tags: Flash, Games, HTML5, Mobile

Angry Birds for Mobile

Angry Birds  is a strategy puzzle mobile game developed by Finnish computer game developer Rovio Mobile. Inspired primarily by a sketch of stylized wingless birds, the game was first developed for Apple’s iOS in December 2009. The game was immediately very popular. The game is now readily available for most every tablet and smartphone.

The game play in Angry Birds (AB) is simple, physics based fun. It inspired dozens of clones – games which copy the signature control-scheme and style of the original.  It is generally considered to be the most successful mobile game to-date.

Popularity

November 2011, Rovio Entertainment announced its hit mobile game Angry Birds has been downloaded an “astounding” 500 million times since its 2009 debut. Here’s a by-the-numbers look at the milestone’s reported by The Week magazine:

  • 23 -Months it took for the game to reach the 500-million-download milestone. It was first released for Apple’s iOS in December 2009.
  • 79 – Number of countries in which Angry Birds is the top downloaded game
  • $1 billion – Amount Rovio is estimated to be worth by Chief Marketing Officer Peter Vesterbacka
  • 10 million  - Number of Angry Birds toys sold worldwide, says Chloe Albanesius at PC World

There is a feature film version of the game in development too.

Angry Birds for Browser

So when porting a popular brand from one platform/language to another typically you look at the developer community and the players communities. There are developers using a wide variety of technologies, and web browsers offer several options for gaming. Since the game is (relatively) simple in 2D graphics and physics – two major choices are HTML5 [1] and Flash[2, 3].

1. In May 2011, a pure HTML5 (or was it?) game. Actually the game reportedly uses Java, not JavaScript. The playable game is branded with the Google chrome logo, and the manner in which it encourages use of Chrome is nothing short of Google advertising. There is also a Google+ social version of the game.

  • I assume (and am too lazy to research further) the Google Angry Birds version is some type of sponsored collaboration between Rovio and Google.

2. In Fall, 2011, Adobe’s MAX Conference debuted a version (See Video) of Angry Birds using Flash. Obviously a huge software tooling company and creators of a huge game have many reasons to team up.

  • I assume (and am too lazy to research further) the Adobe Angry Birds version is some type of sponsored collaboration between Rovio and Adobe.

As an FYI, As of February 2012, both of these versions are still showing ‘BETA’ in their logo.

Angry Birds on Facebook

3. Now we come to the Facebook version. The tremendous audience of FB matched with the popularity of AB will surely bolster both brands and provide a valuable, social experience for users. On Valentines Day 2012, the Facebook, Flash version of AB launched and uses Flash Player 11′s “Stage3D” feature to render its fast accelerated 2D graphics. The project plays really smoothly and introduces some decent social game play.

Obviously excited, Adobe made the following press release;

Rovio launched Angry Birds for Facebook using Flash Player 11 with support for 3D graphics. The most social version of Angry Birds yet takes advantage of hardware accelerated graphics in Flash Player to bring a silky smooth gaming experience to a wider audience than ever before. More than 130 million people play Angry Birds every day – now with Flash Player, hundreds of millions of Facebook users can do the same. New, enhanced special effects like lighting, smoke and explosions running smoothly at 60 frames per second bring the game to a whole new level and allow players to have a more connected and engaging experience. Angry Birds on Facebook game makes it even more exciting to play with friends, offering amazing new power-ups like Sling Scope, Birdquake, King Sling and Super Seed to extend players’ gratifying arsenals.

Here is a video;

An unknown HTTP error occurred. Please examine shortstop's debug output for further details

Summary

Angry Birds

As a game player I think Angry Birds is good. Do I play it? Not much. Like many mainstream ideas from the perspective of a die-hard game player, I think its just good, not great. Part of this is evident when you look at the big budget titles that copy the exact gameplay and fail miserably. Angry Birds is a good game that came out at the right time and was very lucky for it. Its popularity brings it more popularity and for that its #1. I cannot argue with its success. It’s phenomenal. Any game developers would be happy to have this game in their portfolio. To now have the game on Facebook, that is great too.

Flash

As a long-term game developer, Flash has defined my career. With new platforms and devices arriving over the past 5 years, there is again much choice for independent game development teams. I compiled a great start-set of learning links and I also offer free HD video training on AS3 and other subjects. Also, here are a few recent articles;

I’ve written about the Starling Framework Used by Angry Birds

  • Intro To The Starling Framework for AS3
  • Starling Extension -  Dynamic Texture Atlas – Finally Vector Graphics in Starling!

I’ve written about Flash and about Flash Mobile;

  • ActionScript 4.0 Revealed
  • Considering Flash-To-Mobile Development
  • Flash-To-Mobile: Flash Vs Flex?
  • Unity3D Now Exports to Flash
  • More ‘Flash’ Articles

HTML5

I’m excited for HTML5, for app development and gaming and have written a bunch about it.

  • Flyer Game for HTML5 (Same game in 8 different Frameworks) Full Source-Code Included.
  • More ‘HTML5′ Articles

Here at Rivello Multimedia Development, we design and program with a variety of popular platforms. Contact us today with your game and app project ideas.

Unity3D Exports To Flash Contest Winners

Category: Industry News     |     Tags: AS3, Flash

As EDGE online reports – Tail Drift has been selected as the winner of Unity’s Flash In A Flash Creation Contest, which tasked entrants with porting Unity-authored games to Adobe Flash.

Developer Cameron Owen has won $20,000 for his flight-based arcade racer, which was selected ahead of more than 500 fellow entrants.

Unity Technologies‘ Flash development lead Lucas Meijer said: “Not only is Tail Drift incredibly fun, but it also shows off both the amazing technology and fast development capabilities of Unity.

“It’s extremely gratifying to see the development community adopt and take off at such a rapid pace with the new beta, and we can’t wait to see the stellar work that is still in store.”

CEO David Helgason added: “This was a thrilling contest for all of us at Unity. Our engineers have created some terrific technology for the Flash platform and it’s truly inspiring to see so many developers adopt and create such amazing games so quickly.

Runner Ups

Three games were named runners-up, and the developers of each receive $1,00, Unity Pro with iOS Pro, and an iPad 2. A further six games  get Unity Pro with iOS Pro.

  • AaaaaAAaaaAAAaaAAAAaAAAAA!!! For The Awesome
  • Six Sides Of The World
  • Ski Safari

Honorable Mention

  • Covert
  • Flatboyz
  • InvinciBall
  • Microtone
  • Pile Of Kittens
  • Running Fred
Page 1 of 212

Free Member Login

You are not currently logged in.






» Register
» Lost your Password?

Support Our Sponsors

Category

  • Industry News
  • Standards & Best Practices
  • Full Tutorials
  • RMC News
  • Events

Tag

3D AIR API AS3 AS3.5 Business Debugging Experimental Flash Flex Games HTML5 Java Loom Mobile Optimization Project Planning PushButtonEngine Robotlegs Smash Unity3D WordPress WordPress Plugin

Brazilean Developers

  • Abendita.com
  • dclick.com.br
  • dm9.com.br
  • Fellyph Cintra
  • IgorCosta.org
  • MonadaSolucoes.com.br
  • PossibleWorldwide.com.br
  • Unit9.com

Developers

  • Adobe Blogs
  • Ben Forta
  • Colin Moock
  • Enrique Duvos
  • Flash Mobile Blog
  • Jess Freeman
  • Kevin Hoyt
  • Lee Brimelow
  • Paul Trani
  • Quasimondo
  • Renaun Erickson
  • Ryan Stewart

Free Assets

  • Free Sounds
  • HasGrafics

HTML5 Games

  • Closure JS Library
  • Eloquent JS Manual
  • Game Framework – CraftyJS
  • Game Framework – EaselJS

Italian Developers

  • alchimedia.com
  • corlan.org/
  • creativesource.it
  • dimix.it
  • fabiobiondi.com
  • gnstudio.com
  • Interpreting-tech.com/bemobile/
  • leonardorisuleo.info
  • lucamascaro.info
  • mart3.org
  • mxml.it
  • nxn.it
  • pirosoft.it
  • Preload.it
  • sonnati.wordpress.com/
  • webgriffe.com

Products

  • Adobe.com
  • Amazon Kindle E-Reader
  • ElectroServer
  • F*CSS
  • Flash Development Toolkit (FDT)
  • O'Reilly PureMVC Book
  • Samsung Galaxy Tablet
  • Unity3D

RMC

  • RMC Consulting

Spanish Developers

  • Flash Adictos
  • HTML Cinqo
  • Tutoriales Flash

Tutorial

  • Active Tuts
  • AS3-to-Unity3D Training Videos
  • Doing 2D in Unity3D
  • Learning C#
  • Unity3D Tutorials

Unity3D Games

  • AS3-to-Unity3D Training Videos
  • Doing 2D in Unity3D
  • Learning C#
  • Matt Eley's Blog
  • Unity3D
  • Unity3D Tools
  • Unity3D Tutorials

I Am Great!

   

Latest Portfolio

  • Live Media Steaming ApplicationMay 20, 2013, 5:06 am
  • Museum Kiosk Touch ScreenNovember 15, 2012, 9:00 pm
  • Happy Birthday Mobile AppMarch 14, 2012, 5:55 pm
  • Official Robotlegs MVCS DiagramFebruary 24, 2012, 1:36 am

Latest News

  • Intro to Loom Game EngineMay 19, 2013, 6:48 am
  • Cross Platform Mobile: Free TalkDecember 21, 2012, 7:14 am
  • Cross Platform Mobile: Premium TrainingDecember 20, 2012, 7:41 am
  • Must-Have Non-Functional RequirementsDecember 14, 2012, 4:05 am

Latest Tweets (@srivello)

  • The internet in Kuala Lumpur at 6Mbps is a totally different product than at the typical 1Mbps of archipelagic Asia. http://t.co/EV010rXILx
  • Very inspired by the #XBoxOne. The presentation's focus on non-game features is both bold and a bit scary as a gamer.
  • 3 hours into my Centipede clone using #2DToolkit for #Unity3D http://t.co/5yWsMQvHEU
  • @pixelplacement I've seen 'iTween Parameter Code Hinting' but anyone done a completely strong-typed (no hash) version of iTween?

© Copyright 2006 - 2013 - Rivello Multimedia Consulting - Flash / HTML5 / Unity3D Game And App Development With Tutorials