Amethyst Actionscript editor

amethyst screenshotIt’s since the first time I used Eclipse that I’m waiting for an actionscript editor non eclipse based!

I never like eclipse and hated all its problems.
Unfortunately Adobe decided to implement its editor over eclipse and also other nice editors, like fdt, used the eclipse framework to build their own editors.
I used Visual Studio for a while but that was enough to make me fall in love with it.
Visual Studio is indeed the best editor at all, without doubts!
Finally I discovered an interesting project for editing actionscript projects integrated into Visual Studio.
Amethyst is still in beta and probably too premature to be used in large production environment, but it’s a great news for me.
I hope they’ll continue in the development and create a serious competitor for Flash Builder.
For more info visit their product page: http://www.sapphiresteel.com/Amethyst-Product-Page

H.264 can’t kill flash

This is another interesting reading about the current discussion about HTML5, video and Flash: http://blog.streamingmedia.com/the_…-cant-kill-off-the-other.html.

Sincerely this last crusade against flash is just annoying me ( the same way the first svg crusade against flash ). In my humble opinion I think that next year HTML5 will be already an old technology and everyone will forget this war.

ZaaIL adds support for 40+ image format to Flash

Zaalabs yesterday announced the release of an opensource ( under MIT license ) library, written using Alchemy, which will allow swf to load at runtime more than 40 different image formats ( you will have access to the bitmapdata of the loaded file ).

This is indeed a great news ( I’m thinking in particular to the benefits it can have for us at Aviary )!
This actionscript library is a porting of the DevIL library. And in fact reading at the features list of the DevIL library you can see that a lot of image formats are currently supported:
  • Windows Bitmap – .bmp
  • Dr. Halo – .cut
  • Multi-PCX – .dcx
  • Dicom – .dicom, .dcm
  • DirectDraw Surface – .dds
  • OpenEXR – .exr
  • Flexible Image Transport System – .fits, .fit
  • Heavy Metal: FAKK 2 – .ftx
  • Radiance High Dynamic – .hdr
  • Macintosh icon – .icns
  • Windows icon/cursor – .ico, .cur
  • Interchange File Format – .iff
  • Infinity Ward Image – .iwi
  • Graphics Interchange Format – .gif
  • Jpeg – .jpg, .jpe, .jpeg
  • Jpeg 2000 – .jp2
  • Interlaced Bitmap – .lbm
  • Homeworld texture – .lif
  • Half-Life Model – .mdl
  • MPEG-1 Audio Layer 3 – .mp3
  • Palette – .pal
  • Kodak PhotoCD – .pcd
  • ZSoft PCX – .pcx
  • Softimage PIC – .pic
  • Portable Network Graphics – .png
  • Portable Anymap – .pbm, .pgm, .pnm, .pnm
  • Alias | Wavefront – .pix
  • Adobe PhotoShop – .psd
  • PaintShop Pro – .psp
  • Pixar – .pxr
  • Raw data – .raw
  • Homeworld 2 Texture – .rot
  • Silicon Graphics – .sgi, .bw, .rgb, .rgba
  • Creative Assembly Texture – .texture
  • Truevision Targa – .tga
  • Tagged Image File Format – .tif
  • Gamecube Texture – .tpl
  • Unreal Texture – .utx
  • Quake 2 Texture – .wal
  • Valve Texture Format – .vtf
  • HD Photo – .wdp, .hdp
  • X Pixel Map – .xpm
  • Doom graphics

mm.cfg revealed!

I’ve just discovered an unbelievable post by Jean-Philippe Auclair with ALL the undocumented options of the mm.cfg file!

Really interesting in particular AS3Trace and AS3Verbose (and what is AS3Turbo anyway?). Also TraceOutputBuffered could be useful for all swf with uncommented trace calls 🙂

By the way, this is the list of features he discovered (follow the link above for detailed information on each command):
  • AllowUserLocalTrust
  • AS3AllocationTracking
  • AS3AutoStartSampling
  • AS3CSE
  • AS3DCE
  • AS3DynamicProfile
  • AS3MIR
  • AS3Sampling
  • AS3SSE
  • AS3StaticProfile
  • AS3Trace
  • AS3Turbo
  • AS3Verbose
  • AssetCacheSize=X
  • AutoUpdateDisable
  • AutoUpdateInterval
  • AutoUpdateVersionUrl
  • AVHardwareDisable
  • CodeSignLogFile
  • CodeSignRootCert
  • Convert8kAnd16kAudio
  • CrashLogEnable
  • DisableAVM1Loading
  • DisableDeviceFontEnumeration
  • DisableIncrementalGC
  • DisableMulticoreRenderer
  • DisableNetworkAndFilesystemInHostApp
  • DisableProductDownload
  • DisableSockets
  • DisplayGPUBlend
  • EnableIncrementalValidation
  • EnableLeakFile
  • EnableSocketsTo
  • EnableSocketsTo
  • EnableSocketsTo
  • EnforceLocalSecurityInActiveXHostApp
  • ErrorReportingEnable
  • FileDownloadDisable
  • FileUploadDisable
  • ForceGPUBlend
  • FrameProfilingEnable
  • FullScreenDisable
  • GCStats
  • GPULogOutputFileName
  • HeapProfilingAS3Enable
  • LegacyDomainMatching
  • LocalFileLegacyAction
  • LocalFileReadDisable
  • LocalStorageLimit
  • LogGPU
  • MaxWarnings
  • OverrideGPUValidation
  • OverrideUserInvokedActions
  • PolicyFileLog
  • PolicyFileLogAppend
  • PreloadSwf
  • PreloadSwf
  • ProductDisabled
  • ProductDownloadBaseUrl
  • ProfileFunctionEnable
  • ProfilingOutputDirectory
  • ProfilingOutputFileEnable
  • RendererProfilingEnable
  • RTMFPP2PDisable
  • RTMFPTURNProxy
  • ScriptStuckTimeout
  • SecurityDialogReportingEnable
  • SuppressDebuggerExceptionDialogs
  • ThirdPartyStorage
  • TraceOutputBuffered
  • TraceOutputFileEnable
  • TraceOutputFileName
  • UseBrokerProcess
  • WindowlessDisable

Update your app VERSION using ant

This is just a quick tip in case someone needs it. Maybe when you compile your flash application or your swc library you want to automatically update the “VERSION” number too without do it manually every time.

This is the way I do. In the “compile” task I’ve added a depends link to this ant task:
<target name="update-version">
<propertyset id="tdate"></propertyset>
<tstamp>
<format property="tdate" pattern="yyyyMMdd"/>
</tstamp>
<buildnumber file="build.number"/>
<echo>updating version to current datetime: ${tdate}</echo>
<replaceregexp byline="true">
<regexp pattern="public static const BUILD_DATE: String = \'([0-9]+)'"/>
<substitution expression="public static const BUILD_DATE: String = '${tdate}'"/>
<fileset dir="src/it/sephiroth/somestuff">
<include name="Library.as"/>
</fileset>
</replaceregexp>
<replaceregexp byline="true">
<regexp pattern="public static const BUILD_NUMBER: String = \'([0-9\.]+)'"/>
<substitution expression="public static const BUILD_NUMBER: String = '${build.number}'"/>
<fileset dir="src/it/sephiroth/somestuff">
<include name="Library.as"/>
</fileset>
</replaceregexp>
</target>
The 2 optional tasks I’ve used are: BuildNumber task and ReplaceRegExp Task. In this way every time I do an ant compile, it will update my build number and modification date.
What this task does is find this 2 lines in my Library.as file:

public static const BUILD_DATE: String = ‘20100131’;

and

public static const BUILD_NUMBER: String = ‘5’;

then replace the BUILD_DATE const with the current date and the BUILD_NUMBER with an incremental build number. After being executed the first time, ant will also create a new file in your directory called “build.number” with the latest build number int.

Thoughts about flash on the iPhone

I didn’t have the chance yet to try out Flash CS5, but I’m still a bit concerned about the new feature that makes users able to compile their own application into valid iPhone apps.

Things look really good if you look at the examples and if you talk with the people that already had the chance to try this feature out. But I must remember that usually the excitement for a new – and let’s say outstanding – feature usually cannot guarantee the final result to be acceptable. I fear that this feature might evolve the same – bad – way as Alchemy did: they started with a promising project that then felt down to a side project because many users shown that it was possible to achieve the same or better results by just using plain AS.

A few weeks ago I started spending my free time on experimenting with generating a valid iPhone app from a SWF file. I didn’t know anything about the fact that the Adobe would have put the same feature in Flash CS5.
My approach wasn’t too sophisticated: basically, as long as I didn’t have so much time to spend on writing a full binary converter, I was parsing the SWF and then generating static Objective-C/C++ (well mostly C++ and I’ve used Objective-C as glue where strictly required) code that then was compiled by Xcode to a working iPhone application.

I stopped once I figured out that Adobe was going to promote a similar thing (even if their approach is better and probably more powerful), but I had time to figure out a few issues that they may encounter (or maybe they already encountered):

  • Generated applications are really big in size, mostly because there is a lot of glue code generated and because you need to replicate the FPL API in C++ to be able to easilly convert the SWF into an iPhone app;
  • ActionScript is a dynamic language, and this dynamicity must be taken into account when generating binary code (or source code in my situation). Even if using LLVM probably helped with this, you will always need to generate additional dynamic checks that slow down a lot the execution;
  • The FPL doesn’t support (yet) threading API, nor the AIR version does. So, if they want to preserve the portability of a flash game so it can be run with AIR or on the iPhone without any change, they are limiting the developers on building just quite simple games;
  • The same can be said for all the other native APIs. AIR for instance has multitouch API, which are however at a lower level then the ones provided by the iPhone;
  • The other big issue is rendering performance. When I was working on my project, I’ve tried many different approaches to figure out which one was the best to render decent vector graphics with a good framerate on the iPhone. Core Graphics is not an option, as long as it is as slow as hell. Using OpenGL to render the graphics increases a lot the performances, but adds a few limits to the rendering quality. The best approach I found was to mix caching and OpenGL rendering together, but that was not working fine with rapidly changing graphics. But I must say I didn’t have the same knowledge as the FPL developers on this topic and I didn’t have months to work on that too …
  • iPhone developers must take special care for memory and resource management; probably having a huge bootstrapping code and transition structures won’t help.

What I fear most actually is that they’ll be able sooner or later to solve all the issues and create a good product, but probably that product won’t be suitable for complex applications, that will be always developed directly using XCode.

That said, I think that probably a better approach would have been to figure out a way for Adobe to include the Flash Player on the iPhone. It’s already ready and I really can’t understand why they don’t release it (it must be Apple, and probably because having a Virtual Machine on the system will break the basis the App Store has been built over).
Having the FPL on the iPhone will still limit us, but it will open up a brighter future for AS developers who want to release apps that runs on the iPhone too (Did you ever heard about compile once, run everywhere?).

So let’s wait and see what happens. What I’ve seen so far on the app store are really simple games that don’t use so much resources, so I can’t really say yet if they did a great job or not …

Flash for iPhone!

Well, it’s not true at all, but it’s something like that ( they enabled this by using the Low Level Virtual Machine (LLVM) compiler infrastructure).

With the upcoming Flash CS5 we will able to create iPhone applications using Actionscript 3 and the Flash IDE (Flash CS5)!
It also seems that in the future it will be possible to compile iPhone apps using the free flash compiler.
We won’t have flash iphone apps, but native iphone applications:


iPhone applications built with Flash Platform tools are compiled into standard, native iPhone executable packages and there is no runtime interpreter that could be used to run Flash byte-code within the application.

Most of the Flash Player 10 and AIR 2.0 APIs will be available, so for instance: pixel Bender filters and also dynamically loading SWFs that contain ActionScript (but the Actionscript will be ignored since there’s no flash VM in the iphone).


The Cons.

We won’t be able to test our apps using the Mac iPhone simulator.  And we cannot use the iPhone controls with actionscript.

Read original entry here:
Read the developers’ FAQ: