<?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>BlackHC's Adventures in the Dev World &#187; Game Projects</title>
	<atom:link href="http://blog.blackhc.net/category/coding/game-projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.blackhc.net</link>
	<description>Just another weblog</description>
	<lastBuildDate>Wed, 16 Nov 2011 23:12:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Light Propagation Volumes</title>
		<link>http://blog.blackhc.net/2010/07/light-propagation-volumes/</link>
		<comments>http://blog.blackhc.net/2010/07/light-propagation-volumes/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 15:44:39 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game Projects]]></category>
		<category><![CDATA[Maths]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[Corrections]]></category>
		<category><![CDATA[Crytek]]></category>
		<category><![CDATA[I3D]]></category>
		<category><![CDATA[Light Propagation Volume]]></category>
		<category><![CDATA[LPV]]></category>
		<category><![CDATA[Reflective Shadow Map]]></category>
		<category><![CDATA[RSM]]></category>
		<category><![CDATA[Sponza]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=795</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2010/07/light-propagation-volumes/" title="Light Propagation Volumes"></a>I've finally finished my lab course last week - thanks to my supervisor Matthäus G. Chajdas - you can read his blog here -, it wasn't your usual lab course with work sheets and boring homework, instead I've been allowed &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2010/07/light-propagation-volumes/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2010/07/light-propagation-volumes/" title="Light Propagation Volumes"></a><p>I've finally finished my lab course last week - thanks to my supervisor Matthäus G. Chajdas - <a href="http://anteru.net/" target="_self">you can read his blog here</a> -, it wasn't your usual lab course with work sheets and boring homework, instead I've been allowed to implement a nice paper about a <a href="http://en.wikipedia.org/wiki/Global Illumination" target="_blank" >Global Illumination</a> approximation algorithm called <a href="http://www.crytek.com/fileadmin/user_upload/inside/presentations/2010_I3D/20100301_lpv.pdf" target="_blank">(Cascaded) Light Propagation Volumes</a>. It's been developed by Crytek and you can find more information (including some presentations and videos) on <a href="http://www.crytek.com/technology/presentations/" target="_blank">their server</a>. (Note: this is an implementation of the I3D paper, not the earlier SIGGRAPH one.)</p>
<div id="attachment_798" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal0.jpg"><img class="size-large wp-image-798 " title="LPVfinal0" src="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal0-1024x573.jpg" alt="" width="640" height="358" /></a><p class="wp-caption-text">Sponza scene (direct + indirect lighting w/ occlusion)</p></div>
<div id="attachment_799" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal1.jpg"><img class="size-large wp-image-799" title="LPVfinal1" src="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal1-1024x573.jpg" alt="" width="640" height="358" /></a><p class="wp-caption-text">Sponza scene (only indirect lighting w/ occlusion)</p></div>
<div id="attachment_800" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal2.jpg"><img class="size-large wp-image-800" title="LPVfinal2" src="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal2-1024x573.jpg" alt="" width="640" height="358" /></a><p class="wp-caption-text">Sponza scene (ony direct lighting)</p></div>
<div id="attachment_801" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal3.jpg"><img class="size-large wp-image-801" title="LPVfinal3" src="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal3-1024x573.jpg" alt="" width="640" height="358" /></a><p class="wp-caption-text">Sponza scene (boosted indirect lighting w/ occlusion)</p></div>
<div id="attachment_802" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal4.jpg"><img class="size-large wp-image-802" title="LPVfinal4" src="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVfinal4-1024x573.jpg" alt="" width="640" height="358" /></a><p class="wp-caption-text">Sponza scene (boosted indirect lighting w/o occlusion)</p></div>
<p>The algorithm approximates global illumination by rendering the light into a <a href="http://www.vis.uni-stuttgart.de/dachsbacher/download/rsm.pdf" target="_blank">reflective shadow map</a>, injecting it into a volume (using a spherical harmonics representation) and propagates the light flux in this volume (hence the name of the algorithm) and taking into account occlusion as possible extension.</p>
<p>The whole algorithm is physically motivated but corners everywhere, of course, to be more efficient. The paper also contains a few errors and doesn't explain everything needed to implement it in great detail (like eg the solid angles of the side faces), so I've written two documents detailing the mistakes I've found and the additional calculations I've performed.</p>
<p>You can find the mistakes <a href="http://blog.blackhc.net/wp-content/uploads/2010/07/lpv-corrections.pdf" target="_blank">here</a> (including suggested corrections) and the full annotations document <a href="http://blog.blackhc.net/wp-content/uploads/2010/07/lpv-annotations.pdf" target="_blank">here</a>.</p>
<p>Finally I've also uploaded the whole prototype (including my code licensed under the FreeBSD license and the media files) <a href="http://blog.blackhc.net/wp-content/uploads/2010/07/LPVPrototype.zip" target="_blank">here</a> - it's 68 MB big (and it's been compressed with 7zip with a compression mode that might not be supported by WinZIP. The Sponza model is from Crytek, too. You can download the original model and textures <a href="http://www.crytek.com/downloads/technology/" target="_blank">here</a>.<br />
The project uses DirectX 10.1 and by default it won't run in DirectX 10, because it uses a texture format that is deprecated in D3D10 but supported again 10.1 (BGRA). See the comment by <strong>FatGarfield</strong> for the location that needs to be changed for it work in DX10, too. (However red and blue will be swapped then.)</p>
<p>I haven't implemented cascaded LPVs and I also use only one light/RSM and only inject its depth into the occlusion volume, but the results already look very nice in my opinion.</p>
<p>Stay tuned for more <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Cheers,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2010/07/light-propagation-volumes/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Sploidz Revisited (Unofficially)</title>
		<link>http://blog.blackhc.net/2009/08/sploidz-revisited/</link>
		<comments>http://blog.blackhc.net/2009/08/sploidz-revisited/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 09:08:26 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game Projects]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Red Thumb Games]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FlashDevelop]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Sploidz]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=644</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2009/08/sploidz-revisited/" title="Sploidz Revisited (Unofficially)"></a>I've already written about the semi-conductor project and how I've written some Flash animations/applications for it. Of course, I'm more interested in making fun stuff&#180;, so I decided to put my knowledge to good use and write a small game &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2009/08/sploidz-revisited/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2009/08/sploidz-revisited/" title="Sploidz Revisited (Unofficially)"></a><p>I've already written about the semi-conductor project and how I've written some Flash animations/applications for it. Of course, I'm more interested in making fun stuff<a class="annotation" title="of course, the math stuff is also fun from a different point of view" href="javascript:;"><strong>&#180;</strong></a>, so I decided to put my knowledge to good use and write a small game to see how difficult/awkward Flash actually is.</p>
<p>To sum it up, it is somewhat awkward, at least if you use the IDE itself. FlashDevelop still is as nice as ever, but you can quickly develop games nonetheless. I prefer Torque Game Builder though in retrospect.</p>
<p>Before I continue talking about the development itself, let's take a look at the actual game. <a href="http://www.redthumbgames.com/sploidz/">Sploidz</a> was the first game I wrote using Torque Game Builder for Joshua Dallman, and since I still had all the assets in my subversion repository, it was an easy decision to try and port this game. If you want to play it, you can download it for <strong>free</strong> <a href="http://www.redthumbgames.com/sploidz/" target="_blank">here</a>.<br />
I haven't ported everything: I've just rewritten the main characteristic features that make up Sploidz's code in ActionScript.</p>
<p>Without further ado<a class="annotation" title="honestly I don't know why I know this expression.." href="javascript:;"><strong>&#180;</strong></a> here is the game:<br />
<object id="Sploidz" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="384" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz.swf" /><param name="name" value="Sploidz" /><param name="allowfullscreen" value="true" /><embed id="Sploidz" type="application/x-shockwave-flash" width="512" height="384" src="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz.swf" name="Sploidz" bgcolor="#ffffff" quality="high" allowfullscreen="true" align="middle"></embed></object><br />
<a href="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz.swf" target="_blank">Click to open Sploidz in its own window</a></p>
<p>Because the art is still copyrighted and I haven't heard back from Joshua yet <a class="annotation" title="and because I had too much spare time on Saturday night when everybody is having fun and partying and I'm sitting alone this wretched room.. just kidding" href="javascript:;"><strong>&#180;</strong></a>, I decided to create a free version that only uses "coder art" - in this hand-drawn coder art <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Some<a class="annotation" title="Mr. jRAD" href="javascript:;"><strong>&#180;</strong></a> have said that this version looks cuter, decide for yourself:<br />
<object id="SploidzCC" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="384" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://blog.blackhc.net/wp-content/uploads/2009/08/SploidzCC.swf" /><param name="name" value="SploidzCC" /><param name="allowfullscreen" value="true" /><embed id="SploidzCC" type="application/x-shockwave-flash" width="512" height="384" src="http://blog.blackhc.net/wp-content/uploads/2009/08/SploidzCC.swf" name="SploidzCC" bgcolor="#ffffff" quality="high" allowfullscreen="true" align="middle"></embed></object><br />
<a href="http://blog.blackhc.net/wp-content/uploads/2009/08/SploidzCC.swf" target="_blank">Click to open SploidzCC in its own window</a></p>
<p>Below you'll find a description of the development and at least one helpful trick and most importantly a link to the source code of the "copyright-free" version.</p>
<p><strong>Because the orginal version is way too difficult to be really fun, I actually sat down one more time and added code to make the platform slower if you're in danger of losing (up to 3 times slower):</strong><br />
<object id="SploidzMoreFun" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="384" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://blog.blackhc.net/wp-content/uploads/2009/08/SploidzMoreFun.swf" /><param name="name" value="SploidzMoreFun" /><param name="allowfullscreen" value="true" /><embed id="SploidzMoreFun" type="application/x-shockwave-flash" width="512" height="384" src="http://blog.blackhc.net/wp-content/uploads/2009/08/SploidzMoreFun.swf" name="SploidzMoreFun" bgcolor="#ffffff" quality="high" allowfullscreen="true" align="middle"></embed></object><br />
<a href="http://blog.blackhc.net/wp-content/uploads/2009/08/SploidzMoreFun.swf" target="_blank">Click to open SploidzMoreFun in its own window</a></p>
<p><span id="more-644"></span></p>
<h3>Development</h3>
<p>I think I spent less than 20 hours on the project. It's hard to say because I worked on it on three different days, but only probably less than 6 hours on each.</p>
<p>The main problems during the development were:</p>
<ul>
<li>How do I get the art assets into Flash?</li>
<li>How do I use the IDE and objects in a way that is helpful?</li>
</ul>
<p>Lessons learned:</p>
<p>Even though the project isn't that big, it didn't take long for annoying bugs to appear - mainly in the matching code, because it's somewhat asynchronous and you have to make sure that an item doesn't get removed between events, etc.<br />
So again, I can only say that assertions and lots of debug messages are your friend and are really useful for understanding the sometimes mysterious ways of non-obvious code interaction.</p>
<p>Again one of the biggest headache was how to make the game a game (so you don't always and feel some reward while playing) and this resulted in implementing the platform game element from the original Sploidz game, although I wanted to avoid that in the beginning because of the added complexity.<br />
Someone<a class="annotation" title="Roy" href="javascript:;"><strong>&#180;</strong></a> pointed out though, that if you have 8 columns and only 5 different item types, the main idea of matching items becomes trivial. It's obvious, but I didn't think of it while coding the proof of concept code.<br />
Of course you have to somewhat tune the speed and animation durations of everything to make it playable. I think the game is really hard at the moment, but that's better than too easy and I especially added the "survival timer" in the upper right panel to allow for some competition and personal best times.<br />
I might change the platform code at some point to be more player-friendly, but I have more pressing projects to do at the moment: my Bachelor Thesis... /o\.<br />
As said above, I actually sat down and added a time scaler to the platform. The code is quite simple but helps the game a bit (I managed to survive 2 minutes and it was more challenging and less depressing to play the game ^ ^). The code is quite simple:</p>
<pre>public function getPlatformTimeScale():Number {
	var maxRow:int = 0;
	for ( var column:int = 0 ; column &lt; Grid.numColumns ; column++ ) {
		var firstEmptyRow:int = grid.getFirstEmptyCellRow( column );
		if ( firstEmptyRow &gt; maxRow ) {
			maxRow = firstEmptyRow;
		}
	}

	const minScale:Number = 1.0;
	const maxScale:Number = 3.0;
	var scale:Number = minScale + (maxScale - minScale) * Math.pow( maxRow / (Grid.numRows - 1), 8 );
	trace( "Using platform scale: " + scale );
	return scale;
}
</pre>
<p>As you see, it uses a power function to make the platform slower only if really few empty rows are left.</p>
<h4>Interesting things to know</h4>
<ul>
<li>If you want to important a sequence of images (say you have an animation stored as picture frames diamond_black00.png to diamond_black15.png, only select the first image when "importing to stage" in Flash, otherwise you won't get the dialog asking you whether you want to import an image sequence as animation.<br />
(Cost me a few hours of searching to find this out.)</li>
<li>If you have animations that stores multiple frames in one image, you'll have to split the images up into the respective frames. To do this in Photoshop make use of "guides" and slicing and notice the "Slices from Guides" button that is offered. It's really helpful.<br />
You can also store the creation of the guides and the slicing as action/macro and reuse it which also saves some time.</li>
<li>If you ever get the error "type was not defined or was not a compile-time constant", you might have a symbol instance that has the same name and class name. Flash freaks out for some reason and displays this weird error message.</li>
</ul>
<p>For added fanciness, I've also included two older builds that show the evolution of the game code.</p>
<p>Note: There are bugs in these builds, so they are really just meant to show the progress on the first and second day.<br />
<object id="Sploidz0810" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="384" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz0810.swf" /><param name="name" value="Sploidz0810" /><param name="allowfullscreen" value="true" /><embed id="Sploidz0810" type="application/x-shockwave-flash" width="512" height="384" src="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz0810.swf" name="Sploidz0810" bgcolor="#ffffff" quality="high" allowfullscreen="true" align="middle"></embed></object><br />
<a href="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz0810.swf" target="_blank">Click to open Sploidz0810 in its own window</a></p>
<p><object id="Sploidz0813" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="384" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz0813.swf" /><param name="name" value="Sploidz0813" /><param name="allowfullscreen" value="true" /><embed id="Sploidz0813" type="application/x-shockwave-flash" width="512" height="384" src="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz0813.swf" name="Sploidz0813" bgcolor="#ffffff" quality="high" allowfullscreen="true" align="middle"></embed></object><br />
<a href="http://blog.blackhc.net/wp-content/uploads/2009/08/Sploidz0813.swf" target="_blank">Click to open Sploidz0813 in its own window</a></p>
<p>Fun note: I implemented most of the fancy features (combo matches, the score bubbles, the platform) today in a few hours (a lot less than expected). I think ActionScript is an okay language, although it lacks quite a few comfort features of regular modern programming languages (function overloading, delegate types that actually check parameter type).</p>
<p>Last but not least here is the link to the code: <a href="http://blog.blackhc.net/wp-content/uploads/2009/08/FlashySploidz.zip">FlashySploidz Source</a><br />
I release the code itself under GPL and the art under Common Creative.</p>
<p>Over and out,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2009/08/sploidz-revisited/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Edu2 Postmortem</title>
		<link>http://blog.blackhc.net/2008/03/edu2-postmortem/</link>
		<comments>http://blog.blackhc.net/2008/03/edu2-postmortem/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 01:13:50 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game Projects]]></category>
		<category><![CDATA[Nexuiz]]></category>
		<category><![CDATA[Personal Rantings]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/?p=92</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2008/03/edu2-postmortem/" title="Edu2 Postmortem"></a>I think I've been talking about Edu2 a lot already and I don't really feel like giving a huge overview again - probably I will end up doing so nonetheless. Edu2 is finished, over, done. I'm not going to touch &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2008/03/edu2-postmortem/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2008/03/edu2-postmortem/" title="Edu2 Postmortem"></a><p>I think I've been talking about <b>Edu2</b> a lot already and I don't really feel like giving a huge overview again - <i>probably I will end up doing so nonetheless</i>. <b>Edu2</b> is finished, over, done. I'm not going to touch it again - <i>ever</i>! That said, I think there are a few nice things and lots of bad things to say and tell about it. I usually paint bleak pictures and I won't stop here, because I try to be honest with the negative side of things.</p>
<p>I guess this is going to be a bigger postmortem because there are many different topics that I should mention to give the reader a fair impression.</p>
<p>To begin with, a few links first for those interested in <b>Edu1</b> and <b>Edu2</b>:</p>
<ul>
<li><a href="http://www.edu-shooter.de/" title="Offical Edu1 Page - only in German though" target="_blank">http://www.edu-shooter.de/   Official Edu1 Page - only German though</a></li>
<li><a href="http://sourceforge.net/projects/edu2" title="Edu2 SourceForge Project Page" target="_blank">http://sourceforge.net/projects/edu2 Our SourceForge Project - you can even download an almost final build</a></li>
</ul>
<p><i></i><i>Interesting fact: google for Edu2 and you'll find a project that is almost about the same things that we worked on - except it's 2D only.</i></p>
<p><i></i><br />
<span id="more-84"></span>First let me tell you what <b>Edu2</b> is about: Imagine Second Life, Facebook, some uni/educational content and mini-games (flash stuff) merged to one product. That is <b>Edu2</b> from what I could figure out of the business plan and my work on the prototype.First observation: this sounds like a huge project - too huge for one university term. Thus we only worked on a '<i>prototype</i>'.<br />
Second observation:  it sounds like a project that is a tad bit megalomaniac and doomed to fail because the market is kind of saturated, too. I, honestly, think that this will be its likely fate, if anyone should ever try to develop it.</p>
<p>The project was actually about creating a business plan (half of the team) and creating a prototype (the other half), so I don't think it's a bad idea, because social networks really are big nowadays and experience doing social network stuff (even if it's only a very raw prototype) can come in handy maybe. It's mostly - <i>and in my opinion: <b>totally</b> </i>- useless if you think that it's helping you get a job in the game industry, because it's a very different business area and at most the prototype team may have learnt something valuable, because it was working with mostly standard game tools.</p>
<p>One really funny note here: We visited <a href="http://www.ubi.com/" title="Ubisoft's Homepage" target="_blank">Ubisoft Germany</a> and <a href="http://www.electronic-arts.de/" title="EA's Homepage" target="_blank">EA Germany</a> and presented our project <a href="http://81.169.162.205/Lifestylebase-172-Electronic_Arts_Deut.html" title="German news article with pictures of EA's headquarters in Germany" target="_blank">there</a>. At the time being there I was somewhat excited to get an opportunity to talk to some important people there, but now I think it's pretty much useless, too, that we presented a social network idea there. I mean: why? What do they have to do with it? Obviously, nothing - <i>except maybe <b>EA</b>, which we all know, plans to have a go for total world domination with unoriginal, corporate games (this is supposed to change though, so *thumbs up*) - </i>and I really question to use of the whole visits.</p>
<p>Had we got a simple but interesting game, it might have been of more use and we could have possibly pulled of what I would call a "<a href="http://www.computerandvideogames.com/article.php?id=174936&amp;site=pcg" title="Pulling a Portal.." target="_blank">Portal</a>" and actually present something convincing that would have been a true first playable prototype of a game. So the first big point that deserves mentioning is:</p>
<h5>A good project needs a concise and down-to-earth vision behind it.</h5>
<p><b>Edu2</b> certainly didn't have one, because no one really had an idea of what to do or rather everything was pretty blurry. We had a few docs with very rough but mostly too vague ideas and the problem was that decisions could hardly be made because, of course, you had the <i><b>big real thing</b></i> looming behind the prototype. In the end everybody or rather tiny groups of people who talked about it decided from case to case without lots of deeper thoughts behind it simply to get things done.<br />
Just a minor example:</p>
<blockquote><p> If you run <b>Edu2</b>, you'll see a user-interface that has been mostly developed by me during a few days right before the final presentations. It's really nice in my opinion but it makes the actual 3D environment totally useless because you actually have access to everything right from within it. Nice thing but it totally negates a lot of the 'visions' for <b>Edu2</b>.</p></blockquote>
<p>Now to the next thing that went wrong:</p>
<h5>Communication in general was pretty bad</h5>
<p>Really there was little communication between the different groups and I, at least, had very little contact to everyone else, so it was very hard to involve the team in decisions - since we were the coders, we pretty much had control over the core functionality, because our level designer didn't have that much freedom: their task was to extend and clean up the original Edu1 campus level (a level consisting of a virtual university campus) and add gecko terminals now and then. We had a few fun ideas the night before the presentation:<i></i></p>
<p><i>Adding zones that would open a gecko window with specific content - e.g.  Amazon in the store or the mini-game selection window when you are near a gaming console..<br />
</i></p>
<p>Those were ideas that actually were really interesting and could have added a lot to <b>Edu2</b>'s 'gameplay' but sadly time was a very constraining factor and in the end they didn't make it in, although the code was pretty much in place, as were the additional trigger brushes needed, but there simply wasn't enough time to recompile the map. Clearly we could have come up with those things earlier if we had talked and discussed things some more.<br />
The only person I was talking a lot to was <i><b>Frank 'res(2k)' Richter</b></i>, a pretty good coder, who is currently working on the free and awesome <a href="http://apricot.blender.org/" title="Click click" target="_blank"><b>Blender/CrystalSpace</b> 'Apricot' game in Amsterdam</a>, and, although it is hard to judge his skills from the little we worked together, he did a very good job with <a href="http://sourceforge.net/projects/offscreengecko/" title="SourceForge project page of OffscreenGecko" target="_blank"><b>offscreengecko</b>, </a>a gecko binding that makes it really easy to include <a href="http://developer.mozilla.org/en/docs/XULRunner" title="Current webpage for XULRunner" target="_blank"><b>gecko </b>(<b>XUL</b>)</a> in games, and the <b>Edu2</b>/<b>DarkPlaces </b>code we worked on in general - <i><a href="http://icculus.org/twilight/darkplaces/" title="DarkPlaces' Homepage" target="_blank"><b>DarkPlaces </b></a>is the name of the engine for newbies to this blog</i>.<br />
We talked a lot about things and it was great to have someone on the project, who is at least as experienced as I was and quite certainly a lot more experienced than I am to be honest.<br />
A few things went wrong there nonetheless:</p>
<ol>
<li>I was chosen to be the coding lead between the two of us. Since there wasn't anyone else, I don't think, I really had much to do as "lead" and that there was a huge difference in what we did, but I tried to take responsibility and keep bugging him to work on stuff, question him about things that we needed to work on, try to decide on the tasks we should do next, etc.. It was a team process and I hope that he isn't too angry with me about it :-/</li>
<li>Again and again and this time, too, I've been way too protective of my code and way too restrictive and critical of other's code. When someone changes things in my code - that is code I've been working on - and I consider the changes to mess up the code (design) or be problematic - that can drive me nuts pretty quickly. So I guess I'm quite bad tempered when it comes to coding. I'm pretty glad that I only managed to piss off Frank once for real and I'm still very sorry about it and I hope that I've learnt my lesson now.</li>
<li>Even though I've tried my best, work was sometimes distributed awkwardly resulting in conflicts and things being done twice - although those few times I don't think that time was really totally wasted but it certainly wasn't used as efficiently as possible, which is bad because we both had other, more important things to do.</li>
</ol>
<p>Another fun fact: no one has told our self-taught mappers and modelers how to do so effectively. <b>Edu2</b>'s only map apparently had compile times of 20+ hours at the end of the project and we had lots of bloated models with ridiculous triangle and vertex counts without any real justification for it.</p>
<p>I'm not sure I should mention this, but we had a lot of trouble with our only character modeler <i><b>Jarno Müller</b></i>, who, to put it in a nut-shell, wasn't a least bit as professional as he claimed to be -  <i>considering the fact that he seems to own <a href="http://www.grafiker.org/" title="The Company" target="_blank">his own company</a> that does gfx contract work</i>. I've already ranted about him in a past blog entry, but I think he deserves to be named, because otherwise the way he behaved and partially crippled the project - <i>we had to use standard  free Quake3 models in the end for god's sake</i> <i>- </i>wouldn't make a difference and the incredibly unprofessional way he acted and left the project (by simply not replying to emails at all in general anymore and not participating seriously in any way before either) pissed me (and others) off big time. He was offered help multiple times in the beginning to try and see how to export models from <a href="http://www.maxon.net/pages/products/cinema4d/cinema4d_e.html" title="Maxon's Cinema4D page" target="_blank">Cinema4D</a> into a format Darkplaces supports but didn't answer any emails and then a week or two after we extended his deadline to produce one model at least he sent us a model we couldn't open because he used the latest C4D version and there was no converter to be found quickly - and he, of course, demanded that we tell him how to export the model to DP and he didn't really adhere to one requirement that he was told from the very beginning (Quake3 multi-part model, easy support for different skins, multiple low-poly models - WoW-style).</p>
<p>Anyway, to sum everything up, here's an overview of some of the pros and cons:</p>
<ul>
<li>Pros
<ul>
<li>I have meet some interesting people and also made a few new friends (hopefully).</li>
<li>I finally worked again on DarkPlaces, which was nice, because I have only been working with GarageGames engines for the past two years.</li>
<li>We pretty much started from scratch game-code wise and had <b>Edu2 </b>actually been a real game and had there been a FPP in the end, it would have been an ueber-useful experience. But even without that, it was pretty interesting.</li>
</ul>
</li>
<li>Cons:
<ul>
<li>I really have lost a lot of time with the project that I really could and should have used for other things.</li>
<li>The final prototype really is mostly useless, except if I get myself motivated enough to port back some of its features to <a href="http://www.alientrap.org/nexuiz/" target="_blank"><b>Nexuiz</b></a>..</li>
<li>The prototype hasn't been actually officially used for anything else than a small video.</li>
<li>Thus I can conclude that it was a terrible waste of time</li>
</ul>
</li>
<li>Worth mentioning:
<ul>
<li>The crunch time in the last two days was really fun and sleeping ten hours in three days says it all.. It was probably the most fun I've had in a long time (before visiting <b><a href="http://www.splashdamage.com" target="_blank">SplashDamage</a> </b>again).</li>
</ul>
</li>
</ul>
<p>I think that's it for me.</p>
<p>Cheers,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2008/03/edu2-postmortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edu2 is finally done o/</title>
		<link>http://blog.blackhc.net/2008/03/edu2-is-finally-done-o/</link>
		<comments>http://blog.blackhc.net/2008/03/edu2-is-finally-done-o/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 21:57:13 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Nexuiz]]></category>
		<category><![CDATA[Personal Rantings]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/?p=89</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2008/03/edu2-is-finally-done-o/" title="Edu2 is finally done o/"></a>Edu2 is finally over (at least for me). I've uploaded a 99% final build - the only thing that is missing are correct credits, but I hope to receive them ASAP and then I'm really really really done with it. &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2008/03/edu2-is-finally-done-o/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2008/03/edu2-is-finally-done-o/" title="Edu2 is finally done o/"></a><p>Edu2 is finally over (at least for me). I've uploaded a 99% final build - the only thing that is missing are correct credits, but I hope to receive them ASAP and then I'm really really really done with it. Which means lots of free space on my harddisk - the beast is over 2 GB bigs here...</p>
<p>On the other hand lots of new awesome projects are out there waiting for me to contribute and I've already joined two new projects (WoWar and SemuruC) and also finally have time to concentrate on another one (with the mysterious name "DasProjekt"). More news, links and information about them later.</p>
<p>First I have to come up with a Post Mortem for Edu2.<br />
Cheers,<br />
Black</p>
<p>PS: On different other news I hope that I have been able to convince the head of PR of EA Germany to use Nexuiz as FPS example game at one of their public discussion rounds. More on that later, too -hopefully!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2008/03/edu2-is-finally-done-o/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Final Java Homework at uni.</title>
		<link>http://blog.blackhc.net/2008/02/final-java-homework-at-uni/</link>
		<comments>http://blog.blackhc.net/2008/02/final-java-homework-at-uni/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 22:44:58 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Check This Out!]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game Projects]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/?p=88</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2008/02/final-java-homework-at-uni/" title="Final Java Homework at uni."></a>This is the final Java homework in our Java introductory course at university. Enjoy Click here to play the game Greetings, Black]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2008/02/final-java-homework-at-uni/" title="Final Java Homework at uni."></a><p>This is the final Java homework in our Java introductory course at university. Enjoy <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<a href="http://www.icculus.org/~black/stuff/MineSweeper.html">Click here to play the game</a><br />
Greetings,<br />
Black</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2008/02/final-java-homework-at-uni/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Edu2p Stuff</title>
		<link>http://blog.blackhc.net/2008/02/edu2p-stuff/</link>
		<comments>http://blog.blackhc.net/2008/02/edu2p-stuff/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 23:37:52 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Game Projects]]></category>
		<category><![CDATA[Nexuiz]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/?p=87</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2008/02/edu2p-stuff/" title="Edu2p Stuff"></a>Finally, I've found some time to write a tiny post linking to a couple of pics of Edu2 (the prototype) - the project that has kept me busy for the last 3-4 months and burned me out pretty badly from &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2008/02/edu2p-stuff/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2008/02/edu2p-stuff/" title="Edu2p Stuff"></a><p>Finally, I've found some time to write a tiny post linking to a couple of pics of Edu2 (the prototype) - the project that has kept me busy for the last 3-4 months and burned me out pretty badly from what I can tell..</p>
<p>First a small animation that shows the terminal:</p>
<p><img src="http://offload2.icculus.org/~black/stuff/terminalworking.gif" alt="Working terminals in edu2" height="384" hspace="10" vspace="10" width="512" /></p>
<p>This was an awesome step in my opinion and it's really great to see it live (especially in a real level).</p>
<p><img src="http://offload1.icculus.org/~black/stuff/edu2p000.jpg" alt="Nexuiz's Homepage in its (new) default menu" height="300" hspace="10" vspace="10" width="400" /></p>
<p>Res2k aka Frank Richter hacked that into Nexuiz's new menu (written by div0 - kudos to him for fixing/rewriting the broken piece of shit that my old menu was after all). It's pretty nice but of course Nexuiz doesn't support Gecko atm (and won't either in the near future due to potential security vulnerabilities), and that feature only existed in our branch for some time. I guess I'll add it back soon, too, because it was really useful.</p>
<p>Next comes Edu2's chat window which is really a big step forward because it uses <i>client-side code</i> and the <i>menu</i> to replace engine features (ie. the normal messagemode input line when you want to chat). This should be an example for more serious projects, too, because it was really easy and <b>clean</b> and it's really a lot more professional than the usual DarkPlaces Quake1 look.</p>
<p><img src="http://offload2.icculus.org/~black/stuff/edu2p_chat1.jpg" alt="The first version of the Edu2 chat window" height="300" hspace="10" vspace="10" width="400" /></p>
<p>Of course, it wasn't finished and still isn't fully, so I added a button to view a chat log of different sizes (apparently I don't have a screenshot of that and I'm too lazy to grab one so here it is without the varying chat log size feature):</p>
<p><img src="http://offload1.icculus.org/~black/stuff/edu2000001.jpg" alt="Chat window with chat log" height="300" hspace="10" vspace="10" width="400" /></p>
<p>Next we spent some time adding model rendering support to the menu. Poor res2k spent a few days writing lots of code and doing many changes in a separate branch that got mostly thrown away by me later and/or rewritten due to bad management (that would be) but that prototype code was used as a base and was probably cleaner than the current result hiding in DP's codebase.</p>
<p>Anyway a nice first pic after the "hack":</p>
<p><img src="http://offload2.icculus.org/~black/stuff/edu2000006.jpg" alt="Model rendering in the menu" height="300" hspace="10" vspace="10" width="400" /></p>
<p>And even with alpha-blending support - that required some "clever" thinking on my side - and maybe div0 will add that to Nexuiz at least because it was on his wish-list:</p>
<p><img src="http://offload2.icculus.org/%7Eblack/stuff/edu2000007.jpg" alt="Alpha-Blending Support When Rendering Models" height="300" hspace="10" vspace="10" width="400" /></p>
<p>We also wanted to feature at least one mini-game (actually we wanted to design something proper but in the end it was our job again to do it and in the very end I volunteered due to having a similar task in my introductory computer science course at university). Guess the game:</p>
<p><img src="http://icculus.org/~black/stuff/edu2000016.jpg" alt="The Game" height="300" hspace="10" vspace="10" width="400" /><img src="http://icculus.org/~black/stuff/edu2000017.jpg" alt="Another Pic of The Game" height="300" hspace="10" vspace="10" width="400" /><img src="http://icculus.org/~black/stuff/edu2000018.jpg" alt="Last Pic of The Game at That stage" height="300" hspace="10" vspace="10" width="400" /></p>
<p>Guessed? Yeah pure, good, simple ol' MineSweeper!<br />
It looks like that in its final version though:<br />
<img src="http://offload2.icculus.org/~black/stuff/edu2000021.jpg" alt="The Game Finished" height="300" hspace="10" vspace="10" width="400" /><img src="http://icculus.org/~black/stuff/edu2000026.jpg" alt="The Game in Export Mode" height="300" hspace="10" vspace="10" width="400" /></p>
<p>Even div0 didn't think that such things (resizeable and moveable(!) windows and dynamic items) would be possible in his menu but I hacked that in pretty quickly and it's not even that big  a hack to be honest <i> <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </i>).</p>
<p>In the mean-time res2k and I have worked on the player model in the game itself  - res2k did the groundwork and it's a very good one to say this and when he was away for a weekend I simply added animation support from Zymotic and adapted it to our needs somewhat- res2k was a bit angry with me when he came back and found animations somewhat working already but I <i>let</i> <i>him </i>- <i>I didn't really have any spare time either</i> - finish the rest of course and he also added some code to allow taunts to be sent from clients to server which broadcasts it to all clients which does pretty awesome things using temporary entities in QuakeC - which I'm pretty proud of coming up with to be sincere.<br />
Another big TODO which res2k worked on and which shall not go unmentioned here is all the gecko stuff - except for the dynamic texture code in DP and the first set of gecko builtins and wrappers, he created all of our Gecko backend - which is a free sourceforge project called OffscreenGecko - and even added support for JavaScript interaction with Darkplaces (the various VMs). A major task and because he's currently in the Amsterdam working on CrystalSpace and the like, it's up to <b>me</b> to kick some asses and use that in Edu2p for some new ueber-awesome features.</p>
<p>Anyway, what I've been working on lately is skin support in edu2p - thus another contribution to the playermodel code <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  - and intergrating it with the menu plus allowing the users to select different models for the player's legs, torso and head. I think it looks pretty great with Quake3's models but sadly we can't use them and many of the free ones that can be found on <a href="http://ioquake3.org/" title="Icculus.Org's Quake3 fork" target="_blank">ioquake3</a>'s homepage are incompatible and badly tagged (or rather Darkplaces has problems with them that Quake3 has not).</p>
<p><img src="http://icculus.org/~black/stuff/edu2000028.jpg" alt="the menu with multi-part player selection" height="300" hspace="10" vspace="10" width="400" /><img src="http://icculus.org/~black/stuff/edu2000034.jpg" alt="another model mix" height="300" hspace="10" vspace="10" width="400" /></p>
<p><img src="http://www.icculus.org/~black/stuff/edu2000032.jpg" alt="In-game" height="300" hspace="10" vspace="10" width="400" /> <img src="http://icculus.org/~black/stuff/edu2000035.jpg" alt="another mix ingame" height="300" hspace="10" vspace="10" width="400" /></p>
<p>Now imagine that with more WoW-like models and you can see where Edu2(p) is heading. Sadly we have no player modeler right now, who could create such models and the modeler/animator we had that was capable of this was - <i>I sadly have to conclude in retrospect</i> - a complete jerk and arrogant retard - <i>and yes that is mean and probably uncalled for in this public blog but I'm not naming him and I'm pretty pissed off that he still hasn't replied to 10 emails from me, hasn't done the work he was more than once politely asked to <b>and</b> agreed to, didn't give any feedback though we were more than willing to help and adjust requirements if needed and used way too many repeated exclamation and question marks for my taste in his emails and simply dropped of my radar</i>. I'll still try to see if I can fix the models that we can use but there's a grim perspective to it with little more than two weeks till the final presentation.</p>
<p>Anyway this is it from me and stay tuned for a really final update on edu2p and more stories and rants and disclosures  - no NDA! \o/</p>
<p>Black</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2008/02/edu2p-stuff/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nice Comparison of Free-Software Shooters</title>
		<link>http://blog.blackhc.net/2007/12/nice-comparison-of-free-software-shooters/</link>
		<comments>http://blog.blackhc.net/2007/12/nice-comparison-of-free-software-shooters/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 14:41:28 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Nexuiz]]></category>
		<category><![CDATA[Personal Rantings]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/2007/12/31/nice-comparison-of-free-software-shooters/</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2007/12/nice-comparison-of-free-software-shooters/" title="Nice Comparison of Free-Software Shooters"></a>On http://www.linux-gamers.net/smartsection.item.81/comparison-of-free-software-shooters.html you can find a very nice comparison, which is pretty extensive and to my shame I have to admit that I haven't played many of them - I really ought to try War§ow soon. Nexuiz gets a pretty &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2007/12/nice-comparison-of-free-software-shooters/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2007/12/nice-comparison-of-free-software-shooters/" title="Nice Comparison of Free-Software Shooters"></a><p>On <a href="http://www.linux-gamers.net/smartsection.item.81/comparison-of-free-software-shooters.html" title="Comparison of Free-Software FPS" target="_blank">http://www.linux-gamers.net/smartsection.item.81/comparison-of-free-software-shooters.html</a> you can find a very nice comparison, which is pretty extensive and to my shame I have to admit that I haven't played many of them - I really ought to try War§ow soon.</p>
<p>Nexuiz gets a pretty good review (<i>in your face, AlienArena <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</i> but still note:</p>
<blockquote><p>While most of the game is cleaned up far beyond its Quake 1 roots, it is still lacking in presentation with <b>the menu being very circa 1990s</b>.</p></blockquote>
<p><i>/me sighs</i></p>
<p>I officially suck...</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2007/12/nice-comparison-of-free-software-shooters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This Evening&#039;s Worklog</title>
		<link>http://blog.blackhc.net/2007/12/this-evenings-worklog/</link>
		<comments>http://blog.blackhc.net/2007/12/this-evenings-worklog/#comments</comments>
		<pubDate>Tue, 25 Dec 2007 22:21:16 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game Projects]]></category>
		<category><![CDATA[Red Thumb Games]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/2007/12/26/this-evenings-worklog/</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2007/12/this-evenings-worklog/" title="This Evening&#039;s Worklog"></a>Today I've decided to work on BSS again - finally. And I've even come up with a few neat bullet points to help me clean-up the codebase and I really feel like sharing them with the world today (although everybody &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2007/12/this-evenings-worklog/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2007/12/this-evenings-worklog/" title="This Evening&#039;s Worklog"></a><p>Today I've decided to work on BSS again - <b><i>finally</i></b>.</p>
<p>And I've even come up with a few neat bullet points to help me clean-up the codebase and I really feel like sharing them with the world today (<i>although everybody can come up with them in a few minutes, too, but <b>hey</b> - now I can say that you've only copied my thoughts <b> <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </b>):</i></p>
<blockquote>
<h4>How to fix and clean-up stuff quickly:</h4>
<h5>What do I want?</h5>
<ul>
<li>remove unnecessary code</li>
<li>clean-up the design</li>
<li>untangle tight couplings</li>
</ul>
<p><i>How do I do that???</i></p>
<h4>Hack &amp; Polish</h4>
<ul>
<li>look at a specific code section</li>
<li>rewrite it quickly while keeping the behavior the same</li>
<li>don't look at the overall design concepts - <i><b>to KISS </b>(to keep it simple </i>STUPID<i>)</i></li>
<li>as soon as the new code actually seems to <i>work</i>, go and <b>polish </b>it slightly (to make it readable again)</li>
</ul>
<p>Repeat these steps a few times..</p>
<p>Now look at the <i>"overall picture"</i> and try to identify common patterns and remove duplicate code again by writing generic helper code - <b>but this time keep it decoupled and make it less messy!</b>
<p><i>Rinse and repeat...</i></p>
</blockquote>
<p>OK... sounds great? Yes, it does! And it even works to some degree. I've tried it this evening and although I  - <i>like always <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  </i>- lose too much time browsing around and getting lost in the WWW, I still made some progress.</p>
<p>Here's my worklog as proof (and to annoy Joshua a bit ;-P):</p>
<table>
<tr>
<td>18:32</td>
<td>starting to work on BSS's cleanup</td>
</tr>
<tr>
<td>19:20</td>
<td>removed some Sploidz-specific code from the items module</td>
</tr>
<tr>
<td>20:00</td>
<td>removed more files, tracked down Joshua's new coder (wtf didnt he tell me?!?) and found out that two files were missing in the SVN repository (added them from a backup that I have with me here)</td>
</tr>
<tr>
<td>20:30</td>
<td>changed bits of EventFSM and t2dFSM</td>
</tr>
<tr>
<td>21:00</td>
<td>reworking BlockItem</td>
</tr>
<tr>
<td>21:45</td>
<td>BlockItem now uses a FSM</td>
</tr>
<tr>
<td>22:45</td>
<td>BlockGame now is decoupled from Grid (gamelogic-wise) and BlockItem from BaseItem (the latter might be reverted later though)</td>
</tr>
<tr>
<td>23:00</td>
<td>trying to rewrite BlockGame's setupItem function again but deciding that it's pretty late</td>
</tr>
</table>
<p>Enough for today. One more Dexter episode for me now (actually the first today) and then good night!</p>
<p>Good night,<br />
Black</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2007/12/this-evenings-worklog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blender2md5 Exporter</title>
		<link>http://blog.blackhc.net/2007/12/blender2md5-exporter/</link>
		<comments>http://blog.blackhc.net/2007/12/blender2md5-exporter/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 22:44:52 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game Projects]]></category>
		<category><![CDATA[Blender MD5 Exporter Python]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/2007/12/24/blender2md5-exporter/</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2007/12/blender2md5-exporter/" title="Blender2md5 Exporter"></a>Update: I've (sadly) worked on it some more today and there's a new version online. You can find it on icculus again: http://svn.icculus.org/darkwar/trunk/base/scripts/ For the past 4 days I've been working on and off on some changes to der_ton's blender2md5 &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2007/12/blender2md5-exporter/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2007/12/blender2md5-exporter/" title="Blender2md5 Exporter"></a><p align="left"><em>Update: I've (sadly) worked on it some more today and there's a new version online. You can find it on icculus again: </em><img src="http://icculus.org/~black/weblog/blender2md5_new.jpg" border="0" alt="" width="1" height="1" /><a title="Link to Darkwar's Repository (scripts)" href="http://svn.icculus.org/darkwar/trunk/base/scripts/" target="_blank">http://svn.icculus.org/darkwar/trunk/base/scripts/</a><img src="http://icculus.org/~black/weblog/blender2md5_newnew.jpg" alt="Latest interface" hspace="10" vspace="10" width="488" height="204" /></p>
<p align="left">For the past 4 days I've been working on and off on some changes to der_ton's blender2md5 exporter - <em><strong>big thanks to him for developing the exporter in the first place </strong></em>- and in doing so I've finally learnt <a title="Official Python Website" href="http://www.python.org/" target="_blank">Python</a>, which is an <strong>awesome</strong> scripting language to say at least.</p>
<p>I haven't really changed much of the exporter's internal workings (only a few clean-ups here and there which hopefully didn't break it) because I mainly concentrated on GUI changes. <em>fleeky</em>, a nice circus fellow who is DarkWar's only active modeller at the moment, pestered me long enough to add support for exporting multiple animations from <a title="Blender's Official Home" href="http://www.blender.org/" target="_blank">Blender </a>to md5, that I finally gave in and started working.</p>
<p>Thank God, Python's <a title="Beginner's Guides for Programmers" href="http://wiki.python.org/moin/BeginnersGuide/Programmers?highlight=%28BeginnersGuide%2F%29" target="_blank">tutorial page</a> is excellent, too - especially <a title="Learn Python in 10 Minutes" href="http://www.poromenos.org/tutorials/python?" target="_blank">'Learn Python in 10 Minutes'</a>, which really does a very good job at showing you many language features very fast - which arguably isn't useful for total newbies but it gives a nice overview and invites you to play around.. and is <strong>really</strong> helpful when you start to code because you already know about some "advanced" language features early-on and can look them up when you think that they might help you solve a problem more elegantly (in contrast to not knowing about the features at all).</p>
<p>Another tip for Python beginners: get <a title="ActiveState's ActivePython" href="http://www.activestate.com/Products/activepython/" target="_blank">ActivePython </a>and <a title="ActiveState's Komodo Edit" href="http://www.activestate.com/Products/komodo_edit/" target="_blank">Komodo Edit</a> (or even the IDE if you have the money and/or are a student and willing to go through their registration process, which I might if I'll happen to work more with Python). Both are free and will get you started with Python coding quickly. They really helped me a lot while learning and coding the new features.</p>
<p>Anyway, so what did I code? First let's take a look at the original exporter interface:<img src="http://home.in.tum.de/~kirschan/blender2md5_old.jpg" border="0" alt="Old blender2md5 Interface" hspace="10" vspace="10" width="282" height="348" align="middle" /></p>
<p>My first changes were about adding a simple batch system that allows you to set the properties for one animation and mesh to export and then specify a batch file and append them to it. Then you can export all "jobs" from the specified batch file or directly specify it and export from it:</p>
<p><img src="http://home.in.tum.de/~kirschan/blender2md5_oldnew.jpg" border="0" alt="Interface with first change set" hspace="10" vspace="10" width="262" height="401" align="middle" /></p>
<p>This was ok but it didn't feel that nice - since you'd have to manually edit the batch file if you wanted to change export properties, etc.</p>
<p>Today then I've decided to spend one last day on the project and rewrite most of the GUI:<br />
it now displays all default buttons at the bottom and allows one to insert as many animations to export as one wishes. It displays the animations each with their own target filename, start and end frame and action dropdown menu in a table and now also exports all other settings to settings files (batch files don't really describe it correctly).<br />
Even better I've added support for automatically saving the settings to Blender's .blend files which should really help automate exporting a lot.</p>
<p align="center">Just open the scene file, open the plugin, hit export and you're done!</p>
<p align="left">Right now I have disabled (commented out) exporting camera animations because they don't really fit anymore, but if there's a need for them, I'll put them back in).</p>
<p align="left">And finally, here's the new interface:</p>
<p align="left"><a title="New Blender2md5 Interface" href="http://blog.blackhc.net/wp-content/uploads/2007/12/blender2md5_new.jpg"><img src="http://blog.blackhc.net/wp-content/uploads/2007/12/blender2md5_new.jpg" alt="New Blender2md5 Interface" width="519" height="195" /></a></p>
<p align="left">Give a try. You can find the python script in Darkwar's repository: <a title="Link to DarkWar's Repository" href="http://svn.icculus.org/darkwar/trunk/base/scripts/" target="_blank">http://svn.icculus.org/darkwar/trunk/base/scripts/</a><br />
<em> Mirror for now: <a href="http://home.in.tum.de/~kirschan/blender2md5.py">http://home.in.tum.de/~kirschan/blender2md5.py</a> (out-dated but I'm leaving it in case icculus.org is down again and someone badly needs a mostly working exporter)</em></p>
<p align="left">Either copy it into your Blender plugin directory or manually open it in Blender's text editor and run it with Alt/Meta-P.</p>
<p align="left">Enjoy and Merry Christmas!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2007/12/blender2md5-exporter/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Alientrap Application Email</title>
		<link>http://blog.blackhc.net/2007/12/alientrap-application-email/</link>
		<comments>http://blog.blackhc.net/2007/12/alientrap-application-email/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 20:06:48 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Alientrap]]></category>
		<category><![CDATA[Game Projects]]></category>

		<guid isPermaLink="false">http://blackhc.wordpress.com/2007/12/07/alientrap-application-email/</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2007/12/alientrap-application-email/" title="Alientrap Application Email"></a>Funny, I've just found the original email (at least the text) that I've sent to Lee Vermeulen when I applied at Alientrap after I saw a screenshot of Nexdm something on flipcode - RIP Note that this dates back to: &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2007/12/alientrap-application-email/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2007/12/alientrap-application-email/" title="Alientrap Application Email"></a><p>Funny, I've just found the original email (at least the text) that I've sent to Lee Vermeulen when I applied at Alientrap after I saw a screenshot of Nexdm something on flipcode - <em>RIP <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </em></p>
<p>Note that this dates back to: Saturday, 23. August 2003, 19:25:14</p>
<blockquote><p>I'll just tell the truth :</p>
<p>I'm almost 16 years old and live in Germany, but I do understand matrices, etc.<br />
I have 8 years of programming experience but only 2 in c/c++.<br />
I just learnt OpenGL, so don't expect me to be a John Carmack.</p>
<p>Now let's get to the positive aspects.<br />
I want to learn, learn, learn - so give me a problem and I'll work until I've got a solution.<br />
Math is not a problem to me, I like it pretty much (especially when I finished calculating some formula).</p>
<p>I've got a adsl flatrate, so I can always search the internet for additional informations.</p>
<p>Perhaps I could be tester, or help finding bugs, etc., until I learnt more opengl and other programming technics.</p>
<p>Sincerely yours,<br />
Andreas Kirsch</p></blockquote>
<p>Also observe the cute mistakes - which I'm still making today, too <strong>&gt;_&gt;</strong></p>
<p>But anyway,<em><strong> </strong></em>there were <em><strong>forty</strong></em> applicants and only three '<em>who survived the "look at the code and try to implement one of the features on the TODO list" test, out of 40+ applicants?</em>' (<em>LordHavoc </em>in IRC). Two of them got jobs in the game industry shortly afterwards, so I was the <em>only one </em>left out of 40 applicants!</p>
<p>Well guys (the 37 of them), you clearly suck, <strong>because you didn't even try. </strong>I have tried and although LordHavoc pretty much dismissed all of my changes as useless or not committable, I still got onto the team and I honestly have never regretted it.</p>
<p>So always:<strong> try your best, even if it looks as if you're failing, because you're not the only one and your attempt already is a success compared to simply giving-up up-front!</strong></p>
<p>Now enough of that, enjoy your weekend!<br />
Greetings,<br />
Black</p>
<p>PS: Always a nice read - <a href="http://www.thejonjones.com/2005/08/24/smart-people-are-dumb-failure-is-awesome/" title="jonjones - smart people are dumb - failure is awesome" target="_blank">http://www.thejonjones.com/2005/08/24/smart-people-are-dumb-failure-is-awesome/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2007/12/alientrap-application-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

