<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>jpauclair</title>
	<atom:link href="http://jpauclair.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://jpauclair.net</link>
	<description>Ninjaneering!</description>
	<lastBuildDate>Mon, 30 Jan 2012 02:14:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jpauclair.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>jpauclair</title>
		<link>http://jpauclair.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jpauclair.net/osd.xml" title="jpauclair" />
	<atom:link rel='hub' href='http://jpauclair.net/?pushpress=hub'/>
		<item>
		<title>Updated the optimized Base64 library</title>
		<link>http://jpauclair.net/2012/01/12/updated-the-optimized-bas64-library/</link>
		<comments>http://jpauclair.net/2012/01/12/updated-the-optimized-bas64-library/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 02:35:06 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[haxe]]></category>
		<category><![CDATA[opcodes]]></category>
		<category><![CDATA[swcs]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=766</guid>
		<description><![CDATA[More than two years ago, I made a blog post about how to optimized the existing Base64 libraries. This library was highly linked and used in multiple project as it&#8217;s 100% free (MIT license) A few days ago I decided to take another look at it just for fun. To see if I could get [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=766&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>More than two years ago, I made a <a title="Base64 blog post" href="http://jpauclair.net/2010/01/09/base64-optimized-as3-lib/">blog post</a> about how to optimized the existing Base64 libraries.</p>
<p>This library was highly linked and used in multiple project as it&#8217;s 100% free (MIT license)</p>
<p>A few days ago I decided to take another look at it just for fun. To see if I could get it to be a bit faster.</p>
<p>Here is some change I made to make it even faster:</p>
<p>On of the biggest change was to go from bytearray.writeInt() to direct byte access bytearray[]</p>
<h2><strong>Optimizing the old version</strong></h2>
<p><pre class="brush: as3;">

//BEFORE

c = data[i++] &lt;&lt; 16 | data[i++] &lt;&lt; 8 | data[i++];

c = (_encodeChars[c &gt;&gt;&gt; 18] &lt;&lt; 24) | (_encodeChars[c &gt;&gt;&gt; 12 &amp; 0x3f] &lt;&lt; 16) | (_encodeChars[c &gt;&gt;&gt; 6 &amp; 0x3f] &lt;&lt; 8 ) | _encodeChars[c &amp; 0x3f];

 out.writeInt(c);

//AFTER

c = data[int(i++)] &lt;&lt; 16 | data[int(i++)] &lt;&lt; 8 | data[int(i++)];

 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 18)];
 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 12 &amp; 0x3f)];
 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 6 &amp; 0x3f)];
 out[int(outPos++)] = _encodeChars[int(c &amp; 0x3f)];
</pre></p>
<p>You can also see the explicit int cast for all bytearray access. It does not always make a big difference, but depending on debug/release runtime and code, it can help a bit.</p>
<p>Another thing I change is the handling of &#8220;invalid&#8221; base 64 data.</p>
<p>When decoding a base 64 string, one of the high-cost operation was validation.</p>
<p>By removing validation of invalid data, it made the code 30% faster.</p>
<p>While I understand that validation is important in many case, having a ultra-fast library is also important for many developper.</p>
<h2><strong>Why not using Azoth, haXe or Alchemy SWCs</strong></h2>
<p>Well I could.</p>
<p>The problem is that right now they all use the fast-memory opcodes that won&#8217;t be supported for FlashPlayer 11.2 and upper.</p>
<p>This mean that any application that was build with libraries likes theses won&#8217;t be able to run in the future &#8220;as-is&#8221;</p>
<p>Hence, having a native-as3 library with sources that you can edit is very important.</p>
<p>&nbsp;</p>
<h2><strong>The Result:</strong></h2>
<p>Grab the full source, please go and take it on this site:</p>
<p><a href="http://www.sociodox.com/base64.html">http://www.sociodox.com/base64.html</a></p>
<p>and here:</p>
<p><pre class="brush: as3;">
/*
 * Copyright (C) 2012 Jean-Philippe Auclair
 * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
 * Base64 library for ActionScript 3.0.
 * By: Jean-Philippe Auclair : http://jpauclair.net
 * Based on article: http://jpauclair.net/2010/01/09/base64-optimized-as3-lib/
 * Benchmark:
 * This version: encode: 260ms decode: 255ms
 * Blog version: encode: 322ms decode: 694ms
 * as3Crypto encode: 6728ms decode: 4098ms
 *
 * Encode: com.sociodox.utils.Base64 is 25.8x faster than as3Crypto Base64
 * Decode: com.sociodox.utils.Base64 is 16x faster than as3Crypto Base64
 *
 * Optimize &amp; Profile any Flash content with TheMiner ( http://www.sociodox.com/theminer )
 */
package com.sociodox.utils
{
 import flash.utils.ByteArray;
 public class Base64
 {
 private static const _encodeChars:Vector.&lt;int&gt; = InitEncoreChar();
 private static const _decodeChars:Vector.&lt;int&gt; = InitDecodeChar();

 public static function encode(data:ByteArray):String
 {
 var out:ByteArray = new ByteArray();
 //Presetting the length keep the memory smaller and optimize speed since there is no &quot;grow&quot; needed
 out.length = (2 + data.length - ((data.length + 2) % 3)) * 4 / 3; //Preset length //1.6 to 1.5 ms
 var i:int = 0;
 var r:int = data.length % 3;
 var len:int = data.length - r;
 var c:uint; //read (3) character AND write (4) characters
 var outPos:int=0;
 while (i &lt; len)
 {
 //Read 3 Characters (8bit * 3 = 24 bits)
 c = data[int(i++)] &lt;&lt; 16 | data[int(i++)] &lt;&lt; 8 | data[int(i++)];

 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 18)];
 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 12 &amp; 0x3f)];
 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 6 &amp; 0x3f)];
 out[int(outPos++)] = _encodeChars[int(c &amp; 0x3f)];
 }

 if (r == 1) //Need two &quot;=&quot; padding
 {
 //Read one char, write two chars, write padding
 c = data[int(i)];

out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 2)];
 out[int(outPos++)] = _encodeChars[int((c &amp; 0x03) &lt;&lt; 4)];
 out[int(outPos++)] = 61;
 out[int(outPos++)] = 61;
 }
 else if (r == 2) //Need one &quot;=&quot; padding
 {
 c = data[int(i++)] &lt;&lt; 8 | data[int(i)];

out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 10)];
 out[int(outPos++)] = _encodeChars[int(c &gt;&gt;&gt; 4 &amp; 0x3f)];
 out[int(outPos++)] = _encodeChars[int((c &amp; 0x0f) &lt;&lt; 2)];
 out[int(outPos++)] = 61;
 }

return out.readUTFBytes(out.length);
 }


 public static function decode(str:String):ByteArray
 {
 var c1:int;
 var c2:int;
 var c3:int;
 var c4:int;
 var i:int = 0;
 var len:int = str.length;

var byteString:ByteArray = new ByteArray();
 byteString.writeUTFBytes(str);
 var outPos:int = 0;
 while (i &lt; len)
 {
 //c1
 c1 = _decodeChars[int(byteString[i++])];
 if (c1 == -1) break;

 //c2
 c2 = _decodeChars[int(byteString[i++])];
 if (c2 == -1) break;

 byteString[int(outPos++)] = (c1 &lt;&lt; 2) | ((c2 &amp; 0x30) &gt;&gt; 4);

 //c3
 c3 = byteString[int(i++)];
 if (c3 == 61)
 {
 byteString.length = outPos
 return byteString;
 }

 c3 = _decodeChars[int(c3)];
 if (c3 == -1) break;

 byteString[int(outPos++)] = ((c2 &amp; 0x0f) &lt;&lt; 4) | ((c3 &amp; 0x3c) &gt;&gt; 2);

 //c4
 c4 = byteString[int(i++)];
 if (c4 == 61)
 {
 byteString.length = outPos
 return byteString;
 }

 c4 = _decodeChars[int(c4)];
 if (c4 == -1) break;

 byteString[int(outPos++)] = ((c3 &amp; 0x03) &lt;&lt; 6) | c4;
 }
 byteString.length = outPos
 return byteString;
 }

 public static function InitEncoreChar() : Vector.&lt;int&gt;
 {
 var encodeChars:Vector.&lt;int&gt; = new Vector.&lt;int&gt;(64,true);

 // We could push the number directly, but i think it's nice to see the characters (with no overhead on encode/decode)
 var chars:String = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;;
 for (var i:int = 0; i &lt; 64; i++)
 {
 encodeChars[i] = chars.charCodeAt(i);
 }

return encodeChars;
 }

public static function InitDecodeChar():Vector.&lt;int&gt;
{

var decodeChars:Vector.&lt;int&gt; = new &lt;int&gt;[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];

return decodeChars;
}

 }
}

</pre></p>
<p>If you have any trick to make this faster, please post a comment!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/766/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=766&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2012/01/12/updated-the-optimized-bas64-library/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>
	</item>
		<item>
		<title>Be an affiliate Miner!</title>
		<link>http://jpauclair.net/2012/01/12/be-an-affiliate-miner/</link>
		<comments>http://jpauclair.net/2012/01/12/be-an-affiliate-miner/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 00:47:58 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=762</guid>
		<description><![CDATA[I just wanted to let you know that TheMiner remain 100% free for all non-commercial use, but if you like the product and you want to help promote TheMiner, you can become a sale affiliate very easily! It&#8217;s simple as: -Put TheMiner icon on your website.. or blog.. or forum.. car painting.. cat clothes.. -Earn [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=762&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just wanted to let you know that TheMiner remain 100% free for all non-commercial use, but if you like the product and you want to help promote TheMiner, you can become a sale affiliate very easily!<br />
It&#8217;s simple as:<br />
-Put TheMiner icon on your website.. or blog.. or forum.. car painting.. cat clothes..<br />
-Earn money if people click and buy the PRO version of this awesome software.</p>
<p><a title="Affiliate Sales" href="http://secure.plimus.com/jsp/developer_login.jsp?affReqId=14F789E6249EE5A2"><img class="aligncenter size-full wp-image-701" title="MinerIconBanner" src="http://jpauclair.files.wordpress.com/2011/12/minericonbanner.png?w=497" alt=""   /></a></p>
<h2 style="text-align:center;"><a title="Affiliate Sales" href="http://secure.plimus.com/jsp/developer_login.jsp?affReqId=14F789E6249EE5A2">I want to be a sale affiliate</a></h2>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/762/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/762/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/762/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/762/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/762/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/762/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/762/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/762/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=762&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2012/01/12/be-an-affiliate-miner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/minericonbanner.png" medium="image">
			<media:title type="html">MinerIconBanner</media:title>
		</media:content>
	</item>
		<item>
		<title>Got Bugs? We got the bugbase!</title>
		<link>http://jpauclair.net/2011/12/15/got-bugs-we-got-the-bugbase/</link>
		<comments>http://jpauclair.net/2011/12/15/got-bugs-we-got-the-bugbase/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 23:38:28 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=756</guid>
		<description><![CDATA[We just added a Mantis BugBase for TheMiner. It&#8217;s a full anonymous access, so everyone is welcome to report TheMiner bugs to make sure they are going to be fixed quickly! Thanks to everybody for making this such a great collaborative project! &#160; TheMiner BugBase TheMiner Home Page<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=756&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We just added a Mantis BugBase for TheMiner.</p>
<p>It&#8217;s a full anonymous access, so everyone is welcome to report TheMiner bugs to make sure they are going to be fixed quickly!</p>
<p>Thanks to everybody for making this such a great collaborative project!</p>
<p><a title="Sociodox - TheMiner" href="http://www.sociodox.com/theminer"><img class="size-full wp-image-703 alignleft" title="MinerIconWeb" src="http://jpauclair.files.wordpress.com/2011/12/minericonweb.png?w=497" alt=""   /></a></p>
<p>&nbsp;</p>
<p><a title="TheMiner BugBase" href="http://www.sociodox.com/TheMinerBugBase/">TheMiner BugBase</a></p>
<p><a title="Sociodox - TheMiner" href="http://www.sociodox.com/theminer">TheMiner Home Page</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/756/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/756/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/756/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/756/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/756/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/756/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/756/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/756/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=756&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/12/15/got-bugs-we-got-the-bugbase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/minericonweb.png" medium="image">
			<media:title type="html">MinerIconWeb</media:title>
		</media:content>
	</item>
		<item>
		<title>The king is dead. Long live the king!</title>
		<link>http://jpauclair.net/2011/12/12/the-king-is-dead-long-live-the-king/</link>
		<comments>http://jpauclair.net/2011/12/12/the-king-is-dead-long-live-the-king/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 23:42:17 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[profiling]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=698</guid>
		<description><![CDATA[The king is dead: Yes.. today I have some bad new for you. One of the best flash performance analysis tool: FlashPreloadProfiler, is officialy dead. After a LOT of time developing this profiler for flash. I decided to kill the thing. Long live the king! YES! After this much effort, it would be too sad [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=698&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>The king is dead:</h3>
<p>Yes.. today I have some bad new for you. One of the best <strong>flash performance analysis tool</strong>: FlashPreloadProfiler, is officialy dead. After a LOT of time developing this profiler for flash. I decided to kill the thing.</p>
<h3>Long live the king!</h3>
<p style="text-align:left;">YES! After this much effort, it would be too sad to drop everything. right?<br />
Launching today, TheMiner is the new (<strong>FLash Profiling</strong>) solution that will take the place of FlashPreloadProfiler, but with a lot of optimization, innovation and new features!<br />
TheMiner is dedicated to every single hard-working developer that are making the most out of what they have by analysing and improving flash application. Every hardcore developer should be proud to be a miner and has such, we decided to make it look like a hero worker.<br />
<strong></strong></p>
<p style="text-align:center;"><strong>You ARE TheMiner(s)</strong><br />
<a href="http://www.sociodox.com/theminer"><img class="aligncenter size-full wp-image-712" title="Miner" src="http://jpauclair.files.wordpress.com/2011/12/miner.png?w=497" alt=""   /></a></p>
<p>TheMiner is now part of another entity called Sociodox <a href="http://www.sociodox.com/theminer"><img class="alignright size-full wp-image-708" title="sociodox" src="http://jpauclair.files.wordpress.com/2011/12/sociodox.png?w=497" alt=""   /></a><br />
The main website as also moved to a new address: <a title="Sociodox - TheMiner" href="http://www.sociodox.com/theminer">http://www.sociodox.com/theminer</a></p>
<h3></h3>
<h3>PROMOTION:</h3>
<p>TheMiner is now free for any non-commercial use</p>
<p>cost a little something for commercial use.</p>
<p>Let&#8217;s <strong>give-away</strong> a couple <strong>COUPON</strong> for TheMiner Pro</p>
<ol>
<li>&#8221; IAmTheFirstMiner &#8221; : 75% off for the first 3 ppl to buy it!</li>
<li>&#8220; 0DayCoder &#8221; : 20% off for the first 20 ppl to buy it!</li>
<li>&#8220; HappyBugFreeChristmas &#8221; : 12% , Everyone deserve a christmas gift!</li>
<li>&#8221; jpauclair.net &#8221; : You love my blog? Have some percent.</li>
<li>&#8221; flashpreloadprofiler &#8221; : For the good old time.</li>
</ol>
<h4>You are a blogger? You have a website? Talk about TheMiner or Link to it with TheMiner icons, send me the link and get 50% off!</h4>
<h3>History: from FlashPreloadProfiler to TheMiner</h3>
<p><pre class="brush: as3;">
/////////////////////////
// Added:
//
// One frame Trace of all methods with arguments, file and line.
// DebugTexture to see stretch,smoothing, and color variation
// Minimize
// a QUIT button when profiler is minimed
// FPS and Mem in the top bar
// Screen Capture (save to file)
// Pause interface in Performance &amp; Memory profiler
// Filter in Memory profiler
// Filter in Function profiler
// Filter in Loader profiler
// Filter for file errors in loaders
// Start Off (off by default)
// MouseListener sprites
// Usage reporting (Google Analytics)
// Interlaced DataDump feature
// Visual feedback in memorygraph showing GC time and weight (gray bar)
// GC indicator in Flash Statistics
// Auto-check update when opening configuration panel
// Low process when everything off
// Skin Loading / Saving
// Flash Player Version in Stats tab
// Added a &quot;Already Collected&quot; column to Memory dump
// Stage Resolution in FlashStats

/////////////////////////
// Fixed:
//
// wrong DataDump sampling recording status
// bad colors for invisible object in Overdraw
// bad opacity management of selection highlights
// bad priority of preloader (over anything on stage)
// bad instanciation for air project
// Config are save automaticly when changed
// Now using latest version of MonsterDebugger (v3.1)
// Loader copy text not always working
// Loader won't show url of stream/loader on error
// MonsterDebuggerIcon needed tooltip.
// multiple TheMiner classes instanciation inside reports.
// multiple TheMiner self sampling in dump

/////////////////////////
// Optimized:
//
// a LOT the main loop, now should be pretty smooth to record samples
// Huge Rendering optimization in overdraw graph
// Huge Rendering optimization in LifeCycle graph
// Icons management
// Made the bar and spacing a bit smaller
</pre></p>
<h3>Localized:</h3>
<p>TheMiner has also been translated by the community in 8 languages:</p>
<p>English, French, Russian, Dutch, Spanish, Hindi, Chinese Traditional/Simplified</p>
<p>These ports are inside each build.</p>
<h3></h3>
<h3>More:</h3>
<p>TheMiner also come with more support:</p>
<p>A dedicated user group, a whole website with FAQ, support, installation help and more.</p>
<p>14 complete tutorials on how to use most of the features</p>
<h3>Are you a fan? Show your love!</h3>
<p>If you were already using FlashPreloadProfiler and you liked it,<br />
or if you now like TheMiner.<br />
Show your love on your site or anywhere else with these icons:<br />
<a href="http://jpauclair.files.wordpress.com/2011/12/minericonweb.png"><img class="aligncenter size-full wp-image-703" title="MinerIconWeb" src="http://jpauclair.files.wordpress.com/2011/12/minericonweb.png?w=497" alt=""   /></a></p>
<p><a href="http://jpauclair.files.wordpress.com/2011/12/minericonbe.png"><img class="aligncenter size-full wp-image-702" title="MinerIconBe" src="http://jpauclair.files.wordpress.com/2011/12/minericonbe.png?w=497" alt=""   /></a></p>
<p><a href="http://jpauclair.files.wordpress.com/2011/12/minericonbanner.png"><img class="aligncenter size-full wp-image-701" title="MinerIconBanner" src="http://jpauclair.files.wordpress.com/2011/12/minericonbanner.png?w=497" alt=""   /></a></p>
<h2>Downloads:</h2>
<h3><a href="http://www.sociodox.com/theminer">TheMiner </a>on <a href="http://www.sociodox.com/theminer">Sociodox </a>website</h3>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/698/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/698/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/698/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/698/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/698/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/698/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/698/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/698/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=698&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/12/12/the-king-is-dead-long-live-the-king/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/miner.png" medium="image">
			<media:title type="html">Miner</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/sociodox.png" medium="image">
			<media:title type="html">sociodox</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/minericonweb.png" medium="image">
			<media:title type="html">MinerIconWeb</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/minericonbe.png" medium="image">
			<media:title type="html">MinerIconBe</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2011/12/minericonbanner.png" medium="image">
			<media:title type="html">MinerIconBanner</media:title>
		</media:content>
	</item>
		<item>
		<title>Session Sneak Peek #2!</title>
		<link>http://jpauclair.net/2011/10/03/session-sneak-peek-2/</link>
		<comments>http://jpauclair.net/2011/10/03/session-sneak-peek-2/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 23:59:27 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[molehill]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=681</guid>
		<description><![CDATA[The Session Here is Second Sneak peek of our sessions &#8220;Next-generation games using Stage3D(Molehill)&#8221; (Part 1 &#38; 2) at Adobe MAX Here is the first sneak peek The videos are in HD, watch them in full res!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=681&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>The Session</h2>
<p>Here is Second Sneak peek of our sessions &#8220;Next-generation games using Stage3D(Molehill)&#8221; (Part 1 &amp; 2) at Adobe MAX</p>
<p><a href="http://wp.me/pImhf-aS" title="Session Sneak Peek #1">Here is the first sneak peek</a></p>
<p>The videos are in HD, watch them in full res!</p>
<p><a href="http://www.youtube.com/watch?v=CeYCsBIK3uE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/10/03/session-sneak-peek-2/"><img src="http://img.youtube.com/vi/CeYCsBIK3uE/2.jpg" alt="" /></a></span></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/681/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/681/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/681/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/681/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/681/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/681/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/681/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/681/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=681&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/10/03/session-sneak-peek-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>
	</item>
		<item>
		<title>Flash11 Session Sneak Peak</title>
		<link>http://jpauclair.net/2011/09/27/flash11-session-sneak-peak/</link>
		<comments>http://jpauclair.net/2011/09/27/flash11-session-sneak-peak/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:17:02 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=674</guid>
		<description><![CDATA[The Session Here is Sneak peek of my session &#8220;Next-generation games using Stage3D(Molehill)&#8221; at Adobe MAX My friend [Jean-Philippe Doiron] and I will introduce multiple techniques such as deferred lighting, CascadeShadow Mapping, ScreenSpace Ambient occlusion, MRT, and more through vertex and fragment shaders. We will also show new ways of handling Physics, particles and pathfinding. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=674&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>The Session</h2>
<p>Here is Sneak peek of my session &#8220;Next-generation games using Stage3D(Molehill)&#8221; at Adobe MAX</p>
<p>My friend [Jean-Philippe Doiron] and I will introduce multiple techniques such as deferred lighting, CascadeShadow Mapping, ScreenSpace Ambient occlusion, MRT, and more through vertex and fragment shaders. We will also show new ways of handling Physics, particles and pathfinding.</p>
<p>It&#8217;s a deep dive into GPU/CPU programming with the new Flash Player, and discover how to produce beautiful GPU effects that are reusable in your games and applications.</p>
<p>Please take a look at some of the things we are about to show you at the MAX!</p>
<h2>Video Sneak Peak</h2>
<p>The videos are in HD, watch them in full res!</p>
<p><a href="http://www.youtube.com/watch?v=vt29QBr_QXA"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/09/27/flash11-session-sneak-peak/"><img src="http://img.youtube.com/vi/vt29QBr_QXA/2.jpg" alt="" /></a></span></a></p>
<p><a href="http://www.youtube.com/watch?v=H22gIOpZArQ"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/09/27/flash11-session-sneak-peak/"><img src="http://img.youtube.com/vi/H22gIOpZArQ/2.jpg" alt="" /></a></span></a></p>
<p>Please register at AdobeMax and join the session : <a title="AdobeMax Session" href="http://bit.ly/odwg8U">http://bit.ly/odwg8U</a></p>
<p>We will also do a session on Flash3D at GDC Online if you can come: <a title="GDC Online Session" href="http://twb.io/n5rXxy">http://twb.io/n5rXxy</a></p>
<p>See you all there!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/674/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=674&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/09/27/flash11-session-sneak-peak/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>
	</item>
		<item>
		<title>Massive 3D Particle System in Flash Molehill</title>
		<link>http://jpauclair.net/2011/07/18/massive-3d-particle-system-in-flash-molehill/</link>
		<comments>http://jpauclair.net/2011/07/18/massive-3d-particle-system-in-flash-molehill/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 01:42:26 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=639</guid>
		<description><![CDATA[Evolution of Molehill I&#8217;ve been working on Molehill for more than a year now. Since the very first iteration, to what we have now&#8230; wow there was a huge evolution. Evolution (countless changes) in the API and features Evolution in performances And a lot of evolution in the community. I have never seen such a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=639&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Evolution of Molehill</h3>
<p>I&#8217;ve been working on Molehill for more than a year now.</p>
<p>Since the very first iteration, to what we have now&#8230; wow there was a huge evolution.</p>
<ul>
<li>Evolution (countless changes) in the API and features</li>
<li>Evolution in performances</li>
<li>And a lot of evolution in the community.</li>
</ul>
<div>I have never seen such a great group of people working at the same time on a pre-release, in all possible application of the tech.</div>
<div>Still! When I look at the demos out there today, there is not much!</div>
<div>You can take a look at &#8220;<a title="The Big List of Molehill Demos " href="http://www.leebrimelow.com/?p=2607">The big list</a>&#8221; by Lee Brimelow</div>
<h3>An old thread</h3>
<p>can you remember the debate about PixelBender vs pure AS3 vs haxe?<br />
Let me help you remember! There was a nice attempt by a lot of people on the net to do a massive particle system with flash.<br />
A lot of comparison have been done between different way by the &#8220;masters&#8221;, and to honor theses efforts, I tought I&#8217;de make something with Molehill out of this old thread.</p>
<p>PixelBender+Alchemy option (by Ralph Hauwert)<br />
<a title="http://www.unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/" href="http://www.unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/">http://www.unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/</a><br />
Pure AS3 option (by Joa Ebert)<br />
<a title="http://blog.joa-ebert.com/2009/04/03/massive-amounts-of-3d-particles-without-alchemy-and-pixelbender/" href="http://blog.joa-ebert.com/2009/04/03/massive-amounts-of-3d-particles-without-alchemy-and-pixelbender/">http://blog.joa-ebert.com/2009/04/03/massive-amounts-of-3d-particles-without-alchemy-and-pixelbender/</a></p>
<p>haXe:<br />
<a title="http://webr3.org/blog/haxe/flash-10-massive-amounts-of-3d-particles-with-haxe/" href="http://webr3.org/blog/haxe/flash-10-massive-amounts-of-3d-particles-with-haxe/">http://webr3.org/blog/haxe/flash-10-massive-amounts-of-3d-particles-with-haxe/</a></pre>
<p>&nbsp;</p>
<h3>Revamping an old post</h3>
<p>It's always fun to play with particle system when using a new tech.</p>
<p>Today I'm presenting to you one of the very first proof of concept I made with molehill, using a technique we developed at <a title="Frima Studio" href="http://frimastudio.com/">Frima Studio</a>. (Already one year ago!)</p>
<p>So I went in my archive and fixed all the API changes that were made since then.</p>
<p>There was also an old blog post going with it that I never released due to the "to early stage" of molehill pre-release, and the technological advantage of open-sourcing such as technique.</p>
<p>But since then there was a lot of development... First the presentation at <strong>Adobe Max 2010</strong> of the <a title="ZombieTycoon Trailer" href="http://www.youtube.com/watch?v=szaXvTsoeVs" target="_blank"> ZombieTycoon trailer</a>, Then The featured release of a couple of<a title="ZombieTycoon Demo" href="molehill.zombietycoon.com" target="_blank"> Zombie Tycoon levels</a>, the  session at <strong>Flash Gaming Summit 2011</strong> and the session for the<a href="http://www.sanflashcisco.com/" target="_blank"> San Flashisco</a> user group. And internally at frima, the tech never stopped to grow!</p>
<p>We are going to present at <strong>Adobe Max 2011</strong>.  I'm sure it's going to be awesome this year (again!).</p>
<h3>The Particle System</h3>
<p>This is a very simple particle system.<br />
The particle position are defined using a classic "Strange attractor" algorithm.<br />
Each particle is made with a quad and  is facing the camera (Billboard)</p>
<p><span class="Apple-style-span" style="font-size:15px;font-weight:bold;">Batching</span></p>
<p>THE most important thing when doing a particle system is to have a good batching process.<br />
Particles are often in very high numbers, and they must be drawable in batch to keep the performances high enough.</p>
<p>When we first started thinking about it, it was pretty obvious that to create something nice with billboards, we would have to transform each quad to make it face the screen (Transform by the Inverse ViewProjMatrix).  While this might sound obvious and simple to do, when processing the vertex in a vertex shader that process them one by one with no index or whatsoever defining what corners we are processing, it's not "that" obvious!</p>
<h4>The problem</h4>
<p>The transformation needed on the four corners of your quad is not the same! but you can only define "one way" of doing things in your shader. (No if statement). Hence, if you can't differentiate what you are processing, how can you make the good transformation to each vertex??</p>
<p>After a couple iteration where the CPU was doing the matrix transformation and re-uploaded each position each frame... We went in another direction. (It was WAY to heavy!)</p>
<p>The vertex shader let you define constant that you can access within the shader. Sadly, you have only 128 Float4 of theses.<br />
So no real way of "batching" large amount of particles by making a list of transformation for each vertex. The best you could do is a couple of dynamic particle at the same time.</p>
<h4>The trick</h4>
<p><span id="more-639"></span></p>
<p>The thing you can do is mix between your vertex arguments (position, scale, uv, etc. defined for each single vertex ) and the Vertex shader constants (limited).<br />
In your vertex arguments, you can define an ID for each corner of a quad: 1,2,3,4.<br />
Then, assign the exact same 3D position (center of the quad) to all 4 vertex.<br />
By setting only one position (4 time the same position) it means that it require the exact same transformation for all corners of your quad. (yeah!) But then, you have to be able to "re-construct" your quad inside the shader</p>
<p>In the Constants, you define an offset.xy from the center to each of the corners.<br />
And then, when processing the vertex in the shader, it can read the ID of the current vertex, which can then be use to access the offset matching the current vertex in the constants.</p>
<p>You can now recover your quad by offsetting the center of each vertex (Yeah #2!)</p>
<p>So the final algorithm is:</p>
<p><pre class="brush: as3;">

//VertexShader

position = argument[0].xyz // Center of the quad
id = argument[0].w //ID=1 | 2 | 3 | 4
Offset = Constants[id]
transform the Offset of the current corner by the Inverse ViewProj Matrix //billboard
Add the result to the vertex position
transform finalPosition by the ViewProj Matrix  //Show on screen

</pre></p>
<h3>SpriteSheet Manipulation</h3>
<p>The technique used here is to modify the UV of each particles in a bytearray, and send it back to the Video Card.</p>
<p><pre class="brush: as3;">
for each(particle in particleList)
	Set Vertex1.uv = particle.nextframe()
	Set Vertex2.uv = particle.nextframe()
	Set Vertex3.uv = particle.nextframe()
	Set Vertex4.uv = particle.nextframe()
UpdateVertexBuffer(ParticleList)
</pre></p>
<p>The same result could be achieved using a full GPU particle system. with the UV changing over time using an offset in function of time.</p>
<p>But to represent a system where each particle would move independently with physics for example, it was best to re-upload the whole thing.</p>
<p>the texture is a space-core SpriteSheet (sphere with rotating rings around)</p>
<p>The format original was a PNG with transparency<br />
I decided to split that up in two, and compress them with the ATF file format.</p>
<p><img title="SpaceCore Diffuse" src="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/space-core_black.png" alt="SpaceCore Diffuse" width="512" height="160" /></p>
<p>As you can see, the background is black.<br />
To be able to use transparency, I made a alpha mask for it:<br />
<img title="SpaceCore Mask" src="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/space-core_mask.png" alt="SpaceCore Mask" width="512" height="160" /></p>
<p>I could have used the original png, and kill transparent pixels.<br />
But to do that I need a texture with 4 channels (RGBA). Which means that I cannot use ATF texture compression.<br />
After benchmarking it, doing a sampling in two ATF is faster than doing only one in a uncompressed bitmap.<br />
Hence I went with the compression (and of course, not only it's faster, but smaller in video memory)<br />
One of the goal of this demo was to determine what was the balance between process on the CPU and GPU.</p>
<h3>Final result</h3>
<p>Don't forget to use the latest <a title="Flash Player 11 Incubator build" href="http://labs.adobe.com/technologies/flashplatformruntimes/incubator/" target="_blank">Flash Player 11 Incubator build</a><br />
<a href="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/index.html"><img class="alignnone" title="Particle System" src="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/ParticleSystem.png" alt="Particle System" width="460" height="361" /></a></p>
<h3></h3>
<p>If you think of better/other ways to do the same thing, please comments in here! Sharing is good <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Sources</h3>
<p>I know you guys are hungry for some code!</p>
<p><a title="Massive Amount Of particles Demo" href="https://jpauclair-blog.googlecode.com/svn/trunk/Experiment/MassiveAmountOfParticleDemo/Main_UV_CPU.as" target="_blank">The whole thing is here</a></p>
<h3>frima</h3>
<p><a href="www.frimastudio.com"><img class="alignleft" title="logo frima" src="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/logo_frima.png" alt="" width="41" height="60" /></a> As I was saying. This demo is now one year old and frima as pushed the limits of Molehill non-stop since it was first pre-released.</p>
<p>Just imagine what we are able to do right now, and how this is going to change the face of the gaming industry!</p>
<h3>Teaser</h3>
<p>Yup! I am about to release a new version of <a href="http://jpauclair.net/FlashPreloadProfiler" target="_blank">FlashPreloadProfiler</a>. It's now very complete and I will be proud to release it in a couple of days! I hope you will stay tuned!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/639/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=639&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/07/18/massive-3d-particle-system-in-flash-molehill/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>

		<media:content url="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/space-core_black.png" medium="image">
			<media:title type="html">SpaceCore Diffuse</media:title>
		</media:content>

		<media:content url="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/space-core_mask.png" medium="image">
			<media:title type="html">SpaceCore Mask</media:title>
		</media:content>

		<media:content url="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/ParticleSystem.png" medium="image">
			<media:title type="html">Particle System</media:title>
		</media:content>

		<media:content url="http://flashpatrol.net/jpauclair.net/MassiveAmoutOfParticles/logo_frima.png" medium="image">
			<media:title type="html">logo frima</media:title>
		</media:content>
	</item>
		<item>
		<title>ZombieTycoon &amp; Molehill Session at FlashGamingSummit</title>
		<link>http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/</link>
		<comments>http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 09:50:01 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=624</guid>
		<description><![CDATA[I, Speaker This weekend I was a speaker in a conference for the very first time. And then, monday at this one I must say, it was damn exiting. Event more when it&#8217;s to talk about the very first game using the a technology that people has waited for years. Adobe has even used our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=624&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>I, Speaker</h2>
<p>This weekend I was a speaker in a <a href="http://www.flashgamingsummit.com/">conference</a> for the very first time.</p>
<p>And then, monday at <a href="http://flashongames.eventbrite.com/">this one</a></p>
<p>I must say, it was damn exiting. Event more when it&#8217;s to talk about the very first game using the a <a href="http://labs.adobe.com/technologies/flashplatformruntimes/incubator/">technology that people has waited for years</a>.</p>
<p>Adobe has even used our project as the <a href="http://labs.adobe.com/technologies/flashplatformruntimes/incubator/features/molehill.html">featured  game using Molehill</a> for it&#8217;s official beta release.</p>
<p>The session was shared between Luc beaulieu (CTO) and me, both representing <a href="http://frimastudio.com/">Frima Studio</a>.</p>
<p>My session was about many techniques we used to create <a href="http://molehill.zombietycoon.com/">ZombieTyccon</a> and how we managed to work with the limitations defined in Molehill.</p>
<p>I though it could be great to share this to everyone.</p>
<h2>The session</h2>
<p><a title="ZombieTycoon slides for the FlashGamingSummit" href="http://molehill.zombietycoon.com/FGSZombieNoVideos.pptx">download the Slides</a> (powerpoint)</p>
<h2>The videos</h2>
<p><span id="more-624"></span><br />
There was many videos in the slides, so now they are all on YouTube.</p>
<p>Here is a little demo of hundreds of zombies walking around in the level 3. (If you wonder why they are so strong, well&#8230; I wanted them to stay alive until the end of the level! )</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/McvUCP0ijVE/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>But here is the real way to kill zombies. First, get guns, then, kill em!</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/OBPzWupv2hc/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>And again the level 3</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/WAcO6KcMAfA/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>Here is the particle system. You can see smoke, shells, fire, even the health bars are particles.</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/_vYHVS5VzWs/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>In my slides I&#8217;m talking about the possibility of rendering 16K particles per draw call. This is what it looks like.</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/CsSfZ42iX8c/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>Thats is our character animation system. It use the DualQuaternion technique, with animation blending (transition). In this demo, notice the characters are changing animation multiple time and it&#8217;s always very smooth.</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/y_HSPkA4fPk/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>We also support dynamic lighting to help creating great ambiance.</p>
<p>You can see the influence of the light on the fence, the ground, the avatars,  all objects near the barrels. You can also see that this dynamic light is using a very smooth falloff.</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/BVCz1i2BrTE/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>In this video, the machine gun is blinking a dynamic light at every gun shot. You can see the influence on the avatars, the ground and many other objects.</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/rWLxZBp3nBo/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>While using dynamic lighting is heavy on the GPU, using fake volumetric lighting is a lot more lightweight. To create this, we set a couple particles under the streetlights and the police&#8217;s cars lights</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/C4ABbV7JW8A/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>Again, in order to make the game run faster, we used fake projected shadows. Using particle aligned to the ground, we cast shadow behind dynamic object depending on light position and intensity, we stretch the particle to fit.</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/YQPd_srwJKw/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<p>Finaly, this is the the gameplay of the first level (tutorial)</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/"><img src="http://img.youtube.com/vi/IOFcPh0NFNc/2.jpg" alt="" /></a></span></a></p>
<p>&nbsp;</p>
<h2>Play the game</h2>
<p><a href="http://molehill.zombietycoon.com/">http://molehill.zombietycoon.com/</a></p>
<p>&nbsp;</p>
<p>Give me feedbacks!</p>
<p>The two session were recorded and I will post the video as soon as they become availables!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/624/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=624&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/03/01/zombietycoon-molehill-session-at-flashgamingsummit/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>
	</item>
		<item>
		<title>Flash Network Profiler  &#8211; What are YOU downloading?</title>
		<link>http://jpauclair.net/2011/01/25/flashnetworkprofiler/</link>
		<comments>http://jpauclair.net/2011/01/25/flashnetworkprofiler/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 11:41:45 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=602</guid>
		<description><![CDATA[FlashPreloadProfiler RC2 Loaders Profiler This time, it&#8217;s all about loading files. This new profiler show you every file being loaded using - flash.display.Loader - flash.net.URLStream - flash.net.URLLoader The profiling is simple, it&#8217;s going to show: - Current download progress - HTTP Status - File Size - File Url (for every display Loaders, and URLStream with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=602&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1><a href="http://jpauclair.net/flashpreloadprofiler/">FlashPreloadProfiler RC2</a></h1>
<h2>Loaders Profiler</h2>
<p>This time, it&#8217;s all about loading files.<br />
This new profiler show you every file being loaded using</p>
<ul>- flash.display.Loader</ul>
<ul>- flash.net.URLStream</ul>
<ul>- flash.net.URLLoader</ul>
<p>The profiling is simple, it&#8217;s going to show:</p>
<ul>- Current download progress</ul>
<ul>- HTTP Status</ul>
<ul>- File Size</ul>
<ul>- File Url (for every display Loaders, and URLStream with IOError)</ul>
<p>You can copy to clipboard the URL or the Errors with the left side icons.<br />
You can also save the whole list of downloads with a &#8220;save all&#8221; option</p>
<p>You don&#8217;t have access to:</p>
<ul>- URL of display loader while it being downloaded.</ul>
<ul>- URL of URLStream and URLLoader when download is succesful</ul>
<h2>Configs</h2>
<p>There are now real &#8220;options&#8221; in the profiler.<br />
You can decide to turn On and Off most of the feature so that they are not processed when you don&#8217;t need them.<br />
You can also decide to launch the profilers you want &#8220;in the baclground&#8221; before the profiled SWF is started so that you don&#8217;t miss any information.<br />
This new feature let you browse between tabs without loosing the data in each one.</p>
<p>You can also activate DeMonsterDebugger in the new Config Panel.</p>
<h2>Project Integration</h2>
<p>Did you have trouble with the mm.cfg file? You (like many others) were not able to use the profiler? This time is over.<br />
There is now a SWC in the download section that you can include in your project.<br />
The only thing you have to do is</p>
<p><pre class="brush: as3;">
this.stage.addChild(new FlashPreloadProfiler());
</pre></p>
<p>That&#8217;s it!</p>
<p>&nbsp;</p>
<h2>Video</h2>
<p>Like the last time, I made a video of the new features:</p>
<p><a href="http://www.youtube.com/watch?v=hHXfUMe2AnE"><span style="text-align:center; display: block;"><a href="http://jpauclair.net/2011/01/25/flashnetworkprofiler/"><img src="http://img.youtube.com/vi/hHXfUMe2AnE/2.jpg" alt="" /></a></span></a></p>
<p>So what&#8217;s the next step?<br />
Until Molehill arrive officialy, I guess it&#8217;s going to be NetStream and Sockets.</p>
<p><a href="http://jpauclair.net/flashpreloadprofiler/">FlashPreloadProfiler Project home page</a></p>
<p>If you find bugs, please submit them in the google code project, or let me know with comments here.</p>
<p>Have a nie and optimized day.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/602/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=602&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2011/01/25/flashnetworkprofiler/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>
	</item>
		<item>
		<title>Complete Flash Profiler &#8211; It&#8217;s getting serious!</title>
		<link>http://jpauclair.net/2010/12/23/complete-flash-profiler-its-getting-serious/</link>
		<comments>http://jpauclair.net/2010/12/23/complete-flash-profiler-its-getting-serious/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 07:46:47 +0000</pubDate>
		<dc:creator>jpauclair</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://jpauclair.net/?p=585</guid>
		<description><![CDATA[There was the first version, that wasn&#8217;t even looking like a profiler.. Then there was FlashPreloadProfiler Alpha and Beta.. But often I had to fallback on Flex Profiler to do the Performance Profiling. Here is the first version that should be considered as a &#8220;fully qualified Flash AS3 profiler&#8221;. Here is FlashPreloadProfiler RC1! It has [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=585&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There was the first version, that wasn&#8217;t even looking like a profiler..<br />
Then there was <a href="http://jpauclair.net/flashpreloadprofiler/">FlashPreloadProfiler</a> Alpha and Beta..<br />
But often I had to fallback on Flex Profiler to do the Performance Profiling.</p>
<p>Here is the first version that should be considered as a &#8220;fully qualified Flash AS3 profiler&#8221;.</p>
<p>Here is <a href="http://jpauclair.net/flashpreloadprofiler/">FlashPreloadProfiler RC1</a>!</p>
<p>It has the basic features:<br />
-Memory profiling<br />
-Function Performance profiling (New!)<br />
-Convivial UI (New!)</p>
<p>And it has the unique features:<br />
-Overdraw graph<br />
-Mouse Listeners graph<br />
-Internal events graph<br />
-DisplayObject Lifecycle graph<br />
-Full Sampler recording &#8220;dump&#8221;<br />
-Memory allocation/collection &#8220;dump&#8221; (New!)<br />
-Function Performance &#8220;dump&#8221; (New!)<br />
-Auto-Integration with De MonsterDebugger<br />
-Run on debug/release SWFs</p>
<p>I can now officialy say that I don&#8217;t need any other tool anymore to optimize standard AS3 code. (Discussion on Molehill (Flash 3D) optimization will come soon!!)</p>
<p>There is a LOT of optimization that has been done in the profiler itself.<br />
But the real new features are the new UI with ToolTips and lot&#8217;s of feedback. Plus the whole Function Performance profiling tool. There was also a lot of fixes in the code.</p>
<p>Here is the PerformanceMonitor screen:<br />
<a href="http://jpauclair.files.wordpress.com/2010/12/performancemonitor.png"><img src="http://jpauclair.files.wordpress.com/2010/12/performancemonitor.png?w=497&#038;h=257" alt="" title="PerformanceMonitor" width="497" height="257" class="aligncenter size-full wp-image-586" /></a></p>
<p>This time, I&#8217;ve also made a full video of me explaining what the tool is all about and how to use it!<br />
<em>The video quality is very bad and I&#8217;m going to upload a better version really soon. Sorry!</em><br />
<span style="text-align:center; display: block;"><a href="http://jpauclair.net/2010/12/23/complete-flash-profiler-its-getting-serious/"><img src="http://img.youtube.com/vi/5lKnOMr2Vzg/2.jpg" alt="" /></a></span></p>
<p>Again, comments are very very welcome! You can post them on the google code project or right here on my blog.</p>
<p>If you want to participate, please send me a mail!<br />
If you want to contribute financialy, there is a link on the profiler page and on the google code page.</p>
<p>Funny fact:<br />
While developping the profiler, I ran Flash CS5 without removing the profiler first&#8230;<br />
And I knew that FlashIDE was running SWF inside the main interface.. But to see that  one of the main components was using some GrantSkinner library, that was just plain hillarious! Go check it out!</p>
<p>Reference:<br />
<a href="http://jpauclair.net/flashpreloadprofiler/">FlashPreloadProfiler project</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpauclair.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpauclair.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jpauclair.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jpauclair.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpauclair.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpauclair.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpauclair.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpauclair.wordpress.com/585/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpauclair.net&amp;blog=10572069&amp;post=585&amp;subd=jpauclair&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jpauclair.net/2010/12/23/complete-flash-profiler-its-getting-serious/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff60a0adbbe0ae671125435044931eb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpauclair</media:title>
		</media:content>

		<media:content url="http://jpauclair.files.wordpress.com/2010/12/performancemonitor.png" medium="image">
			<media:title type="html">PerformanceMonitor</media:title>
		</media:content>
	</item>
	</channel>
</rss>
