<?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>www.sjwaller.com &#187; Open GL</title>
	<atom:link href="http://www.sjwaller.com/category/projects/open-gl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sjwaller.com</link>
	<description></description>
	<lastBuildDate>Wed, 07 Dec 2011 18:40:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>blockShifter</title>
		<link>http://www.sjwaller.com/projects/open-gl/blockshifter/</link>
		<comments>http://www.sjwaller.com/projects/open-gl/blockshifter/#comments</comments>
		<pubDate>Wed, 03 Jan 2007 16:32:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open GL]]></category>

		<guid isPermaLink="false">http://robots.sjwaller.com/?p=249</guid>
		<description><![CDATA[<a href="http://www.sjwaller.com/projects/open-gl/blockshifter/"><img align="right" hspace="5" width="85" height="85" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter1-150x150.jpg" class="alignright tfe wp-post-image" alt="blockShifter1" title="blockShifter1" /></a>An OpenGL based application written in C++. The main idea is you have to shift the blocks around a grid to match the pattern outlined on the floor.]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<th>current version</th>
<td>0.1.6</td>
</tr>
<tr>
<th>binary</th>
<td><a href="http://www.sjwaller.com/resources/projects/blockShifter/binary/blockShifter016.zip">download</a>(149kb)</td>
</tr>
<tr>
<th>sourcecode</th>
<td>not available</td>
</tr>
<tr>
<th>start date</th>
<td>January, 2007</td>
</tr>
<tr>
<th>platform</th>
<td>Windows</td>
</tr>
<tr>
<th>language</th>
<td>C++ (OpenGL)</td>
</tr>
<tr>
<th>description</th>
<td colspan="2">An OpenGL based application written in C++. The main idea is you have to shift the blocks around a grid to match the pattern outlined on the floor.</td>
</tr>
</tbody>
</table>
<div>
<h3>What is it?</h3>
<p>My first attempt at making a game in OpenGL and C++. This took me about a month to realise, learn and program &#8211; I spent most of the Christmas break doing this while visiting my mum. The game isn&#8217;t supposed to be amazing and it only has eight levels. It was in fact an exercise in putting together a game with multiple levels etc. Funnily enough the hardest thing I found wasn&#8217;t so much getting my head around OpenGL or C++, but trying to work out a good control mechanism.</p>
<p>Anyway, feel free to download and have a play.</p>
<h3>Where can I get it?</h3>
<p>Click the link next to &#8216;binary&#8217; in the project information box. I haven&#8217;t made the sourcecode available yet as it&#8217;s much too buggy in its current state. However, if I ever go back to fix the issues previously mentioned then I may well take the time to clean it up and make it available.</p>
<h3>What do I do?</h3>
<p>The basic gameplay involves moving blocks around the grid to fill up the pattern outlined in blue.</p>
<h3>What are the controls?</h3>
<ul>
<li>Q &#8211; rotate selected piece left</li>
<li>W &#8211; rotate selected piece right</li>
<li>A and S &#8211; cycle pieces</li>
<li>Cursor Keys &#8211; move selected piece</li>
</ul>
</div>
<div>

<a href='http://www.sjwaller.com/projects/open-gl/blockshifter/attachment/blockshifter1/' title='blockShifter1'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter1-150x150.jpg" class="attachment-thumbnail" alt="blockShifter1" title="blockShifter1" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/blockshifter/attachment/blockshifter2/' title='blockShifter2'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter2-150x150.jpg" class="attachment-thumbnail" alt="blockShifter2" title="blockShifter2" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/blockshifter/attachment/blockshifter3/' title='blockShifter3'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter3-150x150.jpg" class="attachment-thumbnail" alt="blockShifter3" title="blockShifter3" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/blockshifter/attachment/blockshifter4/' title='blockShifter4'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter4-150x150.jpg" class="attachment-thumbnail" alt="blockShifter4" title="blockShifter4" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/blockshifter/attachment/blockshifter5/' title='blockShifter5'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter5-150x150.jpg" class="attachment-thumbnail" alt="blockShifter5" title="blockShifter5" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/blockshifter/attachment/blockshifter6/' title='blockShifter6'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/blockShifter6-150x150.jpg" class="attachment-thumbnail" alt="blockShifter6" title="blockShifter6" /></a>

</div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.sjwaller.com/projects/open-gl/blockshifter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Island</title>
		<link>http://www.sjwaller.com/projects/open-gl/island/</link>
		<comments>http://www.sjwaller.com/projects/open-gl/island/#comments</comments>
		<pubDate>Wed, 12 Apr 2006 16:26:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open GL]]></category>

		<guid isPermaLink="false">http://robots.sjwaller.com/?p=245</guid>
		<description><![CDATA[<a href="http://www.sjwaller.com/projects/open-gl/island/"><img align="right" hspace="5" width="85" height="85" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island2-150x150.jpg" class="alignright tfe wp-post-image" alt="island2" title="island2" /></a>An OpenGL based application written in C++. An Ogre calculates a path to locate a target within randomly generated islands.]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<th>current version</th>
<td>0.0.7</td>
</tr>
<tr>
<th>binary</th>
<td><a href="http://www.sjwaller.com/resources/projects/island/binary/island.0.0.7.zip">download</a> (561kb)</td>
</tr>
<tr>
<th>sourcecode</th>
<td>not available</td>
</tr>
<tr>
<th>start date</th>
<td>April, 2006</td>
</tr>
<tr>
<th>platform</th>
<td>Windows</td>
</tr>
<tr>
<th>language</th>
<td>C++ (OpenGL)</td>
</tr>
<tr>
<th>description</th>
<td>An OpenGL based application written in C++. An Ogre calculates a path to locate a target within randomly generated islands.</td>
</tr>
</tbody>
</table>
<h3>What is it?</h3>
<div>
<p>This demo combines various techniques including: loading/animating a 3D model (MD2 mesh), A* pathfinding algorithm, finite state machine, dynamic landscape generation.</p>
<h3>Overview:</h3>
<h4>A* PathFinding:</h4>
<p>After a few weeks of head scratching, I finally managed to get my head around the A* PathFinding algorithm &#8211; now I can successfully get my game entities to calculate a path to a target and avoid any &#8216;unwalkable&#8217; terrain/object.</p>
<p>I used the following tutorial to help understand this really helpful technique: <a title="A* Pathfinding for Beginners" href="http://www.policyalmanac.org/games/aStarTutorial.htm">A* Pathfinding for Beginners</a></p>
<h4>MD2 model animation:</h4>
<p>You may recognise the Ogre from that old chestnut that is Quake II. Well, you&#8217;re right &#8211; it is the same guy! Basically I&#8217;m not very good at modelling &#8211; or really I&#8217;m more interested in other aspects of game programming at the moment <img src='http://www.sjwaller.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  so I used this.</p>
<p>Also, the MD2 model format is really easy to deal with &#8211; and is covered extensively in the following book: <a title="OpenGL Game Programming" href="http://www.amazon.co.uk/exec/obidos/ASIN/0761533303/026-4825230-2818000">OpenGL Game Programming</a></p>
<h4>Finite State Machine (FSM):</h4>
<p>For the first time I&#8217;ve implemented a finite state machine (FSM). This makes it much easier to manage the different actions my game entities can be doing. In this demo the Ogre can be either Searching, Travelling, Resting or Wandering.</p>
<p>For more information on state machines and other AI techniques, I highly recommend reading through this site: <a title="ai-junkie" href="http://www.ai-junkie.com/">ai-junkie</a></p>
<h4>Dynamic Landscape:</h4>
<p>Finally, the dynamic landscape generation is based on a fractal generated heightmap feeding a triangle-strip mesh. This is textured with a simple bitmap filtered with different colours depending on height. The water is again a simple bitmap with a degree of transparency. The landscape isn&#8217;t really dynamic (although it is based on the destructabe landscape I used in my tank demo) &#8211; but it is randomly generated each time the map is reset. However, I am thinking of trying to get to grips with &#8216;Level of Detail&#8217; techniques to speed up the landscape rendering.</p>
<h3>Where can I get it?</h3>
<p>Click the link next to &#8216;binary&#8217; in the project information box. No sourcecode yet until it&#8217;s much tidier. You can however follow the links I mentioned earlier to find some great examples of the various techniques.</p>
<h3>What do I do?</h3>
<p>Just sit and watch the Ogre follow the path to the target &#8230; Joy! You can also interact to some extent:</p>
<h3>What are the controls?</h3>
<ul>
<li>SPACEBAR &#8211; regenerate map</li>
<li>M &#8211; overhead map on/off</li>
<li>I &#8211; information box on/off</li>
<li>C &#8211; mini-cam on/off</li>
<li>T &#8211; landscape texture on/off</li>
<li>1 &#8211; Search/Travel state</li>
<li>2 &#8211; Work state</li>
<li>3 &#8211; Wander state &#8211; use cursors to move</li>
</ul>
<h3>What next?</h3>
<ul>
<li>Find a better way to calculate the rotation toward the next waypoint!</li>
<li>Make the landscape render faster &#8211; implement LOD?</li>
<li>Create more actions depending on state. Want to get him doiong more interesting things than just finding a target.</li>
<li>Introduce more objects into the scene &#8211; trees, boulders etc. Use a secondary obstacle avoidance routine to work with the pathfinding to avoid these.</li>
<li>Get some sleep ..?</li>
</ul>
</div>

<a href='http://www.sjwaller.com/projects/open-gl/island/attachment/island1/' title='island1'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island1-150x150.jpg" class="attachment-thumbnail" alt="island1" title="island1" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/island/attachment/island2/' title='island2'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island2-150x150.jpg" class="attachment-thumbnail" alt="island2" title="island2" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/island/attachment/island3/' title='island3'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island3-150x150.jpg" class="attachment-thumbnail" alt="island3" title="island3" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/island/attachment/island4/' title='island4'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island4-150x150.jpg" class="attachment-thumbnail" alt="island4" title="island4" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/island/attachment/island5/' title='island5'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island5-150x150.jpg" class="attachment-thumbnail" alt="island5" title="island5" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/island/attachment/island6/' title='island6'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/island6-150x150.jpg" class="attachment-thumbnail" alt="island6" title="island6" /></a>

<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.sjwaller.com/projects/open-gl/island/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tanks</title>
		<link>http://www.sjwaller.com/projects/open-gl/tanks/</link>
		<comments>http://www.sjwaller.com/projects/open-gl/tanks/#comments</comments>
		<pubDate>Fri, 10 Mar 2006 16:20:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open GL]]></category>

		<guid isPermaLink="false">http://robots.sjwaller.com/?p=226</guid>
		<description><![CDATA[<a href="http://www.sjwaller.com/projects/open-gl/tanks/"><img align="right" hspace="5" width="85" height="85" src="http://www.sjwaller.com/wp-content/uploads/2010/03/tanks1-150x150.jpg" class="alignright tfe wp-post-image" alt="tanks1" title="tanks1" /></a>Tanks is an attempt at using various techniques such as basic AI algorithms and projectile physics, destructable terrain etc.]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<th>current version</th>
<td>0.4.2</td>
</tr>
<tr>
<th>binary</th>
<td><a href="http://www.sjwaller.com/resources/projects/tanks/binary/tanks.0.4.2.zip">download</a>(143kb)</td>
</tr>
<tr>
<th>sourcecode</th>
<td>not available</td>
</tr>
<tr>
<th>start date</th>
<td>March, 2006</td>
</tr>
<tr>
<th>platform</th>
<td>Windows</td>
</tr>
<tr>
<th>language</th>
<td>C++ (OpenGL)</td>
</tr>
<tr>
<th>description</th>
<td>Tanks is an attempt at using various techniques such as basic AI algorithms and projectile physics, destructable terrain etc.</td>
</tr>
</tbody>
</table>
<h3>What is it?</h3>
<p>Currently nothing much!</p>
<h3>Where can I get it?</h3>
<p>Click the link next to &#8216;binary&#8217; in the project information box.</p>
<h3>What do I do?</h3>
<p>Watch as the landscape becomes demolished as the fighting machines wreck their havoc. Gape in awe as the tanks locate their nearest neighbour, turn and shoot :-/</p>
<h3>What are the controls?</h3>
<ul>
<li> TAB &#8211; cycle tanks</li>
</ul>

<a href='http://www.sjwaller.com/projects/open-gl/tanks/attachment/tanks1/' title='tanks1'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/tanks1-150x150.jpg" class="attachment-thumbnail" alt="tanks1" title="tanks1" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/tanks/attachment/tanks2/' title='tanks2'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/tanks2-150x150.jpg" class="attachment-thumbnail" alt="tanks2" title="tanks2" /></a>
<a href='http://www.sjwaller.com/projects/open-gl/tanks/attachment/tanks3/' title='tanks3'><img width="150" height="150" src="http://www.sjwaller.com/wp-content/uploads/2010/03/tanks3-150x150.jpg" class="attachment-thumbnail" alt="tanks3" title="tanks3" /></a>

<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.sjwaller.com/projects/open-gl/tanks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

