<?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/"
	>

<channel>
	<title>No More Coins</title>
	<atom:link href="http://nomorecoins.info/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://nomorecoins.info/blog</link>
	<description></description>
	<pubDate>Sun, 06 Jun 2010 23:38:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Fun with Fractals</title>
		<link>http://nomorecoins.info/blog/fun-with-fractals/</link>
		<comments>http://nomorecoins.info/blog/fun-with-fractals/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 23:38:18 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[Mathematics]]></category>

		<category><![CDATA[XNA]]></category>

		<category><![CDATA[fractals]]></category>

		<category><![CDATA[GPU]]></category>

		<category><![CDATA[mandelbrot]]></category>

		<category><![CDATA[shaders]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=217</guid>
		<description><![CDATA[<a href="/blog/wp-content/uploads/zoomMandelbrotGPU.png"><img alt="" src="/blog/wp-content/uploads/zoomMandelbrotGPU.png" title="Mandelbrot GPU Screenshots" class="aligncenter" width="450" height="126" /></a>
This week I decided to go over a short research essay I did for 'Numerical Methods &#038; Advanced Mathematical Modeling' at Trinity College.
In it I go over fractals, their origin, use and so on, but I'll spare you the boring details and go directly to the fun part, sticking it on the GPU (and on the 360), namely the Mandelbrot set.]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/wp-content/uploads/zoomMandelbrotGPU.png"><img alt="" src="/blog/wp-content/uploads/zoomMandelbrotGPU.png" title="Mandelbrot GPU Screenshots" class="aligncenter" width="450" height="126" /></a><br />
This week I decided to go over a short research essay I did for &#8216;Numerical Methods &#038; Advanced Mathematical Modeling&#8217; at Trinity College.<br />
In it I go over fractals, their origin, use and so on, but I&#8217;ll spare you the boring details and go directly to the fun part, sticking it on the GPU (and on the 360), namely the Mandelbrot set.</p>
<h1>Some history&#8230;</h1>
<p>For those who don&#8217;t know, a fractal can be roughly described as &#8220;a fragmented geometric shape that can be split into parts, each of which is (at least approximately) a reduced-size copy of the whole&#8221;. This term was coined by Mandelbrot himself, who used them to study natural shapes, like in his paper &#8220;How Long is the Coast of Britain?&#8221; tackling the coastline paradox. In 1980, Mandelbrot defined the Mandelbrot set, a set of parameters for which a certain Julia set is connected. The Mandelbrot set is still one of the most popular fractals ever discovered.</p>
<h1>The algorithm&#8230;</h1>
<p>I&#8217;d like to start out by naming my sources. One of my first references for implementing the Mandelbrot on the GPU was Shawn Hargreaves (you can check his article <a href="http://blogs.msdn.com/b/shawnhar/archive/2006/12/11/sixty-fractals-per-second.aspx">here</a>, great stuff). Another reference worth having a look was Linas Vepstas&#8217; article on renormalizing the Mandelbrot escape (see <a title="Renormalized Escape Time Algorithm" href="http://linas.org/art-gallery/escape/ escape.html">here</a>). Check the paper for further references.<br />
So, how do we get the Mandelbrot on a shader in the first place? First let&#8217;s go over ways to approximate the Mandelbrot numerically. The most popular way of estimating and representing the Mandelbrot set is to use the escape time algorithm. The escape time algorithm calculates evaluates the connectivity of each set from the famous quadratic polynomial</p>
<p><img alt="" src="/blog/wp-content/uploads/mandelbrotPoly.png" title="Mandelbrot quadratic polynomial" class="aligncenter" width="92" height="22" /><br />
on the plotted area by testing whether or not the orbit of its starting point tends towards infinity under iteration. To do this we test the values against an escape condition. If that condition is reached then the tested set is considered disconnected (its orbit tents towards infinity) and it&#8217;s disregarded from the set. If, on the other hand, the escape condition is never reached after a maximum number of iterations, it is assumed that its orbit does not tend towards infinity and it is thus included into the set.<br />
There are different test conditions, but the most common condition (for its simplicity) bases itself on the fact that no complex number of <i>&#8216;z = x + yi&#8217;</i> where <i>&#8216;x > 2&#8242;</i> or <i>&#8216;y > 2&#8242;</i> can be part of the set.<br />
So now that we know how to estimate the set, let&#8217;s see how we can represent it using the escape time algorithm. One of the most common ways would be to assign a binary set of colours (usually black and white) depending on whether or not the point is considered part of the set. That&#8217;s not very exciting though, we want pretty pictures, with all the shiny colours, so instead we use the number of iterations (how fast a given set&#8217;s orbit tended towards infinity) as an index for our colouring from a colour map, this map can be defined by an artist to make it all &#8216;ooooh&#8217;.<br />
Taking all the stuff we discussed above we can express an algorithm as such&#8230;</p>
<p><img alt="" src="/blog/wp-content/uploads/mandelbrot1.png" class="aligncenter" width="307" height="132" /><br />
Where complex values <i>z</i> and <i>c</i> compose the above mentioned quadratic polynomial, e defines the escape radius and m defines the maximum number of iterations.</p>
<h1>Complex numbers 101</h1>
<p>That&#8217;s all very nice in paper but we can&#8217;t just write that down on our shader straight away, so for those without alot of background on complex numbers, let&#8217;s break them down to size.<br />
A complex number is defined by two parts, real and imaginary. The usual notation for these numbers is <i>&#8216;a + bi&#8217;</i> where a and b are real numbers and i represents the imaginary unit. We&#8217;re going to plot a certain area of the complex plane with the above algorithm. The complex plane is a two-dimensional Cartesian coordinate system where a complex number represents a point or vector on said plane.<br />
Let&#8217;s look at some basic associative, commutative and distributive complex number operations to help us flesh out our final algorithm.</p>
<p>For a complex number <i>z = a + bi</i> and a second complex number<br />
<i>w = c + di</i> we define the following operations&#8230;</p>
<ul style="margin-left:2.5em">
<li>Addition:<img alt="" src="/blog/wp-content/uploads/cn1.png" title="Complex Numbers 101" class="aligncenter" width="317" height="20" /></li>
<li>Multiplication:<img alt="" src="/blog/wp-content/uploads/cn2.png" title="Complex Numbers 101" class="aligncenter" width="306" height="18" /><br />
from this we can conclude&#8230;<img alt="" src="/blog/wp-content/uploads/cn3.png" title="Complex Numbers 101" class="aligncenter" width="278" height="21" /></li>
<li>Absolute value:<img alt="" src="/blog/wp-content/uploads/cn4.png" title="Complex Numbers 101" class="aligncenter" width="100" height="24" /></li>
</ul>
<p><br/>And this way we can get a shader friendly algorithm like the following&#8230;</p>
<p><img alt="" src="/blog/wp-content/uploads/mandelbrot2.png" title="Mandelbrot Pseudocode (solved)" class="aligncenter" width="305" height="149" /></p>
<h1>Pretty colours&#8230;</h1>
<p>This is great, but we can get even nicer results by getting rid of the step effects we got from using an integer value for mapping our colour values.<br />
To solve this we use the renormalized escape time algorithm defined by Linas Vepstas where the colour index is defined by&#8230;</p>
<p><img alt="" src="/blog/wp-content/uploads/normalizedEscapeTime.png" class="aligncenter" width="192" height="42" /><br />
A great explanation of this is given by Earl L. Hinrichs (quoted from Linas Vepstas).<br />
<i>&#8220;Ignoring the +c in the usual formula, the orbit point grows by z = z^2. So we have the progression z, z^2, z^4, z^8, z^16, etc. Iteration counting amounts to assigning an integer to these values. Ignoring a multiplier, the log of this sequence is: 1, 2, 4, 8, 16. The log-log is 0, 1, 2, 3, 4 which matches the integer value from the iteration counting. So the appropriate generalization of the discrete iteration counting to a continuous function would be the double log.&#8221;.</i></p>
<h1>The code&#8230;</h1>
<p>Now its just a matter of converting the algorithm into code. One optimization that&#8217;s worth noting here is the use of a texture lookup as a colour map. This can make use of a wider range of colours than the ones available in the map itself through the graphics card&#8217;s filtering, which can be pretty much free. In my example I only make use of one dimension when applying the colour map, I left it at that for the sake of simplicity. Also, it would be extremely easy for an artist to edit the colour map applied to the fractal.</p>
<p><a class="dirtycode" title="Code" href="javascript:toggleLayer('dirtycode2171');">Shader Source Code</a></p>
<div id="dirtycode2171" class="dirtycode"><code>// Calculate initial point<br />
float2 c = (texCoord - 0.5) * Zoom * float2(1, Aspect) - Pan;<br />
float2 v = c;<br />
<br />// Check for connectivity<br />
// Escape Time Method<br />
// IF absolute of Z &gt; Escape Radius<br />
- Disconnected (Tending towards infinity)<br />
// OR Iterations == Iteration Limit<br />
- Connected (Orbit bounded, assumed to be not tending towards infinity)<br />
int n = 0;<br />
while( v.x*v.x + v.y*v.y &lt;= EscapeRadiusSquared &amp;&amp; n &lt; Iterations )<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Evaluate function: Fc(x) = z^2 + c<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = float2(v.x * v.x - v.y * v.y, v.x * v.y * 2) + c;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n++;<br />
}<br />
<br />// IF disconnected, calculate color from number of iterations<br />
float4 color = 0;<br />
if(n &lt; Iterations)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Renormalize interation count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // a couple of extra iterations helps<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // decrease the size of the error term.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = float2(v.x * v.x - v.y * v.y, v.x * v.y * 2) + c; n++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = float2(v.x * v.x - v.y * v.y, v.x * v.y * 2) + c; n++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float absolute = sqrt(v.x*v.x + v.y*v.y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float mu = n - log(log(absolute))/log(2); // double log (0,1,2,&#46;..)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Fetch color from color map (texture)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Bilinear filtering will increase number of possible colours for free!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; color = tex2D(TextureSampler, float2(fmod(mu,NumberOfColors)/NumberOfColors,0));<br />
}<br />
// Final plot result (coloured)<br />
return color;<br />
</code></div>
<p><br/>And there we go, a nice and pretty Mandelbrot shader running on real time on the GPU. The video below gives you a nice look at how it turns out, a beauty.</p>
<a href="http://nomorecoins.info/blog/fun-with-fractals/"><p><em>Click here to view the embedded video.</em></p></a>
<p>Hope you enjoyed this little article and I will be back soon with more stuff to show.<br />
See ya!</p>
<p>Paper [<a href="http://dl.dropbox.com/u/1969094/Samples/FractalsOnTheGPU.pdf">Download</a>]<br />
Source Code [<a href="http://dl.dropbox.com/u/1969094/Samples/MandelbrotGPU.zip">Download</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/fun-with-fractals/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Still alive!</title>
		<link>http://nomorecoins.info/blog/still-alive/</link>
		<comments>http://nomorecoins.info/blog/still-alive/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 17:54:40 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<category><![CDATA[still alive back]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=213</guid>
		<description><![CDATA[After a long period of inactivity, I&#8217;m finally updating the blog, bringing everything up to speed. It&#8217;s hard to overstate my satisfaction.
I apologize for the absence. After starting an MSc., moving to Ireland and many a Guinness, I finally found some time to post again.
For the next couple of days I&#8217;ll be posting what I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>After a long period of inactivity, I&#8217;m finally updating the blog, bringing everything up to speed. It&#8217;s hard to overstate my satisfaction.<br />
I apologize for the absence. After starting an MSc., moving to Ireland and many a Guinness, I finally found some time to post again.<br />
For the next couple of days I&#8217;ll be posting what I&#8217;ve been up to, as well as some interesting stuff going on. There&#8217;s a lot to talk about!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/still-alive/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Indie Bay Competition Winner</title>
		<link>http://nomorecoins.info/blog/indie-bay-comp-winner/</link>
		<comments>http://nomorecoins.info/blog/indie-bay-comp-winner/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 16:45:00 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Back to the Basics]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[XNA]]></category>

		<category><![CDATA[48 hour]]></category>

		<category><![CDATA[competition]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[indie]]></category>

		<category><![CDATA[theindiebay.com]]></category>

		<category><![CDATA[winner]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=204</guid>
		<description><![CDATA[
The competition is over and the winner is Midnight Ritual. Congrats to Tahir and anyone who participated on the competition. Despite the critics I can&#8217;t wait for the next one. Lots of fun!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://theindiebay.com/competition/2009/09/28/compo1-results/"><img alt="MidNight Ritual" src="http://theindiebay.com/competition/wp-content/uploads/2009/09/GameTitual.JPG" title="MidNight Ritual" width="400" height="220" class="aligncenter size-full wp-image-191" /></a></p>
<p>The competition is over and the winner is <a href="http://theindiebay.com/competition/2009/09/28/compo1-results/">Midnight Ritual</a>. Congrats to Tahir and anyone who participated on the competition. Despite the critics I can&#8217;t wait for the next one. Lots of fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/indie-bay-comp-winner/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Indie Bay Competition</title>
		<link>http://nomorecoins.info/blog/the-indie-bay-competition/</link>
		<comments>http://nomorecoins.info/blog/the-indie-bay-competition/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 17:59:14 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[48 hour]]></category>

		<category><![CDATA[competition]]></category>

		<category><![CDATA[indie]]></category>

		<category><![CDATA[theindiebay.com]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=190</guid>
		<description><![CDATA[<a href="http://nomorecoins.info/blog/wp-content/uploads/macgyver.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/macgyver.jpg" alt="Duct tape, gum, and a pair of tweezers" title="Duct tape, gum, and a pair of tweezers" width="400" height="268" class="aligncenter size-full wp-image-191" style="padding:5px; background-color:#CDCFD4;" /></a>
If, like me, you love making games and have 48 hours to spare, check out the 48hour Indie Bay Competition over at <a href="http://theindiebay.com/competition">theindiebay.com/competition</a> kicking off later this month on the 19th.
Kudos to David from TheIndieBay.com and good luck to all the competitors!]]></description>
			<content:encoded><![CDATA[<p><img src="http://nomorecoins.info/blog/wp-content/uploads/macgyver.jpg" alt="Duct tape, gum, and a pair of tweezers" title="Duct tape, gum, and a pair of tweezers" width="400" height="268" class="aligncenter size-full wp-image-191" style="padding:5px; background-color:#CDCFD4;" /><br />
If, like me, you love making games and have 48 hours to spare, check out the 48 hour Indie Bay Competition over at <a href="http://theindiebay.com/competition">theindiebay.com/competition</a> kicking off later this month (on the 19th).<br />
Kudos to David from TheIndieBay.com and good luck to all the participants!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/the-indie-bay-competition/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Day 3 - GDC Europe, Köln 2009</title>
		<link>http://nomorecoins.info/blog/day-3-gdc-europe-koln-2009/</link>
		<comments>http://nomorecoins.info/blog/day-3-gdc-europe-koln-2009/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 20:14:41 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Conferences & Expos]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[developer]]></category>

		<category><![CDATA[europe]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[koln]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=172</guid>
		<description><![CDATA[<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_16.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_16-225x300.jpg" alt="R2D2 at Gamescom 2009" title="R2D2 at Gamescom 2009" width="150" height="200" class="alignright size-medium wp-image-174" /></a>The final day of GDC Europe finally came, and with it all the crazy chaos of the first day of Gamescom, just next door. I arrived and reported to my post to find out that the Gamescom organization had taken over one of the balconies and the entrance, sending all the staff to a single side. This caused us to have too many people for the posts available, so they ended up releasing us volunteers except for an occasional need to move something around or pack some printers.]]></description>
			<content:encoded><![CDATA[<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_16.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_16-225x300.jpg" alt="R2D2 at Gamescom 2009" title="R2D2 at Gamescom 2009" width="150" height="200" class="alignright size-medium wp-image-174" /></a>The final day of GDC Europe finally came, and with it all the crazy chaos of the first day of Gamescom, just next door. I arrived and reported to my post to find out that the Gamescom organization had taken over one of the balconies and the entrance, sending all the staff to a single side. This caused us to have too many people for the posts available, so they ended up releasing us volunteers except for an occasional need to move something around or pack some printers.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_15.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_15-300x225.jpg" alt="Michal Drobot at GDC Europe, Köln 2009" title="Michal Drobot at GDC Europe, Köln 2009" width="200" height="150" class="alignleft size-medium wp-image-173" /></a>Given this unexpected free time I hopped over to CongressSaal2 to check out a session from Michal Drobot on Quadtree Displacement Mapping with Height Blending (Practical Detailed Multilayer Surface Rendering… reminds me of one of those old ‘Bride of Frankenstein’ titles). Again, this turned out to be a favourite in the conference. The speaker did his homework and provided a very exhaustive, very complete presentation. He should have it up at his website soon (www.drobot.org) and I advise you to check it out, very neat stuff. He started by explaining Displacement Mapping with various implementations, especially parallax and how to use a quadtree structure for more efficient and correct mapping. After that he went on to discuss ambient occlusion, everything from theory, implementation, pitfalls and usual artefacts. Later, a texture blending technique that would take into account the height of each surface to achieve more realistic results, though not very noticeable in a final scene, and more importantly improve efficiency of the displacement mapping techniques. Given all information, complete with implementation, quirks and demos he went on to suggest building a final effect with the given techniques, shaping it to one’s needs. Like I said, meaty…</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_18.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_18-300x225.jpg" alt="Playable Diablo 3 at Gamescom 2009 (Rocks!)" title="Playable Diablo 3 at Gamescom 2009 (Rocks!)" width="200" height="150" class="alignright size-medium wp-image-176" /></a>After that was done with I couldn’t resist the urge to check out the Gamescom and spent most of the day between there and helping out at the entrance. Moving around the booths, everything seemed pretty crazy even knowing it wasn’t even close to the number of visitors it would reach the next couple of days. Spent my time wandering around the booths, taking pictures of little R2D2 over at the ‘Star Wars’ booth, playing some DragonAge and asking for those fun inflatable swords, playing some Mass Effect 2 (yum, Mass Effect 2) and queuing for half an hour to play Diablo 3 (go Wizard!), among other things.<br />
All fun and games… literally.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_19.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_19-300x225.jpg" alt="Gamescom 2009" title="Gamescom 2009" width="200" height="150" class="alignleft size-medium wp-image-177" /></a>Meanwhile, Peter Molyneux was giving his session on ‘Choice: The Ultimate Game Mechanic’ which as I understood meant talking about Lionhead’s next game, Fable 3. I didn’t see this session yet from what I gathered, it didn’t seem at all that different from the session he gave back in GDC London ’06, that time revealing details of Fable 2. A lot of talk on the kind of experiments they were performing and ideas they had for the sequel.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_20.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_20-300x225.jpg" alt="Gamescom 2009" title="Gamescom 2009" width="200" height="150" class="alignleft size-medium wp-image-178" /></a>Later that afternoon I came back for a last session that caught my eye, this one from Kees van Kooten on Efficient PCF Shadow Map Filtering. The room was almost empty, with everyone lured by the siren call of the Gamescom and away from boring old programmer talk. Like the name said, it was quite specific, regarding a technique used to filter shadow maps (though with other applications, I’m sure). An interesting presentation, it seemed to borrow some ideas from compression and apply them to sampling, reducing the number of lookups needed by manipulating position and scale. This would allow cheaper filtering with minimal to negligible artifacts.</p>
<p><span style="color: #e14e5e; font-size:24px"><strong>Wrap up</strong></span></p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_17.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_17-225x300.jpg" alt="Sack boy at Gamescom 2009" title="Sack boy at Gamescom 2009" width="150" height="200" class="alignright size-medium wp-image-175" /></a>And that’s it. That was the last session of the Game Developers Conference ’09, European Edition. Now all attention would be turned to the Gamescom next door.<br />
Saying my goodbyes and thanking everyone I’d recognize, I ended up that afternoon shaking my fists to the heavens, finding Sony’s booth with a playable ‘God of War 3’ that was shutdown for the day, no more than 10 minutes ago. I was leaving early the next day, no more Gamescom for me. Still, even though this was a somewhat different experience than that of GDC London, it was all great fun. Met interesting people, shared visions, was motivated by young (read: about my age) start-ups with great successful ideas. All this was very empowering.<br />
To anyone who enjoys travelling, meeting new people, getting your foot in the door perhaps (or just orient yourself in the right direction), I absolutely recommend trying to volunteer for one of these conferences.<br />
In the end the balance was a success: I had a great time!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/day-3-gdc-europe-koln-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Day 2 - GDC Europe, Köln 2009</title>
		<link>http://nomorecoins.info/blog/day-2-gdc-europe-koln-2009/</link>
		<comments>http://nomorecoins.info/blog/day-2-gdc-europe-koln-2009/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 13:18:25 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Conferences & Expos]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[developer]]></category>

		<category><![CDATA[europe]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[koln]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=156</guid>
		<description><![CDATA[<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_09.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_09-300x225.jpg" alt="Elevator entrance - GDC Europe, Köln 2009" title="Elevator entrance - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-157" /></a>Like the day before, only a few hours after the party (even fewer that day 1), I was getting up for my first day of work. The streets were still empty and hardly anyone was on the trains. Reaching the conference only a few staff members were walking around in a hurry. I walked around the Expo Floor, looking at the still empty booths, took a few pictures and just wandered around biding my time. Soon I’d walk over to the show room where I’d change to my staff t-shirt and follow one of the staff down to the registration area to know what kind of work I was doing.]]></description>
			<content:encoded><![CDATA[<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_09.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_09-300x225.jpg" alt="Elevator entrance - GDC Europe, Köln 2009" title="Elevator entrance - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-157" /></a>Like the day before, only a few hours after the party (even fewer that day 1), I was getting up for my first day of work. The streets were still empty and hardly anyone was on the trains. Reaching the conference only a few staff members were walking around in a hurry. I walked around the Expo Floor, looking at the still empty booths, took a few pictures and just wandered around biding my time. Soon I’d walk over to the show room where I’d change to my staff t-shirt and follow one of the staff down to the registration area to know what kind of work I was doing.<br />
<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_10.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_10-300x225.jpg" alt="Lounge - GDC Europe, Köln 2009" title="Lounge - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-158" /></a>I was a badge printer clerk, basically that means that anytime someone would come and register on one of the laptops arranged on the side of the entrance, if the laptop was assigned to my printer I’d check what kind of registration it was and set up the badges and swag appropriately, just hand it to the attendee, explain everything to them and send him/her off to the wild conference grounds (be free). Since I was lucky enough not to get the first day, things were pretty slow throughout the morning.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_11.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_11-300x225.jpg" alt="Tale of Tales Booth - GDC Europe, Köln 2009" title="Tale of Tales Booth - GDC Europe, Köln 2009" width="200" height="150" class="alignleft size-medium wp-image-159" /></a>Lunch-time came, and with it the end of my shift. I checked the program guide for the afternoon and decided to go to the GPA (Intel Graphics Performance Analyzer) session. I’d already seen the application in action, and what it could do, but still that might be a nice chance to see it in action with a proper large scale project. The first part of the session explained the application itself, while the second part talked about how SEGA used it to improve the performance of ‘Empire: Total War’ on low-end machines.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_12.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_12-300x225.jpg" alt="CCP Booth - GDC Europe, Köln 2009" title="CCP Booth - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-160" /></a>After that, David Cage from Quantic Dream was on with ‘Writing Interactive Narrative for a Mature Audience’ which was both controversial and entertaining. He addressed narrative patterns of current games and how they mostly target primal emotions, leaving more complex emotions unexplored. He suggested studios and publishers to decide  whether or not they would like to create toys (focusing on primal emotions) or art (exploring complex emotions), though he did insist this was not derogatory, just a choice that the industry would have to make (though they could very well coexist).<br />
<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_13.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_13-225x300.jpg" alt="Autodesk Booth - GDC Europe, Köln 2009" title="Autodesk Booth - GDC Europe, Köln 2009" width="150" height="200" class="alignleft size-medium wp-image-161" /></a>He suggested drifting away from classic design patterns (like for example progressive increase in difficulty) and towards new systems adapted to would allow exploring complex emotions that were harder to trigger. One analogy he used when talking about the way games traditionally structure storytelling was comparing games to pornography (personally I loved this comparison) in terms of pacing, where you’d have a narration scene explaining and setting up the action, followed by the action itself (and repeat…). He also asked why, since today’s audience is in average 35 years old (where 75% of players are over 18 and 40% are female), is the industry still oriented towards teenage males. At Quantic Dream, he said, they were geared towards providing intense mature experiences (something that left me puzzled whenever I’d remember Fahrenheit’s ending).<br />
<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_14.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_14-300x225.jpg" alt="Intel Booth - GDC Europe, Köln 2009" title="Intel Booth - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-162" /></a>Throughout the session, he actually received quite a big round of applause not once, but twice (deserved, in my opinion). First by saying that designers should never EVER allow marketing to do any type of design decision, he also elaborated to avoid involving artists and programmers since the result would always be a compromise. The second round of applause was due to his talk on the need for rating systems to exist and be consistent from the different media they span. He talked about how publishers tend to be ‘pushed around’ by tabloid media instead of standing up for their studios’ rights. He then thanked EA for standing up for Bioware in a scandal brought up by FOX TV.</p>
<p>That wrapped up the second day of the conference for me, with nothing more of relevance to point out. So home I went to meet 3 very fun Spanish girls, lucky me!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/day-2-gdc-europe-koln-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Day 1 - GDC Europe, Köln 2009</title>
		<link>http://nomorecoins.info/blog/day1-gdc-europe-koln-2009/</link>
		<comments>http://nomorecoins.info/blog/day1-gdc-europe-koln-2009/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 18:10:24 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Conferences & Expos]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[developer]]></category>

		<category><![CDATA[europe]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[koln]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=128</guid>
		<description><![CDATA[<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_06.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_06-300x225.jpg" alt="Intel Booth - GDC Europe, Köln 2009" title="Intel Booth - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-thumbnail wp-image-133" /></a>Just a few hours after the reception, I was waking up and heading to the Koelnmesse again. I didn’t work today so I wanted to make the most of my free day. Got to the conference through the elevator and wandered around the Exposition Floor, where many spent most of their time away from the sessions. To my left I could see the CCP booth, hiring some talent; to my right a few booths, mostly indie I think, the only name I recognized was ‘Tale of Tales’, though the guys from ‘Sakari Games’ had a really nice lego-like shooter in showcase. Moving on to the over side of the room I passed through the Autodesk booth, and at the end of the hall leading to a open-air social area I could see the Intel booth on my left, and the Crytek booth on my right.]]></description>
			<content:encoded><![CDATA[<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_06.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_06-300x225.jpg" alt="Intel Booth - GDC Europe, Köln 2009" title="Intel Booth - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-thumbnail wp-image-133" /></a>Just a few hours after the reception, I was waking up and heading to the Koelnmesse again. I didn’t work today so I wanted to make the most of my free day. Got to the conference through the elevator and wandered around the Exposition Floor, where many spent most of their time away from the sessions. To my left I could see the CCP booth, hiring some talent; to my right a few booths, mostly indie I think, the only name I recognized was ‘Tale of Tales’, though the guys from ‘Sakari Games’ had a really nice lego-like shooter in showcase. Moving on to the over side of the room I passed through the Autodesk booth, and at the end of the hall leading to a open-air social area I could see the Intel booth on my left, and the Crytek booth on my right.<br />
<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_05.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_05-300x225.jpg" alt="Crytek Booth - GDC Europe, Köln 2009" title="Crytek Booth - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-131" /></a> A plethora of monitors pointed towards me from both sides. The Intel booth was actually composed of several partners like Geomerics, Umbra Software and Havok. Crytek on the other hand had 4 big monitors on the wall constantly showcasing their engine, with regular presentations showcasing all the tools, the WYSIWYG editor and runtime editing on remote builds, one on a PS3 and one on an X360.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_07.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_07-300x225.jpg" alt="Adding more space - GDC Europe, Köln 2009" title="Adding more space - GDC Europe, Köln 2009" width="200" height="150" class="alignleft size-medium wp-image-133" /></a>By then I’d already missed the first presentation by ZootFly, about surviving project cancelation (outch) so I picked up my pace to see Dorian Kieken’s session on Bioware’s living plan. He basically discussed various areas of project management in Bioware. With a team >400 people it was interesting to see how staff friendly they were. They would give up total control over the staff, this he said was false control that would only lead to a false sense of security, in favour of individual teams of 4 or 5 people working in Scrum, that had the autonomy to plan out their work in order to achieve the proposed objective. It was an extensive speech, discussing everything from staff moral to toolsets. The kind of stuff that made me want to work at Bioware.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_04.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_04-300x225.jpg" alt="Outdoor Lounge - GDC Europe, Köln 2009" title="Outdoor Lounge - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-130" /></a>After a quick walk outside, I was back in CongressSaal 2 for this morning’s keynote from Crytek’s Cevat Yerli on The Future of Gaming Graphics. This keynote started logically by discussing the past and present of gaming graphics, namely the history of Crytek, their naïve approach to game development and how that helped them further along the road. Then he discussed the future of graphics, how and when they’d evolve and why, the areas they were investing for the next iteration of their engine. He discussed how graphics would not greatly evolve in the next 4 years, and how teams should invest on the visual identity of their games instead. He predicted the next big step for gaming graphics to be around the time of the next generation consoles, which he estimated was around 2012.<br />
<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_03.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_03-300x225.jpg" alt="Entrance - GDC Europe, Köln 2009" title="Entrance - GDC Europe, Köln 2009" width="200" height="150" class="alignright size-medium wp-image-129" /></a>He moved on to which possible techniques might be the future, addressing point based rendering and raycasting as possible but as of yet unlikely candidates, with some possible relevance for raycasting, dependent on hardware evolution. Another technology he put much faith on is SVO (Sparse Voxel Octrees) and how they would allow artists to ‘go insane’ with geometry details, with the very quick example of a wireframe sidewalk rendered using SVO. Having promised myself to check out SVO in greater detail I went off to lunch and further roam the Expo Floor, now properly set up, to find out other booths only slightly secluded, like Gotland University and Games Academy (with a very nice games showcase, I particularly enjoyed Gotland’s Walkabout), and companies like Perforce and FMOD.</p>
<p>Now, I still don’t know if it was a good idea to try this session, just because I tend to get drowsy after lunch. So I went for the Larrabee session, with a short introduction of certain concepts and techniques, we were soon at the main point of interest, new instructions on SIMD programming, namely vector instructions.</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_08.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_08-300x225.jpg" alt="Free beer time - GDC Europe, Köln 2009" title="Free beer time - GDC Europe, Köln 2009" width="200" height="150" class="alignleft size-medium wp-image-146" /></a>After that, a great keynote by Matias Myllyrinne explaining the ‘Remedy Way’ which I’m obviously a fan of since Max Payne. I also love how they’ve still kept their team rather small (~40 employees). He talked about the past of the company, how they believe they’re mainly an entertainment company (as opposed to a software developer), how they kept working on their projects even though they had other attractive possibilities with mobile apps. He moved on to the stories and how they always put a lot of relevance on strong main characters (so much so, titles were always the characters name). He went on to talk a bit more about their new project ‘Alan Wake’ as well as an overview of the development process at Remedy.</p>
<p>After this I procrastinated for a while, chatting with the good people at the Intel booth. Unfortunately, I ended up missing Kellee Santiago’s session on the Design Postmortem of Flower. So that was the end of the conference for Monday. Well except for the GDC Club Party that like the previous one went on ‘till about 2 a.m. for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/day1-gdc-europe-koln-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GDC Europe, Köln 2009</title>
		<link>http://nomorecoins.info/blog/gdc-europe-koln-2009/</link>
		<comments>http://nomorecoins.info/blog/gdc-europe-koln-2009/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 18:00:56 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Conferences & Expos]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[developers]]></category>

		<category><![CDATA[europe]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[koln]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=114</guid>
		<description><![CDATA[<a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_00.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_00-225x300.jpg" alt="Game Developers Conference Europe 2009" title="Game Developers Conference Europe 2009" width="225" height="300" class="alignright size-medium wp-image-119" /></a>A few months back I decided to try GDC again and got myself a place as a volunteer over at the European conference in Köln. So there I went, bags packed and leaving to Deutschland, hoping to have a good time, meet interesting people and drink great beer (which is pretty much what happened).
<div style="clear:right;"></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_00.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_00-225x300.jpg" alt="Game Developers Conference Europe 2009" title="Game Developers Conference Europe 2009" width="225" height="300" class="alignright size-medium wp-image-119" /></a>A few months back I decided to try GDC again and got myself a place as a volunteer over at the European conference in Köln. So there I went, bags packed and leaving to Deutschland, hoping to have a good time, meet interesting people and drink great beer (which is pretty much what happened).</p>
<p>I really enjoyed my time there; it’s always great to meet new people from all walks of life yet sharing the love for games (or programming, in some cases). I’d like to give out a big thanks to all my colleagues from staff, the guys over at games academy, the cool people from the Intel booth, binary madness and everybody else I might have forgotten to mention.</p>
<p>So onto the content, here’s a brief highlight of all the sessions and keynotes I got a chance to check out (I’ll go further in detail on later posts).</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_02.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_02-225x300.jpg" alt="Köln, Sightseeing" title="Köln, Sightseeing" width="225" height="300" class="alignleft size-medium wp-image-121" /></a>Kicked off the Conference with Bioware’s Dorian Kieken ‘What Is a Living Plan and How Can We Achieve It?’ where their planning strategies really impressed me (in a good way), followed by Crytek boss Cevat Yerli on ‘The future of Gaming Graphics’ with a peek at the kind of technology they were betting on. Later that day a quick talk about SIMD programming with Larrabee and one of my favourite keynotes of the show with the guys from Remedy about the company, the decisions they made and how it eventually affected them. Unfortunately, I missed the last session (I really wanted to see that one) about designing Flower. </p>
<p>Working next day, I missed the morning (still the only thing interesting keynote I might have missed was the CCP keynote), and at the afternoon I got the chance to see another Intel session about their performance analyzer (neat stuff) and then a pretty big and controversial keynote from David Cage (Quantic Dream).</p>
<p><a href="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_01.jpg"><img src="http://nomorecoins.info/blog/wp-content/uploads/gdckoln2009_01-225x300.jpg" alt="Köln, Sightseeing" title="Köln, Sightseeing" width="225" height="300" class="alignright size-medium wp-image-120" /></a>The last day of the event I ended up working a lot less than expected so (yay) I got to see a bit more stuff. Started the day off with Michal Drobot from Reality Pump talking about ‘Quadtree Displacement Mapping with Height Blending: Practical Detailed Multilayer Surface Rendering’ (phew, that’s a mouth full). I loved this session, very meaty and very well prepared… a real treat. By this time I switched my attention to the Gamescom next door (more on that later) and missed Molyneux session on Choice (aka. Fable 3) though that really didn’t bother me. Ended the conference with only a few remnants listening to Kees van Kooten about ‘Efficient PCF Shadow Map Filtering’, a bit too specific in my opinion but still quite interesting (a sort of performance compression applied to shadow map filtering).</p>
<p>So, now that the overview is over, we’re onto:</p>
<p><span style="color: #e14e5e; font-size:24px"><strong>Day 0</strong></span></p>
<p>I actually arrived a day earlier (Saturday, day -1?) to Köln and spent most of my day enjoying what the city has to offer. Next Sunday (day 0) I went to scout the conference grounds at the Koelnmesse a bit early, later I was escorted to the registration area where all the volunteers were and after a few minutes of chatting we moved over to the EuropaSaal room for briefing and work assignments, after that was over on we went for the Speakers’ Welcome Reception (free beer!) over at &#8216;Haxenhouse&#8217; by the river.</p>
<p>That&#8217;s it for the introduction, I&#8217;ll be posting the rest of the conference in detail in a few days.<br />
See you then!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/gdc-europe-koln-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GDC, London 2006</title>
		<link>http://nomorecoins.info/blog/gdc-london-2006/</link>
		<comments>http://nomorecoins.info/blog/gdc-london-2006/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 00:50:31 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Conferences & Expos]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[2006]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[london]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=73</guid>
		<description><![CDATA[I'm currently writing an article about my experience as a volunteer at the Game Developers Conference in Köln a few days ago. I'll be posting it throughout the following days, each post describing one day at the conference. So just for the sake of completion I decided to translate my old article for GDIsep about a similar experience back in 2006. So, without further ado, here we go...

<span style="color: #3366ff;"><strong>Game Developer's Conference London 2006</strong></span>

One day (not sure which one) I decided to volunteer for the GDC London (unsure of what kind of answer I’d get). To my surprise, the answer was extremely positive, so there I went to London, bags packed and expectant of what would come. Throughout the following pages I’ll share my experiences at the Conference. What I heard in the sessions, highlights, points of interest, etc.
I apologize if I’m not completely clear, or for any reason wasn’t able to discuss something with further detail, but I wrote this article so people could have an idea of what went on, what was discussed. A peek at the conference through my eyes.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently writing an article about my experience as a volunteer at the Game Developers Conference in Köln a few days ago. I&#8217;ll be posting it throughout the following days, each post describing one day at the conference. So just for the sake of completion I decided to translate my old article for GDIsep about a similar experience back in 2006. So, without further ado, here we go&#8230;</p>
<p><span style="color: #3366ff;"><strong>Game Developer&#8217;s Conference London 2006</strong></span></p>
<p>One day (not sure which one) I decided to volunteer for the GDC London (unsure of what kind of answer I’d get). To my surprise, the answer was extremely positive, so there I went to London, bags packed and expectant of what would come. Throughout the following pages I’ll share my experiences at the Conference. What I heard in the sessions, highlights, points of interest, etc.<br />
I apologize if I’m not completely clear, or for any reason wasn’t able to discuss something with further detail, but I wrote this article so people could have an idea of what went on, what was discussed. A peek at the conference through my eyes.</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/gdc-london-2006/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Back to the Basics: Scene Management</title>
		<link>http://nomorecoins.info/blog/back-to-the-basics-scene-management/</link>
		<comments>http://nomorecoins.info/blog/back-to-the-basics-scene-management/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 20:56:45 +0000</pubDate>
		<dc:creator>Rama</dc:creator>
		
		<category><![CDATA[Back to the Basics]]></category>

		<category><![CDATA[Game Development]]></category>

		<category><![CDATA[XNA]]></category>

		<category><![CDATA[alchemist]]></category>

		<category><![CDATA[basics]]></category>

		<category><![CDATA[management]]></category>

		<category><![CDATA[octree]]></category>

		<category><![CDATA[portal]]></category>

		<category><![CDATA[scene]]></category>

		<guid isPermaLink="false">http://nomorecoins.info/blog/?p=22</guid>
		<description><![CDATA[Hello and welcome to the first actual post on the '<strong>No More Coins</strong>' blog.

I'm using this post to document a new venture into <em>XNA</em>. I'm coding a new layer into <em>XNA</em> adding extra functionality to support my game programming needs. That and a set of tools I'll hopefully get the chance to make sometime in the future are lovingly called the <strong>XNAlchemist</strong> Engine. This is based on another older project still <em>WIP</em> called <strong>The Alchemist</strong>, a basic multiplatform game engine in C++.<br/>Ok, so besides the fundamental classes and wrappers the first hot topic to touch in development is, of course, <strong>Scene Management</strong>.<br/>Not very exciting, I know! But even though its not all bells and whistles it'll definitely pay off in the future. Good foundations and all that jazz...

From the many techniques for scene management, I decided two were crucial enough to implement at this stage: <strong>Octrees</strong> and <strong>Portals</strong>.<br/>]]></description>
			<content:encoded><![CDATA[<p>Hello and welcome to the first actual post on the &#8216;<strong>No More Coins</strong>&#8216; blog.</p>
<p>I&#8217;m using this post to document a new venture into <em>XNA</em>. I&#8217;m coding a new layer into <em>XNA</em> adding extra functionality to support my game programming needs. That and a set of tools I&#8217;ll hopefully get the chance to make sometime in the future are lovingly called the <strong>XNAlchemist</strong> Engine. This is based on another older project still <em>WIP</em> called <strong>The Alchemist</strong>, a basic multiplatform game engine in C++.<br/>Ok, so besides the fundamental classes and wrappers the first hot topic to touch in development is, of course, <strong>Scene Management</strong>.<br/>Not very exciting, I know! But even though its not all bells and whistles it&#8217;ll definitely pay off in the future. Good foundations and all that jazz&#8230;</p>
<p>From the many techniques for scene management, I decided two were crucial enough to implement at this stage: <strong>Octrees</strong> and <strong>Portals</strong>.<br/><br />
<br/><br />
<span style="color: #3366ff;"><strong>alScene3D</strong></span></p>
<p>The daddy class for all scenes, <strong>alScene3D</strong> defines the concept of a scene as a set of 3D objects with a given implementation, bounding and position/orientation/scale. It inherits (indirectly) from <strong>DrawableComponent</strong> so rendering and updating a scene can be done by <em>XNA</em>&#8217;s component manager. It inherits directly from <strong>alDrawableObject3D</strong> (<em>note:</em> al is a prefixe used for all <em>Alchemist</em> classes) that basically defines it as a 3D object with a position, orientation, scale, and bounding. Also to note that scenes store <em>alDrawableObject3D</em>, so scenes with different spacial management can be nested (as you will see from the mixed approach later in this post).<br/><br />
<br/><br />
<span style="color: #3366ff;"><strong>alScene3DOctree</strong></span></p>
<p>This class is an implementation of the <em>alScene3D</em> class with an <em>octree</em> spacial division. An <em>octree </em>is basicaly a tree structure where each node divides its space into 8 <em>octants </em>(8 divisions), this is done to improve performance in culling, collision detection and so on. This implementation takes into account a <em>maximum and minimum resolution</em> so even though the example below shows a <em>linear octree</em>, it is capable of supporting <em>non-linearity</em>. Another parameter it takes into account is a <em>buffer limit</em>, so if the buffer of a particular area is full it will be divided into smaller nodes until each node is within the buffer limit or just over (or equal to) the minimum resolution.<br/>The example below is a <em>linear octree</em> (with a fixed number of divisions) where only nodes that contain geometry are shown, if they&#8217;re not culled by the camera&#8217;s frustum anyway. Also note that I&#8217;m constantly freezing frustum culling to show which nodes are actually being drawn. I will do that in all the videos throughout the post.<br/><br />
<a href="http://nomorecoins.info/blog/back-to-the-basics-scene-management/"><p><em>Click here to view the embedded video.</em></p></a><br />
<br/><br />
<span style="color: #3366ff;"><strong>alScene3DPortals</strong></span></p>
<p>This class, as you might have guessed, is an implementation of  <em>alScene3D </em>with <em>portal culling</em>. <em>Portal culling</em> is the process of dividing a scene into <em>areas </em>(aka. <em>zones</em>, <em>rooms</em>, etc.) and determining which <em>areas </em>are visible by testing the camera frustum against visible <em>portals</em>. Imagine rooms and finding out which rooms are visible is done by determining which doors you can see from where you are at. This is obviously ideal for indoor environments.<br/><br />
<img alt="" src="http://nomorecoins.info/blog/wp-content/uploads/xnalchemist_portals01.jpg" title="Back to the Basics: Portal Culling" class="aligncenter" width="400" height="170" /><br />
This implementation allows a user to define <em>areas </em>and <em>portals </em>and <em>link </em>them to each other to form the <em>scene</em>. Then, from the <em>current area</em>, portals connected to that area are tested for visibility and the process then iterates through other visible areas linked to those portals, and so on. On each of these steps a portal is tested against the space visible from the previous portal and the camera&#8217;s <em>frustum</em>. This, however, is not done in <em>screenspace</em>. Instead a <em>projection matrix</em> is built and used as a <em>custom frustum</em> that represents the visible area through a given portal.<br/><br />
<a href="http://nomorecoins.info/blog/back-to-the-basics-scene-management/"><p><em>Click here to view the embedded video.</em></p></a><br />
<br/><br />
<span style="color: #3366ff;"><strong>Mixed Approach</strong></span></p>
<p>This last example combines the above mentioned techniques.<br/>As I mentioned, a 3D scene is a child of <em>alDrawableObjec3D </em>that is responsible for managing and rendering a set of 3D objects (also <em>alDrawableObject3D</em>), meaning a scene can be nested within a scene.<br/>Remember when I mentioned that portal testing was done with <em>custom frustums</em> instead of <em>screenspace</em>? Well, this is the main reason for that. Using <em>frustums </em>has a little bonus to it, you see each <em>area </em>contains its calculated <em>custom frustum</em> which can be passed through to other functions, like rendering for example.<br/>When drawing (or updating, to be more specific) a given <em>area</em>, <em>alScene3DPortals </em>replaces the <em>view frustum</em> (which is generally the active camera&#8217;s viewing frustum) with the area&#8217;s <em>custom frustum</em>. This way, only objects in the <em>octree scene </em>visible through the portals in the <em>portal scene</em> will be drawn, as shown from the example below.<br/><br />
<a href="http://nomorecoins.info/blog/back-to-the-basics-scene-management/"><p><em>Click here to view the embedded video.</em></p></a><br />
<br/><br />
And that&#8217;s that.<br/>I hope this was somehow interesting or useful. These &#8216;<em>Back to the Basic</em>&#8216; posts will cover the basic aspects of developing <em>XNAlchemist</em>. I&#8217;ll try and keep all the work (that&#8217;s actually worth watching) posted here. I appreciate any feedback and thank everyone for the support.<br/>There are still a few optimizations to do but I&#8217;ll soon move to a much more exciting topic&#8230; graphics!</p>
<p>See you then!<br/>Thank you for reading!</p>
]]></content:encoded>
			<wfw:commentRss>http://nomorecoins.info/blog/back-to-the-basics-scene-management/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->

