<?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>Adam&#039;s Lair</title>
	<atom:link href="http://www.fetzenet.de/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.fetzenet.de/blog</link>
	<description>game development and casual madness</description>
	<lastBuildDate>Wed, 12 Jun 2013 07:17:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Mailbag: Plugins and Messaging</title>
		<link>http://www.fetzenet.de/blog/?p=1211&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=1211</link>
		<comments>http://www.fetzenet.de/blog/?p=1211#comments</comments>
		<pubDate>Tue, 21 May 2013 00:58:57 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Duality]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Concept]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=1211</guid>
		<description><![CDATA[There was quite some useful information in the answers to the last few e-mails I&#8217;ve received &#8211; or I hope so, at least. That&#8217;s for you to decide. Time for another mail bag posting! Q: How would I start to implement Duality extensions and plugins for others to use? My suggestion would be to implement ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">There was quite some useful information in the answers to the last few e-mails I&#8217;ve received &#8211; or I hope so, at least. That&#8217;s for you to decide. Time for another mail bag posting!</p>
<p><span id="more-1211"></span></p>
<p><strong>Q: How would I start to implement Duality extensions and plugins for others to use?</strong></p>
<p style="text-align: justify;">My suggestion would be to implement each major new system (ParticleFx, Animation, etc.) in its own plugin project, as seen in my old DynamicLighting experiment: A Core Plugin extending engine functionality and an Editor plugin providing more suitable and comfortable editing capabilities.</p>
<p style="text-align: justify;">Approaching new feature sets like this keeps Duality modular and makes it a lot easier to keep track of class interconnection and dependencies. It also keeps down the overhead for users who do not need all of the features: A game without dynamic lighting doesn&#8217;t need to boot up the lighting subsystem or clutter the codebase with lighting-specialized classes.</p>
<p style="text-align: justify;">However, implementing a whole new engine feature in your games local plugin first for prototyping isn&#8217;t such a bad idea, since it takes away a lot of the &#8220;quality code design&#8221; pressure. Extracting a finished product later will leave a designated time window for API cleanup and small polishing tasks that doesn&#8217;t interfere with the development of your game.</p>
<p><strong>Q: Can I use external libraries in my Duality plugins?</strong></p>
<p style="text-align: justify;">Yes. Simply reference them in your project and place their .dll files in the Plugins directory as well. When you need to set up and shut down external resources globally, override CorePlugin.InitPlugin and CorePlugin.OnDisposePlugin methods.</p>
<p><strong>Q: How would you implement communication between Components? What about a messaging system?</strong></p>
<p style="text-align: justify;">The first approach that likely comes into your mind when thinking about communication between Components is manually retrieving them, store their reference and directly invoking methods on them. That&#8217;s pretty strong coupling between the involved classes. Isn&#8217;t that bad?</p>
<p style="text-align: justify;">Direct coupling between specific Components looks like an ugly thing from a code design point of view, but is the easiest solution and even fully sufficient in a lot of cases. However, there should be a clear line: <strong>Use</strong> direct coupling when both objects are, by logic, directly coupled &#8211; like a Car and its Wheels. <strong>Don&#8217;t</strong> use direct coupling when you have some generalized behavior in mind &#8211; like messages that anyone could listen for.</p>
<p style="text-align: justify;">The second case is where all those ICmp interfaces emerge. Their purpose is to generalize certain kinds of Components by their behavior and / or communication traits. ICmpUpdatable models updating behavior, while on the other hand, ICmpCollisionListener is a mere communication device.</p>
<p>Getting to a generalized messaging system, I&#8217;ll just skip ahead and show some code:</p>
<div class="codecolorer-container csharp railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> GameMessage <span style="color: #008000;">&#123;</span> <span style="color: #008080; font-style: italic;">/* .. Base class for all game messages .. */</span> <span style="color: #008000;">&#125;</span><br />
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> SpecificGameMessage <span style="color: #008000;">:</span> GameMessage <span style="color: #008000;">&#123;</span> <span style="color: #008080; font-style: italic;">/* .. Implementation / Data of a specific game message type .. */</span> <span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">interface</span> ICmpMessageHandler<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #6666cc; font-weight: bold;">void</span> HandleMessage<span style="color: #008000;">&#40;</span>Component sender, GameMessage msg<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">class</span> ExtMethodsGameObject<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> BroadcastMessage<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span> Component sender, GameMessage msg, <span style="color: #6666cc; font-weight: bold;">string</span> targetName <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; IEnumerable<span style="color: #008000;">&lt;</span>ICmpMessageHandler<span style="color: #008000;">&gt;</span> receivers <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>targetName <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var targetObj <span style="color: #008000;">=</span> Scene<span style="color: #008000;">.</span><span style="color: #0000FF;">Current</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FindGameObjects</span><span style="color: #008000;">&#40;</span>targetObject<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; receivers <span style="color: #008000;">=</span> targetObj<span style="color: #008000;">.</span><span style="color: #0000FF;">GetComponentsDeep</span><span style="color: #008000;">&lt;</span>ICmpMessageHandler<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; receivers <span style="color: #008000;">=</span> Scene<span style="color: #008000;">.</span><span style="color: #0000FF;">Current</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FindComponents</span><span style="color: #008000;">&lt;</span>ICmpMessageHandler<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var rec <span style="color: #0600FF; font-weight: bold;">in</span> receivers<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rec<span style="color: #008000;">.</span><span style="color: #0000FF;">HandleMessage</span><span style="color: #008000;">&#40;</span>sender, msg<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p style="text-align: justify;">Here&#8217;s the same thing from a Components point of view:</p>
<div class="codecolorer-container csharp railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #008080; font-style: italic;">// Send messages</span><br />
<span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">BroadcastMessage</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> SomeGameplayMessage<span style="color: #008000;">&#40;</span><span style="color: #008080; font-style: italic;">/* ... */</span><span style="color: #008000;">&#41;</span>, <span style="color: #666666;">&quot;OnlyToThoseWithThatName&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">BroadcastMessage</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> SomeGameplayMessage<span style="color: #008000;">&#40;</span><span style="color: #008080; font-style: italic;">/* ... */</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// to all</span><br />
<br />
<span style="color: #008080; font-style: italic;">// Handle messages</span><br />
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> YourComponent <span style="color: #008000;">:</span> Component, ICmpHandlesMessages<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> HandleMessage<span style="color: #008000;">&#40;</span>Component sender, GameMessage msg<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; SomeGameplayMessage specificMessage <span style="color: #008000;">=</span> msg <span style="color: #0600FF; font-weight: bold;">as</span> SomeGameplayMessage<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>specificMessage <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #008080; font-style: italic;">/* Handle specific message type */</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p style="text-align: justify;">I&#8217;m sure there are other ways, but that&#8217;s probably how I would&#8217;ve approached it. You should also keep in mind that any kind of messaging implemented like this will walk the entire scene graph to retrieve its listeners each time you send a message. Though, it should be fine as long as you don&#8217;t send a huge amount of messages each frame.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=1211</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mailbag: Civilization and ContentRefs</title>
		<link>http://www.fetzenet.de/blog/?p=1037&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mailbag-civilization-and-contentrefs</link>
		<comments>http://www.fetzenet.de/blog/?p=1037#comments</comments>
		<pubDate>Wed, 06 Mar 2013 11:30:03 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Duality]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Concept]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[GameObject]]></category>
		<category><![CDATA[Serialization]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=1037</guid>
		<description><![CDATA[Sometimes, there are questions. And sometimes they happen to be in e-mails I receive through this blog. I usually take the time to answer them if I&#8217;m not too busy and occasionally, these answers can get very long. This time it&#8217;s about Civilization and referencing content in Duality. Q: How would you use the Component-based GameObject design ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Sometimes, there are questions. And sometimes they happen to be in <a href="http://www.fetzenet.de/blog/?page_id=245" target="_blank">e-mails</a> I receive through this blog. I usually take the time to answer them if I&#8217;m not too busy and occasionally, these answers can get very long. This time it&#8217;s about Civilization and referencing content in Duality.<span id="more-1037"></span></p>
<h3 style="text-align: justify;">Q: How would you use the Component-based GameObject design when approaching a game like Civilization, taking into account landscape, units, cities, etc.?</h3>
<p style="text-align: justify;">The solution to your problem might not be obvious, but it really isn&#8217;t as complicated as you might think. Not everything in a component-based approach has to be done utilizing a lot of objects. Sometimes it can be more suitable to focus on fewer, more complex objects. How would you implement such system *without* a component-based game object system? Since the actual implementation of a &#8220;Component&#8221; is completely free, it is entirely possible to apply most other code designs to component-based systems as well, although not being equally useful for all of them.</p>
<p style="text-align: justify;">The landscape is a typical case for a single, specialized object. You can implement it as a Component or set of Components which you add to a single &#8220;Landscape&#8221; GameObject consisting of your Tilemap data, a specialized Renderer for visual display and probably some game logic bound to it. I&#8217;m picturing something like this:</p>
<pre>Landscape GameObject
+-- Transform
+-- Tilemap (Generic implementation of a tilemap, data only)
+-- TilemapRenderer (Accesses Tilemaps and renders them using a Tileset)
+-- Landscape (Rules, Game-related logic)</pre>
<p style="text-align: justify;">Units could be implemented as individual objects that are bound to your global landscape object by their Unit logic.</p>
<pre>Unit GameObject
+-- Transform
+-- SpriteRenderer (Or similar)
+-- Unit (Keeping it bound to the Landscape, Rules, Game-related logic)</pre>
<p style="text-align: justify;">You could also split up the &#8220;Unit&#8221; Component into its own micro-hierarchy to serve different kinds of map objects:</p>
<pre>Component
+-- MapObject (Anchoring something to a tile position, general logic)
    +-- Unit (Controlled, can walk, fight, etc.)
    +-- City (Builds stuff)
    +-- Collectible (When walked over, provides a bonus)</pre>
<p style="text-align: justify;">This should cover some basic setup. Of course, there has to be some kind of global database to store the Tileset used by the Tilemaps, Unit Types, etc. This is what Resources are for. In Duality, you can not only derive from the basic &#8220;Component&#8221; class, but also from the &#8220;Resource&#8221; class to store that kind of information globally available.</p>
<h3 style="text-align: justify;">Q: But what&#8217;s the big advantage of Components for that kind of game?</h3>
<p style="text-align: justify;">There is no need for Components in this case! But they&#8217;re not standing in your way either.</p>
<p style="text-align: justify;">Component-based approaches are specialized in modeling the interaction of objects which are not necessarily known when laying out the object management system or engine structures. Their greatest strengths are extensibility and modularity. Unlike in classic inheritance hierarchies they allow you to dynamically combine different pieces of functionality for each object individually. They obviously reach their full potential in games with a more versatile environment or game world and allow non-programmers to creatively combine existing functionality in whatever way they need.</p>
<p style="text-align: justify;">A &#8220;boardgame&#8221; like civilization behaves in many ways perpendicular to that concept. In most cases, all Units, Cities, Tiles and other game elements are similar in their ruleset and logic. They don&#8217;t need Components and you, as a developer, don&#8217;t usually need the ability to dynamically construct new kinds of objects or introduce new kinds of behavior later.</p>
<h3 style="text-align: justify;">Q: The ContentRef&lt;T&gt; struct is used wherever referencing Resources. What is that good for?</h3>
<p style="text-align: justify;">I use this construct and a centralized ContentProvider in Duality because of several reasons:</p>
<ol style="text-align: justify;">
<li>Due to the editors design concept, it should be possible to dynamically reload any Resource whenever necessary, even while the game is running. That means, there needs to be a central register of currently loaded Resources to keep track of what to update when a reload occurs: The ContentProvider. It also assures nothing is loaded twice, just because it is requested twice.</li>
<li>Why doesn&#8217;t it return Texture, but ContentRef&lt;Texture&gt;? Well, imagine the user deletes a Resource in the editor. Updating existing instances won&#8217;t suffice anymore &#8211; we need some kind of hook to actually set all references to that Texture to null, and the ContentRef indirection layer is exactly that. When accessing a ContentRef that refers to a deleted Resource, it will let go of old data and immediately show that something is missing.</li>
<li>ContentRef also enables us to talk about Resources that aren&#8217;t even there, which isn&#8217;t uncommon during development time. Without ContentRef, requesting non-existent Textures would result in a couple of null references. We can&#8217;t compare them, tell what they where trying to retrieve or even if they are intentional or not. ContentRef always holds both path an reference, solving all of these problems. That also allows deleted-and-then-restored Textures to magically re-appear throughout the level. As a bonus, it will be the ideal location to implement streaming behavior in the future, because it allows referencing &#8220;not-yet-fully-loaded&#8221; Resources and using them as soon as they&#8217;re available.</li>
<li>It is possible to pass around ContentRefs without loading the references Resource. If not done explicitly, they will be loaded on their first access. Referencing them doesn&#8217;t mean implicitly loading them, although you can always request doing so explicitly.</li>
<li>Duality uses semi-automated Serialization based on Reflection mechanisms. When serializing a ContentRef, only the path is serialized, preventing Resources to be dragged into the serialization hierarchy without the need for manually handling such cases. It also takes care of retrieving the actual Resources after deserialization &#8211; as soon as they are needed.</li>
</ol>
<h3>Q: Will there be more Mailbag posts?</h3>
<p>Probably.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=1037</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Random Gamedesign Memo</title>
		<link>http://www.fetzenet.de/blog/?p=1015&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=random-gamedesign-memo</link>
		<comments>http://www.fetzenet.de/blog/?p=1015#comments</comments>
		<pubDate>Fri, 01 Mar 2013 12:14:46 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Concept]]></category>
		<category><![CDATA[Gamedesign]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=1015</guid>
		<description><![CDATA[Do you know that famous Game Designer Peter Molydeux? No, not Molyneux, silly. The oher one. He&#8217;s constantly posting game design ideas on Twitter. Most of them appear to be some kind of hilarious intellectual fall-out, but in all this crazyness, there is a creative genius hidden somewhere. If you haven&#8217;t yet, you should definitely read his ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Do you know that famous Game Designer Peter Molydeux? No, not Moly<em>neux</em>, silly. The <a href="https://twitter.com/#!/petermolydeux" target="_blank">oher one</a>. He&#8217;s constantly posting game design ideas on Twitter. Most of them appear to be some kind of hilarious intellectual fall-out, but in all this crazyness, there is a creative genius hidden somewhere. If you haven&#8217;t yet, you should definitely read his tweets. Doing so for quite a while now has inspired me to write down some thoughts myself. I&#8217;d love to experiment with them, but it seems like I&#8217;m pretty occupied with Duality now, so I guess the best thing I can still do is share them.<span id="more-1015"></span></p>
<ol style="text-align: justify;">
<li><span style="line-height: 13px;">A game that decides by itself whether and when it wants to be played. It&#8217;s not in the mood? Well, too bad. Can&#8217;t play it now.</span></li>
<li>This could be expanded to have a game with an actual character. Randomized using a hardware-specific seed.</li>
<li>Make game descisions have an effect in <em>other</em> games as well. Let&#8217;s say you decide to threaten and rob a trader you meet on the street in an Rpg game. This descision is stored somewhere persistently and available to other games to use. Imagine playing a different game, months later, when you suddendly find yourself in the exact same scene &#8211; but this time you happen to be the trader. You&#8217;ll be your own victim.</li>
<li>Speaking in general terms, building a game on the concept of <em>descisions</em> could be interesting. Confront the player with his own descisions, with indifference and pointlessness (can&#8217;t alter a predefined <em>fate</em>), with circular storylines (the same stuff happens over and over again, regardless of player action), with self-fulfilling prophecy and descisions that are essentially directed by others.</li>
<li>A game that can only be played <em>once</em>, even after re-installing it<em>.</em> You&#8217;ll only have one chance and everything will be irreversible. If you quit, the main character will commit suicide and that&#8217;s it. It&#8217;ll be final. Your choice.</li>
<li>React dynamically to outgame events. Start subtlety with the system date or time and proceed to use stuff that&#8217;s currently in the news. Is it possible to do that using automated data mining? Maybe when abstracting certain events to a metaphoric or diffuse level.</li>
<li>&#8220;Use XY with game&#8221;: DragDrop files, images or texts from the windows explorer into the game to do ingame-stuff. Imagine a 2d adventure game where your inventory isn&#8217;t in the game but on your desktop. Whatever you have on your desktop will be your tool in the game environment.</li>
<li>Kind of a different concept, but related to &#8220;integration into your OS&#8221;: A game that gives you quests to solve outside the game itself.</li>
<li>Trust. &#8220;Do you trust me?&#8221;, asks the game. &#8220;Er.. why.. yes&#8221;, answers the player. &#8220;Then&#8221;, responds the game, &#8220;show me the folder in which you store your personal data&#8221;. Doesn&#8217;t really matter if you actually do something harmful with that data or not. Trust is more about the potential what one <em>could</em> do anyway.</li>
<li>That one&#8217;s actually from a colleague: A game that actively tries to bore the player out of his mind. The player gets points for playing it anyway. It&#8217;s like a staring contest. Who will give up first?</li>
<li>Search the users computer for data that can be used to dynamically generate parts of the game world. Documents that have been opened recently might affect what books a charakcter has in his bookshelf. Songs that have been played often could play randomly in the ingame radio. Use the spectrum of installed programs to determine character traits of the user and incorporate these somehow into certain game characters.</li>
<li>Run a backround process that posts cryptic messages in documents and folders the user visits. It will become active as soon as the game hasn&#8217;t been played for a while (weeks?) and hint at events from the ingame story or world. Shouldn&#8217;t do anything harmful and deactivate itself after a while of course. Game viruses are still viruses after all.</li>
<li>Inception-like multilevel story that is actually a loop: The layer following after the last one is the first one again. You&#8217;ll never know, which one was &#8220;real&#8221; &#8211; but if everything exists in a logical loop, does it make a difference anyway?</li>
<li>Faith. Not religion. Not society believing something, but an individuals belief. Not necessarily faith in god or higher power. Has any game really brought up the aspect of faith in general? Here&#8217;s a straightforward example: Most players of a certain genre <em>believe</em> their character will respawn if they die, that there will be a checkpoint or savegame that rescues them. Shatter that belief, prove them wrong, multiple times. Leave only scorched earth in their silly respawn-faith. Then, plant the seeds of it again, subtlety, and later trigger a situation in which it matters whether there are respawns or not. Some kind of test. A leap of faith, in metaphorical sense. The player can take it &#8211; or not. It all comes down to whether he believes despite being proven wrong in the past. Here&#8217;s the twist: The actual outcome whether there are or aren&#8217;t respawns in this final test is actually random.</li>
</ol>
<p style="text-align: justify;">You know, I&#8217;m certainly not a game designer. But there must be <em>some</em> use to those random brainwaves.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=1015</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bachelor Thesis</title>
		<link>http://www.fetzenet.de/blog/?p=1007&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bachelor-thesis</link>
		<comments>http://www.fetzenet.de/blog/?p=1007#comments</comments>
		<pubDate>Mon, 18 Feb 2013 10:52:45 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Duality]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Dualitor]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Study]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=1007</guid>
		<description><![CDATA[Three months and countless caffeinated drinks later, it&#8217;s finally done: My bachelor thesis has been graded and I&#8217;m back to normal life again. Since a large portion of my thesis deals with the inner workings and design descisions of Duality, it might be worth reading for anyone who is interested in the project. You can ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Three months and countless caffeinated drinks later, it&#8217;s finally done: My bachelor thesis has been graded and I&#8217;m back to normal life again. Since a large portion of my thesis deals with the inner workings and design descisions of Duality, it might be worth reading for anyone who is interested in the project. You can read it <a href="https://duality.googlecode.com/svn/trunk/Other/Resources/Bachelorarbeit_PdfReader.pdf" target="_blank">here</a>. Only available in german, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=1007</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awkward Silence</title>
		<link>http://www.fetzenet.de/blog/?p=1000&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=awkward-silence</link>
		<comments>http://www.fetzenet.de/blog/?p=1000#comments</comments>
		<pubDate>Thu, 13 Dec 2012 10:49:06 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Deck13]]></category>
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=1000</guid>
		<description><![CDATA[So.. yeah&#8230; um&#8230; you come here often? If this is the case, you might have noticed the complete lack of updates since August. There are several reasons for it and I plan to revive this blog as soon as they&#8217;re gone. I&#8217;m in the last semester of my studies now an they required me to ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">So.. yeah&#8230; um&#8230; you come here often?<span id="more-1000"></span></p>
<p style="text-align: justify;">If this is the case, you might have noticed the complete lack of updates since August. There are several reasons for it and I plan to revive this blog as soon as they&#8217;re gone. I&#8217;m in the last semester of my studies now an they required me to do an internship spanning 360 hours. So I asked Deck13 about whether they&#8217;d like me to hang around five days a week instead of one, and they accepted, so I began in the end of August. My job was to create an all-new Asset Management system, because the old one was a little buggy, hard to use and already grinding on the nerves of a lot of people. <em>(Asset Management means making the import and processing of game content into the engine manageable, reproducable and configurable.)</em> It was an exciting task, involving large portions of software design and GUI design &#8211; needless to say, it completely absorbed me for the time being. After nine to ten hours at work plus two hours getting there and back home, there simply wasn&#8217;t anything left for Duality. At least not beyond <a href="https://code.google.com/p/duality/source/list?num=25&amp;start=567" target="_blank">bugfixes and small tweaks</a>.</p>
<p style="text-align: justify;">But that&#8217;s over now. What currently keeps me away from active development is my bachelor thesis that&#8217;ll be due in the end of January. I&#8217;m approximately 70% done by now, and since I&#8217;m writing about the Duality project, it&#8217;ll most likely find its way into this blog when the time comes. Only in german, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=1000</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dualitor: Tweaking Usability</title>
		<link>http://www.fetzenet.de/blog/?p=939&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dualitor-tweaking-usability</link>
		<comments>http://www.fetzenet.de/blog/?p=939#comments</comments>
		<pubDate>Thu, 23 Aug 2012 21:22:27 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Duality]]></category>
		<category><![CDATA[Dualitor]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=939</guid>
		<description><![CDATA[We steadily progress forward through life, but can only understand it backwards. Which is kind of a usability faux-pas. So clearly, what the world needs is more Duality updates. This is a small one, though. But it has pretty pictures in it! There is a new CamViewLayer called the Grid. It has less to do ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">We steadily progress forward through life, but can only understand it backwards. Which is kind of a usability faux-pas. So clearly, what the world needs is <em>more Duality updates</em>. This is a small one, though. But it has pretty pictures in it!<span id="more-939"></span></p>
<p style="text-align: justify;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_Grid.jpg"><img class="alignleft size-thumbnail wp-image-930" title="Dualitor: Grid Layer" src="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_Grid_Thumb.jpg" alt="" /></a>There is a new CamViewLayer called <span style="color: #99ccff;">the Grid</span>. It has less to do with <a href="http://www.youtube.com/watch?v=tFXYuw96d0c" target="_blank">Tron</a> than it has with geometry and its goal is to ease Camera navigation and give you a visual scale context. It automatically adjusts to the current zoom factor and displays the cursor positions world coordinates.</p>
<p style="text-align: justify;">Also, texts displayed in a CamView now have those neat, black background boxes.</p>
<p>&nbsp;</p>
<p style="text-align: justify;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_DesignTimeData.jpg"><img class="alignleft size-thumbnail wp-image-930" title="Dualitor: Design-time data" src="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_DesignTimeData_Thumb.jpg" alt="" /></a>The new <span style="color: #99ccff;">design-time data</span> feature allows the editor to tag GameObjects with any kind of data. This data has nothing to do with the Core library and only exists in the editor. It is even stored in a separate, project-global file.</p>
<p style="text-align: justify;">As for a first use, it is now possible to lock or hide objects. Locking prevents the object from being selected / picked in the CamView, which had been really annoying for full-scale static backgrounds.</p>
<p>&nbsp;</p>
<p style="text-align: justify;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_SceneViewComponents.jpg"><img class="alignleft size-thumbnail wp-image-930" title="Dualitor: Component Visibility" src="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_SceneViewComponents_Thumb.jpg" alt="" /></a></p>
<p>&nbsp;<br />
&nbsp;</p>
<p style="text-align: justify;"><span style="color: #99ccff;">Showing Components</span> in the Scene View is now optional. If you don&#8217;t like it, just disable it. There shouldn&#8217;t be any global disadvantages and everything else still works the same.</p>
<p>&nbsp;<br />
&nbsp;</p>
<p style="text-align: justify;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_SandboxView.jpg"><img class="alignleft size-thumbnail wp-image-930" title="Dualitor: Entering the Sandbox" src="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_SandboxView_Thumb.jpg" alt="" /></a></p>
<p>&nbsp;<br />
&nbsp;</p>
<p style="text-align: justify;">When <span style="color: #99ccff;">entering the Sandbox</span> and no CamView is currently available, one is automatically created and set to Game Mode. If there <em>is</em> one available, it is focused to user input can be delivered without delay.</p>
<p>&nbsp;<br />
&nbsp;</p>
<p style="text-align: justify;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_PropertyDebug.jpg"><img class="alignleft size-thumbnail wp-image-930" title="Dualitor: Propertygrid Debug mode" src="http://www.fetzenet.de/blog/wp-content/uploads/Dualitor_PropertyDebug_Thumb.jpg" alt="" /></a></p>
<p>&nbsp;<br />
&nbsp;</p>
<p style="text-align: justify;">The PropertyGrid now has a <span style="color: #99ccff;">Debug Mode</span> that also shows non-public class members for custom Components.</p>
<p>&nbsp;<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=939</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A physical Platformer</title>
		<link>http://www.fetzenet.de/blog/?p=921&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-physical-platformer</link>
		<comments>http://www.fetzenet.de/blog/?p=921#comments</comments>
		<pubDate>Mon, 13 Aug 2012 16:17:05 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Duality]]></category>
		<category><![CDATA[Physics]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=921</guid>
		<description><![CDATA[Videoblog #6: You can download the Platformer Example here. It contains a project template that will set up the example project from the video. Just use it to create a new project. Today I&#8217;m going to show you some new or improved features and how to develop a simple platformer. One of the things I&#8217;ve ]]></description>
				<content:encoded><![CDATA[<p>Videoblog #6:</p>
<p><object width="480" height="390" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/3rAB2GRJfcc?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed width="480" height="390" type="application/x-shockwave-flash" src="http://www.youtube.com/v/3rAB2GRJfcc?fs=1&amp;hl=en_US&amp;rel=0" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
<p>You can <a href="http://code.google.com/p/duality/downloads/detail?name=Platformer_2012_08_13.zip" target="_BLANK">download the Platformer Example here</a>. It contains a project template that will set up the example project from the video. Just use it to create a new project. <img src='http://www.fetzenet.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <span id="more-921"></span></p>
<p style="text-align: justify;">Today I&#8217;m going to show you some new or improved features and how to develop a simple platformer.<br />
One of the things I&#8217;ve recently improved is the smooth animation system. Instead of regular frame-by-frame sprite animation Duality is also able to blend smoothly between animated frames by using a special shader. This will make your animations look more fluent, especially when few frames are available. In that case, the difference becomes obvious, while on high frame rates it might just make it look a little nicer.<br />
In my first approach, I was simply using a linear blend between the current and the next animation frame. However, this would introduce visible artifacts in all pixels that are fully transparent in one frame and fully opaque in the other. In a simple linear blend, the transparent pixels color would bleed into visibility because they&#8217;re mixed with visible pixels.<br />
This unwanted behavior was fixed by introducing some more lines to the shader code that will weight each pixel colors total involvement by their transparency values relative to each other. If there is a pixel visible in one frame and invisible in the second, it will simply fade in or out without changing its color at all.</p>
<p style="text-align: justify;">So let&#8217;s begin with our example platformer. Click on File / New Project to bring up the new project dialog. By default, Duality can create and empty project or one based on the currently opened one. It is also possible to use a custom configuration by clicking the &#8220;Browse&#8221; button next to &#8220;Project Template&#8221;. The download package comes with an example template in case you want to try it out. However, we&#8217;ll go with &#8220;Empty Project&#8221;. Duality now creates a new project folder, applies the selected template and updates the required binaries.</p>
<p style="text-align: justify;">First we&#8217;ll need a player character. I&#8217;m going to import a simple sprite sheet by dragging its file into the Project View. A new Pixmap Resource will appear. Right-click on it and select &#8220;Create Texture&#8221;, then select the new Texture Resource and adjust its number of animation columns and rows to fit the image. You can check the per-frame preview to if the values you entered made any sense.</p>
<p style="text-align: justify;">To see it in action, just grab Pixmap or Texture and drag it into the Cam View. Duality will create a new GameObject for you. Now enter the sandbox mode by clicking the &#8220;Play&#8221; button above. You will see animation playing in its default configuration. If you want to take a closer look, use the mouse wheel to move the camera closer. Press it and move the cursor for regular 2D camera navigation. Because we&#8217;re now viewing an upscaled version of our character, it looks a little blurry. To achieve a pixelated look, selected the Texture Resource and set its interpolation mode to &#8220;Nearest&#8221; instead of &#8220;Linear&#8221;.</p>
<p style="text-align: justify;">The player animation is currently running through all available frames. Let&#8217;s change that to use a walk cycle in one direction. Select the player GameObject and open the sprite Components tab. Set the AnimFrameCount property to three, which is the length of a single walk cycle in our sprite sheet. You may also set the first frames index to change directions or adjust the animation speed.<br />
However, something doesn&#8217;t look right yet. Our character walks a little.. strange. A quick look at the sprite sheet reveals that we&#8217;re using the wrong animation type for it. To fix that, select the GameObject again and change the animation mode to &#8220;PingPong&#8221;. It should look much better now.<br />
To improve it a little further, you can activate the smooth animation feature. To do that, select the characters Material Resource and change its rendering technique to one from the SmoothAnim folder. As always, just use dragdrop.</p>
<p style="text-align: justify;">The following step is entirely optional, but illustrates a concept that will prove to be useful in the future. First, stop the sandbox mode. Then, click the player character GameObject and drag it into the Project View. This will create a new Prefab Resource of our player object. You can think of a Prefab as a global template for objects that will exist multiple times throughout the level or game &#8211; like enemy characters, powerups, etc. An immediate advantage is that it&#8217;s very easy to create new instances of a prefab object programmatically. The next big advantage is that prefab instances maintain a link to their Prefab and will be updated when you modify it globally. That way, you can change an enemies hit points globally instead of individually for each enemy.</p>
<p style="text-align: justify;">I&#8217;m now fast forwarding a little because what you can see here is nothing new: Just importing sprites for back- and foreground and creating some GameObjects out of them via dragdrop. After finishing a first level setup, click the &#8220;Save&#8221; button in the Scene View to save it. A new Scene Resource will appear in the Project View, which I&#8217;ll rename to FirstLevel.</p>
<p style="text-align: justify;">Of course we&#8217;ll also need some kind of collision detection. To allow physical interaction between our objects, they will need a RigidBody Component. Right-click on the world object and select New / Physics / RigidBody. Then open the RigidBody tab and set the BodyType property to &#8220;Static&#8221;. This will assure our level affects other physical objects without being affected itself. Next, open the RigidBody editor and define the objects shape. After doing the same for the player character, you can hit the &#8220;Play&#8221; button and see how they interact. If you want to drag the object around, don&#8217;t forget to switch back to the Scene Editor.</p>
<p style="text-align: justify;">I don&#8217;t want this video to get too long and I&#8217;m really running out of time, so I&#8217;ll just fast-forward the following while talking a little about the theory: There is more than one way to create a platformer and Duality doesn&#8217;t really favour any specific way. In this example, which will be included in the download as a project template, I&#8217;m taking the 100% physics-driven approach. A character is constructed out of two objects like you can see in this scheme. The upper part is a fixed-angle RigidBody which is joined to its lower part using a RevoluteJoint. This kind of joint allows the lower part to rotate freely while maintaining a constant relative position, like a wheel. A RevoluteJoint also allows us to apply a rotational motor force to that wheel &#8211; and that&#8217;s basically how our character will move. It&#8217;s one of the more physically correct approaches, so it will be more suitable for a Limbo type of game than a Super Mario clone.</p>
<p style="text-align: justify;">In matters of programming, there isn&#8217;t really much work. All the character controller needs to is check the keyboard input and adjust some Component properties according to it and that&#8217;s basically all it takes to walk around. Jumping isn&#8217;t more complex either. Although it&#8217;s not a big deal of setting up the basics for a physical platformer, I found out one disadvantage of it to be very hard to maintain. It takes a lot of balancing, property adjustments and little hacks to make the platformer controls actually &#8220;feel&#8221; good. But still &#8211; although not quite easy to handle, physical simulation also remains the main advantage of this approach, because it allows you to incorporate physical puzzles, enemies or other gameplay elements seamlessly.<br />
But I guess the best advice is to acquire your own experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=921</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Physics</title>
		<link>http://www.fetzenet.de/blog/?p=683&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=physics</link>
		<comments>http://www.fetzenet.de/blog/?p=683#comments</comments>
		<pubDate>Tue, 31 Jul 2012 14:33:51 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Duality]]></category>
		<category><![CDATA[Physics]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=683</guid>
		<description><![CDATA[Fourteen. That&#8217;s the number of different joint types in the Farseer physics engine. When I started porting it from XNA to OpenTk and glueing it into Duality they were pretty much left out entirely. Who needs joints anyway? Well. As I quickly found out myself, any kind of game that uses physics beyond collision detection is ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Fourteen. That&#8217;s the number of different joint types in the <a href="http://farseerphysics.codeplex.com/" target="_blank">Farseer</a> physics engine. When I started porting it from XNA to OpenTk and glueing it into Duality they were pretty much left out entirely. Who needs joints anyway? Well. <span id="more-683"></span>As I quickly found out myself, any kind of game that uses physics beyond collision detection is likely to need some kind of joint somewhere. Constructing doors, cars, buttons, hanging bridges, ragdolls, gears, ropes, moving platforms or even physical <a href="http://amazingretardo.simiansoftwerks.com/2010/02/17/platformer-character-control-farseer-physics-engine/" target="_blank">player characters</a> &#8211; all more or less impossible if certain joint types are missing. So I spent some more time on physics than I planned to and integrated them all into Duality. And created a little physics demo for you to play around with.</p>
<p>You can get it <a href="http://code.google.com/p/duality/downloads/detail?name=Physics_2012_07_31.zip" target="_blank">here</a>.</p>
<p><a href="http://www.fetzenet.de/blog/wp-content/uploads/physics1.png"><img class="size-thumbnail wp-image-684" title="Physics 1" src="http://www.fetzenet.de/blog/wp-content/uploads/physics1-150x150.png" alt="" width="150" height="150" /></a><a href="http://www.fetzenet.de/blog/wp-content/uploads/physics2.png"><img class="size-thumbnail wp-image-685 alignnone" title="Physics 2" src="http://www.fetzenet.de/blog/wp-content/uploads/physics2-150x150.png" alt="" width="150" height="150" /></a><a href="http://www.fetzenet.de/blog/wp-content/uploads/physics3.png"><img class="size-thumbnail wp-image-686 alignnone" title="Physics 3" src="http://www.fetzenet.de/blog/wp-content/uploads/physics3-150x150.png" alt="" width="150" height="150" /></a><a href="http://www.fetzenet.de/blog/wp-content/uploads/physics4.png"><img class="size-thumbnail wp-image-687 alignnone" title="Physics 4" src="http://www.fetzenet.de/blog/wp-content/uploads/physics4-150x150.png" alt="" width="150" height="150" /></a><a href="http://www.fetzenet.de/blog/wp-content/uploads/physics5.png"><img class="size-thumbnail wp-image-688 alignnone" title="Physics 5" src="http://www.fetzenet.de/blog/wp-content/uploads/physics5-150x150.png" alt="" width="150" height="150" /></a><a href="http://www.fetzenet.de/blog/wp-content/uploads/physics6.png"><img class="size-thumbnail wp-image-689 alignnone" title="Physics 6" src="http://www.fetzenet.de/blog/wp-content/uploads/physics6-150x150.png" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=683</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlightSim: More pretty pictures</title>
		<link>http://www.fetzenet.de/blog/?p=671&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flightsim-more-pretty-pictures</link>
		<comments>http://www.fetzenet.de/blog/?p=671#comments</comments>
		<pubDate>Sat, 23 Jun 2012 07:31:59 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Duality]]></category>
		<category><![CDATA[FlightSim]]></category>
		<category><![CDATA[Gamedesign]]></category>
		<category><![CDATA[Graphics Design]]></category>
		<category><![CDATA[Study]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=671</guid>
		<description><![CDATA[We&#8217;ve been making a lot of progress, even in the long uncared-for hardware department. That&#8217;s a good thing, since we&#8217;ll reach the project deadline on wednesday. Time for more pictures!]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve been making a lot of progress, even in the long uncared-for hardware department. That&#8217;s a good thing, since we&#8217;ll reach the project deadline on wednesday. Time for more pictures!</p>
<p><span id="more-671"></span></p>
<p style="text-align: center;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/flightsim.jpg"><img class="aligncenter  wp-image-673" title="Flight Simulator" src="http://www.fetzenet.de/blog/wp-content/uploads/flightsim.jpg" alt="" width="389" height="292" /></a></p>
<p style="text-align: center;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/flightsim2.jpg"><img class="aligncenter  wp-image-674" title="Flight Simulator" src="http://www.fetzenet.de/blog/wp-content/uploads/flightsim2.jpg" alt="" width="436" height="295" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=671</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Card-Post</title>
		<link>http://www.fetzenet.de/blog/?p=655&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=card-post</link>
		<comments>http://www.fetzenet.de/blog/?p=655#comments</comments>
		<pubDate>Tue, 29 May 2012 19:43:35 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Duality]]></category>
		<category><![CDATA[FlightSim]]></category>
		<category><![CDATA[Graphics Design]]></category>
		<category><![CDATA[Study]]></category>

		<guid isPermaLink="false">http://www.fetzenet.de/blog/?p=655</guid>
		<description><![CDATA[In case you wondered what the lack of updates could mean: I&#8217;m not really working on Duality right now. There&#8217;s just too much stuff I need to take care of first. Here, I&#8217;ll leave you a postcard. So what is it exactly that you can see here? A Skybox, some fog and a very early ]]></description>
				<content:encoded><![CDATA[<p>In case you wondered what the lack of updates could mean: I&#8217;m not really working on Duality right now. There&#8217;s just too much stuff I need to take care of first. Here, I&#8217;ll leave you a postcard.</p>
<p style="text-align: center;"><a href="http://www.fetzenet.de/blog/wp-content/uploads/postcard.png"><img class="aligncenter  wp-image-657" style="background-color: transparent; border: none;" title="Greetings" src="http://www.fetzenet.de/blog/wp-content/uploads/postcard.png" alt="" width="458" height="347" /></a></p>
<p style="text-align: left;"><span id="more-655"></span></p>
<p style="text-align: justify;">So what is it exactly that you can see here? A Skybox, some fog and a very early version of chunked heightmap terrain. It&#8217;s a study-related project I&#8217;m currently developing together with nine others and our goal is to create a simple flight simulator &#8211;  from scratch. This includes both hard- and software, the latter one of which is my main responsibility.</p>
<p style="text-align: justify;">Although being 3D and having different requirements, the engine running behind all this is basically a modified version of Duality. We&#8217;re working under tight schedule and I think we wouldn&#8217;t have been able to pull it off that fast without the accumulated source code and know-how of those two years Duality development. I guess that was really lucky. Also, this is an opportunity for me to learn a lot and spot design weaknesses I have overlooked so far. Which is a good thing since I&#8217;m probably writing my bachelor thesis about Duality.</p>
<p style="text-align: justify;">Well, I guess I&#8217;ll have to get back to work. Wish me luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fetzenet.de/blog/?feed=rss2&#038;p=655</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
