<?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>FlexWiz Blog &#187; Workflow</title>
	<atom:link href="http://blog.flexwiz.net/category/workflow/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flexwiz.net</link>
	<description>On Game Development and the Flash platform</description>
	<lastBuildDate>Sat, 17 Dec 2011 22:46:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Make Your Own Level Editor &#8211; Part II</title>
		<link>http://blog.flexwiz.net/make-your-own-level-editor-part-ii/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=make-your-own-level-editor-part-ii</link>
		<comments>http://blog.flexwiz.net/make-your-own-level-editor-part-ii/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 09:28:49 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.flexwiz.net/?p=900</guid>
		<description><![CDATA[On part 1 of this series, I outlined the basic principles of handling the content pipeline, and how the process should work. To continue, we move on to building the level. As mentioned on part 1, I use the Flash IDE (CS4 or CS5) because of its support for automation and custom commands. Basic familiarity with Flash is [...]]]></description>
			<content:encoded><![CDATA[<p>On <a title="Make Your Own Level Editor – Part I" href="http://blog.flexwiz.net/make-your-own-level-editor-part-i/">part 1 of this series</a>, I outlined the basic principles of handling the content pipeline, and how the process should work. To continue, we move on to building the level. As mentioned on part 1, I use the Flash IDE (CS4 or CS5) because of its support for automation and custom commands. Basic familiarity with Flash is required.<span id="more-900"></span></p>
<p style="padding-left: 30px;"><em>This article is cross posted on<a title="#AltDevBlogADay" href="http://altdevblogaday.com/2011/09/10/make-your-own-level-editor-part-ii/" target="_blank"> #AltDevBlogADay</a>. See my <a href="http://altdevblogaday.com/author/amos-laber/" target="_blank">other articles</a> published on #AltDevBlogADay <a href="http://altdevblogaday.com/author/amos-laber/" target="_blank">here</a>.</em></p>
<h4>Mapping Objects and Assets</h4>
<p><img class="size-full wp-image-16271 alignright" style="margin-left: 8px; margin-right: 8px;" src="http://altdevblogaday.com/wp-content/uploads/2011/09/edit02.png" alt="" width="482" height="375" /></p>
<p>Before actually making the first level, we need to create a manifest of all game objects. These can be anything from background elements, pick-ups or characters. Most are represented by static bitmaps or sprites-sheets where the game object is displayed using a single asset.</p>
<p>The idea is to map a logical game object (class) to a physical asset (bitmap or simple shape). For simplicity, we assume the size of the asset defines the bounding box of the logical game object. Each entry in the manifest will pair the class name with the asset file name, and a class ID. Its recommended to use some kind of naming convention with prefixes etc.</p>
<h4>Building the Basic Level</h4>
<p>Next we create a level template. This is a project with an empty level that would serve as a base for all future levels. Create a new Flash project (fla) and import all your assets into the library and save the file.</p>
<p>Flash keeps library objects either as the source assets or movie-clips, with the latter used as a container for a display object that can be manipulated.<br />
For each of the source assets, create a movieclip for it (using F8), and name it to match the class id in the manifest. Save the file and start dragging objects to the stage. You can define a layer for graphic elements that are not exported and place there references, guides and bitmaps from the mock up. Make sure to have a rectangle that represents the screen bounds.Use the first level as template for the rest, reusing the same library objects.</p>
<h4>Exporting the Level</h4>
<p>The flash project file (fla) is how a levels is saved. This would be an intermediate file that will only be used to modify the level on design time. To actually use it in the game, we need to export the level data to a format that can be loaded at runtime.</p>
<p>Export the level data means we serialize it to XML, which will contain entries for all instances of game objects, each with is metadata (like class name, position, rotation and size). For that, we make use of JSFL &#8211; the JavaScript Flash API that&#8217;s included with the Flash IDE.</p>
<p>The following JSFL script creates an XML file and saves it in the current folder. To run, use Commands -&gt; &#8216;Run Command&#8217; and then point to the script file (should be saved with jsfl extension). After the first run, the script name will appear under the &#8216;Commands&#8217; menu for quick access.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//==========================================</span>
<span style="color: #006600; font-style: italic;">//</span>
<span style="color: #006600; font-style: italic;">// Export all stage instances to xml</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> doc <span style="color: #339933;">=</span> fl.<span style="color: #660066;">getDocumentDOM</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	doc.<span style="color: #660066;">selectAll</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> sel <span style="color: #339933;">=</span> fl.<span style="color: #660066;">getDocumentDOM</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">selection</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> myXml <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> iLen <span style="color: #339933;">=</span> sel.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> iLen<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> s <span style="color: #339933;">=</span> sel<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>s.<span style="color: #660066;">instanceType</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;symbol&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span>
		myXml <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;    &lt;child type='&quot;</span> <span style="color: #339933;">+</span> s.<span style="color: #660066;">libraryItem</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;'&quot;</span><span style="color: #339933;">;</span>
		myXml <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot; x='&quot;</span> <span style="color: #339933;">+</span> s.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;' y='&quot;</span> <span style="color: #339933;">+</span> s.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;'&quot;</span><span style="color: #339933;">;</span>
		myXml <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot; rotation='&quot;</span> <span style="color: #339933;">+</span> s.<span style="color: #660066;">rotation</span><span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;'&quot;</span><span style="color: #339933;">;</span>
		myXml <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;/&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	doc.<span style="color: #660066;">selectNone</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        myXml <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;&lt;/level&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	flash.<span style="color: #660066;">outputPanel</span>.<span style="color: #660066;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	flash.<span style="color: #660066;">trace</span><span style="color: #009900;">&#40;</span>myXml<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> exportFileName <span style="color: #339933;">=</span> doc.<span style="color: #660066;">pathURI</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/%20/g</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot; &quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>doc.<span style="color: #000066;">name</span><span style="color: #339933;">,</span>
                                doc.<span style="color: #000066;">name</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\.fla$/</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;.xml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	flash.<span style="color: #660066;">outputPanel</span>.<span style="color: #660066;">save</span><span style="color: #009900;">&#40;</span>exportFileName<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	flash.<span style="color: #660066;">trace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;File saved to &quot;</span> <span style="color: #339933;">+</span> exportFileName<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Here is a sample of the resulting file:</p>
<p><img class="size-full wp-image-16255 alignnone" style="margin-top: 10px; margin-bottom: 10px;" src="http://altdevblogaday.com/wp-content/uploads/2011/09/SampleXml.gif" alt="" width="616" height="158" /><br />
A major advantage of this export is the ability to easily customize the XML data by changing the script to add different properties for each entry (lines 15-18).</p>
<p>&nbsp;</p>
<h4>Loading the Level</h4>
<div>Loading the level into the game is a matter of de-serializing the XML data into game objects. This is truly platform agnostic: you could read the XML from any language or platform and parse the results however you like. The most common are for Flash, iOS and XNA.</div>
<div>The process for loading should be something like:</div>
<blockquote>
<ol>
<li>Read list of game objects from XML into an array.</li>
<li>Iterate on the array. For each item:
<ol>
<li>Pass the class name to a factory method to create a new instance of the object.</li>
<li>Locate the asset (resource) associated with the object, by looking it up on the object manifest map.</li>
<li>Call the init function on the newly created instance, to populate it with the asset and metadata.</li>
<li>Place the object on stage</li>
</ol>
</li>
<li>End</li>
</ol>
</blockquote>
<p>Your mileage may vary, but that should do the trick. Here I assume all game entity classes are based on one base class, and make use of polymorphism to construct and populate them.</p>
<p>&nbsp;</p>
<h3>Round Trip and Edit Cycle</h3>
<div>
<p>As mentioned before, the level is also saved as a native &#8216;fla&#8217; file, as intermediate, so it can be loaded and exported at any later time. The most effective way to edit a level is by instant round tripping between the game (preview) and the editor. Round tripping is the process of moving from runtime back to design in order to edit or modify the level data.</p>
<div id="attachment_16333" class="wp-caption aligncenter" style="width: 595px"><img class="size-full wp-image-16333 " src="http://altdevblogaday.com/wp-content/uploads/2011/09/chart3a.png" alt="" width="585" height="294" /><p class="wp-caption-text">Round Tripping</p></div>
<p>With a build of the game ready to run and the export script in place, this is made possible.Typically, the designer will have the level editor still open after exporting the data. Running the game will load the data and serve as a preview. If the game runs on a browser its only a matter of refreshing it to reload new data. Now all that is left to do is follow the sequence:  Edit &#8211;  Export &#8211;  Preview, rinse and repeat.</p>
</div>
<div>
<h4>Extending the Loader</h4>
<p>The described method works well for simple game objects that are based on a single asset. However, not all objects are simple. Some object are logical only with no assets, but we still want to be able to place them and get visual indication. Such are trigger boxes, waypoints and spawn points. For these we can create simple shapes (like a semi transparent box or some icon) and use proxy assets.<br />
There is also the option of putting more data into each object. As long as there is a convenient way of entering meta-data in the editor, it can be exported with the object. An example of that would be a ‘fail zone’ &#8211; an invisible trigger box that triggers a level fail when touched by the player object. So a generic trigger box can be extended with a message code (integer or string) that will be specified in the editor &#8211; opening the possibility for the designer to control simple game logic in different scenarios.<br />
These type of ‘programmable’ object not only save time, but also frees the designer to experiment and quickly try out different layouts and configurations without requiring further coding.</p>
<h4>Conclusion</h4>
<p>Sophisticated level editing should not be an exclusive perk of heavy platforms the likes of Unreal3. With little effort, even small indie developers can come up with decent tools to help take control over content pipeline and speed up game content creation.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/make-your-own-level-editor-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make Your Own Level Editor &#8211; Part I</title>
		<link>http://blog.flexwiz.net/make-your-own-level-editor-part-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=make-your-own-level-editor-part-i</link>
		<comments>http://blog.flexwiz.net/make-your-own-level-editor-part-i/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 22:00:35 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.flexwiz.net/?p=883</guid>
		<description><![CDATA[Like anyone working on an indie game, one part that is often neglected is level editing tool. Coders like to focus on the game mechanic and framework and will opt for some hardcoded level with minimal assets. While that may work for a while, it is short sighted. This article is cross posted on #AltDevBlogADay. See [...]]]></description>
			<content:encoded><![CDATA[<p>Like anyone working on an indie game, one part that is often neglected is level editing tool. Coders like to focus on the game mechanic and framework and will opt for some hardcoded level with minimal assets. While that may work for a while, it is short sighted.<br />
<span id="more-883"></span><br />
<em>This article is cross posted on<a title="#AltDevBlogADay" href="http://altdevblogaday.com/2011/09/10/make-your-own-level-editor-part-i/" target="_blank"> #AltDevBlogADay</a>. See my <a href="http://altdevblogaday.com/author/amos-laber/" target="_blank">other articles</a> published on #AltDevBlogADay <a href="http://altdevblogaday.com/author/amos-laber/" target="_blank">here</a>.</em></p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-16171" src="http://blog.flexwiz.net/wp-content/uploads/2011/09/BlackSkullEditor.jpg" alt="" width="300" height="222" /></p>
<h3>Taking control of the Content</h3>
<p>A better approach would be start working on tools and tools integration even before writing any code. Working on a 2D game like platformer or a side scroller, one of the first things you need is a decent level editor and to setup a content pipeline for game level data.<br />
One possible solution would be to roll your own full featured editor. This would require a substantial amount of time and resources, and divert the focus for the game to tools. In my experience, this is not very practical if your goal is to get going quickly and work on the actual game.A much quicker solution would be to leverage existing editing tools to create the game levels.<br />
One such tool is the Flash IDE (Flash CS4/CS5) &#8211; it has powerful editing features and is very easy to use. In a recent game project I managed to save time by using it to build my own levels. Since Flash is commonly used to build levels for nearly a decade, many developers found ways to customize it to their needs.</p>
<div>
<h3>The Content Pipeline</h3>
<p><img class="size-medium wp-image-16168 alignright" style="margin: 6px;" src="http://blog.flexwiz.net/wp-content/uploads/2011/09/pipeline_wide1b-300x125.jpg" alt="" width="300" height="125" /></p>
<p>To borrow a phrase fro the Microsoft XNA docs, the content pipeline is a set of processes applied when a game that includes art assets is built. The process starts with an art asset in its original form as a file, and continues to its transformation as data that can be retrieved and used within the game. The goal is to have it set up so that artists and designers can place, modify and preview game assets quickly and easily. In the case of a small scale 2D game you’d want to make it as simple as possible.</p>
<p>While different platforms use different asset types, I will focus on the ones that are common in 2D games for mobile and web platforms. These feature heavy usage of bitmap assets for characters, background and game elements, and some form of descriptive data file (like XML) for levels.</p>
<h3>Design Time vs. Run Time</h3>
<p>The pipeline itself is processed at design time and ends at run time, when the game loads a level with its related assets.  Larger game platforms often use asset processing to create highly optimized versions of the assets for runtime based on the design time assets.  In the case of simple 2D  game, and in order to simplify, the graphical assets that are used in design time are the same one used at run-time &#8211;  this will do just  fine for most cases.<br />
<img class="size-full wp-image-896 aligncenter" title="Pipeline2b" src="http://blog.flexwiz.net/wp-content/uploads/2011/09/Pipeline2b.png" alt="" width="478" height="228" /></p>
<p>In this process, we first arrange the bitmap assets used in a specific level and import them into the editor as library items. Then the level is created by placing instances of these items in the editor, and gets saved to an intermediate format. To prepare for runtime, the level is exported to an  XML level file that contains references to the game assets. Finally when the game loads, it reads the level file and graphical assets to populate the game level.<br />
In addition, round tripping between runtime and design time is made possible, so that a designer can instantly modify the level in the editor and preview the changes in the game.</p>
<h4>More to come</h4>
<p>In Part 2, I will walk trough the  actual steps for building and exporting a game level and handling different game assets.</p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/make-your-own-level-editor-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things I Learned in TOJam</title>
		<link>http://blog.flexwiz.net/things-i-learned-in-game-jam/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=things-i-learned-in-game-jam</link>
		<comments>http://blog.flexwiz.net/things-i-learned-in-game-jam/#comments</comments>
		<pubDate>Tue, 31 May 2011 17:03:52 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[TOJam]]></category>

		<guid isPermaLink="false">http://blog.flexwiz.net/?p=657</guid>
		<description><![CDATA[Couple of weeks back I  participated in TOJam #6, Toronto&#8217;s annual game jam. The event has transformed from a small gathering of wannabes into a real developer community event, drawing more game professionals and lots of media attention (more on that here). For me this was a new experience, and a challenge to conquer: could I really complete a game [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tojam.ca"><img class="size-medium wp-image-760 alignright" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/tojamLogo-300x163.png" alt="" width="300" height="163" /></a>Couple of weeks back I  participated in <a href="http://tojam.ca/" target="_blank">TOJam</a> #6, Toronto&#8217;s annual game jam. The event has transformed from a small gathering of wannabes into a real developer community event, drawing more game professionals and lots of media attention (<a href="http://www.torontostandard.com/culture-design/diy-gamers" target="_blank">more on that here</a>).</p>
<p>For me this was a new experience, and a challenge to conquer: could I really complete a game in one weekend? The way I see it, some developers run half marathons, and I do the TOJam, which in itself is a marathon of sorts.</p>
<p><span id="more-657"></span></p>
<p><strong>UPDATE</strong>:  Posted a link to Play the game in the <a title="‘Pileup’ Game Postmortem" href="http://blog.flexwiz.net/pileup-game-postmortem/">Postmortem Article</a>.</p>
<p>The different games that I&#8217;ve worked on so far had a schedule from 6 months up to 3 years. I know something about game production, and I figured its just a matter of good planning and narrowing the scope of the game, so that it could be done in 3 days.</p>
<h4>The Game</h4>
<p><a href="http://blog.flexwiz.net/wp-content/uploads/2011/05/strip1.png"><img class="alignnone size-full wp-image-772" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/strip1.png" alt="" width="304" height="140" /></a> <a href="http://blog.flexwiz.net/wp-content/uploads/2011/05/strip2a.png"><img class="alignnone size-full wp-image-776" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/strip2a.png" alt="" width="279" height="126" /></a></p>
<p>Our game is a side scroller called &#8216;Pileup&#8217;, in which a cart drives on tracks using mostly gravity and the goal is to get the cart to the exit point. Game elements include track switches and elevators. It was developed from an early concept of an Angry Birds clone to a roller coaster type game with physics.</p>
<p>We used our own game framework as a base for the game code, most of it was written on the two weeks prior to the jam. I will cover the more technical aspects in a later post, were I intend to provide a full post mortem of the game.</p>
<h4>The Team</h4>
<p><a href="http://blog.flexwiz.net/wp-content/uploads/2011/05/ToJam587c.jpg"><img class="aligncenter size-full wp-image-742" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/ToJam587c.jpg" alt="" width="548" height="270" /></a></p>
<p>Our team was composed of myself, <a href="http://ca.linkedin.com/pub/gavyn-elrick/7/972/353" target="_blank">Gavyn Elrick</a>, <a href="http://www.linkedin.com/pub/pavel-samsonov/33/a28/44b" target="_blank">Pavel Samsonov</a> and <a href="http://ca.linkedin.com/pub/junko-shelton/1/590/3b7" target="_blank">Junko Shelton</a>. Up until the jam itself, all previous work was done individually and most of it was code only, so we had to manage the tasks somehow. I had to double as a game producer and keep track of the progress during the jam.</p>
<h4>First Impressions</h4>
<p>The event was a lot of fun &#8211; people came with lots of energy and creativity. Peeking into each other monitors was very interesting, different technologies from Flash to Unity, XNA, and even HTML5. The place was packed with over 250 artists and coders enthusiastic to show off their creative skills.</p>
<p>The desktop machines supplied by George Brown College were surprisingly convenient -  despite the fact that I usually dislike Macs, I found the Mac Pro running Windows 7 (with Bootcamp) extremely fast, and heavyweights like Flash Builder 4.5 and Photoshop run  like a dream.</p>
<h4>Planning</h4>
<p>Surprisingly, the most difficult part was nailing down a game concept. Since I already had a basic game framework I kept saying to everyone: &#8216;Coding is the easy part, just get me a good game idea and we&#8217;ll take it from there&#8217;.</p>
<p><a href="http://blog.flexwiz.net/wp-content/uploads/2011/05/LevelSktces.gif"><img class="aligncenter size-full wp-image-756" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/LevelSktces.gif" alt="" width="778" height="256" /></a></p>
<p>We struggled with the game concept for a few weeks before the jam. At first we tried to come up with some idea that is simple enough to do in a short time, but can still be fun to play (even for a very short time). All we could think of is &#8216;throw things at some breakable objects and have them bounce around&#8217;. Not very original. After getting some more input from friends this changed into &#8216;roll this ball shaped character somehow to the target point&#8217; in different sceneries &#8211; that looked simple enough.</p>
<p>We actually started the jam without a solid game concept. By lunch time we had it more or less done, and then we just went with the &#8216;cart on tracks&#8217; idea as the base of the game.</p>
<h4>Code Like Hell</h4>
<p>From there it was simply coding the game elements and designing the levels. Between two coders and two artists the progress was slow and steady. Time flew and things finally started to fall into place on Saturday evening, when we got the first playable level.</p>
<p>We somehow made the deadline of Sunday 8pm. I got very little sleep that weekend, and the longest sprint was about 40 hours straight.</p>
<h4><span style="color: #000000;">Final Result and Conclusion</span></h4>
<p style="text-align: center;"><object width="640" height="384"><param name="movie" value="http://www.youtube.com/v/mpXCBFIwcFE?hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="640" height="384" src="http://www.youtube.com/v/mpXCBFIwcFE?hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>So we ended up with about 3-5 minutes of gameplay in 3 levels. Having completed the game jam, I came with some new found realizations about game production that is compressed to a very short time:</p>
<ul>
<li>Narrow the scope of the game. If it looks you are not likely to develop a feature within the limited schedule, pass on it and spend the time on what is within reach.</li>
<li>Stay focused. When an idea looks even half good, hammer it down without hesitation. It may not come out great, but you&#8217;d be able to improve on it once it materializes.</li>
<li>Know your limits. Build upon the tried and true, that part that is proved to work. Experimenting during final coding is too risky, and you&#8217;ll waste valuable time.</li>
</ul>
<p>All in all, doing the TOJam was a wild ride, and totally worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/things-i-learned-in-game-jam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why is Flex builder so slow?</title>
		<link>http://blog.flexwiz.net/why-is-flex-builder-so-slow/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-is-flex-builder-so-slow</link>
		<comments>http://blog.flexwiz.net/why-is-flex-builder-so-slow/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 00:00:09 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Builder]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://flexwiz.amosl.com/?p=55</guid>
		<description><![CDATA[The more I use Flex Builder, the more I want to get rid of it. I have been using Flex Builder from versions 2 to 4. From early on it wasn’t exactly a complete tool – more like something thrown together quickly. Compared to other IDE’s it has always been slow and buggy, and although [...]]]></description>
			<content:encoded><![CDATA[<p>The more I use Flex Builder, the more I want to get rid of it.<br />
<img class="size-medium wp-image-84 alignright" src="http://blog.flexwiz.net/wp-content/uploads/2010/02/fbvs002-300x210.png" alt="" width="300" height="210" /><br />
I have been using Flex Builder from versions 2 to 4. From early on it wasn’t exactly a complete tool – more like something thrown together quickly. Compared to other IDE’s it has always been slow and buggy, and although it has somewhat improved, it is still not doing very well.<br />
<span id="more-55"></span><br />
As a C++ programmer, I roam between two universes: the Microsoft universe and the Adobe universe – each with its own set of tools and libraries. As one who used  Microsoft Visual Studio between all its incarnations (Visual C++, MsDev, etc.) I got used to certain standards, and unfortunately Flex Builder does not even come close.</p>
<p>Probably the biggest complaint is the build time. If you leave automatic build on (the default) any save or build command will slow the system to a crawl, sometimes for a few minutes at a time &#8211; crippling the ability to code efficiently. In an average work day, probably 1-2 hours are lost to waiting for the builder in a debug cycle of modify-build-test.</p>
<p>Part of the problem is because it’s based on the eclipse platform – a huge and inefficient app that is sucking out system resources. No wonder, since eclipse itself is a java application – the java VM simply doesn’t cut it when it comes to heavy lifting, even with top of the line hardware (e.g. Quad core with 4 GB of ram).</p>
<p>Most coders tolerate it because it’s better than notepad, or the Flash CS4 scripting panel.</p>
<p>So why do we have to put up with it?   You can expect that when paying over $500 for an IDE, it should be professional, well-oiled, and with solid performance.</p>
<p>Adobe, please take a cue from Microsoft Visual Studio and provide a decent command line complier that is not java based, one that can utilize multi-core processors – that belongs to the 21<sup>st</sup> century. Is it too much to ask?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/why-is-flex-builder-so-slow/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

