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

<channel>
	<title>WatchHogStories</title>
	<atom:link href="http://watchhogstories.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://watchhogstories.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Thu, 08 Sep 2011 08:32:16 +0000</lastBuildDate>
	<language></language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='watchhogstories.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>WatchHogStories</title>
		<link>http://watchhogstories.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://watchhogstories.wordpress.com/osd.xml" title="WatchHogStories" />
	<atom:link rel='hub' href='http://watchhogstories.wordpress.com/?pushpress=hub'/>
		<item>
		<title>My First Canned Project</title>
		<link>http://watchhogstories.wordpress.com/2011/05/19/my-firts-canned-project/</link>
		<comments>http://watchhogstories.wordpress.com/2011/05/19/my-firts-canned-project/#comments</comments>
		<pubDate>Thu, 19 May 2011 09:32:50 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=57</guid>
		<description><![CDATA[Sometimes&#8230; Working in the games industry SUCKS&#8230; I just found out yesterday that the major NGP project we were working on has now been canned by Sony&#8230; All the hard work we&#8217;ve been putting in over the past several months to get the game ready for it&#8217;s big E3 debut was all in vein&#8230; &#38; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=57&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes&#8230; Working in the games industry SUCKS&#8230;</p>
<p>I just found out yesterday that the major NGP project we were working on has now been canned by Sony&#8230;<br />
All the hard work we&#8217;ve been putting in over the past several months to get the game ready for it&#8217;s big E3 debut was all in vein&#8230;<br />
&amp; even though I still have a job I can&#8217;t help but feel bad for all the talented young men &amp; women who have been let go as a result of this&#8230;</p>
<p>I know this kind of thing happens all the time in the games industry but it just sucks so bad when it finally happens to you &amp; your left wondering whether the complete lack of developer stability &amp; job security really makes this worth it in the long term&#8230; I wanna have a family someday too&#8230;</p>
<p>All I can do is pray for all those who got let go, that they can hopefully find something better &amp; (knowing how small this industry really is) rest on the knowledge that we&#8217;ll probably work together again sometime in the future&#8230;</p>
<p>Wish you all the best guys&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=57&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2011/05/19/my-firts-canned-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>Graphics Programming Tips: Branch Removal</title>
		<link>http://watchhogstories.wordpress.com/2011/05/06/graphics-programming-tips-branch-removal/</link>
		<comments>http://watchhogstories.wordpress.com/2011/05/06/graphics-programming-tips-branch-removal/#comments</comments>
		<pubDate>Fri, 06 May 2011 01:05:14 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=51</guid>
		<description><![CDATA[After a rather long hiatus I&#8217;ve decided to return once more to drop some new nuggets of learning I&#8217;ve picked up along my travels&#8230; In this post I&#8217;m  going to be dealing with the subject of modern graphics development &#38; a topic that alot of studios probably do but likely don&#8217;t tell anyone how they [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=51&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After a rather long hiatus I&#8217;ve decided to return once more to drop some new nuggets of learning I&#8217;ve picked up along my travels&#8230;</p>
<p>In this post I&#8217;m  going to be dealing with the subject of modern graphics development &amp; a topic that alot of studios probably do but likely don&#8217;t tell anyone how they do it (in detail)&#8230;</p>
<p>In modern day console hardware we generally find that dynamic branching sucks..<br />
This generally wouldn&#8217;t be a problem outside of the fact that sometimes when trying to maintain a well structured and organised shader library for your game, should you choose to go the uber shader route, you generally need to use some form of branches or switches to determine which features of the shader are used by each model material.<br />
In an ideal world we&#8217;d just stick a load of &#8220;if&#8221; statements in the shader code (like we do in most modern HLLs) and walk away, however the apparent cost of these simple branches on a piece of hardware thats built for maximising data throughput, can easily render our efforts prohibitively crippled performance-wise&#8230;</p>
<p>So what&#8217;s the solution?</p>
<p>In short, static branch removal&#8230;</p>
<p>Now those of you who are familiar with uber shaders will know exactly what this is however for the rest of you who don&#8217;t I&#8217;ll try to explain..<br />
The aim is to mitigate the cost of dynamic branches in your uber shader by effectively trading computation time for memory. This is done by simply compiling your shader multiple times, with each &#8220;permutation&#8221; defined by turning on or off various parts of/features in the code. These collections of shaders can then be used at run time so when a material is set to be rendered it chooses the correct permutation it needs &amp; runs that. This method provides the benefit of both maintaining the centralisation of code of the uber shader paradigm whilst providing a necessary means of significantly simplifying the compiled code for materials that only use a subset of the uber shader&#8217;s featureset.</p>
<p>Sounds easy right?</p>
<p>Not so much in reality as it can take some careful planning and, depending on the shader asset pipeline for your game, may be much harder to engineer and integrate than initially perceived.<br />
As far as the core implementation goes however, there are various approaches that can be taken in order to do this and since branch removal is performed as a pre-process before compilation, it can be done in any number of ways. The most flexible approach would probably be in setting up a tool that parses the shader source and locates branches on literal &#8220;if&#8221; statements on any feature switch/bool shader constant of interest, generating duplicate sources of the code with and without the conditional-code-to-be-executed present or not. This is however a very complex task &amp; not one I&#8217;d advice anyone to attempt as it would take a lot of work to get the parsing code robust enough to be useable in the real world.<br />
The alternative however is to get the compiler to do it for you by replacing branches of interest in the code with special macros defined which enable you to configure at compile time the code that is and isn&#8217;t present in the shader.<br />
In general I&#8217;ve performed this step by doing the following:-</p>
<ul>
<li>In the shader or a shader header file the preprocessor checks if a macro to define <strong>b</strong>ranch <strong>r</strong>emoval <strong>m</strong>acros (<strong>brm</strong>s) is defined &amp; if not, defines it setting it to false (e.g. think #ifndef DEFINE_BRANCHREMOVALMACROS  #define DEFINE_BRANCHREMOVALMACROS=0 etc..)</li>
<li>If your <strong>brm&#8217;</strong>s define macro is set to false, define your <strong>brm</strong>s to resolve to bog standard &#8220;if&#8221; statements (this allows an environment that&#8217;s not setup to deal with your branch removal system to still be able to compile and run your shader, useful if your artists are using it directly for visualising materials in Maya or FXComposer for example..) otherwise resolve them to a special case &#8220;if&#8221; statement where your condition is now a compiler input macro</li>
<li>During branch removal the compiler is setup and the <strong>brm&#8217;</strong>s define macro is set as a compiler macro define input as well as a list of branch condition input macros which resolve directly to either true or false depending on the current permutation you wish to generate</li>
<li>The compiler is then run multiple times with each run modifying the values of the branch condition input macros in order to generate different code for each permutation. This works as each branch condition now resolves fully to either &#8220;if( true )&#8221; or &#8220;if( false )&#8221; by the compiler, which will then proceed to optimise out/in code, mitigating the generation of any branch instructions in the compiled binary</li>
</ul>
<p>In order to do this your system still needs to be able to somehow analyse the shader source code and identify all the dynamic branch bools/switches used in the vertex and pixel programs as it&#8217;s these bools/switches you&#8217;ll be replacing with your macros when the time comes to compile. If your shaders are strictly Cg, NVIDIA provides a Cg API that allows you to quickly and conveniently interrogate your shaders in this way in order to retrieve the information needed.</p>
<p>Once you&#8217;ve compiled your list of switches you&#8217;ll need to categorise and tag your permutations so that you can identify what configuration of these bools each permutation represents. This will allow you to select the correct shader permutation at run-time for each material by matching the permutation&#8217;s switch configuration tag against that of the correct shader binary, probably via some sort of hashing setup.<br />
In the implementation I did, I used a 16-bit bitmask to represent the hashkey for each configuration of the uber shader where each bool was added into a switch-table (made up of a bit shift position and id pair) &amp; each one represented a single bit in the mask. This meant that no uber shader could define anymore than 16 switches however, given that the total number of permutations for any given shader program  is 2^n (where n = number of switches), I figured trying to generate more than 2^16 or 65,536 possible permutations would be undesirable at best (both in terms of run-time memory overhead and compilation-time).<br />
Also one of the benefits of using the 16-bit bitmask key was that the algorithm for generating the switch values for compiling the shader programs was simple as I could simply iterate from 0 to the maximum number of configurations of my shader, with each iteration simply taking the iterator index value, treating it as a bit mask and using those values to set each branch condition input macro values (e.g. MYMACROSWITCH=true or false).</p>
<p>Once you&#8217;ve got this far the only thing left to do is re-wire your run-time to load each group of permutations in-place of the old, single shader &amp; during render setup, as each material sets the values of the bools to configure the shader for use, the system internally takes each bool, searches the switch-table for the corresponding bit in the current active config mask and sets the bit to the value of the bool for the material. Then when it comes to render with the material, the current active config mask is used to index into the hash structure of shader program permutations to select the correct one for use&#8230;</p>
<p>That&#8217;s about it folks!</p>
<p>Not the most straight-forward  system to engineer however a little patience, thought and proper code design can go along way into helping you put something together thats both robust and scalable.<br />
Other factors to note also are generally related to the memory-footprint of the system and with so many permutations of each shader, you can quickly end up in a situation where it&#8217;s easy to run out of memory if you&#8217;re not careful. There are however steps that can be taken to reduce the memory load however these require a much more analytical approach as they&#8217;re generally much more specific to the needs of your team/game/engine (i.e. stripping permutations of shaders you know will never be used either because they don&#8217;t logically make sense given the semantics of the switches themselves, or because they&#8217;re known to never get assigned for use at run-time, if material parameters never change for example&#8230;)</p>
<p>For more details on this however you&#8217;ll probably want to check out an awesome tri-ace GDC presentation [<a title="SO4 - flexible shader managment &amp; postprocessing" href="http://research.tri-ace.com/Data/SO4_flexible_shader_managment_and_postprocessing.ppt" target="_blank">here</a>].</p>
<p>That&#8217;s all from me for now&#8230;</p>
<p>Hope this post has been useful and insightful&#8230;</p>
<p>More to come in future</p>
<p>- The Hog</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=51&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2011/05/06/graphics-programming-tips-branch-removal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>GDC 2010 &#8211; First Contact</title>
		<link>http://watchhogstories.wordpress.com/2010/03/12/gdc-2010-first-contact/</link>
		<comments>http://watchhogstories.wordpress.com/2010/03/12/gdc-2010-first-contact/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:29:23 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=37</guid>
		<description><![CDATA[Sooo I made it to GDC this year&#8230; First time out in San Fran too which is a great bonus. After arriving on Saturday and spending a couple of days recovering from jet lag &#38; getting accustomed to the surroundings we finally made it to the main conference sessions today. Had a couple of seminars; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=37&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sooo I made it to GDC this year&#8230;</p>
<p>First time out in San Fran too which is a great bonus. After arriving on Saturday and spending a couple of days recovering from jet lag &amp; getting accustomed to the surroundings we finally made it to the main conference sessions today. Had a couple of seminars; one from Blizzard on performance &amp; optimizations, one from Epic on building (or rather decorating) procedural buildings &amp; a couple on asset management systems (which were reassuring in that they kinda validated the way we&#8217;re handling it at Curve). Tried to make it to the Sony motion controller (i.e. Playstation Move) seminar but it was packed (seriously! waaaay too many students this year&#8230;) but we did manage to have a wander around the expo &amp; check out some cool stuff from:-</p>
<p>- God of War III (looked amazing)<br />
- Live demonstrations of the Playstation Move technology (seems very accurate &amp; responsive which is encouraging)<br />
- Nvidia &amp; Sony 3D stereoscopic games (tech works quite well&#8230;)<br />
- etc etc</p>
<p>All in all a rather packed out day &amp; more to come tomorrow &amp; Saturday&#8230;</p>
<p>Looking forward to it&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=37&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2010/03/12/gdc-2010-first-contact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone Games Development: Debugging Tips.. Part II</title>
		<link>http://watchhogstories.wordpress.com/2010/01/15/iphone-games-development-debugging-tips-part-ii/</link>
		<comments>http://watchhogstories.wordpress.com/2010/01/15/iphone-games-development-debugging-tips-part-ii/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 10:07:33 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=32</guid>
		<description><![CDATA[So I started working on string management &#38; support for my iPhone app &#38; reached that oh so familiar point where I realised &#8220;hey! wouldn&#8217;t it be great if I could debug wide-char/UTF-16 strings in xcode!&#8221;.. Well it turns out xcode doesn&#8217;t have any native support for this (good ol&#8217; xcode) but they do provide [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=32&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I started working on string management &amp; support for my iPhone app &amp; reached that oh so familiar point where I realised &#8220;hey! wouldn&#8217;t it be great if I could debug wide-char/UTF-16 strings in xcode!&#8221;..<br />
<span id="more-32"></span></p>
<p>Well it turns out xcode doesn&#8217;t have any native support for this (good ol&#8217; xcode) but they do provide a plug-in system for you to write your own custom data formatters. So I had a trudge through the <a title="Apple Dev Network - Debugging" href="http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeDebugging/220-Viewing_Variables_and_Memory/variables_and_memory.html#//apple_ref/doc/uid/TP40007057-CH9-SW5" target="_blank">relevant site</a> &amp;, using the sample formatter bundles they provide, tried to put a unsigned short* string formatter together..</p>
<p>Except I couldn&#8217;t get it to work.. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Every attempt I made at trying to get xcode to register the formatter &amp; format my data in the debugger window failed miserably. I was initially planning on writing a tutorial on this too but after several attempts I gave up &amp; decided to move on..</p>
<p>If I get a bit of time though I&#8217;d like to revisit this and try &amp; get it to work so I can put together a tutorial on what I did and how to overcome the gotcha&#8217;s I had to overcome. So watch this space I guess..</p>
<p>In the meantime if anyone else has had any experience withthis stuff &amp; wants to leave a few comments then that would be cool..</p>
<p>- The Hog</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=32&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2010/01/15/iphone-games-development-debugging-tips-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone Games Development: Debugging Tips.. Part I</title>
		<link>http://watchhogstories.wordpress.com/2010/01/02/iphone-games-development-debugging-tips-part-i/</link>
		<comments>http://watchhogstories.wordpress.com/2010/01/02/iphone-games-development-debugging-tips-part-i/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 22:32:05 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=28</guid>
		<description><![CDATA[After all long break from blogging I figure I&#8217;d get back into the habit again.. &#38; what better way to do so then beginning a new series on iPhone development. Over the next few months I&#8217;ll try to keep the blog up to date with useful tips &#38; tricks I&#8217;ve picked up along the way. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=28&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After all long break from blogging I figure I&#8217;d get back into the habit again..</p>
<p>&amp; what better way to do so then beginning a new series on iPhone development. Over the next few months I&#8217;ll try to keep the blog up to date with useful tips &amp; tricks I&#8217;ve picked up along the way. Hope it helps someone out!!</p>
<p><span id="more-28"></span></p>
<p>DEBUGGING TIPS</p>
<p>After wrestling furiously with xcode over the past several months I bumped into a few useful tid-bits that might help with debugging. I would like to vent about the god-awful nature of the IDE &amp; how much it makes me want to boil a pet in anger but I wont. I will say one thing though; boy have I learnt to appreciate the joys of Visual Studio &amp; programming in a Windows environment (VS2008 + Visual Assist + RockScroll = WIN). Now to the topic at hand:-</p>
<p>&#8220;EXC_BAD_ACCESS&#8221; Debugging</p>
<p>I ran into one of these babies recently &amp; after surfing the net for some info on the subject it looks like it&#8217;s the result of a signal sent from an active thread which hung on trying to release memory that has already been released (or something like that..). Now the great thing about this error is you don&#8217;t get any call stack or console output to tell you where things when kabloom but thankfully there are a few things you can try to in order to isolate the problem..</p>
<ul>
<li>Good &#8216;ol process of elimination - whittle down the last several code changes you made until you can home-in on the section of code that&#8217;s causing the problems. Not a great solution I know.. That&#8217;s why you should really try the next options:-</li>
<li>Set the NSZombieEnabled environment variable (with the value of &#8220;YES&#8221;) in your executable &#8211;  this will leave dummy object references around so when the system dies you can get a useful stack trace to the problem. You can set this by right clicking on your executable and navigating to the &#8220;Arguements&#8221; section of the &#8220;Get Info&#8221; page. Use the plus icon to add a new environment variable &amp; set the value accordingly. Also make sure the check box is ticked so that it&#8217;s active when you deploy. Personally I&#8217;ve found that this works fine provided the problem lives somewhere in your Obj-C code using any of the Cocoa frameworks but for me, the first time I encountered this issue it was hiding somewhere in my own C++ library code &amp; thus I ended up trying the next solution:-</li>
<li>Use Guard Malloc &#8211; This is a great little option that can catch invalid access crashes immediately as they occur but bear in mind it WILL slow down your application considerably when used. You can enable/disable it in the Run menu for xcode &amp; then just run the app, get it to crash &amp; it&#8217;ll take you directly to the call stack item which killed your flOw. Just make sure to disable it when you&#8217;re done otherwise you&#8217;ll end up worrying about where all that performance went..</li>
</ul>
<p>Hope some of these tid-bits can be of use to someone &amp; I&#8217;ll be posting more useful stabs of info as I continue my adventures in the land of iPhone development hades..</p>
<p>- The Hog</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=28&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2010/01/02/iphone-games-development-debugging-tips-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>The Prodigal Son Returns..</title>
		<link>http://watchhogstories.wordpress.com/2009/06/22/the-prodigal-son-returns/</link>
		<comments>http://watchhogstories.wordpress.com/2009/06/22/the-prodigal-son-returns/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 06:18:31 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=25</guid>
		<description><![CDATA[After a  looooong break I feel it&#8217;s time to drop back into blogging. Expecially since I&#8217;ve been getting a fair amount of unexpected traffic of late (I didn&#8217;t think anyone actually read this blog! thanks guys!!). The days have been pretty busy of late having been moved into the core engine team at my current [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=25&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After a  looooong break I feel it&#8217;s time to drop back into blogging. Expecially since I&#8217;ve been getting a fair amount of unexpected traffic of late (I didn&#8217;t think anyone actually read this blog! thanks guys!!).</p>
<p>The days have been pretty busy of late having been moved into the core engine team at my current studio and spending a vast amount of time learning what it takes to make a next-gen multi-platform engine tick and writing everything from particle editors to flash native rendering systems and more.</p>
<p>It is however time to get back into imparting some of the things i&#8217;ve learned &amp; so stay tuned for some more (hopefully) useful tutorials soon..</p>
<p>- The Hog</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=25&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2009/06/22/the-prodigal-son-returns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>Coding Practices &#8211; The Modulus Operator..</title>
		<link>http://watchhogstories.wordpress.com/2008/08/11/coding-practices-the-modulus-operator/</link>
		<comments>http://watchhogstories.wordpress.com/2008/08/11/coding-practices-the-modulus-operator/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 12:02:08 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=19</guid>
		<description><![CDATA[During my travels of programming video games for a living, I take great pleasure in the fulfillment of learning, exploring &#38; experimenting with algorithms &#38; the intricacies of programming languages everyday. Being a gamplay programmer I tend to find that I make regular use of the modulus operator &#38; it seems to be one of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=19&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During my travels of programming video games for a living, I take great pleasure in the fulfillment of learning, exploring &amp; experimenting with algorithms &amp; the intricacies of programming languages everyday. Being a gamplay programmer I tend to find that I make regular use of the modulus operator &amp; it seems to be one of those little tools that most people seem to overlook but can be really useful for a variety of problems. So I thought it might be a good idea to write a little article about my experiences with lil&#8217; old &#8216;%&#8217; &amp; hopefully it maybe able to encourage others share good practical uses for it too &amp; hopefully teach me a thing or two.</p>
<p>Before we begin I&#8217;d just like to make a note that I&#8217;m going to be using C# for all my examples considering this blog are generally c#/XNA-centric (however i&#8217;m pretty sure the same functions for the modulus operator can be applied in C/C++ &amp; most other languages)..</p>
<p><span id="more-19"></span></p>
<p><strong>So What Is The Ol&#8217; Mod..?</strong></p>
<p>The Modulus operator (sometimes termed &#8216;<a href="http://en.wikipedia.org/wiki/Modulo_operation">Modulo</a>&#8216; in computing fields) defines an operation which returns the remainder of a division of one number by another. So for example if we take the any dividend &#8216;a&#8217;, &amp; a divisor &#8216;n&#8217; then we can define a % n (a <em>modulo </em>n) as the remainder.</p>
<p>So if we have 7 % 3 then we look at it as an integer division of only the proportion of the numbers which can evaluate to a whole number. In this case we see that 7 / 3 doesn&#8217;t equal a whole number (equals 2.333) however 6/3 does (leaving no remainder) so to find the modulus of this expression we can treat 7 / 3 as 6/3 + remainder which tells us that the remainder is 1. Here&#8217;s a few more examples just to help you get your head around the idea:-</p>
<p>8 % 4 = 0<br />
12 % 16 = 12</p>
<p>So a few rules to bear in mind which will help you use the operator in practice:-</p>
<ol>
<li>if a / n equals a whole number then a % n  always equals 0</li>
<li>if a is less than n then a % n always equals a</li>
<li>if a is greater than n then a % n always equals a value between 1 and n-1</li>
</ol>
<p>As we can see these three simple rules help put things into perspective &amp; should now hopefully give us a really sound idea of some of the ways we can use the operator in practice.</p>
<p><strong>Let&#8217;s Get To The Main Course Already..!</strong></p>
<p>OK so now we&#8217;re ready to begin looking at some of the ways we can use the modulus operator &amp; it&#8217;s unique properties for something useful. Here&#8217;s what I have so far:-</p>
<p><strong>Wrap-Around &amp; Looping Number Iteration</strong></p>
<p>Sometimes in our travels we may need to iterate through an array in such a way that we can use an incremental index value that can be reset once it goes beyond the bounds of the array. Modulus is really useful for doing these tasks as, looking at rules 1, 2 &amp; 3, we can see that it&#8217;s zero-based in nature &amp; perfectly suited to this kind of &#8216;wrap-around&#8217; processing. So where we would have once had something like this</p>
<blockquote><p>// increment index &amp; return the item in the array<br />
i++;<br />
if (i &gt;= maxNumValues) i = 0;<br />
return foo[i];</p></blockquote>
<p>We can now substitute it for something like this</p>
<blockquote><p>// increment index &amp; return the item in the array<br />
return foo[ (i++)  %  maxNumValues ];</p></blockquote>
<p>Not a massive change but at least we&#8217;ve saved ourselves a few extra lines of code &amp; removed the branch statement.</p>
<p><strong>2D Coordinate Indexing</strong></p>
<p>On several occasions i&#8217;ve found that I needed to index data in a 2D grid format. Whether it be indexing tiles on a spritesheet or onscreen items in a grid there&#8217;s generally a tendencies to define the data in a &#8216;flattened&#8217; array format &amp; make the grid-like behaviour implicit in it&#8217;s use. So say we have a sprite sheet containing a grid of tiled sprites of size d x d pixels and arranged in a grid of 4 x 4 tiles. if we treat the tiles as a 1D array of data then we can index each value from left-to-right, going from top-to-bottom starting at 0 and ending at 15 (4 x 4 -1 since it&#8217;s zero-based). in this case if we wanted to get the coordinates of a tile as say index = 9 we could do the following</p>
<ul>
<li>count up the indices from 0 to 9 &amp; in each step:-</li>
<li> add 1 to x &amp; if x is greater than the number of tiles in a row then remove the number of tiles in a row from x &amp; add one to y</li>
<li>multiply x by the tileWidth &amp; y by the tileHeight &amp; return the two values</li>
</ul>
<p>This will work if you use a while loop and branch statements but it will end up taking up several lines of code &amp; could end up being overly complex. However if we use the modulus operator we can do it much quicker/cleaner</p>
<blockquote><p>x = index % numTilesRow;<br />
y = ( index &#8211; x ) / numTilesRow;<br />
return new TileDims( x * tileW, y * tileH );</p></blockquote>
<p>I added the struct TileDims just for illustration purposes but beyond that it&#8217;s a pretty neat &amp; cheap solution. Also we can reverse this &amp; retrieve the index from the coordinate values in a simple fashion</p>
<blockquote><p>// return the index for x &amp; y<br />
return x + ( numTilesRow * y );</p></blockquote>
<p><strong>Detemining Odd or Even Numbers</strong></p>
<p>We can use % to determine whether a number is odd or even by examining exactly what it is we mean by &#8216;odd&#8217; &amp; by &#8216;even&#8217; first. by definition an odd number is any number that cannot divide into 2 (i.e. odd / 2 != wholeNum). With this in mind we can do a simple check for this</p>
<blockquote><p>// odd number check<br />
if ( num % 2 != 0)<br />
// odd number..<br />
else<br />
// even number..</p></blockquote>
<p>Simple to use but it can save alot of time trying to determine whether this is true using a brute force, iterative approach.<br />
<strong>How Many 10s, 100s etc In A Decimal Value</strong></p>
<p>Sometimes we may need to figure out how many 10s are in a number for example, which can be especially useful of you need to separate the digits of a number for rendering on multiple quads. Again the implementation is pretty simple</p>
<blockquote><p>// find the number of 10s &amp; 100s in num<br />
tens = ( num &#8211; (num % 10) ) / 10;<br />
hundrds = ( num &#8211; (num % 100) ) / 100;</p></blockquote>
<p>So that&#8217;s it from me!</p>
<p>Please feel free to drop any comments you have &amp; also I&#8217;d love to hear about any other neat little % tricks you&#8217;ve discovered during your own coding travels..!<br />
- The Hog</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/watchhogstories.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/watchhogstories.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=19&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2008/08/11/coding-practices-the-modulus-operator/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>Moving On..</title>
		<link>http://watchhogstories.wordpress.com/2008/07/28/moving-on/</link>
		<comments>http://watchhogstories.wordpress.com/2008/07/28/moving-on/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:51:32 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[menu system]]></category>
		<category><![CDATA[smc]]></category>
		<category><![CDATA[solace]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=12</guid>
		<description><![CDATA[Life is good.. Well ok I guess it isn&#8217;t all the time but no matter how bad things might get, you always get those instances (however brief) that things start looking up to the point where you start to wonder &#8220;Hmmm.. Many things might turn out OK after all..&#8221; Take these past few months for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=12&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Life is good..</p>
<p>Well ok I guess it isn&#8217;t all the time but no matter how bad things might get, you always get those instances (however brief) that things start looking up to the point where you start to wonder &#8220;Hmmm.. Many things might turn out OK after all..&#8221;</p>
<p>Take these past few months for instance,<br />
I&#8217;ve been busy as a beaver organizing my wedding, knocking out PSP code for the current project at work &amp; more importantly doing quite a bit of XNA development.<br />
So it came as icing on the cake when MS recently announced their plans to monetize their Community Games platform launching this holiday. I&#8217;d always dreamed of shipping a nice little polished game for people the world over to enjoy &amp; now it seems that not only can a little dedication &amp; hard work secure my dreams coming true, but they may also net me a bit of pocket money in the process..</p>
<p>In such an exciting time it only helped both motivate and accelerate my drive to get the two XNA projects i&#8217;m working on out the door. Also I figure now would be as good a time as any to post a little progress on one of them:-</p>
<div id="attachment_13" class="wp-caption aligncenter" style="width: 428px"><a href="http://watchhogstories.files.wordpress.com/2008/07/menu_screen.jpg"><img class="size-full wp-image-13" src="http://watchhogstories.files.wordpress.com/2008/07/menu_screen.jpg?w=418&#038;h=244" alt="solace engine menu test" width="418" height="244" /></a><p class="wp-caption-text">solace engine menu test</p></div>
<p>It&#8217;s a test render of the early menu system for the game. The design is essentially a dial mechanism (apologies for the not-so-l337-programmer-art..) that rotates persistently &amp; all the menu options are procedurally distributed as label links around the screen. So far it&#8217;s fully functional (complete with transitions &amp; floaty, turny dynamics..) &amp; adding new menu screens are as easy as creating a new menu overlay object &amp; adding strings for each menu element.</p>
<p>On the other side of the development field..</p>
<p>After a bit of a long break, me &amp; rich have been working rigorously to get SMC into a state where it&#8217;s playable &amp; it&#8217;s really coming along now. We&#8217;ll be posted some new updates on <a href="http://houseofsmash.blogspot.com">houseofsmash</a> soon so don&#8217;t forget to look out for updates in the coming days/weeks..</p>
<p>P.S.</p>
<p>After developing the current engine (which I&#8217;m using on both my current projects) for over a year now it&#8217;s really been an interested ride for me that&#8217;s helped me to learn alot. I&#8217;m looking forward to taking the platform from strength to strength as development progresses &amp; I have alot of plans for what I would like to do with it even after I complete (or bust) the two current projects..</p>
<p>Stay tuned for more soon!</p>
<p>- The Hog</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/watchhogstories.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/watchhogstories.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=12&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2008/07/28/moving-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>

		<media:content url="http://watchhogstories.files.wordpress.com/2008/07/menu_screen.jpg" medium="image">
			<media:title type="html">solace engine menu test</media:title>
		</media:content>
	</item>
		<item>
		<title>Im Back&#8230;</title>
		<link>http://watchhogstories.wordpress.com/2008/06/13/im-back/</link>
		<comments>http://watchhogstories.wordpress.com/2008/06/13/im-back/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 14:40:33 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/?p=11</guid>
		<description><![CDATA[Well it&#8217;s been a while since my last post&#8230; I&#8217;ve been pretty busy since getting on with life, preparing to get married &#38; also laying the foundations for my major XNA project. SMC is still around &#38; I keep jumping back to it where I can but beyond that I&#8217;ve been fleshing out the editor [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=11&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well it&#8217;s been a while since my last post&#8230; I&#8217;ve been pretty busy since getting on with life, preparing to get married &amp; also laying the foundations for my major XNA project. SMC is still around &amp; I keep jumping back to it where I can but beyond that I&#8217;ve been fleshing out the editor for my other project; Encrypt..</p>
<p>So far I&#8217;ve got the character edit suite fully fleshed out &amp; operational with only some minor tweaks needed going forward.. I&#8217;m currently working on the animation systems which I hope to share between the editor &amp; the game &amp; so hopefully once thats in &amp; setup i&#8217;ll be able to slap up a couple of test animations &amp; a character for when I start working on the game itself.. I&#8217;ll be looking to post some media soon so watch this space for more info.</p>
<p>Cheers!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/watchhogstories.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/watchhogstories.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=11&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2008/06/13/im-back/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>
	</item>
		<item>
		<title>New Developments&#8230;</title>
		<link>http://watchhogstories.wordpress.com/2007/10/29/new-developments/</link>
		<comments>http://watchhogstories.wordpress.com/2007/10/29/new-developments/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 20:16:04 +0000</pubDate>
		<dc:creator>Oladotun-Rominiyi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://watchhogstories.wordpress.com/2007/10/29/new-developments/</guid>
		<description><![CDATA[Well life&#8217;s been kinda crazy since I moved down to london to start my new job down here.. I&#8217;ve kinda fallen a little behind on myXNA work in favour of catching up with real life. Apart from getting engaged, moving in with my twin bro, completing a multitude of Xbox360 titles (including Halo3) &#38; developing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=10&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well life&#8217;s been kinda crazy since I moved down to london to start my new job down here.. I&#8217;ve kinda fallen a little behind on myXNA work in favour of catching up with real life. Apart from getting engaged, moving in with my twin bro, completing a multitude of Xbox360 titles (including Halo3) &amp; developing a complete viseme generation pipeline &amp; lip sync animation framework for our PSP title at work, I&#8217;ve been keeping myself busy trying to catch up on lost time with SMC as well as working on a little something else&#8230;:</p>
<p><img src="http://img.photobucket.com/albums/v687/ArchangelMorph/Orbit.jpg" alt="Orbit" align="middle" border="1" height="236" hspace="0" vspace="0" width="422" /></p>
<p>Orbit is a 2D puzzle game I started working on one day when I was bored at work.. It really speaks something regarding the productivity of XNA as a development platform considering I got as far as this with only a few days of development time.. Then again I did have the benefit of using the engine i&#8217;ve been working on for SMC for the past several months and so I guess it did kind of make life alot easier. I guess it also says something about the flexibility of my little engine there too! The game is fairly simple so far &amp; most of the basic functionality is there. The graphics are currently placeholder (since some of them were ripped from the inet&#8230;) &amp; i&#8217;m sure as soon as I can find an artist I can redo them <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Anyways now I finally gotaround to having the internet setup at home i&#8217;ll be getting back into SMC in full swing and then maybe if I get some free time I can finish off orbit too..</p>
<p>Until then!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/watchhogstories.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/watchhogstories.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watchhogstories.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watchhogstories.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watchhogstories.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watchhogstories.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watchhogstories.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watchhogstories.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watchhogstories.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watchhogstories.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watchhogstories.wordpress.com&amp;blog=1107197&amp;post=10&amp;subd=watchhogstories&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://watchhogstories.wordpress.com/2007/10/29/new-developments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/686657622caaa72fefb56a76bf938ac5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">oladotunr</media:title>
		</media:content>

		<media:content url="http://img.photobucket.com/albums/v687/ArchangelMorph/Orbit.jpg" medium="image">
			<media:title type="html">Orbit</media:title>
		</media:content>
	</item>
	</channel>
</rss>
