<?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/"
	>

<channel>
	<title>mat janson blanchet &#187; Workflow</title>
	<atom:link href="http://jansensan.net/category/workflow/feed" rel="self" type="application/rss+xml" />
	<link>http://jansensan.net</link>
	<description></description>
	<lastBuildDate>Fri, 18 May 2012 12:06:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Setting up FDT for Away3D and Flash Player 11 (Beta)</title>
		<link>http://jansensan.net/setting-up-fdt-for-away3d-and-flash-player-11-beta</link>
		<comments>http://jansensan.net/setting-up-fdt-for-away3d-and-flash-player-11-beta#comments</comments>
		<pubDate>Fri, 12 Aug 2011 22:02:28 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[Flash Player 11 Beta]]></category>
		<category><![CDATA[Molehill]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=655</guid>
		<description><![CDATA[Recently I had been approached to develop an interface for a huge interactive wall. The company has its own engine, but the interface runs as a Flash Player piece within that environment. I am not talking about Scaleform, which allows game developers to integrate interfaces built in AS3 into their projects, but the logic is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="FDT and Away3D" src="http://jansensan.net/images/blog/post0026_001.jpg" alt="FDT and Away3D" width="640" height="160" /></p>
<p>Recently I had been approached to develop an interface for a huge interactive wall. The company has its own engine, but the interface runs as a Flash Player piece within that environment. I am not talking about <a title="Scaleform" href="http://www.scaleform.com/" target="_blank">Scaleform</a>, which allows game developers to integrate interfaces built in AS3 into their projects, but the logic is pretty much the same.</p>
<p>So the idea was to use some simple 3D shapes and let users interact with it via a touch screen. The project did not go through, however I had done some research on the latest Flash Player beta developments and the latest alpha release of Away3D. As expected, I had to do a lot of searches in Google, I cursed at my computer once or twice, but I did learn a lot. I think it would be nice to share my discoveries.</p>
<p><strong>Setting up FDT to publish onto Flash Player 11 Beta</strong></p>
<p>I have to say a lot of people wrote blog posts already on how to do that. Although their posts explained more on how to use the incubator version of Flash Player, it's pretty easy to do a parallel. I'll just list the steps here and provide the sources to my information further down.</p>
<ol>
<li>Get the latest available Flash Player debugger, Flex SDK and playerglobal.swc (by the way, since the IDE is now called Flash Builder, why is the SDK still called "Flex SDK " rather than "Flash SDK"?)</li>
<li>Uninstall whatever version of the player you have on your computer and install the latest one you have downloaded</li>
<li>Replace the playerglobal.swc in the SDK with the separate playerglobal.swc you have downloaded</li>
<li>Set up the SDK in FDT</li>
<li>When creating a new project, make sure to add the <code>-swfversion=13</code> compile argument (I hope this will be dropped when the release is no longer in beta)</li>
<li>In your HTML page, do not forget to set <code>wmode="direct"</code> so the rendering can be done on the GPU</li>
</ol>
<p>Now these steps are really well explained <a title="Targeting Flash Player 11 (Incubator Build) in FDT 4.2" href="http://www.swfgeek.net/2011/03/07/targeting-flash-player-11incubator-build-in-fdt-4-2/" target="_blank">here</a>, although since the release of the beta version (rather than the incubator version), it is no longer necessary to remove the flex.swc.</p>
<p>Now, all this is a bit of work to get running, and just recently, <a title="Get your FDT ready for Molehill" href="http://fdt.powerflasher.com/blog/2011/04/get-your-fdt-ready-for-molehill/" target="_blank">FDT released a template</a> that sets up a lot of that stuff already. This template includes the compiler argument and an HTML template that presets the <code>wmode</code>, it even includes the <a title="M2D" href="https://github.com/egreenfield/M2D" target="_blank">M2D library</a>, which is supposed to help creating 2D elements with the <code>Stage3D</code> API to enjoy the benefits of GPU rendering. Thanks guys! I guess now I want to look into creating templates.</p>
<p><strong>Setting up Away3D</strong></p>
<p><img class="alignleft" title="Away3D sources and libs" src="http://jansensan.net/images/blog/post0026_002.jpg" alt="Away3D sources and libs" width="264" height="140" /></p>
<p>I have been reading good comments here and there about <a title="Away3D" href="http://away3d.com/" target="_blank">Away3D</a>, and the running examples I have seen were quite convincing, so I decided to look into it. Getting started is quite simple.</p>
<ol>
<li>Download the <a title="Away3D downloads" href="http://away3d.com/download/" target="_blank">Away3D 4.0 alpha release</a></li>
<li>Add the provided source files to your classpath</li>
<li>Add the provided Apparat LZMA decoder library as well</li>
</ol>
<p>Logically, this should be it and you should be able to go, but nooo! Have you ever seen a development project work properly on the first try? Especially not a project that uses both an alpha release and a beta release! After a bit of research, I found <a title="How to get started with the Molehill API and Away3D 40.html" href="http://www.disturbmedia.com/wiki/How_to_get_started_with_the_Molehill_API_and_Away3D_40.html" target="_blank">an article on DisturbMedia's wiki</a> that basically explained the situation:</p>
<blockquote><p>Most errors come from AGALMiniAssembler.as. I'm not sure why, but I found that if I split the multiple classes nested in the single file into multiple files that fixes most of the errors. At the end of the process you should have 3 additional classes: Sampler, Register and OpCode.</p></blockquote>
<p>Once the split classes are added, some errors remain in the Away3D sources, however it is possible to compile an empty project at this point.</p>
<p>Next, you would expect to be able to use some Away3D classes already, so did I. The base requirement is to add a <code>View3D</code>, which contains a container that can be used as some sort of stage. Let's try:</p>
<p>ActionScript 3.0:</p>
<blockquote>
<pre class="actionscript">package
<span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">import</span> away3d.<span style="color: #006600;">containers</span>.<span style="color: #006600;">View3D</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageAlign</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageScaleMode</span>;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Main <span style="color: #0066CC;">extends</span> Sprite
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">private</span>	<span style="color: #000000; font-weight: bold;">var</span>	_view3D	:View3D;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// set the stage</span>
	<span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">align</span> = StageAlign.<span style="color: #006600;">TOP_LEFT</span>;
	<span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">scaleMode</span> = StageScaleMode.<span style="color: #006600;">NO_SCALE</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// create the View3D</span>
	_view3D = <span style="color: #000000; font-weight: bold;">new</span> View3D<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	addChild<span style="color: #66cc66;">&#40;</span>_view3D<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">//</span>
	addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, enterFrameHandler<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> enterFrameHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// render the View3D at every frame (or other update of your choice)</span>
	_view3D.<span style="color: #006600;">render</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre>
</blockquote>
<p>Try and run that with the explanations I have given so far, you'll most probably run into the same situation I did: an error. Why? I mean, nothing seems wrong.</p>
<p>Here again, it took me a bit of research, but it turns out that <a title="Temp Fix for Stage3D.viewPort change, Flash 11 Beta" href="http://away3d.com/forum/viewthread/267/" target="_blank">a class needed a correction</a> to handle a change made by the beta release of Flash Player. As I understand, this library was mostly written while the player was still an incubator release. Simply get that updated <code>Stage3DProxy</code> class with the one provided in the forum thread, and you're good to go.</p>
<p>From this point on, you can head to minute 2:30 of <a title="Quickstart for Molehill and Away3D" href="http://johnlindquist.com/2011/02/28/quickstart-for-molehill-and-away3d/" target="_blank">John Lindquist's tutorial</a> to see how to add an awesome cube to your project, or look into the <a title="Away3D Broomstick Examples" href="https://github.com/away3d/away3d-examples-broomstick" target="_blank">Away3D examples</a>. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/setting-up-fdt-for-away3d-and-flash-player-11-beta/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Book review: Flash game development by example</title>
		<link>http://jansensan.net/book-review-flash-game-development-by-example</link>
		<comments>http://jansensan.net/book-review-flash-game-development-by-example#comments</comments>
		<pubDate>Sun, 05 Jun 2011 19:05:59 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Emanuele Feronato]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=576</guid>
		<description><![CDATA[Thanks to Antti Kupila, I have been given a copy of Emanuele Feronato's book Flash Game Development by Example to read and critique. Emanuele has been blogging about Flash gaming for years, and since I am looking to get into gaming, I was eager to read the book. So far I have made it only [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="Flash Game Development by Example, the book" src="http://jansensan.net/images/blog/post0024_001.jpg" alt="Flash Game Development by Example, the book" width="640" height="360" /></p>
<p>Thanks to <a href="http://www.anttikupila.com/">Antti Kupila</a>, I have been given a copy of <a href="http://www.emanueleferonato.com/">Emanuele Feronato</a>'s book Flash Game Development by Example to read and critique. Emanuele has been blogging about Flash gaming for years, and since I am looking to get into gaming, I was eager to read the book.</p>
<p>So far I have made it only through the first three chapters. I did a preliminary critique of the book on the <a href="http://www.amazon.com/Flash-Development-Example-Emanuele-Feronato/dp/1849690901/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1307018451&amp;sr=1-1">Amazon product page</a>:</p>
<blockquote><p>Emanuele Feronato has been blogging ([...]) good tips on Flash gaming and PHP development for a while now. When I learned he had written a book on how to get into game development, I had to try it.</p>
<p>In line with his blog, Feronato's writing is clear and concise, no fluff is added. A good thing is that he assumes the reader has already some knowledge of Flash and AS3. This book does present some basic information if you know nothing of Flash, but the intent of this book is to teach you how to do games, not how to program. This is really a good thing, for there are way too many books that think that all readers have never touched programming of their life.</p>
<p>Feronato does a good job at increasing the difficulty of concepts during each chapter. His introduction to each challenge, by splitting the concept and the coding, guides the reader properly.</p>
<p>As a web developer, jumping into gaming is a good and honest challenge. Oftentimes a web dev tends to create complex systems for data and views. Feronato brings back the joy of programming with simple and logic code structures.</p>
<p>I did get put off by the fact that his instructions make use of the Flash IDE, rather than Flash Builder, FDT or FlashDevelop. In a professional environment, it's quite inefficient to code in the Flash IDE, but I believe it would have taken too many explanations to put in a book about games. All in all, it is quite easy to transpose the instructions into code-only IDEs.</p>
<p>I would also have like some more game-oriented optimization tips (like using multiplications rather than divisions, since it is quicker), for gaming is all about being code-efficient. That said, it is a good buy for those who are serious about getting into Flash gaming.</p></blockquote>
<p>I have read the other critiques of the book on Amazon and also other critiques from real game devs like <a href="http://blog.iainlobb.com/2011/05/flash-game-development-by-example-book.html">Iain Lobb</a> and <a href="http://gamedev.rasmuswriedtlarsen.com/2011/05/31/review-flash-game-development-by-example/">Rasmus Wriedt Larsen</a> and it got me thinking.</p>
<p><strong>Critiquing the critique</strong></p>
<p>My grandad used to say: "Only a fool does not change his mind." Whereas I do not think as harshly about the book, I do want to delve deeper into my critique to either correct what I said, or even add to it.</p>
<p>Lobb mentions the coding style of Feronato, which I also noted looks a lot like PHP's style:</p>
<blockquote><p>We all write weird looking code sometimes, but I think a book needs to set a better example.</p></blockquote>
<p>I must say that it did not deter me really too much, since I am used to pick up other people's work and fix it. However, now that I think of it, a book must set an example of good coding practices. I have to agree with Lobb on his critique.</p>
<p>Another practice that really should have been present in Feronato's code is tips that make code execute faster.</p>
<p>Using <code>var array:Array = []</code> may look dirty, but it is way quicker than creating arrays with the <code>new Array()</code> declaration. His examples do not use many arrays, but I do not see why good habits should not be put forward.</p>
<p>Another tip is to try and use multiplications rather than divisions. Again, the examples do not use calculations that are processor intensive, but it is the best moment to explain to new game developers tips that will help them when they have to handle complex systems in the future.</p>
<p>But those tips are something that I knew already and that could have been used in the first three chapters of the book. Let's see when I get further in the book how it goes.</p>
<p>Both Lobb and Larsen look onto Feronato's code as merely scripts, for it doesn't push OOP concepts. As Feronato's book is really built on iterating his code and moving it forward, as many oftentimes code in real life, it would have been nice for him to explain how to transform hid code into classes etc. The speed at which Feronato moves through concepts means the reader is  expected to know how to code. And if so, the reader could also then be  expected to know some OOP. Feronato could have used such a premise to  then push the use of classes. Unknowingly, I worked exactly how Larsen describes what he sees in his book:</p>
<blockquote><p>[...] if you know how to code AS3 with OOP and good coding practises, plus  being able to extract general ways of doing something from very specific  examples [...]</p></blockquote>
<p>As I mentioned in my Amazon critique, I would have preferred it if the  author would have not used the Flash IDE to code, since it's pretty  backwards. As I was going through his examples, I actually used FDT to create a proper project structure, with assets, packages and different classes for specific tasks.</p>
<p>I did enjoy Feronato's scripting style to read, but I do now think the book he wrote should have promoted practices that would be useful in professional environments.</p>
<p>Lobb critiques Feronato's choices of games for being out of touch with current trends. He makes an interesting point:</p>
<blockquote><p>I really think that a lot of game developers around my age group (e.g.  25 and older) are stuck in the past somewhat with their ideas of what  constitutes a computer game.</p></blockquote>
<p>I think that using a lot of pixel sprites in my prototypes casts me in that group. However I must disagree with Lobb here. I am not fan of Flip and Match games, Tetris or other classic puzzlers per se. As good a developer I am, I have never tackled a real game project. Starting from scratch with basic concepts and logics actually helps me learn things properly.</p>
<p>For example, in Minesweeper, the logic of how to use and create a <a title="Wikipedia - Flood Fill" href="http://en.wikipedia.org/wiki/Flood_fill" target="_blank">flood fill</a> function is explained. Since I come from a web development, where the UI is usually the most important concern, I would not know what to call such a concept. It is a definite win for me here.</p>
<p>Another example is the Connect Four winning explanations. Feronato explains how a win is made in concepts and how to translate that in code. I know pseudo code is not something new in development, but learning to do it for gaming is, to me and maybe to other non-gaming developers, something refreshing and useful.</p>
<p>Let's take a look at what I was able to create with what I have read so far.</p>
<p><strong>Concentration, a flip and match game</strong></p>
<p>This game is pretty straightforward, we pretty much all know it. Feronato explains in simple terms how to build such a game.</p>
<p>What  is missing however is an explanation for the reader on how to reset the  game so the player can enjoy more than one game. Actually, the author  does not explain how to restart any of the games he describes. That is a  big part in gaming, it should be present in his book I believe. It  would also have been a great way to show how to use functions. So as you  can see from my prototype above, I have added that logic. Once the game  is complete, the user can retry to play.</p>
<p>Stats on how the game  progresses is also interesting for the player to see. Lobb actually  mentions this in his critique, although I had though of adding these  stats previous to reading the article.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="FlashVars" value="scale=2" /><param name="src" value="http://jansensan.net/experiments/game-dev-concentration/swf/concentration.swf" /><param name="flashvars" value="scale=2" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://jansensan.net/experiments/game-dev-concentration/swf/concentration.swf" flashvars="scale=2"></embed></object></p>
<p>As a personal touch, I decided to make my game shareable on Facebook's wall so that my friends could try that little prototype in their news stream. I will eventually explain how easy that is, but it is not the point of this blog post. You may try it yourself in sharing the URL http://jansensan.net/experiments/game-dev-concentration/ onto your news stream. Do not just copy the URL into your browser, it redirects to this post.</p>
<p>Once you share the above URL onto your news stream, it will then show like this:</p>
<p style="text-align: center;"><img class="alignnone" title="Flip and Match in Facebook news stream" src="http://jansensan.net/images/blog/post0024_002.jpg" alt="Flip and Match in Facebook news stream" width="431" height="164" /></p>
<p>If you ever used YouTube or Vimeo on your news stream, you know the Flash piece will expand when they click on the blue play button.</p>
<p style="text-align: center;"><img class="alignnone" title="Flip and Match in Facebook news stream" src="http://jansensan.net/images/blog/post0024_003.jpg" alt="Flip and Match in Facebook news stream" width="458" height="444" /></p>
<p>With those simple additions, people were enjoying a simple prototype and sharing it around.</p>
<p><strong>Minesweeper</strong></p>
<p>To be honest, I never understood the Minesweeper game, or rather what  is compelling to play it. Or maybe I just hate it because that is the  only game that was available on my dad's work computer at the government  when I was visiting and he was asking me to wait for him... Anyways, I  digress...</p>
<p>Feronato only explains what makes the player lose the game, however he should also have explained what is the win situation. An author cannot take for granted that the reader knows the game that is described.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="480" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://jansensan.net/experiments/game-dev-minesweeper/swf/minesweeper.swf" /><embed type="application/x-shockwave-flash" width="640" height="480" src="http://jansensan.net/experiments/game-dev-minesweeper/swf/minesweeper.swf"></embed></object></p>
<p>With this game, Feronato explains some recursion and the concept of the flood fill, which I believe is well worth to learn.</p>
<p>Concerning the use of functions however, the explanations lack. Functions are made to reuse code and, again, restarting a game is the perfect need to reuse code. As you can see from the prototype, you can only play once, which as I mentioned before is not a way to build a complete game.</p>
<p>Maybe I have not read enough tech books, but whenever I stumble upon an example online that uses events, the tutorial not always explains that it is best to remove the event handlers, sometimes even in Adobe's documentation! Many a time did I have to explain or correct other people's code to reduce the demand on memory. Feronato does explain to remove the event handler, I have to give him props for this.</p>
<p><strong>Connect Four</strong></p>
<p>This game is not digital by any means, and recreating it does not make it more fun. However, the logic learning with this game is quite nice. Games like <a title="Drop 7 for iOS" href="http://itunes.apple.com/us/app/drop7/id299940763?mt=8" target="_blank">Drop 7</a> seems to be a game that extrapolates on the concepts defined in Connect Four.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://jansensan.net/experiments/game-dev-connect-four/swf/connect-four.swf" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://jansensan.net/experiments/game-dev-connect-four/swf/connect-four.swf"></embed></object></p>
<p>The structure of the code in this game made me cringe. I believe that under no circumstance should a child tell its parent what to do. Sounds logical no? I mean not only about code, just read the previous sentence aloud and you will feel how much sense it makes.</p>
<p>Feronato actually does that here, he write something like <code>this.parent.parent</code>. It is not technically wrong, since it compiles, but I believe that conceptually it is not right. It makes it so complex for someone else to inherit a project and try to figure out such a logic. Big no-no.</p>
<p>While explaining how to check for the game completion, the author does bring forward the idea that is it not efficient to loop through all possible tiles. Good suggestion on code efficiency here.</p>
<p><strong>So, what now?</strong></p>
<p>I do see that this book has some flaws, but nothing that could not have been corrected or pushed more. I think also however that both Larsen and Lobb have dismissed a couple of things in their critique.</p>
<p>a) The audience. Larsen makes a good point that the code is quick and dirty and that the prototypes are not teaching concepts, but that is exactly what the introduction says:</p>
<blockquote><p>Who this book is for</p>
<ul>
<li>AS3 developers who want to know quick and dirty techniques to create Flash games</li>
<li>Flash animators who want to learn how to create games from their works with AS3</li>
<li>Programmers who know languages different than AS3 and want to learn AS3 to make something more interesting and fun than the old "phone book"</li>
<li>Even if you aren't a programmer, but you love Flash games, you can count on this book: you will be guided step by step with clear examples and the support of the full source code of every game</li>
</ul>
</blockquote>
<p>Now, is that audience right? That's another question, but it is clearly stated.</p>
<p>b) The types of game. Lobb did hit on that and I do what to bring it back. The title of the book clearly states that is for building classic games, mostly puzzlers.</p>
<blockquote><p>Build 9 classic Flash games and learn game development along the way</p></blockquote>
<p>Again, the question to raise is, is that a good thing to teach devs? With Stage3d (a.k.a. Molehill), P2P, game controllers on AIR and all sorts of awesome features, Flash can be so much more as a gaming platform.</p>
<p>All in all, I will go on reading the book, for I know I will learn some more things. I agree however that this book does not feel complete, but it feels like a good primer to get into game development. Hey, I may also be wrong, but once a reader knows about some concepts like AI, recursion, etc., it then becomes more possible to search for more precise concepts.</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/book-review-flash-game-development-by-example/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Of tracking and creative development</title>
		<link>http://jansensan.net/of-tracking-and-creative-development</link>
		<comments>http://jansensan.net/of-tracking-and-creative-development#comments</comments>
		<pubDate>Mon, 28 Mar 2011 19:53:59 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Information Architecture]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Tracking]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=486</guid>
		<description><![CDATA[As creative developers, we need to be familiar with the concept of tracking. For those of you who are not familiar with the idea, tracking is a way of recording the user's interaction with a website, an installation, a game, or any other interactive piece. For example, you'll notice that I sometimes refer searches people [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Meet my friend spike" src="http://jansensan.net/images/blog/post0021_001.jpg" alt="Meet my friend spike" width="640" height="84" /></p>
<p>As creative developers, we need to be familiar with the concept of tracking. For those of you who are not familiar with the idea, tracking is a way of recording the user's interaction with a website, an installation, a game, or any other interactive piece. For example, you'll notice that I sometimes refer searches people did to end up on my site or what is the most popular post. I can get all that information via tracking.</p>
<p><strong>The purpose</strong></p>
<p>The data obtained from tracking can be used for different purposes. In theory, the strategist should meet with the information architect in the beginning of a project to share the learnings obtained from previous projects. Afterwards, the information architect adapts or corrects wireframes accordingly.</p>
<p>Let's think of a share button on a microsite. If an agency implements a share button, but said button is not used at all in any of it's sites, the strategist could then decide that the share button is either useless, then ask for it's removal. Also, it could mean that it is not either visible enough or in a proper location, that would then be a job for the information architect to rethink where that button should be placed in the site.</p>
<p><strong>Tracking useless data: achievements?</strong></p>
<p>That does mean however that when creating a tracking plan, a strategist might have to be careful to track every of the user's actions, useless data might serve no purpose. But in other contexts, such as games, tracking all sorts of useless things might serve a purpose: achievements.</p>
<p>Many people who are familiar with games know that there are tons of things tracked in there, and since their creation. Asteroid's rocks, Pac-Man pellets and fruits, Donkey Kong's barrels, Super Mario's coins. All those things were tracked in order to present a high score. Pretty basic, and a bit boring by today's standards.</p>
<p><a title="Bubble Bobble on Wikipedia" href="http://en.wikipedia.org/wiki/Bubble_Bobble" target="_blank">Bubble Bobble</a>, an old arcade game, had a lot of undisclosed tracking that affected how power-ups and points were attributed to the player.</p>
<p><img class="aligncenter" title="Bubble Bobble" src="http://www.gamasutra.com/db_area/images/feature/3485/0005.png" alt="Bubble Bobble" width="580" height="508" /></p>
<blockquote><p>Probably the most mysterious is the formula that determines when special items appear. Most players believe it to be random, but actually they're all directly determined by the player's actions. The game maintains counts of a large array of trivia, like bubbles popped, times jumped, water bubbles burst, and times wrapped around the screen. When a counter exceeds a threshold value, a flag is set scheduling the item to be generated in an upcoming level. – Source: <a title=" 	Game Design Essentials: 20 Mysterious Games " href="http://www.gamasutra.com/view/feature/3485/game_design_essentials_20_.php?page=3" target="_blank">Gamasutra - Game Design Essentials: 20 Mysterious Games</a></p></blockquote>
<p>More recently, online gaming has allowed tracking results to be used as bragging rights in between gamers. Services like <a title="XBOX Live" href="http://www.xbox.com/" target="_blank">XBOX Live</a>, <a title="Playstation Network" href="http://www.playstation.com/psn/" target="_blank">Playstation Network</a> and the recent <a title="Apple GameCenter" href="http://www.apple.com/game-center/" target="_blank">Apple GameCenter</a> all allow their players to track seemingly useless data and post it on a more developed online high score board.</p>
<p>A recent game went from indie to fame, <a title="Super Meat Boy" href="http://supermeatboy.com/" target="_blank">Super Meat Boy</a>. That game tracks the attempts of the player to succeed at passing the current level, and at the end of the level, presents a funny replay of all the attempts at the same time.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/GT_a0dcdWac?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/GT_a0dcdWac?fs=1&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Tracking tools</strong></p>
<p>There are multiple ways to track user interactions. As I have not worked in gaming, I can only mention those about websites, but the idea is mostly the same.</p>
<p>Google offers an easy to use free service, <a title="Google Analytics" href="http://www.google.com/analytics/" target="_blank">Google Analytics</a>. Enterprises oftentimes go with professional companies that offer tracking services, such as <a title="CoreMetrics" href="http://www.coremetrics.com/" target="_blank">CoreMetrics</a>. Even <a title="http://bit.ly/" href="http://bit.ly/" target="_blank">Bitly</a>, the URL shortener service, offers some tracking.</p>
<p>Those who ever worked with banners—ugh, I hate these things—know of something called the <a title="ClickTag on Wikipedia" href="http://en.wikipedia.org/wiki/Clicktag" target="_blank">ClickTag</a>. If you don't know what it really is or never cared to look it up, let me spell it out for you: it's a tracking tag. Yup! Those ad servers hosting the banners track the amount of clicks on those banners. I mean, it's important to the advertiser to know if the banner is successful. And just so you know, a banner click rate (views vs. clicks) is oftentimes less than 1%... Sometimes, they go as far as using <a title="Heat maps on Squidoo" href="http://www.squidoo.com/heat-map" target="_blank">heat maps</a> to know what attracts the user to hover over or click on said banner.</p>
<p>Try tracking tools as much as you can, it is an important skillset to have.</p>
<p><strong>Why should you care?</strong></p>
<p>Well, you may not have to, it all depends on what you want to do. But like in anything, it's good to know how it works and how it affects you and your work.</p>
<p>If you aim to know programming in all its nook and crannies, if you like to optimize the hell out of your code and do not care about the rest of the project lifecycle, tracking will just be an annoying request from your project manager to add some lines of code in your project.</p>
<p>However, if you care about how the project got to what it is, if you care about the user interface and experience, you need to work with a strategist and an information architect before the project is started, and also afterwards once the project is complete to see what are the lessons learned. It is a great way to move forward in the world of development.</p>
<p><strong>Further reading</strong></p>
<p>There are obviously a lot of people writing about SEO, strategy and interaction design. Here are a couple blogs that I find relevant:</p>
<ul>
<li><a href="http://52weeksofux.com/" target="_blank">52 Weeks of UX</a></li>
<li><a href="http://thefuturebuzz.com/" target="_blank">The Future Buzz</a></li>
<li><a href="http://www.getelastic.com/" target="_blank">Get Elastic</a></li>
<li><a href="http://ignorethecode.net/blog/" target="_blank">Ignore the Code</a></li>
<li><a href="http://www.lukew.com/ff/" target="_blank">Luke W: Ideation + Design</a></li>
<li><a href="http://www.uxbooth.com/" target="_blank">UX Booth</a></li>
<li><a href="http://uxmovement.com/" target="_blank">UX Movement</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/of-tracking-and-creative-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging Flash with Terminal or Command Prompt</title>
		<link>http://jansensan.net/debugging-flash-with-terminal-or-command-prompt</link>
		<comments>http://jansensan.net/debugging-flash-with-terminal-or-command-prompt#comments</comments>
		<pubDate>Fri, 25 Feb 2011 22:45:47 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=488</guid>
		<description><![CDATA[All programming languages offer a way to debug and send some info to a console. In the Flash IDE, the traces are displayed in the output window, in Flash Builder/FDT/Eclipse the traces are sent to the console view. And so on. That is useful while debugging, however most often those traces are needed in the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Terminal and Command Prompt" src="http://jansensan.net/images/blog/post0020_001.jpg" alt="" width="640" height="128" />All programming languages offer a way to debug and send some info to a console. In the Flash IDE, the traces are displayed in the output window, in Flash Builder/FDT/Eclipse the traces are sent to the console view. And so on.</p>
<p>That is useful while debugging, however most often those traces are needed in the final context of the Flash piece, like a website.</p>
<p>There are some awesome tools out there that do just that and in style. I'm thinking of <a title="De MonsterDebugger" href="http://demonsterdebugger.com/" target="_blank">De MonsterDebugger</a>. That tool is really good, although it requires some additional classes and long words to write to get something simple (eg: <code>MonsterDebugger.trace(this, "Hello World!")</code>).</p>
<p>There is a context in which that tool cannot be used, and that is Facebook. Ah! the ever hatable social network platform! Facebook does not allow <code>ExternalInterface</code> for security reasons, <span style="text-decoration: line-through;">that is why tools like De MonsterDebugger are not available, this is how data is sent to their debugger</span>. Edit: After receiving a comment, I investigated, it indeed turns out that MonsterDebugger is available when working on Facebook, as it indeed uses <code>LocalConnection</code>. My bad for assuming. However, the use of <code>ExternalInterface</code> is still not possible on Facebook, and the point of this post is more to show how to use the Terminal and Command Prompt to debug.</p>
<p>Sure you could create a textfield and add it to the display list, but that can become tedious if you need to add scrollbars and such.</p>
<p>A good alternative is to use a debugger that functions regardless of context. Adobe's open source <a title="Flex SDK" href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" target="_blank">Flex SDK</a> comes with the Flash Debugger, a JAR package that can be run with Java from the command line.</p>
<p>Yikes!</p>
<p>That sounds more complicated than it really is actually. Let's see how to run the debugger on Mac OSX and Windows.</p>
<p><strong>Terminal on Mac OSX</strong></p>
<p><img class="aligncenter" title="Flash Debugger in Terminal" src="http://jansensan.net/images/blog/post0020_002.jpg" alt="" width="640" height="390" /></p>
<p>The screenshot above provides already a lot of information on how to run that package, but let's spell it out step by step:</p>
<ol>
<li>Open Terminal</li>
<li>Go to the directory where of the Flex SDK you want to use</li>
<li>Go to the "lib" directory</li>
<li>In that directory, you need to run the "fdb.jar" package. To do so, type "java -jar fdb.jar"</li>
<li>To start the debugger, type "r", for run. The traces and errors will then be displayed in the Terminal</li>
</ol>
<p>This will work for all SWFs published with debugging enabled, whether they are local or online, and that is where it becomes useful, for debugging stuff online. Just make sure then that you installed the debugger version of the Flash Player so it can communicate with the Terminal.</p>
<p><strong>Command Prompt on Windows</strong></p>
<p><img class="aligncenter" title="Flash Debugger in Command Prompt" src="http://jansensan.net/images/blog/post0020_003.jpg" alt="" width="640" height="390" /></p>
<p>It's pretty much the same on Windows with the Command Prompt. You can see here that I use Windows XP, so I'm sorry if there are slight differences on Vista or 7, I don't have those OSes.</p>
<ol>
<li>Open the Command Prompt</li>
<li>Go to the directory where of the Flex SDK you want to use</li>
<li>Go to the "lib" directory</li>
<li>In that directory, you need to run the "fdb.jar" package. To do so, type "java -jar fdb.jar"</li>
<li>To start the debugger, type "r", for run. The traces and errors will then be displayed in the Command Prompt</li>
</ol>
<p>Happy debugging!</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/debugging-flash-with-terminal-or-command-prompt/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Loading an SWC at runtime in different IDEs</title>
		<link>http://jansensan.net/loading-an-swc-at-runtime-in-different-ides</link>
		<comments>http://jansensan.net/loading-an-swc-at-runtime-in-different-ides#comments</comments>
		<pubDate>Fri, 03 Dec 2010 14:41:39 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[FlashDevelop]]></category>
		<category><![CDATA[IntelliJ IDEA]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=444</guid>
		<description><![CDATA[Aah, the joy of being able to obtain code completion during development, what dev doesn't like this? A while back, I explained how to link to SWCs to get code completion, but not compile said SWC in the SWF, so it could be loaded at runtime. It turns out that all IDEs do not necessarily [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="From SWC to IDEs to SWF to Interwebs" src="http://jansensan.net/images/blog/post0019_001.png" alt="From SWC to IDEs to SWF to Interwebs" width="640" height="320" /></p>
<p>Aah, the joy of being able to obtain code completion during development, what dev doesn't like this? A while back, I explained how to link to SWCs to get code completion, but not compile said SWC in the SWF, so it could be loaded at runtime. It turns out that all IDEs do not necessarily behave the same way Flash Builder 4 does. Figures...</p>
<p>Ever since <a title="Flash on the Beach 2010 – The Aftermath" href="http://jansensan.net/flash-on-the-beach-2010-the-aftermath" target="_self">I went to Flash on the Beach</a>, I have been playing with more IDEs than <a title="Flash Builder" href="http://www.Adobe.com/FlashBuilder" target="_blank">Flash Builder</a>. I have to say I've been quite lucky: all attendees were given the <a title="FDT" href="http://www.fdt.powerflasher.com/" target="_blank">FDT 4</a> Pure IDE. Also, I have been <a title="Flash on the Beach raffle winners, more prizes at Adobe MAX" href="http://blogs.jetbrains.com/idea/2010/10/flash-on-the-beach-raffle-winners-more-prizes-at-adobe-max/" target="_blank">one of the lucky winners</a> of an <a title="IntelliJ IDEA" href="http://www.jetbrains.com/idea/" target="_blank">IntelliJ IDEA 9</a> licence. And since I was already trying all sorts of IDEs, why not look at <a title="FlashDevelop" href="http://www.flashdevelop.org/" target="_blank">FlashDevelop</a>, an open source IDE, sadly available only on Windows.</p>
<p>When I look at the metrics of my blog, it seems that loading a SWC at runtime (along with the <a title="Communication between AS3 and Facebook" href="http://jansensan.net/communication-between-as3-and-facebook" target="_self">post about Facebook and AS3</a>) is the most popular subject, so I though it would be better if I was more thorough and explain how to repeat the workflow mentioned above for all these IDEs. Obviously, if anybody knows even better ways to go about what I'm about to explain, by all means share with me.</p>
<p><strong>Flash Builder 4</strong></p>
<p>I already published <a title="Loading assets dynamically, part 2" href="http://jansensan.net/loading-assets-dynamically-part-2" target="_self">a post about this</a> workflow and this IDE, simply refer back to it.</p>
<p><strong>FDT 4</strong></p>
<p>FDT is pretty much the same thing as FlashBuilder, albeit better. It is also based on Eclipse, but all those <a title="My setup" href="http://jansensan.net/my-setup" target="_self">plugins I needed</a> or those that <a title="Sourcemate" href="http://www.elementriver.com/sourcemate">some devs boasted about</a>, they are already in place in FDT.</p>
<p>When you want to add an SWC, I must say it's quite simpler here. No need to go hunt in the preferences's subcategories. Right-click on that SWC, the select "Source Folder &gt; Add to Classpath".</p>
<p style="text-align: center;"><img class="alignnone" title="Source Folder &gt; Add to Classpath" src="http://jansensan.net/images/blog/post0019_002.jpg" alt="Source Folder &gt; Add to Classpath" width="518" height="311" /></p>
<p><span style="text-decoration: line-through;">Now, the small issue that this presents, there is no prompt that asks whether you want to embed said SWC in your code, or to load it at runtime. I hunted a bit for this one, but in the end it takes s simple manual change.</span> I was wrong on this one, as pointed out by <a rel="external nofollow" href="http://blog.mattes-groeger.de/">Mattes Groeger</a>:</p>
<blockquote><p>[...] you can set this option via GUI. Just call the project “Properties” window by right clicking the project in the Flash Explorer view. Then in “FDT Build Path” click on the “Build Order” Tab. Here you can choose for each library via check box if it should be used as runtime library or not.</p></blockquote>
<p style="text-align: center;"><img class="alignnone" title="Setting a library as runtime in FDT's project prefs" src="http://jansensan.net/images/blog/post0019_011.jpg" alt="Setting a library as runtime in FDT's project prefs" width="640" height="570" /></p>
<p>Alternatively, you can still go and play with the settings file, as I explain below.</p>
<p>Whenever you create a project in any Eclipse-based IDE, a .project file is created. With FlashBuilder, there is also a .actionScriptProperties. Do not worry if you have never seen these files, they are "invisible." They are actually XML files that contain project configurations. I'll probably have to come back to these sometime in the future.</p>
<p>I was then thinking, FDT probably creates those files too. Lo and behold, it does! Now, how do you edit these? At the top right of the Flash Explorer panel, there is a triangle pointing down. In there, select "<img title="Eclipse Filters Icon" src="http://jansensan.net/images/blog/post0019_003.jpg" alt="Eclipse Filters Icon" width="16" height="16" /> Filters...".</p>
<p><img class="aligncenter" title="Filters" src="http://jansensan.net/images/blog/post0019_004.jpg" alt="Filters" width="314" height="437" /></p>
<p>From there you can select what types of file you want and do no want to see. Personally, I really dislike it when there are hidden files, so I want to see all of them. Once you have that in place, you will be able to find the .settings folder.</p>
<p style="text-align: center;"><img class="alignnone" title=".settings folder" src="http://jansensan.net/images/blog/post0019_005.jpg" alt=".settings folder" width="220" height="70" /></p>
<p>I mentioned the .actionScriptProperties for FlashBuilder, for FDT you want to open com.powerflasher.fdt.classpath. In there, all the sources paths are listed. In order to change an SWC so that its code is not embedded in the SWF, change the <code>useAsSharedCode</code> attribute from <code>false</code> to <code>true</code>. Then just make sure you load your SWF before you instantiate any class from that shared library.</p>
<p>Voilà for FDT.</p>
<p><strong>IntelliJ Idea</strong></p>
<p>Now for another beast altogether. I must say I have not been able to familiarize myself much with this IDE yet, and I find it a bit more complex than necessary. I mostly had to refer myself to <a title="IntelliJ Idea9 ActionScript 3/Flex Workflow Part 1" href="http://insideria.com/2010/02/intellij-idea9-actionscript-3f.html" target="_blank">Jesse Freeman's posts</a> about the AS3 in IntelliJ IDEA workflow to be able to set up and compile a basic project. Once that behemoth in the room is taken care of and you know where to add SWCs and sources as libraries, it turns out to be simple.</p>
<p style="text-align: center;"><img class="alignnone" title="IntelliJ Idea - Module settings menu" src="http://jansensan.net/images/blog/post0019_006.jpg" alt="IntelliJ Idea - Module settings menu" width="380" height="716" /></p>
<p>First, right-click on your project (which is called a module in IntelliJ IDEA) and select "Module Settings".</p>
<p style="text-align: center;"><img class="alignnone" title="IntelliJ IDEA Module Settings" src="http://jansensan.net/images/blog/post0019_007.jpg" alt="IntelliJ IDEA Module Settings" width="640" height="346" /></p>
<p>In these settings, select your module and go to the Dependencies tab. If your SWCs are not there already, add them with–you guessed it!– the "Add" button. At the right of the path to that SWC, there is a combo box from which you can select <a title="JetBrains - Dependencies Tab" href="http://www.jetbrains.com/idea/webhelp/dependencies-tab.html" target="_blank">options for the scope</a>: "Compile", "Test", "Runtime" and "Provided". The one we need to choose in this case is "Provided".</p>
<p>You can now go about your business for the rest of your project.</p>
<p><strong>FlashDevelop</strong></p>
<p>Working with FlashDevelop is a bit tricky for me, since I'm on a Mac. However, back when I was working at an e-com shop 3 years ago, I was using FlashDevelop, I should be alright. What really help I have to say is that this tool has an active community, which saved me a great deal of trouble. A <a title="Google Search" href="http://lmgtfy.com/?q=swc+runtime+flashdevelop" target="_blank">search on Google</a> and I got <a title="FlashDevelop forum thread - Load SWC at runtime" href="http://www.flashdevelop.org/community/viewtopic.php?p=22197" target="_blank">this forum thread</a> which answers all my questions. So, credit given when credit due, now let's look at what is to be done with FlashDevelop.</p>
<p style="text-align: center;"><img title="FlashDevelop - Add SWC to library menu" src="http://jansensan.net/images/blog/post0019_008.jpg" alt="FlashDevelop - Add SWC to library menu" width="292" height="260" /></p>
<p>First, select your SWC from your library, and from the contextual menu, choose "Add To Library".</p>
<p style="text-align: center;"><img class="aligncenter" title="FlashDevelop - Library Options" src="http://jansensan.net/images/blog/post0019_009.jpg" alt="FlashDevelop - Library Options" width="300" height="282" /></p>
<p>Once the SWC is added, the label will show in blue. Right-click again on it, and then the "Options" menu is visible.</p>
<p style="text-align: center;"><img class="aligncenter" title="FlashDevelop - Library Options Window" src="http://jansensan.net/images/blog/post0019_010.jpg" alt="FlashDevelop - Library Options Window" width="330" height="304" /></p>
<p>In that window, you are presented with the necessary options. In this IDE as well the terminology changes, but at least a description is given. Check "External library (not included)".</p>
<p><strong>Ant</strong></p>
<p>As you will see from the sources I provide at the end of the article, all these IDEs actually play along quite well. But if for one reason or another, you are more the I-don't-depend-on-no-IDE kind of person, you can also compile your project directly into Ant. I know that after I have written <a title="Speed up development process with Ant" href="http://jansensan.net/speed-up-dev-process-with-ant">my post about Ant</a>, I should have written about how to compile with said insect, but since I faced the loading a SWC at runtime issue first when I started dabbling with FDT, I thought about writing about this workflow first.</p>
<p>Let's get to business. In ant, you need to use the <code>runtime-shared-library-path</code> tag so that when you compile your code is checked against your library, but that the library is not included.</p>
<blockquote><p><code>&lt;runtime-shared-library-path path-element="${ASSETS_DIR}/swf/assets.swc"&gt;<br />
&lt;url rsl-url="${ASSETS_DIR}/swf/assets.swf"/&gt;<br />
&lt;/runtime-shared-library-path&gt;</code></p></blockquote>
<p>Specify in the <code>path-element</code> attribute the path to the SWC, and in the <code>rsl-url</code> attribute of the <code>url</code> tag against what SWF the SWC is compared.</p>
<p>Simple no?</p>
<p><strong>Conclusion</strong></p>
<p>This is actually the first time I try to do something and see how each IDE behaves. I'm quite happy to have found out that all of these play well together, that is good news to know that if you commit all of your project built in one IDE to SVN, that another developer can check it out and run it in another IDE without conflict.</p>
<p>However, one thing that did bother me is the amount of crap (the worst are Flash Builder and IntelliJ IDEA) that these idea create, there are so many useless files! And I am sorry for this, they are all part of the sources as well.</p>
<p>More related to the issue though, it is nice that all IDEs offer a way to work with code completion of assets at development time.</p>
<p><strong>Sources</strong></p>
<p><a title="Sources" href="http://jansensan.net/compressed/Tutorial_LoadSWCAtRuntime.zip">As promised</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/loading-an-swc-at-runtime-in-different-ides/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Speed up development process with Ant</title>
		<link>http://jansensan.net/speed-up-dev-process-with-ant</link>
		<comments>http://jansensan.net/speed-up-dev-process-with-ant#comments</comments>
		<pubDate>Mon, 11 Oct 2010 14:32:01 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=378</guid>
		<description><![CDATA[As developers, there are inevitably repetitive tasks that need to be done and redone with each new project we undertake. The best example I can provide is creating the folder structure for our projects. Obviously this is personal to each dev, and there is also some stuff that some of our IDEs–hmm, I'm looking at you Flash [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Apache Ant" src="http://jansensan.net/images/blog/post0016_001.jpg" alt="Apache Ant" width="640" height="128" /></p>
<p>As developers, there are inevitably repetitive tasks that need to be done and redone with each new project we undertake. The best example I can provide is creating the folder structure for our projects. Obviously this is personal to each dev, and there is also some stuff that some of our IDEs–hmm, I'm looking at you Flash Builder–add by themselves. Oftentimes I have simply copied/pasted the structure from project to project, even created a folder structure without any files, just so I could copy paste. That was a while ago.</p>
<p>In line with the <a title="My setup" href="http://jansensan.net/my-setup" target="_self">mission of this blog</a>, I present you with another useful tool: Ant.</p>
<p>Ant is basically <a title="Apache Ant User Manual" href="http://ant.apache.org/manual/index.html" target="_blank">a set of tasks</a> written in an XML file. Tasks such as moving and copying files and directories, but sometimes much more powerful stuff. If I am not mistaken, this is how a lot of patient developers call manually on the compiler from the Flex SDK to create their SWCs and SWFs.</p>
<p>As I said in my previous posts, I never pretend to be a master at what I explain, but I like to share functional and straightforward knowledge of the tools, languages and utilities I use.</p>
<p><strong>Of IDEs and Ant</strong></p>
<p>As I have mentioned a couple of times, I do not use the Flash Builder 4 standalone IDE, but rather FB4 as a plugin to my Eclipse IDE. I once mentioned that already-integrated XML editor of Eclipse was an advantage over the standalone FB4. Here also Eclipse wins. Go to Window > Show View... > Other... and this is how you obtain a convenient Ant view panel.</p>
<p><img class="aligncenter" title="Eclipse's Ant View Panel" src="http://jansensan.net/images/blog/post0016_002.jpg" alt="Eclipse's Ant View Panel" width="640" height="495" /></p>
<p>FDT also offers such a panel, so does <a title="IntelliJ IDEA" href="http://www.jetbrains.com/idea/" target="_blank">IntelliJ IDEA</a>, however I have no idea what is available for FlashDevelop. For the standalone version of Flash Builder, <a title="a search in Google" href="http://lmgtfy.com/?q=flash+builder+ant" target="_blank">a search on Google</a> quickly provides <a title="FB4 Standalone - How to Install Ant in Flash Builder 4 Premium" href="http://www.zoltanb.co.uk/articles/flash-blog/162-fb4-standalone-how-to-install-ant-in-flash-builder-4-premium" target="_blank">examples</a> of how to add the panel to the IDE.</p>
<p>Now, let's look at some Ant stuff!</p>
<p><strong>Structure and conventions</strong></p>
<p>Usually, Ant files are called "build.xml" and are placed in the "build" directory. That directory also contains a properties files called "build.properties."</p>
<p><img class="alignnone" title="Ant build files structure" src="http://jansensan.net/images/blog/post0016_003.jpg" alt="Ant build files structure" width="136" height="59" /></p>
<p>Let's look at them.</p>
<p>a) build.xml</p>
<p>Ant being an XML, it is obviously written in tags. However contrary to XML, tag names are important here:</p>
<p>Ant:</p>
<blockquote>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Project Name&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;Default Task Name&quot;</span> <span style="color: #000066;">basedir</span>=<span style="color: #ff0000;">&quot;../&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- your tasks here --&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/project<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>
</blockquote>
<p>So as you can see, the root tag is named  "project" and it contains some attributes:</p>
<ul>
<li>The "name" attribute is the label that will be presented in the the Ant view panel.</li>
<li>The "default" attribute is the task that is called by default. More explanations on that further.</li>
<li>The "basedir" attribute is the base directory from where the tasks are called for moving, creating, etc.</li>
</ul>
<p>b) build.properties</p>
<p>The properties file is a variables container.</p>
<p>Properties:</p>
<blockquote>
<pre class="xml">projectname=Tutorial_AntToLeverageInteractiveDev
&nbsp;
source.filename=Main.swf
source.debugdir=bin-debug/
source.releasedir=bin-release/
&nbsp;
target.filename=deployed-file.swf
target.deploydir=www/</pre>
</blockquote>
<p>Simply write the variable name, an equal sign ("=") and the value. There is no need for semi-colon at the end of the line.</p>
<p>To import it in the build, use the property tag. As we have seen, all paths are relative to the value of the basedir tag, defined before.</p>
<p>Ant:</p>
<blockquote>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Project Name&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;Default Task Name&quot;</span> <span style="color: #000066;">basedir</span>=<span style="color: #ff0000;">&quot;../&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">file</span>=<span style="color: #ff0000;">&quot;build.properties&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/project<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>
</blockquote>
<p>Now all those variables are available for you to use in your tasks. The syntax to use a property is simple: start with a dollar sign ($), and put the property name in curly brackets ({}).</p>
<p>Ant:</p>
<blockquote>
<pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;echo<span style="font-weight: bold; color: black;">&gt;</span></span></span>This property has a value of ${someProperty}<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/project<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>
</blockquote>
<p><strong>Tasks</strong></p>
<p>Tasks are basically Ant functions or methods. The <a title="Apache Ant Manual" href="http://ant.apache.org/manual/index.html" target="_blank">Apache Ant Manual</a> is full of examples that can be used quickly, but if you have never used Ant, it might be overwhelming. Let's start by looking at simple things that can be done.</p>
<p>One main thing that annoys me with Flash Builder is the superfluous use of the html-template folder and wrapper. Also, if I happen to put any directories or file in the bin-debug, they got overwritten for all sorts of reasons. I then took the habit of having some folders of my own at the root level of my project, namely:</p>
<ul>
<li>assets (for the assets used by the application)</li>
<li>build (for the Ant tasks)</li>
<li>libs (for external libraries)</li>
<li>res (for all resources that the application does not use, tracking plans, copy decks, etc., which is not committed to SVN)</li>
<li>www (the folder which actually contains the deployment files)</li>
</ul>
<p>As I create these directories for most of my projects, it was becoming tedious to create them all the time. This is where Ant is your friend.</p>
<p>Ant:</p>
<blockquote>
<pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Create AS3 Project Directories&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- create the assets directories --&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/css&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/fla&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/fonts/osx&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/fonts/win&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/images&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/sounds&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/swf&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/videos&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;assets/xml&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- create the libs directories --&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;libs/src&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;libs/swc&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- create the www directories --&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/assets/css&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/assets/images&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/assets/sounds&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/assets/swf&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/assets/videos&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/assets/xml&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/css&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/js&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mkdir</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;www/images&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/target<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>
</blockquote>
<p>The only thing needed when I start a new project is to copy my Ant build to the new project and then launch the Ant task, and all folders are created quickly. Let's analyze what I presented above.</p>
<p>The target tag contains the tasks. It is mandatory to give it a name, hence the name attribute. Inside that tag is where you place the Ant tasks, such as <a title="mkdir - Apache Ant Manual" href="http://ant.apache.org/manual/Tasks/mkdir.html" target="_blank">mkdir</a> (make directory).</p>
<p>It is interesting to note that you can immediately create a directory inside another one, even if the root one does not exist. Calling mkdir with the attribute "www/assets" will create both the "www" and the "assets" directories at once.</p>
<p><strong>Refreshing the workspace</strong></p>
<p>Whenever files are modified outside of an Eclipse-based IDE, it is good to refresh the workspace. When creating, moving, deleting or renaming files in Ant, such a refresh is also necessary. It is however quite annoying to do this manually every time.</p>
<p><img class="aligncenter" title="Eclipse's External Tools Configuration" src="http://jansensan.net/images/blog/post0016_004.jpg" alt="Eclipse's External Tools Configuration" width="480" height="208" /></p>
<p>The first time you run an Ant task, it will then be added in Eclipse's External Tools Configuration menu. You can access it by clicking on the button that has sort of a suitcase icon.</p>
<p>Earlier I wrote about the default task of the build task. I usually echo the timestamp as the default task, so I can then simply double click on my build in the Ant view to trigger it and avoid creating or deleting stuff too early. Then I go to the config.</p>
<p>Let's take a look at them.</p>
<p><img class="alignnone" title="Eclipse's External Tools Config - JRE" src="http://jansensan.net/images/blog/post0016_005.jpg" alt="Eclipse's External Tools Config - JRE" width="640" height="465" /></p>
<p>The first thing you want to do in these configs is to make sure that you check the "Run in the same JRE as the workspace" in the "JRE" tab, so that the refresh succeeds. Obviously, if you have other used for the JRE, rely on your knowledge, but for generic AS3 development, this serves my purpose.</p>
<p><img class="alignnone" title="Eclipse's External Tools Config - Refresh" src="http://jansensan.net/images/blog/post0016_006.jpg" alt="Eclipse's External Tools Config - Refresh" width="640" height="465" /></p>
<p>Then, head to the "Refresh" tab and check what you want to refresh once the Ant build has completed.</p>
<p><strong>Look at the ants on the floor<br />
They work real hard, lifting three times their mass<br />
And sometimes more</strong></p>
<p><a title="Nick Diamonds" href="http://en.wikipedia.org/wiki/Nicholas_Thorburn" target="_blank">Nick Diamonds</a> could not have phrased it better when he sung <a title="The Unicorns - Let's Get Known" href="http://www.youtube.com/watch?v=Qtj9_q6Zo80" target="_blank">Let's Get Known</a>. What I presented here and what I know of Ant is but a small part of what it can do. When you realize that you repeat actions often in your Finder or Windows Explorer, think of this tool, it will save you time.</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/speed-up-dev-process-with-ant/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash on the Beach 2010 &#8211; The Aftermath</title>
		<link>http://jansensan.net/flash-on-the-beach-2010-the-aftermath</link>
		<comments>http://jansensan.net/flash-on-the-beach-2010-the-aftermath#comments</comments>
		<pubDate>Fri, 01 Oct 2010 11:00:01 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Inspiration]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flash on the Beach]]></category>
		<category><![CDATA[IntelliJ IDEA]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=405</guid>
		<description><![CDATA[This week I was fortunate enough to attend Flash on the Beach in Brighton. The sessions there ranged from super technical code demonstrations to game development taxonomy, from project management to creative thought processes. Of the tech stuff Since my blog is mostly about technical stuff (i.e. code tips, tutorials), it goes without saying that [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin-right: 16px;" title="Flash on the Beach entrance" src="http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs265.snc4/39571_433008141668_575386668_5705128_130956_n.jpg" alt="Flash on the Beach entrance" width="320" height="428" />This week I was fortunate enough to attend <a title="Flash on the Beach" href="http://www.flashonthebeach.com/" target="_blank">Flash on the Beach</a> in <a title="Brighton" href="http://www.visitbrighton.com/" target="_blank">Brighton</a>. The sessions there ranged from super technical code demonstrations to game development taxonomy, from project management to creative thought processes.</p>
<p><strong>Of the tech stuff</strong></p>
<p>Since my blog is mostly about technical stuff (i.e. code tips, tutorials), it goes without saying that the technical side of the conference is quite important.</p>
<p>Speakers such as <a title="quasimondo.com" href="http://www.quasimondo.com/" target="_blank">Mario Klingemann</a>, <a title="automatastudios.com" href="http://automatastudios.com/" target="_blank">Branden Hall</a>, <a title="blog.joa-ebert.com" href="http://blog.joa-ebert.com/" target="_blank">Joa Ebert</a> and <a title="unitzeroone.com" href="http://www.unitzeroone.com/" target="_blank">Ralph Hauwert</a> presented quite interesting  technical talks about impressive mathematical and code creations and prowesses. I'm not gonna explain them here, you can read about it in details on their blog.</p>
<p>Evidently, Adobe had their representatives there. At the beginning of the conference, they boasted some updates on Flash Builder, but the more I look at it, the more it feels like they are simply trying to catch up with FDT.</p>
<p>As an attendee, I was lucky enough to receive a free version of <a title="FDT" href="http://www.fdt.powerflasher.com/" target="_blank">FDT Pure</a>. I will look into it in the coming weeks and most probably will talk about it in future posts.</p>
<p>IntelliJ also had their booth set up to promote their IDE, although I have to say i have not looked much into it.</p>
<p>Some speakers, like André Michelle, were making their code available. Being a musician myself, I will probably look into <a title="Tonfall" href="http://tinyurl.com/tonfall" target="_blank">his library</a> for sound manipulation and creation. Branden Hall presented a JS framework that uses the same logic as AS3's bitmaps to draw. He dubbed it Okapi, and I believe that this is the <a title="okapijs.org" href="http://www.okapijs.org/" target="_blank">blog-to-be</a> for it. He also presented the <a title="HYPE Framework" href="http://www.hypeframework.org/" target="_blank">HYPE framework</a>, which has a really interesting simplified approach to timing.</p>
<p>On Tuesday morning, there was a session called the Elevator Pitch, which is basically an hour made up of three minutes presentation of all sorts. Not all of these were interesting (most were not actually), but some caught my eye. I will definitely look into <a title="xJSFL.com" href="http://www.xjsfl.com/" target="_blank">xJSFL</a>, a jQuery-like syntax to write JSFL. There was also this concept of <a title="Doomsday Console" href="http://centralcontrol.doomsday.no/console/" target="_blank">a console to aid development</a>, just like game devs have. Well worth a look. But to all of those who try to create a new AS3 IDE with AIR, please let it go. That is not worth your efforts.</p>
<p>There were two people who touched quickly on tangible computing with microcontrollers and MIDI controllers. I believe that there should be a bigger space given to that world in conferences like this one, as the world of physical computing is huge and I believe way more creative than the interactive screen-based works.</p>
<p><strong>Of creativity</strong></p>
<p>One thing I was not quite prepared for was how blown away I was by the creativity of some people!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=15271355&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://vimeo.com/moogaloop.swf?clip_id=15271355&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/15271355">FOTB 2010 Titles</a> from <a href="http://vimeo.com/superfad">Süperfad</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Nando Costa and his team created the titles for this year's edition of Flash on the Beach. He also presented the impressive quality of his agency's work, Süperfad, which revolves a lot around motion design.</p>
<p><a title="Grant Skinner" href="http://gskinner.com/blog/" target="_blank">Grant Skinner</a> is one of the rare public figures that makes me proud to be Canadian. He presented some of his works obviously, but I really liked how he chose to harness moments of short attention span into efficient creative moments. I have been interested in physical computing for quite some time now, I find it fascinating that such a guy is having fun with those things with projects such as his multiplayer <a title="Grant Skinner's Androideroids" href="http://www.gskinner.com/blog/archives/2010/06/androideroids.html" target="_blank">Androideroids</a> and the <a title="Grant Skinner's Nexus One Gas Pedal" href="http://www.gskinner.com/blog/archives/2010/06/air_for_android.html" target="_blank">Nexus One Gas Pedal</a>.</p>
<p><a title="Robert Hodgin" href="http://www.flight404.com/blog/" target="_blank">Robert Hodgin</a>'s efforts are quite commendable, the results of his creations are impressively beautiful and mesmerizing, but I have to say I find myself puzzled as to what to think of his generative art–which by the way is used for the iTunes visualizer. People like <a title="Joshua Davis" href="http://www.joshuadavis.com/" target="_blank">Joshua Davis</a> and <a title="Jared Tarbell - levitated.net" href="http://levitated.net/" target="_blank">Jared Tarbell</a> turn these pieces into prints, maybe he does as well, but I guess all that coding creativity is not reaching me much.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/-0Xa4bHcJu8?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/-0Xa4bHcJu8?fs=1&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Cyriak presented a lot of his wacky animations and videos. That man's mind is impressively twisted! Funny to see that since a lot of his works were refused, he started working on personal projects, and then got noticed! That's a good lesson really.</p>
<p><img title="Stefan Sagmeister at Flash on the Beach" src="http://jansensan.net/images/blog/post0017_001.jpg" alt="Stefan Sagmeister at Flash on the Beach" width="640" height="320" /></p>
<p>One man really impressed me. I come from the indie rock and the media art world, so public figures in design and publicity are quite foreign to me. <a title="Stefan Sagmeister" href="http://www.sagmeister.com/" target="_blank">Stefan Sagmeister</a> is well known I found out. His thoughts, his approach to work and life are equally impressive. He balances defines balanced moments in one's life between work and sabbaticals, which he explains refuels creativity.</p>
<p><img class="alignnone" title="Jared Tarbell throwing his small wooden cubes to the crowd" src="http://jansensan.net/images/blog/post0017_002.jpg" alt="Jared Tarbell throwing his small wooden cubes to the crowd" width="640" height="320" /></p>
<p>The last session was Jared Tarbell. He explained how he turned his work into physical pieces, either prints or laser cuts. The work is nice, but I have to say the passion that this man conveys and puts into his work are far more impressive. Once you hear him talk about his environment and process, you can't help but feel all that passion emanating from the small pieces of wood and cardboard he created.</p>
<p><strong>Of the human side</strong></p>
<p>Some sessions were also about other things than code or creativity, but also about subjects like management, presentation and work environments. During the Elevator Pitch, <a title="Trine Falbe" href="http://www.trinefalbe.com/" target="_blank">Trine Falbe</a> gave tips on how to better one's presentations.</p>
<p><a title="Chris Pelsor" href="http://www.snogboggin.com/" target="_blank">Chris Pelsor</a> did a good presentation on how to properly manage teams. The simple question of "how often do you share a drink with a colleague?" is quite revealing. I have to admit that some things that I take for granted may indeed be improved upon in other work environments. Creating team spirit is always important.</p>
<p>Joshua Hirsh, of NYC's <a title="Big Spaceship" href="http://www.bigspaceship.com/" target="_blank">Big Spaceship</a> presented an experiment him and his agency conducted. As summers are usually a bit less busy, they decided to try and reserve fridays for internal and personal projects. It turned out it kinda worked and kinda didn't work, obviously due to all sorts of commercial and professional reasons. I have to say that organizing downtime is indeed not easy, but providing the opportunity for employees is important. Working at <a title="Sid Lee" href="http://sidlee.com" target="_blank">Sid Lee</a> give me that opportunity and allowed me during this summer to try and play with some technologies.</p>
<p>If there is one thing that this conference made me realize is that I am not a PR person at all, but then again I wasn't the only one.</p>
<p><img class="alignnone" title="Influxis Lounge at Flash on the Beach" src="http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs245.snc4/39571_433008251668_575386668_5705147_1099088_n.jpg" alt="Influxis Lounge at Flash on the Beach" width="640" height="478" /></p>
<p>Many of us were hanging out in the lounge area, next to each other but looking at our mobile phones. I am in no way blaming people, I was doing the same, unfortunately. I guess that is a skill that I should develop. That said, I was quite happy to meet freelancers and technical directors from Paris, I will have to force myself to keep contact better.</p>
<p>On a side note, I was quite happy that I got to see my good friend <a title="James Paterson" href="http://www.presstube.com/" target="_blank">James Paterson</a>! He was giving a workshop on Sunday and was leaving on Monday, so I managed to catch a glimpse of him Monday morning.</p>
<p><strong>Of the future</strong></p>
<p>Now that this event is over, what to do with all this inspiration and motivation?</p>
<p>Well I for one will list all the projects I have started, personal or professional, and see what I want to do with them and where I want to lead them. I am not going to do this here in full extent, but you may interested to know that I have such things as a personal Facebook app project and a pixel-based fangame in the works.</p>
<p>This blog is by no means changing it's vocation. As stated before, I started writing this as guides and notes for when I started giving AS workshops in Montréal. I may commit to write more often about more technologies and creative uses for them though.</p>
<p>And who knows what else?</p>
<p>As for Flash on the Beach, there are some minor things I could see would make it better. The bar section where everybody meets could have benefited from a DJ, whether it's an actual one or simply a playlist, it would have greatly improved on the mood. As I understand there was a <a title="Spotify" href="http://www.spotify.com/" target="_blank">Spotify</a> collaborative playlist to which people contributed a lot, this could have played there.</p>
<p>I also believe that there could have been more cross pollination. It is indeed important that Flash on the Beach promotes the Flash ecosystem, that is a big part of its existence, but I believe that there should more and more presence of interactive works that come from other environments and languages. I would love to see some installations and touch screen in the lobby for people to enjoy what else the computer has to bring than just screen based works.</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/flash-on-the-beach-2010-the-aftermath/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Planning the production of an interactive project</title>
		<link>http://jansensan.net/planning-the-production-of-an-interactive-project</link>
		<comments>http://jansensan.net/planning-the-production-of-an-interactive-project#comments</comments>
		<pubDate>Mon, 03 May 2010 15:05:32 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=285</guid>
		<description><![CDATA[As a creative developer and an interaction designer, I need to either produce or guide the production of interactive projects. Needless to say, to non technical people such as designers, producers and account managers, we do some black magic and create the most amazing things. But what are the ingredients of this magic? Mostly organizational [...]]]></description>
			<content:encoded><![CDATA[<p>As a creative developer and an interaction designer, I need to either produce or guide the production of interactive projects. Needless to say, to non technical people such as designers, producers and account managers, we do some black magic and create the most amazing things. But what are the ingredients of this magic? Mostly organizational skills I would say.</p>
<p>I have originally planned to help and guide students and beginners with this blog, to use the posts as notes and references for some tutorials I have given at <a title="Concordia University - Computation Arts" href="http://computationarts.concordia.ca/" target="_blank">Concordia University</a> in Montréal. I strongly believe that it is the responsibility of senior developers and creatives to provide newcomers to this overwhelming field with the proper tools to learn to work efficiently and professionally.</p>
<p>Because, let's face it schools and universities fail in this domain. These institutions do not aim "to create mindless production drones for the interactive industry blah blah blah..." This is such a hypocritical argument that could be easily refuted by looking at how computer engineering or administration programs teach students how to be organized in their thoughts and workflow. Others have actually had confrontations much stronger than I and have lived to <a title="What’s Wrong with Ontario Colleges?" href="http://www.untoldentertainment.com/blog/2010/02/18/whats-wrong-with-ontario-colleges-part-1/" target="_blank">tell about it</a>.</p>
<p>For my part, I have chosen to provide <a title="Sid Lee" href="http://sidlee.com" target="_blank">Sid Lee</a>, where I currently work, with information and references to good practices in the form of a wiki. A wiki is easy to update and it is a well known way to organize information, so most people can navigate quickly.</p>
<p>Also, most things in many people's jobs do not need to be remembered by heart. Hell, I hope nobody says stuff without references, especially technical references necessary for a project! That is why such references are useful, especially for training newcomers and simply for keeping inline with company policies.</p>
<p>In the wiki, I presented what is needed for a project from many players in the process of the production, such as producers, designers and interactive developers. This is an internal tool not available to the public, but today I stumbled upon an article, <a title="What To Deliver A Flash Developer" href="http://evolve.reintroducing.com/2010/05/03/tips-n-tricks/what-to-deliver-a-flash-developer/" target="_blank">What to Deliver a Flash Developer</a>, which highlights a lot of the similar points that I have brought up to many kick off meetings. Since this blog is aimed at helping developers to learn good practices, I thought it would be a good idea to republish and comment on the post.</p>
<p>Note that I am careful in not utilizing the term "Flash developer" as the authors of the post did, as I believe this is plain wrong. Do we call designers "Photoshoppists"? Flash is just a tool currently used often in the creation of RIAs, but it is not and will not always be the case. Some of us work with ActionScript, some others with PHP, with CSS, with HTML, with Objective-C, with Android, with Java, with OpenFrameworks, etc. Specialists exist indeed in all fields, but workflows for RIAs, games and other interactive projects are not confined to Flash development.</p>
<p>Whatever rant or complaint I may seem to voice here, the article aforementioned is a great read for anybody who wishes to manage development of projects, or simply to make sure that parts are not forgotten along the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/planning-the-production-of-an-interactive-project/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash Player Security Settings to Develop Locally</title>
		<link>http://jansensan.net/flash-player-security-settings-to-develop-locally</link>
		<comments>http://jansensan.net/flash-player-security-settings-to-develop-locally#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:28:33 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Player]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=143</guid>
		<description><![CDATA[When developing locally, you may encounter errors when loading data or classes dynamically. By default the Flash Player is set to only work in a certain sandbox, which limits its access. Honestly, all that stuff is too complex for me to care. What you and I really want, is to be able to develop our [...]]]></description>
			<content:encoded><![CDATA[<p>When developing locally, you may encounter errors when loading data or classes dynamically. By default the Flash Player is set to only work in a certain sandbox, which limits its access.</p>
<p>Honestly, all that stuff is too complex for me to care.</p>
<p>What you and I really want, is to be able to develop our projects locally without issues, because let's face it, we trust our own actions. The following simple steps will present how to set the Flash Player Security settings for you to be able to work without hinderance.</p>
<p>First, head to the <a title="Flash Player Security Settings" href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html" target="_blank">Flash Player Security Settings</a> page. Yes, it is online and you can only access it if you are connected to the Internet. It is ridiculous, I know, it should be available from other means, like right-clicking on a Flash Player object, but it is not so.</p>
<p>Then, you will encounter this:</p>
<p><img class="aligncenter" title="Flash Player Global Security Settings" src="http://jansensan.net/images/blog/post0009_security_settings.jpg" alt="Flash Player Global Security Settings" width="395" height="270" /></p>
<p>If it is not already, select the Global Security Settings tab (3rd one, as seen above).</p>
<p><img class="aligncenter" title="Edit Locations" src="http://jansensan.net/images/blog/post0009_edit_locations.jpg" alt="Edit Locations" width="169" height="83" /></p>
<p>Click on “Edit locations” and select “Add location...”</p>
<p><img class="aligncenter" title="Browse for Folder" src="http://jansensan.net/images/blog/post0009_browse_for_folder.jpg" alt="Browse for Folder" width="395" height="270" /></p>
<p>Select “Browse for folder” and select the folder to which you want Flash Player to have access. I chose the whole computer so I can work properly.</p>
<p>And voilà! You now can now load XML files and dynamic classes easily without facing unexpected errors.</p>
<p>Once you have done it you will not need to do it again, but when you change computers or reformat one, it's not necessarily something you think at first. This is when this post will become useful!</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/flash-player-security-settings-to-develop-locally/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of localization and locale mapping</title>
		<link>http://jansensan.net/locale-mapping</link>
		<comments>http://jansensan.net/locale-mapping#comments</comments>
		<pubDate>Sun, 21 Feb 2010 14:06:35 +0000</pubDate>
		<dc:creator>mat janson blanchet</dc:creator>
				<category><![CDATA[Localization]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://jansensan.net/?p=132</guid>
		<description><![CDATA[When creating web content for international clients, it is more than likely that you will have to think of localized versions of your website. This mostly means that the copy has to be translated into multiple languages. In this post I will try to present what I believe is a simple way to deal with [...]]]></description>
			<content:encoded><![CDATA[<p>When creating web content for international clients, it is more than likely that you will have to think of localized versions of your website. This mostly means that the copy has to be translated into multiple languages.</p>
<p>In this post I will try to present what I believe is a simple way to deal with localization and minimize file copying etc.</p>
<p>I learned of localization when I was working at an e-commerce production shop previously. That company had most of its clients in Canada and in the US, meaning that we only had to deal with a minimal amount of localization, namely "en-US", "en-CA" and "fr-CA".</p>
<p>If you have no idea what those codes are about, the first two letters represent the language (following the <a title="ISO 639-2" href="http://en.wikipedia.org/wiki/ISO_639-2" target="_blank">ISO 639-2</a> codes) and the las two letters represent the country (following the <a title="ISO 3166-1" href="http://en.wikipedia.org/wiki/ISO_3166-1" target="_blank">ISO 3166-1</a> codes).</p>
<p>Recently I had to complete projects for an employee that left the company I currently work for. I had actually never dealt with localization in Europe and obviously, that means a lot more languages. I also discovered that some countries reuse copy. For example, the swedish and greek localization of one of our client's site reuse the english copy. The way the project was set up at that moment was to have one directory per country, meaning that we had to remember to duplicate the english copy into all the directories that used that language as well.</p>
<p>A recipe for disasters.</p>
<p>Here is where the idea of mapping becomes useful. In the site's config file, I simply thought of adding a node that would contain the locale mapping, meaning what country is associated to what language etc.</p>
<p>XML:</p>
<blockquote>
<pre class="actionscript">&lt;localeMapping&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;ca&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;en&quot;</span> alphabet=<span style="color: #ff0000;">&quot;latin&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;cf&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;fr&quot;</span> alphabet=<span style="color: #ff0000;">&quot;latin&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;fr&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;fr&quot;</span> alphabet=<span style="color: #ff0000;">&quot;latin&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;jp&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;ja&quot;</span> alphabet=<span style="color: #ff0000;">&quot;japanese&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;kr&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;ko&quot;</span> alphabet=<span style="color: #ff0000;">&quot;korean&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;se&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;en&quot;</span> alphabet=<span style="color: #ff0000;">&quot;latin&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;uk&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;en&quot;</span> alphabet=<span style="color: #ff0000;">&quot;latin&quot;</span> /&gt;
     &lt;locale country=<span style="color: #ff0000;">&quot;us&quot;</span> <span style="color: #0066CC;">language</span>=<span style="color: #ff0000;">&quot;en&quot;</span> alphabet=<span style="color: #ff0000;">&quot;latin&quot;</span> /&gt;
&lt;/localeMapping&gt;</pre>
</blockquote>
<p>The alphabet tag is not relative to any specific standard, but just actually the logic part of what I use to load the fonts and the CSS (see <a title="Loading assets dynamically (part 4: fonts and CSS)" href="http://jansensan.net/loading-assets-dynamically-part-4" target="_self">previous post</a>).</p>
<p>So far as the logic goes, once the config file is loaded it is easy to associate a country with a language and load the related files. If a user comes to a website and there a script that detects France, it is then possible to know what to load: the french copy, the latin font set and the latin CSS. Same goes for any country.</p>
<p><a title="Antti Kupila" href="http://www.anttikupila.com/" target="_blank">Antti Kupila</a>, a colleague of mine, believes that it is kind of cheating to reload a a whole website to change the locale. I agreed when he explained how to realize this.</p>
<p>Whenever a TextField is added in the application, it is registered and a reference to it is kept in memory somewhere. When the user changes the locale, there is no need to reload all assets, just the necessary copy, the font set and the CSS (or TextFormat, depending). Once all is loaded, update the TextFields.</p>
<p>Here you go Internets, another way to organize and simplify your life.</p>
]]></content:encoded>
			<wfw:commentRss>http://jansensan.net/locale-mapping/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

