<?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>Last Ray of Hope &#187; iPhone</title>
	<atom:link href="http://www.lastrayofhope.com/tag/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lastrayofhope.com</link>
	<description>Home of Kaluriel Hargrove</description>
	<lastBuildDate>Thu, 02 Feb 2012 00:21:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tap Zoo, the game that punishes you for not playing</title>
		<link>http://www.lastrayofhope.com/2011/07/09/tap-zoo-the-game-that-punishes-you-for-not-playing/</link>
		<comments>http://www.lastrayofhope.com/2011/07/09/tap-zoo-the-game-that-punishes-you-for-not-playing/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 11:23:23 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Tap Zoo]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=3668</guid>
		<description><![CDATA[I haven't played Tap Zoo for a while, I was hoping I would eventually reach the max level limit to see what happens to the content with these kinds of games, however I eventually gave up, Smurf's I gave up on a few month ago after I missed collecting crops and would have needed to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2011/07/IMG_0355.png"><img class="alignleft size-thumbnail wp-image-3676" title="Not ruddy likely" src="http://www.lastrayofhope.com/wp-content/uploads/2011/07/IMG_0355-150x150.png" alt="" width="150" height="150" /></a>I haven't played Tap Zoo for a while, I was hoping I would eventually reach the max level limit to see what happens to the content with these kinds of games, however I eventually gave up, Smurf's I gave up on a few month ago after I missed collecting crops and would have needed to harvest 40+ crops only to replant them.</p>
<p>Tap Zoo I logged back in to find out that it punishes you for not playing. Any animals you were breeding will become sick and the only way to free up the slot is to pay for stars.</p>
<p>Back at the beginning of the game you were given stars on level up, however after about 10 levels that stops. What a bunch of idiots, you do not punish people for coming back to a game, you're suppose to reward them to keep them back.</p>
<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2011/07/IMG_0358.png"><img class="alignright size-thumbnail wp-image-3681" title="Tiny Tower" src="http://www.lastrayofhope.com/wp-content/uploads/2011/07/IMG_0358-150x150.png" alt="" width="150" height="150" /></a>A recent new called call <a href="http://itunes.apple.com/gb/app/tiny-tower/id422667065?mt=8" target="_blank">Tiny Tower</a> is starting to take over the top of the top grossing charts. The reason, in my opinion would be the fact you do not have to pay to gain the ingame bonus tokens, you just need to play.</p>
<p>The more often you play, the faster you will accumulate money, and you gain actual iOS achievement as well.</p>
<p>It also reminds me of SimTower, which is how I came by it in the first place. Just like all these Facebook games, it have little tasks to gain you small amounts of currency as well, delivering people to floors. These not only give you money, but give you people to rent apartments so you can give them jobs.</p>
<p>Occasionally, VIPs will turn up that will knock off time for restocking, building, and increase people arriving at your stores to buy things. As I have said previously, the key to making a successful Facebook game, is to make a game that works like an ordinary game but you do not have to play as well.</p>
<p>EVE Online uses this formula.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2011/07/09/tap-zoo-the-game-that-punishes-you-for-not-playing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS Multithreading OpenGL</title>
		<link>http://www.lastrayofhope.com/2011/07/07/iphone-multithreading-opengl/</link>
		<comments>http://www.lastrayofhope.com/2011/07/07/iphone-multithreading-opengl/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 21:38:41 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[Athena]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=3644</guid>
		<description><![CDATA[I've been meaning to do this in my engine for a while, but just never had a time. Multithreading in OpenGL is simple enough as long as you are not accessing the same object as something on another thread. In my case, I'm only using it for my loading thread so I will not be [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_3693" class="wp-caption alignleft" style="width: 160px"><a href="http://www.lastrayofhope.com/wp-content/uploads/2011/07/IMG_0248.jpg"><img class="size-thumbnail wp-image-3693" title="Vashta Nerada" src="http://www.lastrayofhope.com/wp-content/uploads/2011/07/IMG_0248-150x150.jpg" alt="Vashta Nerada" width="150" height="150" /></a><p class="wp-caption-text">LEGO Vashta Nerada</p></div>
<p>I've been meaning to do this in my engine for a while, but just never had a time.</p>
<p>Multithreading in OpenGL is simple enough as long as you are not accessing the same object as something on another thread.</p>
<p>In my case, I'm only using it for my loading thread so I will not be accessing any of the objects created until loading is complete, and I will not be rendering on the separate thread either, at least not yet, I could use it for render targets.</p>
<p>So first of all, the creation of a OpenGL context on iOS. The examples I'm writing here are just simple main() loops so simplify what has to be done.</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="cpp" style="font-family:monospace;"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	EAGLContext <span class="sy2">*</span> mContext <span class="sy1">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>EAGLContext alloc<span class="br0">&#93;</span> initWithAPI<span class="sy4">:</span>kEAGLRenderingAPIOpenGLES2<span class="br0">&#93;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">// Make context active for this thread</span>
	<span class="br0">&#91;</span>EAGLContext setCurrentContext<span class="sy4">:</span>mContext<span class="br0">&#93;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//</span>
	<span class="kw1">while</span><span class="br0">&#40;</span> <span class="nu0">1</span> <span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="co1">// do some rendering</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="co1">//</span>
	<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Simple enough, this code most people who have written any iPhone OpenGL apps will recognise, it creates an ES2 context and bind it to the active thread.</p>
<p>However, now we want a separate thread that does OpenGL commands. We could use the same context, but a call binding a buffer on one thread could override to bind on the other causing invalid or wrong calls, so we would need to synchronise the threads.</p>
<p>Instead we create a second context that shares objects with our first one.</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="cpp" style="font-family:monospace;"><span class="co1">//</span>
<span class="co1">//</span>
EAGLContext <span class="sy2">*</span> mMainContext <span class="sy1">=</span> nil<span class="sy4">;</span>
EAGLContext <span class="sy2">*</span> mThreadContext <span class="sy1">=</span> nil<span class="sy4">;</span>
pthread_attr_t mThreadAttributes<span class="sy4">;</span>
pthread_t mThread<span class="sy4">;</span>
&nbsp;
<span class="co1">//</span>
<span class="co1">//</span>
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	mMainContext <span class="sy1">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>EAGLContext alloc<span class="br0">&#93;</span> initWithAPI<span class="sy4">:</span>kEAGLRenderingAPIOpenGLES2<span class="br0">&#93;</span><span class="sy4">;</span>
	mThreadContext <span class="sy1">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>EAGLContext alloc<span class="br0">&#93;</span> initWithAPI<span class="sy4">:</span><span class="br0">&#91;</span>mMainContext API<span class="br0">&#93;</span>
					       sharegroup<span class="sy4">:</span><span class="br0">&#91;</span>mMainContext sharegroup<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">// Make context active for this thread</span>
	<span class="br0">&#91;</span>EAGLContext setCurrentContext<span class="sy4">:</span>mMainContext<span class="br0">&#93;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">// Create second thread for OpenGL stuff</span>
	pthread_attr_init<span class="br0">&#40;</span> <span class="sy3">&amp;</span>mThreadAttributes <span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	pthread_create<span class="br0">&#40;</span> <span class="sy3">&amp;</span>mThread,
			<span class="sy3">&amp;</span>mThreadAttributes,
			OGLThread,
			<span class="kw2">NULL</span> <span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//</span>
	<span class="kw1">while</span><span class="br0">&#40;</span> <span class="nu0">1</span> <span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="co1">// do some rendering</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="co1">//</span>
	<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">//</span>
<span class="co1">//</span>
<span class="kw4">void</span> <span class="sy2">*</span> OGLThread<span class="br0">&#40;</span> <span class="kw4">void</span> <span class="sy2">*</span> inParam <span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	<span class="co1">//</span>
	<span class="br0">&#91;</span>EAGLContext setCurrentContext<span class="sy4">:</span>mThreadContext<span class="br0">&#93;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//</span>
	<span class="kw1">while</span><span class="br0">&#40;</span> loadingSomething <span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="co1">// other opengl commands</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="co1">// Flush changes</span>
	glFlush<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//</span>
	<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>With this second context, any calls to binding objects to the context will not affect the other thread's context. the [API] just makes it so that I'm using the same ES version as the first context, the [sharegroup] is the shared resource group that will be used by both contexts.</p>
<p>However you must take care not to update an object that is in use in the main thread, and whenever you make a change that will affect the other thread, call glFlush() on the thread that modified, and then rebind on the other thread so the changes take place.</p>
<p>In my own engine I hold shadow states of all options set, so one problem with this system would be I would need to pass in the Context depending on the thread. Instead I wrapped a class around the context that holds the shadow states and the context, as well as a pthread_t object for the thread it is assigned to.</p>
<p>Then whenever I do anything that will alter my shadow states, I make a call to pthread_self() to get the current thread, and find the relevant context.</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lastrayofhope.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="cpp" style="font-family:monospace;"><span class="kw4">struct</span> MyContext
<span class="br0">&#123;</span>
	EAGLContext <span class="sy2">*</span> context<span class="sy4">;</span>
	ShadowStates states<span class="sy4">;</span>
	pthread_t thread<span class="sy4">;</span>
<span class="br0">&#125;</span><span class="sy4">;</span>
&nbsp;
MyContext mMainContext<span class="sy4">;</span>
MyContext mThreadContext<span class="sy4">;</span>
&nbsp;
MyContext <span class="sy2">*</span> GetCurrentContext<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	<span class="kw4">int</span> ret <span class="sy1">=</span> pthread_equal<span class="br0">&#40;</span> pthread_self<span class="br0">&#40;</span><span class="br0">&#41;</span>, mMainContext.<span class="me1">thread</span> <span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="kw1">if</span><span class="br0">&#40;</span> ret <span class="sy1">==</span> <span class="nu0">0</span> <span class="br0">&#41;</span> <span class="co1">// 0 means not equal when using pthread_equal()</span>
	<span class="br0">&#123;</span>
		<span class="kw1">return</span> <span class="sy3">&amp;</span>mThreadContext<span class="sy4">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="kw1">return</span> <span class="sy3">&amp;</span>mMainContext<span class="sy4">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>There is only one object so far that I have found doesn't share between contexts, and that is a Vertex Array Object (VAO).</p>
<p>For now I'm just making my code think the extension isn't present when multithreading is enabled, but I need to come up with a solution to generate the VAO for each thread it gets used on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2011/07/07/iphone-multithreading-opengl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anatomy of a Facebook Game (on iPhone)</title>
		<link>http://www.lastrayofhope.com/2011/04/27/anatomy-of-a-facebook-game-on-iphone/</link>
		<comments>http://www.lastrayofhope.com/2011/04/27/anatomy-of-a-facebook-game-on-iphone/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 22:24:24 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Smurf]]></category>
		<category><![CDATA[Tap Zoo]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=3323</guid>
		<description><![CDATA[For the past month I have been playing two Facebook games that are on the iPhone, Tap Zoo and Smurf's Village. Both have been on the top grossing chart for months now with no sign of decline, yet both games are free to play. So how did they make it to the top of the [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_3324" class="wp-caption alignleft" style="width: 160px"><a href="http://www.lastrayofhope.com/wp-content/uploads/2011/04/Screen-shot-2011-04-27-at-23.16.45.png"><img class="size-thumbnail wp-image-3324" title="Top Grossing" src="http://www.lastrayofhope.com/wp-content/uploads/2011/04/Screen-shot-2011-04-27-at-23.16.45-150x150.png" alt="Top Grossing on iTunes Games" width="150" height="150" /></a><p class="wp-caption-text">Top Grossing on iTunes</p></div>
<p>For the past month I have been playing two Facebook games that are on the iPhone, <a href="http://itunes.apple.com/gb/app/tap-zoo/id360893304?mt=8" target="_blank">Tap Zoo</a> and <a href="http://itunes.apple.com/gb/app/smurfs-village/id399648212?mt=8" target="_blank">Smurf's Village</a>.</p>
<p>Both have been on the top grossing chart for months now with no sign of decline, yet both games are free to play.</p>
<p>So how did they make it to the top of the chart? In-game micropayments must be playing a big role. Which is kinda odd, because when you compare it to a £40 console game, you're getting so little value for money.</p>
<p>The publisher is getting a lot more money for very little work.</p>
<p><strong>Visuals</strong></p>
<p>Visually I find Smurf's Village more appealing, not just because it appeals to my inner Smurf fan, but Tap Zoo's compression artifacts are obvious and it look is just too plain.</p>
<p>The zoom could just be limited to reduce visible artifacts, and judging by the screenshots, Tap Zoo seems to be not designed for iPhone4 resolution and is being scaled up.</p>
<p><strong>Storyline</strong></p>
<p>For storyline, Smurf's Village far greater than Tap Zoo, I'm not even sure Tap Zoo has a storyline to be honest.</p>
<p>There was a point in Tap Zoo where an achievement appeared to build a boat to save animals on a doomed island, which was quite fun to do since it required me building objects that I would never use in my zoo, such as a rope bridge for rope. But after I rescued the first animal, the quest ended with a promise of more to come, but nothing so far.</p>
<p>Smurf's Village storyline, is a bit vague, and just like the Smurf TV series, not in any relevant order. As with the TV series, every level something will happen involving  Gargame/x-www-form-urlencoded<br />
Accept: r mix a potion to stop him. But doing these tasks will reward a decent amount of XP, or give me a new Smurf or unlockable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2011/04/27/anatomy-of-a-facebook-game-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Catalyst</title>
		<link>http://www.lastrayofhope.com/2009/08/09/catalyst/</link>
		<comments>http://www.lastrayofhope.com/2009/08/09/catalyst/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 09:50:57 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[Catalyst]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Nintendo DS]]></category>
		<category><![CDATA[Objective-c]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=2740</guid>
		<description><![CDATA[Whilst working on animation support for Athena for Courage, I began working on a game for the iPhone called Catalyst last weekend. I was thinking about a game I had played about a month or two before called Polygonal Fury, and realised it would port nicely onto the iPhone. So I started a OpenGL ES [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-01.png"><img class="alignleft size-medium wp-image-2736" title="Catalyst Title Screen" src="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-01-300x157.png" alt="Catalyst Title Screen" width="180" height="94" /></a></p>
<p>Whilst working on animation support for Athena for Courage, I began working on a game for the iPhone called Catalyst last weekend.</p>
<p>I was thinking about a game I had played about a month or two before called <a href="http://www.kongregate.com/games/DogInLake/polygonal-fury" target="_blank">Polygonal Fury</a>, and realised it would port nicely onto the iPhone.</p>
<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-02.png"><img class="alignright size-medium wp-image-2737" title="Catalyst - A circle explodes" src="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-02-300x157.png" alt="Catalyst - A circle explodes" width="180" height="94" /></a>So I started a OpenGL ES project (and discovered the new version of the iPhone supports shaders), and started with just making some circles bounce around.</p>
<p>Since the collision of a circle is easy, they seems the easiest to setup for interaction with touching the screen.</p>
<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-03.png"><img class="alignleft size-medium wp-image-2738" title="Catalyst - A chain reaction" src="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-03-300x158.png" alt="Catalyst - A chain reaction" width="180" height="95" /></a>Initially I just made them "die" if tapped, but later I added the ability of shapes to spawn reactions.</p>
<p>All sprites within the game are triangle fans, but I will probably change them to quads with a texture due to the break that occasionally appears in the geometry, and alpha glow around the edge.</p>
<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-04.png"><img class="alignright size-medium wp-image-2739" title="Catalyst - Still three &quot;clicks&quot; left" src="http://www.lastrayofhope.com/wp-content/uploads/2009/08/catalyst-04-300x158.png" alt="Catalyst - Still three &quot;clicks&quot; left" width="180" height="95" /></a>It is not much, but it is a start, I plan to add some more particle types, and maybe a few different upgrades than the ones giving in the Flash version.</p>
<p>The background needs changing, I was thinking of something going on in the background like in another Flash game I played, <a href="http://www.kongregate.com/games/2DArray/spewer" target="_blank">Spewer</a>, with maybe cut scenes like the Nintendo DS game Contact had.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2009/08/09/catalyst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone 3.0 Beta 2</title>
		<link>http://www.lastrayofhope.com/2009/04/11/iphone-30-beta-2/</link>
		<comments>http://www.lastrayofhope.com/2009/04/11/iphone-30-beta-2/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 22:04:29 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[MacOSX]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=1061</guid>
		<description><![CDATA[With the release of iPhone 3.0 Beta 2, which automatically unlocks tethering as well as fixes a few other bugs with Beta 1 that were annoying me, I finally got around to upgrading. However, during the process of the upgrade (I selected Update instead of Restore this may have been what caused it), an error [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-1062" href="http://www.lastrayofhope.com/2009/04/11/iphone-30-beta-2/ts1275/"><img class="alignleft size-medium wp-image-1062" title="Connect to iTunes" src="http://www.lastrayofhope.com/wp-content/uploads/2009/04/ts1275-200x300.png" alt="Connect to iTunes" width="200" height="300" /></a>With the release of iPhone 3.0 Beta 2, which automatically unlocks tethering as well as fixes a few other bugs with Beta 1 that were annoying me, I finally got around to upgrading.</p>
<p>However, during the process of the upgrade (I selected Update instead of Restore this may have been what caused it), an error occurred. Fearing I may have just bricked my iPhone with a firmware changed, I quickly ran Restore, only for it to fail with an Error 1611, or maybe it was 1602 or 1604.</p>
<p>Searching the interwebs, I found various people who had the same problem with earlier version of the iPhone firmware, and one recommended putting the iPhone into DFU mode... BIG MISTAKE! It turns out that MacOSX doesn't recognise an iPhone in DFU mode, treating it like an iPod and giving Error 2001 messages. But not only that, but I was stuck in DFU mode (which btw is a black screen with no way of knowing if it is turned on or not).</p>
<p>The only solution at the time I could find around this was a piece of 32bit Windows software, which wouldn't work with my 64bit OS. Luckily I came by some instructions the next day, which said to exit DFU mode, all you have to do is hold power and home for 10 seconds. I don't know if it was this however, since I think my iPhone had run out of power, I might have just been turning it back on.</p>
<p>To fix the original problem, all I did was delete the ipsw files in "/&lt;user&gt;/Library/iTunes/Device Support" directories. Restore didn't work until I manually Restore using Firmware 3.0 Beta 2 (probably something gets changes which is why you can't downgrade through normal means).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2009/04/11/iphone-30-beta-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone 3.0</title>
		<link>http://www.lastrayofhope.com/2009/03/23/iphone-30/</link>
		<comments>http://www.lastrayofhope.com/2009/03/23/iphone-30/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 23:44:58 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[O2]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=1031</guid>
		<description><![CDATA[Apple recently released the iPhone SDK for 3.0, which for developers means that they can get an early release for version 3.0 of the OS (though it is possible to get ahold of the OS without being a developer through shady means). One great thing about this, someone browsing around the new iPhone OS found [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-1032" href="http://www.lastrayofhope.com/2009/03/23/iphone-30/screenshot-20090325-234400/"><img class="alignleft size-medium wp-image-1032" title="iPhone Tethering" src="http://www.lastrayofhope.com/wp-content/uploads/2009/03/screenshot-20090325-234400-200x300.png" alt="iPhone Tethering" width="160" height="240" /></a>Apple recently released the iPhone SDK for 3.0, which for developers means that they can get an early release for version 3.0 of the OS (though it is possible to get ahold of the OS without being a developer through shady means). One great thing about this, someone browsing around the new iPhone OS found tethering, a much wanted feature of iPhone since its first release.</p>
<p>And so as usual, a fake upgrade was made, which enables it. I've already gave it a whirl myself, and it works great. However, I haven't ran it for extensive periods since there is nothing in my O2 contract about tethering, which means O2 could charge me for using it. I wonder if there is a way I could get it added in...</p>
<p>I look forward to the actual release of tethering. There are still many other great features being introduced in the iPhone OS 3.0 for me to play around with, and I don't really need tethering at the moment, everywhere down here seems to have WiFi close by. Maybe I should get a WiFi detector instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2009/03/23/iphone-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Developer</title>
		<link>http://www.lastrayofhope.com/2008/12/08/iphone-developer/</link>
		<comments>http://www.lastrayofhope.com/2008/12/08/iphone-developer/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 21:42:31 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C++]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=167</guid>
		<description><![CDATA[I awoke this morning to find an email in my inbox from Apple, reminding me that I hadn't finished enrolling for becoming an iPhone Developer yet. Surprised since they hadn't told me I could finish yet, I just assumed that it must have been filtered by my spam filter (must remember to fix that thing). [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2008/12/apple-iphone-in-hand-thumb.jpg"><img class="alignleft size-medium wp-image-168" title="Apple iPhone" src="http://www.lastrayofhope.com/wp-content/uploads/2008/12/apple-iphone-in-hand-thumb-264x300.jpg" alt="Apple iPhone" width="264" height="300" /></a>I awoke this morning to find an email in my inbox from Apple, reminding me that I hadn't finished enrolling for becoming an iPhone Developer yet. Surprised since they hadn't told me I could finish yet, I just assumed that it must have been filtered by my spam filter (must remember to fix that thing).</p>
<p>So since there was an hour to go before work, I quickly followed the instructions, paid for my membership and got an emailing saying that within 24 hours they will get back to me with instructions of how to setup my iPhone to allow development. However upon getting back from work, I was greeted by an email telling me it had all been setup and that I was now able to develop and publish applications for the iPhone.</p>
<p>The setup process was a little annoying, the tutorials aren't fully specific, but I managed, and sometimes it was my fault for not reading them correctly, but they do come with pictures depicting how things should look when it is done correctly, which is very helpful. Finally, I setup one of my iPhone examples to compile and run, and bobs your uncle (which he is quite ironically) it worked. So next weekend I'll start work on porting my chuck norris game as a starter to get use to developing for it.</p>
<p>There are so many things that can be done with an accelerometer that I hadn't thought of, I even found an example on the internet that uses the accelerometer in a MacBook Pro so you can move water about on your screen. Usually its just used to move the needle off the hard drive when there is a suddenly change of gravity. It can also be used to detect seismic movements, or used in conjuction with Expose so you can tap the side of your laptop and shift screens, I probably won't use this, I'm already afraid of smashing the glass screen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2008/12/08/iphone-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac Laptop</title>
		<link>http://www.lastrayofhope.com/2008/11/25/mac-laptop/</link>
		<comments>http://www.lastrayofhope.com/2008/11/25/mac-laptop/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 02:14:11 +0000</pubDate>
		<dc:creator>Kaluriel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.lastrayofhope.com/?p=36</guid>
		<description><![CDATA[I recently purchased a MacBook Pro laptop to go with my iPhone (The iPhone is a new environment for me to develop for), and although I've critised mac users for most of my time as a PC user, I can understand why they use it now, I prefer it over Windows now. I think the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lastrayofhope.com/wp-content/uploads/2008/11/macbookpro20081014.jpg"><img class="size-medium wp-image-71 alignleft" title="New MacBook Pro" src="http://www.lastrayofhope.com/wp-content/uploads/2008/11/macbookpro20081014-300x273.jpg" alt="" width="240" height="218" /></a></p>
<p>I recently purchased a MacBook Pro laptop to go with my iPhone (The iPhone is a new environment for me to develop for), and although I've critised mac users for most of my time as a PC user, I can understand why they use it now, I prefer it over Windows now.</p>
<p>I think the latest advantage of the new MacBook Pro range is that they are Intel cores, meaning they can now dual boot Vista, so if I want to, I can still use Windows (which I only really use now for Microsoft Visual Studio and SVN.</p>
<p><strong>Advantages to MacOSX</strong></p>
<ul>
<li>For a start, Mac OSX supports multiple desktops through an application known as Expose/Spaces. There are things you can get for Windows to do this, and Linux does this natively, but the Mac is the smoothest transition i've seen.</li>
<li>The battery life for a Mac is AMAZING. On my way to Bolton to return some library books, I was using Vista, it said I have 20 minutes left, I rebooted into MacOSX, I now have 50 minutes left. I've got this running for 5 hours unplugged with constant use programming. I've had it running even longer when not using it, with the battery barely losing any life. Not only that, but if you put the Mac to sleep by closing the lid, you can hot swap the batteries supposedly if you do it in 30 seconds. I have had reason to try this yet, but I'm looking forward to see if this is true.</li>
<li>No shoddy plastic/tft screen, the MacBook Pro uses tempered glass, which is a hell of a lot easier to clean smudges off.</li>
<li>The screen is backlit evenly by LEDs.</li>
<li>The keyboard is backlit based on the amount of light from the webcam. During the the keyboard is not light, but if I move my hand over the camera it turns on and get brighter the more I cover.</li>
<li>Interface Builder - what an amazing tool which just kicks the ass out of Microsoft's VS window tools. Not to mention with objective-c it can become very powerful.</li>
<li>Networking, no having to screw around for hours to get things to work, to share files in a folder, I just add it to the shared list. Looking up networks is practically instantaneous, compared with the 5 minute wait Windows gives to check 255 addresses. I've had one problem with the WiFi in Bolton, and that was my MSN didn't work in MacOSX, it did in Vista, but that was it.</li>
<li>My new laptop has a better Vista score than my PC.</li>
<li>MagLock power cable. So many motherboards for laptops get broken because of them chunky power adapters getting stood on or bent or pulled. The Mac laptops use a MagLock power cable that is held in place by a powerful magnet.</li>
<li>Cooling: I cannot believe still how cool the laptop runs, they really do use power efficiently and yet you wouldn't notice to use one. I left it on overnight to download something, and in the morning it was only slightly warm on the bottom, yet freezing on the top.</li>
<li>Style: They are nice looking, especially the integrated cdrom on the side, they use things such as MiniDisplay or something to that extent, and some tiny ethernet to retain their low profile, but I can live with it (it supports WiFi n).</li>
<li>Dictionary: Anything I type is has automatic OS spell checking ^-^.</li>
<li>Updates: No more Microsoft Updates telling me to restart every 4 hours (or 10 minutes on XP). I choose when I want to update, it notifies me once, and thats all, I can update whenever. And when I do update, if I choose not to restart, I do not constantly get told that I should restart, it understands that I'm busy, that is why I'm doing things, unlike Windows when typing suddenly it pops up and if you type a word with a Y in or press enter, oh no looks like it restarting.. again.</li>
<li>Terminal: I like how it comes with gcc, and I can just make a Makefile and source file and just compile in terminal.</li>
<li>Multitouch pad: I love this one, one finger is left click/move, two fingers is scroll in the direction I move and right click. And three fingers when in finder, allows me to move backward and forward (like alt+left/right in windows explorer). Not to mention the pinch maneuver to stretch and squish images.</li>
</ul>
<p><strong>Advantages of Windows</strong></p>
<ul>
<li>A lot of software is made for Windows only, which is annoying, I have to find either cross platform or Mac only downloads that are comparable, which isn't as hard as it may appear, but is a nuisance. Like TortoiseSVN, I haven't found a decent Mac version yet. I can always boot into Windows, but I do prefer MacOSX environment.</li>
<li>Maximize, I love the maximize button and miss it a lot when in MacOSX, I hate everytime I open a window I need to stretch it to fill my screen. Is it too much to ask to have something that does it automagically. Maybe I'll write a program to do it...</li>
<li>Print Screen, I hate the key combo for print screen on MacOSX, and I miss home/end.</li>
</ul>
<p>Really there is good and bad things about both, neither will get it right since they want to be different from the other, but at the moment, I'd have to say Mac is slightly in the lead with design for the user. Microsoft let itself down with Vista by trying to make it more shiny than useful. If anything they made things more difficult, like going to the place where you can disable network adapters, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lastrayofhope.com/2008/11/25/mac-laptop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

