the official as3isolib blog

actionscript3 isometric library (v1/v2)

V2 development on hold until further notice (end of post)

Minimal as3isolib.v2 Preview Release project (as3-only)

preface

Keep in mind that these tutorials MAY (& likely will) become out dated very soon.  This is NOT a beta release, it is still actively in development and as such, the APIs and implementations are subject to change.  All interim licenses are applicable.

prerequisites

  • as3isolib.v2 preview release
  • an actionscript IDE (Flash Builder, Flash, Flash Develop, FDT)
  • basic understanding of the actionscript 3 APIs and flash display architecture

Assuming you have already set up your project, you can now start coding your first as3isolib.v2 project.  If you haven’t you can read the previous tutorial on setting up your project.

a basic example

Creating a basic working example is super simple.  Every as3isolib.v2 project will require 4 key components to function.

  • camera – basic information about where you are in the iso world (for now, later we will be able to track targets)
  • canvas – what we “paint” to.  This is the only connection to the flash diplay list.  Later on there will be other types of canvases, namely a stage3D type canvas.
  • scene – this is a data class that stores information about your collection of mEntities.  Now as of the time of this writing, I am already modifying this class to incorporate layers (much like we had with the original scene objects in v1)
  • engine – this is what renders the visual data and provides connective logic to the camera, canvas and scene objects.

Here is how we put it together – link2code

Getting Started w/ the as3isolib.v2 Preview Releases

preface

Keep in mind that these tutorials MAY (& likely will) become out dated very soon.  This is NOT a beta release, it is still actively in development and as such, the APIs and implementations are subject to change.  All interim licenses are applicable.

prerequisites

  • as3isolib.v2 preview release
  • an actionscript IDE (Flash Builder, Flash, Flash Develop, FDT)
  • basic understanding of the actionscript 3 APIs and flash display architecture

project setup

Once you’ve downloaded the as3isolib.v2 preview release zip file, you need to extract the files for use in your project & IDE.  The zip file contains the following:

  • licensing information
  • as3isolib.v2.engine.swc
  • as3isolib.v2.public.swc
  • as3isolib.v2.public source files
If you plan to modify the base entity class you will want to use the public source files rather than the public.swc. Otherwise just use the 2 SWC files provided.

flash builder projects

You will need to decide if you want to use an actionscript 3-only project or a Flex project.  Create a new project.

for actionscript 3-only projects

Next create a new folder in your project structure called libs (for Flex-based projects, this is already created for you).  Right-click on your project and select properties.  Then add your libs folder to the build path.

Drop the as3isolib.v2.engine.swc into the libs folder.  If you are planning on using the public.swc, then go ahead and drop it into the libs folder as well.  Otherwise copy the source folders into the src folder.  You should not copy the public.swc AND the public source. It is highlighted here only to show the structure.

flash

coming soon

flash develop & FDT

Sorry folks, I don’t have a PC and haven’t access to these applications.  If you are willing to supply a similar step by step process for getting started, please let me know and I will post your instructions here.

v2 status update – 2012.01.20

FIRST THINGS FIRST

as3isolib twitter

Firstly I would like to address a few questions/comments I have received via email and twitter regarding the blog. A few folks were concerned for the project and specifically the v2 efforts due to inactivity on the blog.  The as3isolib is not going anywhere.  The blog is rarely updated simply because most of the updates and related content are being relayed via the as3isolib twitter account:

http://twitter.com/as3isolib

It’s MUCH easier to post updates via twitter than via a blog post.  So please subscribe to keep up to date.  I TRY to limit my personal posts and keep the feed solely about as3isolib.  Lately I have been lazy and posted a few SOPA/PIPA rants, etc.  Now I have a personal twitter where I can do that.

as3isolib blog

This will ALWAYS be here to keep you up to date on more in-depth topics which can’t be addressed in the 128? max-characters that twitter imposes.  Like this one :)

as3isolib user group & API docs

A month or so ago, I learned that a majority of the people using the as3isolib had no idea there was a users’ group.  Doing some followup to this, I also learned that people aren’t aware of the official API docs either.  Suffice it to say I will be posting on the twitter feed reminder posts about the docs and user groups just to keep it fresh in folks’ minds.

V2

preface

Forgoing any legalese, all of what follows is subject to change.

open source or not

I’ve decided (at the time of this writing) that regardless of licensing or usage, the as3isolib.v2 will not be open source.  There may be licensing scenarios in which the source will be provided however that has yet to be determined.

access

In order to develop useful features and content, I need to create a demo and start getting v2 out there in front of people in a limited fashion.  Starting very soon I will be reaching out community members to see about providing access to the engine.  If you are interested EMAIL me – as3isolib ${at} gmail ${dot} com (please do not add comments to this post as they will be deleted).  To be considered for early access I will need some things:

  • contact information (email, IM and/or Skype)
  • outline of usage in existing or proposed project/app/game/etc.)
  • a willingness to communicate on a regular basis in order to improve v2’s development

For now it will probably have a watermark until further security measures can be implemented.

stay tuned

Stay tuned as I will be updating this post as things develop.  Also check in with me on twitter.  I want to get the ball rolling.

 

As3isolib Game: Monster Mind (Beta)

Ric over at Bossa Studios shot me a message saying that their new Facebook game Monster Mind (beta) is using the as3isolib.  Looks fun.  Kinda a new take on the classic 2D side scrolle    r Rampage? I loved that game back in the day.

The Smurfs & Co. : New Facebook Game using as3isolib

I just got word on the forums that some folks made a new Facebook game called “The Smurfs & Co.”.   Check it out here – http://apps.facebook.com/thesmurfsco/


Sprite Sheet Rendering Prototype

Since as3isolib.v2 will be making heavy use of the bimtapData APIs I figured it would be useful to have some Sprite Sheet mechanics in place.  After looking around at PBE’s spritesheet APIs, and some other as3 tools out there, I decided to try to take a stab at a versions specifically tailored to as3isolib.v2’s render process.

Keep in mind everything you see related to the v2 APIs is subject to change.  We’re not even in Beta yet.

So rather than reinventing the wheel and tooling out some SpriteSheet assembler in AIR, I searched around and found Texture Packer – http://j.mp/ffr0BC It’s free and does what I need for now.  It outputs a composited sprite sheet image and an XML data file to describe the tile sets.  So for my test case I decided to make 6 different types of terrain.  Here are the output files from Texture Packer:

Here is the output XML (via snipt)

So far the renderer looks like this (via snipt):

package testing.renderers
{
	import as3isolib.v2.core.BaseEntityImpl;
	import as3isolib.v2.core.BaseObjectRendererImpl;
	import as3isolib.v2.data.RenderData;
	import as3isolib.v2.utils.RenderDataUtil;

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

	public class TerrainObjectSpriteSheetRenderer extends BaseObjectRendererImpl
	{
		[Embed( source="assets/images/spriteSheet.json.xml", mimeType="application/octet-stream" )]
		static private const SPRITE_SHEET_DATA_CLASS:Class;

		[Embed( source="assets/images/spriteSheet.png" )]
		static private const SPRITE_SHEET_IMAGE_CLASS:Class;

		public function TerrainObjectSpriteSheetRenderer()
		{
			if ( !isRenderDataInitialized )
			{
				initializeRenderData();
				isRenderDataInitialized = true;
			}
		}

		static private var renderDataArray:Vector.<RenderData> = Vector.<RenderData>([]);

		static private var isRenderDataInitialized:Boolean;

		static private function initializeRenderData():void
		{

			var rect:Rectangle = new Rectangle();
			var bmp:Bitmap = new SPRITE_SHEET_IMAGE_CLASS();
			var clone:RenderData;

			var src:RenderData = RenderDataUtil.getRenderData( bmp );
			src.xOffset = -62;
			src.yOffset = -102;
			src.leftSpillover = 12;
			src.rightSpillover = 10;

			var xml:XML = XML( new SPRITE_SHEET_DATA_CLASS());
			var node:XML;
			var nodes:XMLList = xml..SubTexture;

			for each ( node in nodes )
			{
				//create the renderData objects
				clone = src.clone() as RenderData;
				clone.cx = int( node.@x );
				clone.cy = int( node.@y );
				clone.cw = int( node.@width );
				clone.ch = int( node.@height );

				renderDataArray.push( clone );
			}
		}

		override public function render( target:BaseEntityImpl ):RenderData
		{
			var i:int = Math.random() * renderDataArray.length;
			return renderDataArray[ i ];
		}
	}
}

The end result is as expected:

Once I get an idea how this will work, I plan to build an AIR util (possibly with ZaaLabs’ Eden tool) to assemble a BaseObjectRendereImpl subclass that gets placed right into your project.  So it saves from coding the renderer.

Let me know your thoughts.  Thanks.
Justin

 

Participate in the Development of as3isolib.v2

Past Mistakes

One of the mistakes I made in making the as3isolib.v1 was going at it alone.  I did my research and investigated best practices but I didn’t engage a community like I should.  The result is a great library, but a flawed library with many architectural issues.  While these issues can be circumvented with minimal effort, it’s bothersome to me as the architect of this project that they are present.

Moving Forward

I don’t want to make the same mistake in developing v2.  Since April 2010, I have engaged several prolific flash game developers: in helping me inspect v2 code; discuss architectural ideas; and getting the best performance out of the Flash Player.  Now it’s time to start engaging the community.  I want your input to help drive the as3isolib.v2.

In order to kick this off I want to start taking polls.  Then once the as3isolib.v2.core gets to a testable state, I will engage some of the community in closed testing.  That testing will help me to develop the tools for the as3isolib.v2.builder app.

Without further adieu I present the first poll.

Naming Conventions

Now I am somewhat OCD and can mull over naming something for months.  Rather than wasting precious development time hem-hawing over a good naming convention, I’d much rather get your input on it.  There are 4-5 core classes that are used to create content with the as3isolib.v2: an engine, a camera, a canvas, a scene which contains entities.  While most developers could care less about the verbosity of how something is named (thanks to code-completion technology), there is something to be said about readability.  Parsing hundreds of lines of code is tough enough.  Having to pick out hard-to-read strings of text in that code is tougher.  So here are the naming conventions I am thinking about:

Showcase: Zex Lex Duel on Facebook

Gregory sent me a message saying that the he just finished up a game that uses the as3isolib.v1.  Check it out on facebook – http://apps.facebook.com/cp_zexlexduel/

This slideshow requires JavaScript.

Status Update

It’s been a while since I’ve posted anything here other than replying to comments.  I want to say that the as3isolib is very much alive and being worked on.  People are still using the library and the user base is growing daily.

What many folks don’t know is that I am still hard at work on the as3isolib.v2.core which is the “meat and potatoes” of this endeavor.  It’s still very much a solo gig so any progress is a slow and arduous process.

Lastly I think I am going to quit posting to this blog directly (unless I have a good reason to go into detail) and instead use the twitter feed to post the smallish updates when they come.  The twitter feed is http://www.twitter.com/as3isolib

Follow

Get every new post delivered to your Inbox.

Join 40 other followers