<?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>GoGo-Robot</title>
	<atom:link href="http://www.gogo-robot.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gogo-robot.com</link>
	<description>Independent Games Developer</description>
	<lastBuildDate>Sun, 07 Mar 2010 16:42:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Blast Buggies entered into DreamBuildPlay 2010</title>
		<link>http://www.gogo-robot.com/2010/03/07/blast-buggies-entered-into-dreambuildplay-2010/</link>
		<comments>http://www.gogo-robot.com/2010/03/07/blast-buggies-entered-into-dreambuildplay-2010/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 16:42:09 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Blast Buggies]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[dream]]></category>
		<category><![CDATA[Galactic Aquarium]]></category>
		<category><![CDATA[play]]></category>
		<category><![CDATA[xbox]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=194</guid>
		<description><![CDATA[Merge Error: The Blast Buggies has been entered into Microsoft&#8217;s DreamBuildPlay 2010 Challenge!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gogo-robot.com/2010/02/02/blast-buggies/">Merge Error: The Blast Buggies</a> has been entered into Microsoft&#8217;s <a href="http://www.dreambuildplay.com/">DreamBuildPlay 2010 Challenge</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/03/07/blast-buggies-entered-into-dreambuildplay-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Galactic Aquarium: A Beginner&#8217;s Guide</title>
		<link>http://www.gogo-robot.com/2010/02/16/galactic-aquarium-a-beginners-guide/</link>
		<comments>http://www.gogo-robot.com/2010/02/16/galactic-aquarium-a-beginners-guide/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 13:38:27 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Galactic Aquarium]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=172</guid>
		<description><![CDATA[Here&#8217;s a little help to get started playing the Galactic Aquarium on the iPhone.
The aim of the game is to breed all of the different kinds of fish in the breeding guide. You can access the breeding guide from any screen by pressing the &#8220;Guide&#8221; button:

From the guide, you can keep track of your progress. [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little help to get started playing the Galactic Aquarium on the iPhone.</p>
<p>The aim of the game is to breed all of the different kinds of fish in the breeding guide. You can access the breeding guide from any screen by pressing the &#8220;Guide&#8221; button:</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/BreedingGuideIcon.png" alt="Breeding Guide Icon" title="Breeding Guide Icon" width="96" height="96" class="alignnone size-full wp-image-173" /></p>
<p>From the guide, you can keep track of your progress. Each group of fish have a page in the breeding guide. You can scroll through pages by swiping your finger across the breeding guide.</p>
<p>Fish that you have bred will have a tick icon on them, so you can quickly see which ones you still need to breed:</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/GA-Guide-1.png" alt="Breeding Guide" title="Breeding Guide" width="520" height="340" class="alignnone size-full wp-image-174" /></p>
<p>By tapping on a fish in the guide, it will show you information about it, such as how long it lives, what it eats, and when it is fertile. We&#8217;ll start by breeding a couple of Blue Guppies. The stats for the Blue Guppy are:</p>
<p><strong>Eats</strong></p>
<p>Fish Food</p>
<p><strong>Breeds From</strong></p>
<p>Blue Guppy + Blue Guppy</p>
<p><strong>Other Info</strong></p>
<p>Initial Value: $1<br />
Daily Growth: 8g<br />
Lifespan: 6 days<br />
Fertile During Days: 2 &#8211; 5</p>
<p>Any special powers a fish has will be shown at the bottom of the <i>Other Info</i> section.</p>
<p>So we&#8217;re about ready to start breeding our Guppies. But first, a note on feeding and schools&#8230;</p>
<h2>How feeding works</h2>
<p>Each fish in your tank will need to eat every day. The foods that it will eat are shown in the guide, under the <i>Eats</i> heading. Most fish will eat another type of fish, so you should make sure that there is enough food in your tank for all your fish, or they&#8217;ll starve! Only Guppies eat fish food, which is automatically bought for you to feed them (so make sure you&#8217;ve got enough money to feed your Guppies).</p>
<p>The older a fish gets, the more it needs to eat to stay healthy. You can see how much a single fish will grow each day in the guide. It is marked <i>Daily Growth</i> under the <i>Other Info</i> heading. Each individual fish needs to eat this much weight made up of the types of fish listed under the <i>Eats</i> heading.</p>
<p>If a fish doesn&#8217;t get fed fully for a day, it will become underweight. If it doesn&#8217;t get fed fully the next day, it will become seriously underweight. If, after a third day, the fish still hasn&#8217;t had enough food, it will die <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h2>How schools work</h2>
<p>When you buy or breed fish, they are grouped into schools. A school is just a group of fish which are the same age. When you buy fish from the shop, it will ask you how many you want in the school, and tell you how much it will cost in total.</p>
<p>Each icon in your tank and freezer represents one school. Tapping once on it will highlight it and show some information about it at the bottom of the screen. Tapping again will bring up a pop-up which lets you do things like freeze / unfreeze the school or sell some or all of the fish from the school.</p>
<p>So, we&#8217;ll go to the shop and buy two schools of Blue Guppies. We&#8217;ll start with 10 fish in each school&#8230;</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/GA-Guide-2.png" alt="Buying Fish" title="Buying Fish" width="520" height="340" class="alignnone size-full wp-image-175" /></p>
<p>Now that we&#8217;ve got our schools, we&#8217;re ready to get them breeding!</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/GA-Guide-3.png" alt="Our Tank" title="Our Tank" width="520" height="340" class="alignnone size-full wp-image-177" /></p>
<h2>How breeding works</h2>
<p>You need at least two schools of fish for them to breed. Fish from one school will only breed with fish from another school, which is why we bought two schools of Blue Guppies. You can see what fish you need to breed a certain type by looking in the guide. Under the <i>Breeds From</i> heading, it will list all of the combinations that create that type of fish. As we&#8217;re breeding Blue Guppies, which breed from:</p>
<p>Blue Guppy + Blue Guppy</p>
<p>We need two schools of Blue Guppy. If we were breeding the Royal Angel Fish, the breeding guide says it breeds from:</p>
<p>Royal Angel Fish + Royal Angel Fish<br />
Striking Angel Fish + Subtle Angel Fish</p>
<p>So we would need either two schools of Royal Angel Fish, or a school of Striking Angel Fish and a school of Subtle Angel Fish.</p>
<p>The more fish you have in each school, the more chance you&#8217;ll have of breeding them, and the more offspring they&#8217;ll produce. Fish, however, are very sensitive <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Here are some reasons why your fish might not be breeding:</p>
<h3>They are underweight</h3>
<p>Underweight or seriously underweight fish in a school will not breed, so make sure you keep them all well fed.</p>
<h3>They are not fertile</h3>
<p>Fish in a school will only breed if they are fertile. The days the fish are fertile are shown in the breeding guide, under <i>Other Info</i>. For our Blue Guppies, they are fertile between ages 2 and 5.</p>
<p>So now that you&#8217;ve got your two schools of Blue Guppies in your tank, we can go to the next day by pressing the &#8220;Next Day&#8221; button:</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/NextDayIcon.png" alt="Next Day Icon" title="Next Day Icon" width="99" height="90" class="alignnone size-full wp-image-178" /></p>
<p>After your first day, nothing much will have happened. You&#8217;ll have spent some money on fish food to keep your Blue Guppies healthy, but that&#8217;s about it. Remember, they won&#8217;t breed until after a couple of days, so we need to go forward a couple more times. Go back to your tank, and tap the &#8220;Next Day&#8221; button again, then back to the tank. Highlighting one of your schools, you&#8217;ll notice that they are now aged 2, and so they are fertile. Go to the next day again, and this time the summary will show that you&#8217;ve bred some Blue Guppies! Congratulations!</p>
<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/GA-Guide-4.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/GA-Guide-4.png" alt="Daily Summary" title="Daily Summary" width="520" height="340" class="alignnone size-full wp-image-181" /></a></p>
<p>Tapping the <i>Detailed</i> button on the summary screen changes into detailed mode, which will show you the events in writing. Certain other bits of information are only displayed in detailed mode, such as how many fish became fertile.</p>
<p>The first fish you breed in the game are guaranteed to breed as soon as they are fertile, to give you a nice start <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  If your Blue Guppies haven&#8217;t bred after a couple of days, it means you&#8217;ve probably already played the game for a bit before following this tutorial. Go to the breeding guide, then options, then start a new game.</p>
<h2>Making money</h2>
<p>It is important to note the lifespan of your fish. For our Blue Guppies, their lifespan is 6 days (again, this is shown in the breeding guide). When a school reaches that age, you should remember to sell it. Below is our tank after a few more days:</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/GA-Guide-5.png" alt="Old Fish" title="Old Fish" width="520" height="340" class="alignnone size-full wp-image-179" /></p>
<p>Notice our highlighted school has reached age 6 (which is the lifespan of the Blue Guppy). If we don&#8217;t sell them now, all the fish in the school will die of old age when we go to the next day. Remember, as fish grow, their value increases, so selling older fish will make you more money, so don&#8217;t forget to sell them before they die!</p>
<p>We can sell our fish by tapping again on the school to bring up the popup, then clicking the &#8220;Sell&#8221; button and typing in how many we want to sell from the school. The &#8220;All&#8221; button will sell all of the fish in the school.</p>
<p>Go good luck, and happy breeding!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/02/16/galactic-aquarium-a-beginners-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Galactic Aquarium Updated With OpenFeint</title>
		<link>http://www.gogo-robot.com/2010/02/16/galactic-aquarium-updated-with-openfeint/</link>
		<comments>http://www.gogo-robot.com/2010/02/16/galactic-aquarium-updated-with-openfeint/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 11:55:21 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Galactic Aquarium]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[OpenFeint]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=154</guid>
		<description><![CDATA[Galactic Aquarium has been updated with  support! Share your high scores with thousands of players across the world and earn points by unlocking achievements.



Or get the free version fora demo of the full game
]]></description>
			<content:encoded><![CDATA[<p>Galactic Aquarium has been updated with <a href="http://www.openfeint.com"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/OpenFeint.png" alt="OpenFeint" title="OpenFeint" width="120" height="30" class="alignnone size-full wp-image-162" /></a> support! Share your high scores with thousands of players across the world and earn points by unlocking achievements.</p>
<p><span id="more-154"></span></p>
<p style="text-align: center;"><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=328739024&#038;mt=8"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/01/galacticaquarium_iphone-300x162.png" alt="The Galactic Aquarium" title="galacticaquarium_iphone" width="300" height="162" class="alignnone size-medium wp-image-48" /></a></p>
<p style="text-align: center;"><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=328739024&#038;mt=8"><img src="http://www.gogo-robot.com/wp-content/uploads/2009/09/AppStore.png" alt="Available on the App Store" title="Available on the App Store" width="208" height="72" class="alignnone size-full wp-image-150" /></a><br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=331112159&#038;mt=8"><em>Or get the free version for<br />a demo of the full game</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/02/16/galactic-aquarium-updated-with-openfeint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Twitter Account &#8211; http://twitter.com/GoGoRobotGames (@GoGoRobotGames)</title>
		<link>http://www.gogo-robot.com/2010/02/16/new-twitter-account-httptwitter-comgogorobotgames-gogorobotgames/</link>
		<comments>http://www.gogo-robot.com/2010/02/16/new-twitter-account-httptwitter-comgogorobotgames-gogorobotgames/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 10:25:07 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=145</guid>
		<description><![CDATA[We&#8217;ve just set up a dedicated Twitter account, so you can follow our latest announcements and whatnot   Follow us here: http://twitter.com/GoGoRobotGames (@GoGoRobotGames)
]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just set up a dedicated Twitter account, so you can follow our latest announcements and whatnot <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Follow us here: <a href="http://twitter.com/GoGoRobotGames">http://twitter.com/GoGoRobotGames</a> (@GoGoRobotGames)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/02/16/new-twitter-account-httptwitter-comgogorobotgames-gogorobotgames/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merge Error: The Blast Buggies</title>
		<link>http://www.gogo-robot.com/2010/02/02/blast-buggies/</link>
		<comments>http://www.gogo-robot.com/2010/02/02/blast-buggies/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 00:31:38 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Blast Buggies]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[dream]]></category>
		<category><![CDATA[dreambuildplay]]></category>
		<category><![CDATA[play]]></category>
		<category><![CDATA[xbox]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=59</guid>
		<description><![CDATA[These are some screen shots from our Dream Build Play 2010 entry, Merge Error: The Blast Buggies. It&#8217;s a retro styled arcade shooter with updated HD graphics and a cool twist on gameplay. You can view the trailer at the end of this post.
 


Blast Buggies may be one of the most fun retro games [...]]]></description>
			<content:encoded><![CDATA[<p>These are some screen shots from our <a href="http://www.dreambuildplay.com/">Dream Build Play 2010</a> entry, Merge Error: The Blast Buggies. It&#8217;s a retro styled arcade shooter with updated HD graphics and a cool twist on gameplay. You can view the trailer at the end of this post.</p>
<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/BB_Screen1.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/BB_Screen1-300x168.png" alt="Blast Buggies Screenshot" title="BB_Screen1" width="300" height="168" class="alignnone size-medium wp-image-188" /></a> <a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/BB_Screen2.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/BB_Screen2-300x168.png" alt="Blast Buggies Screenshot" title="BB_Screen2" width="300" height="168" class="alignnone size-medium wp-image-189" /></a></p>
<p><span id="more-59"></span></p>
<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/BB_Screen3.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/BB_Screen3-300x168.png" alt="Blast Buggies Screenshot" title="BB_Screen3" width="300" height="168" class="alignnone size-medium wp-image-190" /></a></p>
<p>Blast Buggies may be one of the most fun retro games never made.</p>
<p>When we say retro you might be thinking “Sure, another vector geometry wars thing.” Thankfully you’d be way off the mark. We moved forward in time a bit from that to the era of pixels. Pixel art in HD with retro 16 color palettes but with full pixel shader normal mapping, lighting effects and distortion for a unique collision of old and new. Nothing else looks quite like it.</p>
<p>Gameplay wise this game is retro too, but not any old retro game you know and love, or any old retro game you know and hate for that matter. We did something a bit new, that feels retro.</p>
<p>In this game you play a buggy, on a space construction site, usually in zero gravity. Hey, don’t panic. You have magnetic wheels so you can stick to the floor, or for that matter the walls or even the roof. That’s nice yeah? But wouldn’t it be cool if you had a jump thruster so you could jump through space from platform to platform. Yes. It would be. Which is exactly why you have one.</p>
<p>In Merge Error: The Blast Buggies that’s what you do. You drive and jump from platform to platform through space and blast enemies in all directions with your mounted turret. Did we forget to mention your buggy has a huge gun on it? Well it does and what’s more there are ten different weapons to find and blow things up with, from miniguns to nukes.</p>
<p>So drive, jump and blast you way through 40 levels in this retro, non retro, platform, non platform shooter&#8230; and watch out for gravity cause it shows up in some levels just to kill you. Its mean like that&#8230;but not as mean as reactors because they actively want to kill you and have lots of guns to do it with.</p>
<hr />
<h2>View the trailer</h2>
<p style="text-align: center;"><!--[Fast Tube]--><span id="sXTQtlAs488" style="display:block;"><a title="Click here to watch this video!" href="http://www.gogo-robot.com/2010/02/02/blast-buggies/#sXTQtlAs488"><img src="http://i.ytimg.com/vi/sXTQtlAs488/0.jpg" alt="Fast Tube" border="0" width="320" height="240" /></a></span><!--[/Fast Tube]--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/02/02/blast-buggies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting a tile map into geometry</title>
		<link>http://www.gogo-robot.com/2010/02/01/converting-a-tile-map-into-geometry/</link>
		<comments>http://www.gogo-robot.com/2010/02/01/converting-a-tile-map-into-geometry/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 13:20:17 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[Developer Blog]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[geometry]]></category>
		<category><![CDATA[tile]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=111</guid>
		<description><![CDATA[I recently needed to convert a tile map consisting of squares and triangles into chunks of geometry and after trying a couple of different approaches, I eventually settled on one which seems to work. I didn&#8217;t come across it anywhere else, so I thought I&#8217;d post it here in case anyone else is wanting to [...]]]></description>
			<content:encoded><![CDATA[<p>I recently needed to convert a tile map consisting of squares and triangles into chunks of geometry and after trying a couple of different approaches, I eventually settled on one which seems to work. I didn&#8217;t come across it anywhere else, so I thought I&#8217;d post it here in case anyone else is wanting to do something similar.</p>
<p><span id="more-111"></span></p>
<p>So, the problem is: Given a regular tile map, where each tile is either a square or a triangle taking up half of the square, generate sets of vertices which describe each &#8216;chunk&#8217; of geometry in the map. E.g.:</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/01/TilesToGeom1.png" alt="Tiles To Geometry Fig. 1" title="Tiles To Geometry Fig. 1" width="640" height="224" class="alignnone size-full wp-image-114" /></p>
<p>The first method I tried was adapting <a href="http://en.wikipedia.org/wiki/Marching_squares">this method</a>, by representing each tile in a 2&#215;2 way, like so:</p>
<p style="text-align: center;"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/01/TilesToGeom2.png" alt="Tiles To Geometry Fig. 2" title="Tiles To Geometry Fig. 2" width="160" height="112" class="alignnone size-full wp-image-117" /></p>
<p>Then performing the contour tracing algorithm in the link above, and removing every other point in the resulting list of points. At first it looked like this worked, but there were a couple of cases where a triangle was placed next to another triangle where the algorithm failed. <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>After thinking about it for a while, I came up with this method, which I&#8217;m pretty sure works, but if anyone can see any errors with it, please do let me know. I&#8217;ll give you the algorithm, then go through it in detail. The algorithm goes as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Pick a start tile
    Add the start tile to the open list
    Remove the tile from the tile map
    Add each of the tile's vertices to the vertex list
    Add each of the tile's edges to the edge list
    While the open list is not empty
        CurrentTile = Tile at the end of the open list
        NextTile = Tile in the &quot;forward&quot; direction of the current tile
        If NextTile exists and shares a common edge with the current shape
            Add NextTile to the open list
            Remove NextTile from the tile map
            Add NextTile's vertices to the vertex list (without creating duplicates)
            Generate an edge list for NextTile
            Remove edges that overlap from the main edge list and the edge list for NextTile
            Add the remaining edges from NextTile to the main edge list
        Else
            Move on to the next &quot;forward&quot; direction for CurrentTile
            If &quot;forward&quot; direction for CurrentTile = initial &quot;forward&quot; direction
                Remove CurrentTile from the open list
&nbsp;
Traverse the edge list and add the vertices that are used to the vertex list for your shape</pre></div></div>

<p>So, what does that all mean? Well, lets go through it step by step:</p>
<h2>Add the start tile to the open list</h2>
<p>The easiest way to search for a start tile is to do a row by row search. Start at 0,0 and scan along the first row, then the second and so on until you find an occupied tile. This is your start tile. The open list is a list of tiles currently being looked at. The start tile will be the first tile in this list.</p>
<h2>Remove the tile from the tile map</h2>
<p>Removing the tile from the tile map means that the algorithm will no longer visit them. Obviously, if you need your tile map after running the algorithm, create a copy of it <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Add each of the tile&#8217;s vertices to the vertex list</h2>
<p>The vertex list stores each corner point that has been used by each tile. For the first tile, just add the world space corner points to the list.</p>
<h2>Add each of the tile&#8217;s edges to the edge list</h2>
<p>The edge list is an list of, you guessed it, edges! Each edge is a pair of indices into the vertex list. Note that edges should always be specified in the same winding order and should always start at the same corner. I.e. pick clockwise or counter-clockwise and use that for both the square and triangle tiles, like so:</p>
<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/EdgesAndVerts.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/EdgesAndVerts.png" alt="Edges and Vertices example" title="EdgesAndVerts" width="464" height="132" class="alignnone size-full wp-image-123" /></a></p>
<p>Notice on the last triangle that we started at the top left (as there is no vertex in the bottom left, and this would be the next one round in our clockwise winding order).</p>
<h2>While the open list is not empty</h2>
<p>I.e. While we&#8217;re still examining tiles for our current shape.</p>
<h2>CurrentTile = Tile at the end of the open list</h2>
<p>Set the current tile to the last tile added to the open list</p>
<h2>NextTile = Tile in the &#8220;forward&#8221; direction of the current tile</h2>
<p>Each tile in the open list maintains the direction of the neighbour that it is currently examining. Each time a tile is added to the open list, its &#8220;forward&#8221; direction (i.e. the direction in which to examine) is set to &#8220;up&#8221;. I just use an integer here, with the range 0 &#8211; 3, representing up, right, down and left, in that order. When we&#8217;re on a tile, we examine the neighbour in the tile&#8217;s &#8220;forward&#8221; direction, and pursue that path as far as possible. The next time the algorithm comes back to a tile, it rotates to the next &#8220;forward&#8221; direction and tries that path, until all four directions have been exhausted.</p>
<h2>If NextTile exists and shares a common edge with the current shape</h2>
<p>If there is a neighbour in our current tile&#8217;s &#8220;forward&#8221; direction, then we check to see if the neighbour and the current tile share common edges. One way to do this is to generate a list of edges for NextTile using the current vertex list. Any edges which contain vertices in the current vertex list will use the same vertex indices as the existing edges, but in reverse order (due to each tile having the same winding order), like so:</p>
<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/WindingOrder.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/WindingOrder.png" alt="Winding Order" title="WindingOrder" width="219" height="132" class="alignnone size-full wp-image-124" /></a></p>
<p>In the above image, the shared edge is V2 -> V3 for the left tile, and V3 -> V2 for the right tile.</p>
<h2>Add NextTile to the open list</h2>
<p>Add NextTile to the end of the open list, initialising its &#8220;forward&#8221; direction to 0 (up)</p>
<h2>Remove NextTile from the tile map</h2>
<p>Remove NextTile from the tile map so it is not revisited by the algorithm (except for when it is returned to by the open list).</p>
<h2>Add NextTile&#8217;s vertices to the vertex list (without creating duplicates)</h2>
<p>Add each world space vertex for the tile to the vertex list, but don&#8217;t create duplicates for vertices that are already in the vertex list.</p>
<h2>Generate an edge list for NextTile</h2>
<p>Generate a list of edges (remember, each edge is a pair of indices into the vertex list), using vertices from the vertex list.</p>
<h2>Remove edges that overlap from the main edge list and the edge list for NextTile</h2>
<p>Remove any edges that overlap from both the edge list that was just generated for NextTile, and the main edge list. Remember, neighbouring tiles with overlapping edges will specify the indices of the overlapping edge in opposite order from each other. I.e. If a tile has an edge V2 -> V3, and the neighbouring tile has an edge that shares these vertices, the neighbouring tile&#8217;s edge will be V3 -> V2. This is due to the winding order, as shown above.</p>
<h2>Add the remaining edges from NextTile to the main edge list</h2>
<p>Any edges that do not overlap can now be added to the main edge list</p>
<h2>Move on to the next &#8220;forward&#8221; direction for CurrentTile</h2>
<p>When you reach here, it means there are no tiles to check in the current direction, so we should rotate to look in the next direction. If you&#8217;re storing your &#8220;forward&#8221; direction as an integer, simply increment it.</p>
<h2>If &#8220;forward&#8221; direction for CurrentTile = initial &#8220;forward&#8221; direction</h2>
<p>This is a check to see if we&#8217;ve exhausted each of the four directions. The initial &#8220;forward&#8221; direction will be 4 if you&#8217;re representing directions as an integer in the range 0 &#8211; 3. If the &#8220;forward&#8221; direction reaches 4, it means we have tested each direction (0 &#8211; 3) and we are done with this tile.</p>
<h2>Remove CurrentTile from the open list</h2>
<p>As we are done with this tile, we can remove it from the open list.</p>
<p></p>
<p>So, after we&#8217;ve generated our edge list, we now need to traverse it. Simply start at the first edge and follow the trial of edges around the shape until you reach the start vertex again. E.g.: First edge: V0 -> V1, so add V0 and V1 to your shape, then search for an edge that starts at V1. Next edge: V1 -> V4, so add V4 to your shape and search for an edge that starts at V4, and so on, until you reach V0 again. You&#8217;ve now got a list of vertices that represent your shape.</p>
<p></p>
<p>After this, two possible further steps are to optimize your final list of vertices (i.e. remove co-linear ones, so you are only left with the corner vertices), and remove any tiles which are inside your shape (unless you want to create shapes within shapes). Note, that the final step will only produce the outline shape of an object, so will not handle holes in closed objects. You may be able to handle holes in closed objects by recursively performing the last step and removing edges from the final edge list as you visit them, until the list is empty. This should give you multiple shapes, the first being the outer shape and the rest being the holes inside the shape, but I haven&#8217;t really looked in to this that much, so it may not work <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here&#8217;s a little animation of the algorithm. The grey edges are overlapping ones that have been removed.</p>
<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/02/GenerateTileGeomAnim.gif"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/02/GenerateTileGeomAnim.gif" alt="Algorithm Animation" title="GenerateTileGeomAnim" width="208" height="192" class="alignnone size-full wp-image-131" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/02/01/converting-a-tile-map-into-geometry/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aliens! Announced</title>
		<link>http://www.gogo-robot.com/2010/01/20/aliens-announced/</link>
		<comments>http://www.gogo-robot.com/2010/01/20/aliens-announced/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 19:50:22 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[aliens]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=83</guid>
		<description><![CDATA[
Aliens! is our latest game for the iPhone / iPod Touch.Tilt the iPhone to swing the UFO&#8217;s deflection ball and knock the missiles out of the air. Try and survive as long as you can to get the high score.
This fun, addictive game will be released soon on the App Store, and we&#8217;re using OpenFeint, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.gogo-robot.com/wp-content/uploads/2010/01/Aliens-Preview.png"><img src="http://www.gogo-robot.com/wp-content/uploads/2010/01/Aliens-Preview-300x211.png" alt="Aliens!" title="Aliens!" width="300" height="211" class="alignnone size-medium wp-image-84" /></a></p>
<p>Aliens! is our latest game for the iPhone / iPod Touch.Tilt the iPhone to swing the UFO&#8217;s deflection ball and knock the missiles out of the air. Try and survive as long as you can to get the high score.</p>
<p>This fun, addictive game will be released soon on the App Store, and we&#8217;re using <a href="http://openfeint.com/">OpenFeint</a>, so you can share your high scores with your friends!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/01/20/aliens-announced/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Galactic Aquarium profits donated to Haiti Relief</title>
		<link>http://www.gogo-robot.com/2010/01/20/galactic-aquarium-profits-donated-to-haiti-relief/</link>
		<comments>http://www.gogo-robot.com/2010/01/20/galactic-aquarium-profits-donated-to-haiti-relief/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 18:32:06 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Galactic Aquarium]]></category>
		<category><![CDATA[haiti]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=81</guid>
		<description><![CDATA[From 20th January &#8211; 25th January, we are donating our profits from sales of Galactic Aquarium (iPhone) to the Red Cross for Haitian quake relief!  Please check out www.appRelief.com to find other great games and apps that are doing the same!
]]></description>
			<content:encoded><![CDATA[<p>From 20th January &#8211; 25th January, we are donating our profits from sales of <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=328739024&#038;mt=8">Galactic Aquarium (iPhone)</a> to the Red Cross for Haitian quake relief!  Please check out <a href="www.appRelief.com">www.appRelief.com</a> to find other great games and apps that are doing the same!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/01/20/galactic-aquarium-profits-donated-to-haiti-relief/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook Connect Dialog on iPhone</title>
		<link>http://www.gogo-robot.com/2010/01/10/facebook-connect-dialog-on-iphone/</link>
		<comments>http://www.gogo-robot.com/2010/01/10/facebook-connect-dialog-on-iphone/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 15:03:14 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[Developer Blog]]></category>
		<category><![CDATA[Facebook Connect]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=75</guid>
		<description><![CDATA[A problem I keep having when adding Facebook Connect to iPhone applications is that sometimes the dialogs appear briefly then disappear. I keep forgetting why it is for a while, so I thought I&#8217;d post this to help anyone who is having a similar problem, and to remind myself about it so that maybe next [...]]]></description>
			<content:encoded><![CDATA[<p>A problem I keep having when adding Facebook Connect to iPhone applications is that sometimes the dialogs appear briefly then disappear. I keep forgetting why it is for a while, so I thought I&#8217;d post this to help anyone who is having a similar problem, and to remind myself about it so that maybe next time I won&#8217;t forget <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-75"></span></p>
<p>Anyway, the problem is in the FBDialog.m file. There are a couple of lines that read:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">UIWindow<span style="color: #002200;">*</span> window <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIApplication sharedApplication<span style="color: #002200;">&#93;</span>.keyWindow;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">!</span>window<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
    window <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIApplication sharedApplication<span style="color: #002200;">&#93;</span>.windows objectAtIndex<span style="color: #002200;">:</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">&#91;</span>window addSubview<span style="color: #002200;">:</span>self<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>The problem comes when you try and show the Facebook dialog just after something other than the main window is the key window. This could happen if you&#8217;ve popped up a UIAlertView to ask if the user wants to publish to Facebook. The UIAlertView is the application&#8217;s key window and when you display your Facebook dialog, it adds itself as a subview of the UIAlertView (which is currently closing). So, your dialog will start to display, then when the UIAlertView finishes closing, it&#8217;ll disappear. The easy fix is to just change the FBDialog.m file so that it always uses the second line, and doesn&#8217;t try to use the keyWindow property:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">UIWindow<span style="color: #002200;">*</span> window <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIApplication sharedApplication<span style="color: #002200;">&#93;</span>.windows objectAtIndex<span style="color: #002200;">:</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>window addSubview<span style="color: #002200;">:</span>self<span style="color: #002200;">&#93;</span>;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2010/01/10/facebook-connect-dialog-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The App Store Release Date</title>
		<link>http://www.gogo-robot.com/2009/10/05/the-app-store-release-date/</link>
		<comments>http://www.gogo-robot.com/2009/10/05/the-app-store-release-date/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 14:30:10 +0000</pubDate>
		<dc:creator>Rew</dc:creator>
				<category><![CDATA[Developer Blog]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.gogo-robot.com/?p=64</guid>
		<description><![CDATA[So I think I’ve finally figured out how you should handle the release date when you’re submitting your app. From what I can see, when your app gets approved, it gets the release date you set when you submitted, even if the date it gets approved is AFTER the release date. Consequently, when your app [...]]]></description>
			<content:encoded><![CDATA[<p>So I think I’ve finally figured out how you should handle the release date when you’re submitting your app. From what I can see, when your app gets approved, it gets the release date you set when you submitted, even if the date it gets approved is AFTER the release date. Consequently, when your app appears on the App Store, it’s already a few pages down when sorted by release date. Not good <img src='http://www.gogo-robot.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p><span id="more-64"></span></p>
<p>So, I’m guessing you have to set your release date way off into the future (because you have no idea how long it’s going to take Apple to approve your app), so that when it’s approved, you can bring it forward to the current date and it’ll be top of the new releases list. I’m going to be trying this with our next iPhone game, so I’ll keep you posted how it turns out. The one potential problem is that if Apple looks at the release date to determine when they’ll test your app, it might be a while before it gets tested.</p>
<p></p>
<p><strong>Update</strong>: Apparently, from reading around, the release date will be listed as the earliest of (i) the date you set when submitting, and (ii) the date it is approved by Apple. So even if you set your availability date to some distant future date, then set it to something sensible when it’s released, it’ll be down in iTunes as the date it was approved. So I guess the moral of the story is this:</p>
<p></p>
<p><em>When submitting your app to the App Store, set the availability date to a month or two ahead (and remember to update it if you have to re-submit or if it takes Apple ages to approve it), so that it’s always ahead of the date it gets approved. Then, once it’s approved, set the release date to the date it was approved (so it actually appears on the App Store). You need to set it as soon as you receive the &#8220;Ready for sale&#8221; e-mail from apple, and remember to set the availability date to the date that Apple sent the e-mail (remember to take into account the time difference between you and Apple in Cupertino). E.g. If you receive the e-mail in the early hours of Tuesday morning, and you&#8217;re in the UK, then Apple will have sent the e-mail on Monday (their time), so your availability date should be Monday.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gogo-robot.com/2009/10/05/the-app-store-release-date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
