<?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>Silent Kraken</title>
	<atom:link href="http://www.blog.silentkraken.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.silentkraken.com</link>
	<description>Game development for real</description>
	<lastBuildDate>Mon, 01 Mar 2010 05:43:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oken: The story of a canceled indie game project.</title>
		<link>http://www.blog.silentkraken.com/2010/02/28/oken/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2010/02/28/oken/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 09:23:11 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Oken]]></category>
		<category><![CDATA[Unity3d]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=132</guid>
		<description><![CDATA[Last year I had the pleasure of working on Oken, a game that was supposed to released this January. It is a classic sidescroller with a couple of interesting game mechanics that got canceled. A canceled indie game project, here is the story:

Lune and I decided that we needed to create games ASAP, indie games. [...]]]></description>
			<content:encoded><![CDATA[<p>Last year I had the pleasure of working on <a href="http://www.assembla.com/wiki/show/aqeL8Ohlqr3O4EeJe5afGb">Oken</a>, a game that was supposed to released this January. It is a classic sidescroller with a couple of interesting game mechanics that got canceled. A canceled indie game project, here is the story:</p>
<p><a href="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/okenlogo.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignleft size-medium wp-image-133" title="Oken logo" src="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/okenlogo-300x187.jpg" alt="oken logo" width="300" height="187" /></a></p>
<p>Lune and I decided that we needed to create games ASAP, indie games. We knew that we weren&#8217;t going to create the next GTA, but we wanted to create, to be able to show something we have done, something to be proud of. We started Oken out of an old idea back in my days at 3dmx. We had a project there called PreyInsight (please look <a href="http://www.dxstudio.com/forumtopic.aspx?topicid=291f6582-9df0-40fd-88d0-de5eb6c28d4c">here</a>, all the art is Lune&#8217;s), we always liked the idea of creating a game  of a tiger, so we redesigned the idea from scratch, created our main character and decided to create a game. We invited 3 of our students to join the team, Carlos for the art department (guided by Lune); Alan and Adrian for programming (guided by me) and the Dorian, our sound designer/composer.</p>
<p>The Oken team:</p>
<ul>
<li>Lune (<a href="http://lunecheetah.deviantart.com/">http://lunecheetah.deviantart.com/</a>)</li>
<li>Alan Gaspar</li>
<li>Adrian Gil</li>
<li>Carlos Junior Ramirez</li>
<li>Dorian Mastin (<a href="http://www.dorianmastin.com/">http://www.dorianmastin.com/</a>)</li>
<li>Daniel Rodríguez ( that&#8217;s <a href="http://mx.linkedin.com/in/sethillgard">me</a>! )</li>
</ul>
<p>We also had the help of  Netic (Ernesto Ruiz Velasco,<a href="http://netic-ck.deviantart.com/"> http://netic-ck.deviantart.com/</a>) who created some 3d assets for the game. Great job!</p>
<p><a href="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/6060_114605699317_114455089317_2102815_6175639_n.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignleft size-medium wp-image-134" title="Wolf enemy concept" src="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/6060_114605699317_114455089317_2102815_6175639_n-272x300.jpg" alt="" width="272" height="300" /></a></p>
<p><a href="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/6060_114489344317_114455089317_2101712_2770939_n.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignleft size-medium wp-image-135" title="Oken movement testing level" src="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/6060_114489344317_114455089317_2101712_2770939_n-300x238.jpg" alt="" width="300" height="238" /></a></p>
<p>All the assets I am sharing here were already shared on the Facebook page for the project. You cannot imagine the amount of artwork created by Lune and Carlos for this game (enemy concepts, 3d models, millions of textures, even powerpoint presentations), but I think it&#8217;s their choice if they want to publish them (and where). Of course this space will always be open for them.</p>
<p>Dorian created awesome music for this game too! Please listen to the <a href="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/OkenMenuTheme.mp3#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Oken Menu Theme</a>. He also created ambient sounds for the first level, among other great sound assets.</p>
<p>The game was being developed using the <a href="http://www.unity3d.com">Unity3d </a>game engine, a great software for game development. We decided to use it because it was cheap (now it&#8217;s <a href="http://unity3d.com/#freeunity">free</a>) and because we knew it very well. We created great code too, including a character state manager system and a camera interpolation system (yes, we will be sharing the code with the world very soon).</p>
<p>So, the interesting question is: <strong>Why is Oken canceled?</strong></p>
<p>It is difficult to answer.</p>
<p>I&#8217;ve been thinking of this for a very long time now. I can only think of one think that wen&#8217;t wrong: <strong>Our people skills. </strong>Lune and I were trying to get things done, we wanted to create a great game. Nonetheless, I believe we were unable to provide all the support the team needed as we were full time workers and Oken was only a hobby project. The team slowly loosed it&#8217;s energy, it&#8217;s will, and it&#8217;s professional perspective. We let personal stuff get in the way and at the end, it was impossible for us to work on this game. We decided that our friendship was more important, so we paused the project. A couple of months later I wanted to start developing again, but the the team was way to busy on other stuff (great stuff, like the short film Junior is preparing).</p>
<p>This teach me a lot.</p>
<p>I now want to share how the game looked like in it&#8217;s final stage. We made 2 builds, the first one is a test level designed to test and tune Oken&#8217;s movements, the second it&#8217;s our first level (on a early stage, it needed a lot of tunning).</p>
<p><a href="http://games.silentkraken.com/oken/OkenTestScene.html">Oken movement test level</a></p>
<p><a href="http://games.silentkraken.com/oken/OkenLevel1-1.html">Oken first level</a></p>
<p>(Move with arrows, attack with &#8220;z&#8221; (early combat implementation))</p>
<p>Please note that the game was never optimized for the web and that it really is in a very early stage. Still, you can see that the movement of the character works great. Oken was supposed to have combos and the game mechanics included an &#8220;aura system&#8221;.</p>
<p>All of our work behind the game can be seen on the public <a href="http://dumbo.assembla.com/wiki/show/oken">Assembla site for Oken</a>. As you can see, we created a lot of documentation for the game (we were going for the real thing!). The wiki contains detailed information about the game mechanics and there are some visual assets there too!</p>
<p>It is very sad that Oken didn&#8217;t really worked out as we expected, but, the story won&#8217;t end there. Every single member of the Oken team is working on new great stuff. While Lune has a lot of projects (too many to list them here), Carlos is working on that short film, Adrian and Alan are working on the adaptation of their game Amnesia to the Unity engine, I am working on another game for the web with a couple of friends (new team). The game is gonna be announced on this blog very soon.</p>
<p>I hope the story of this project is useful to someone else. We need to always remember that the technical issues of a project can always be solved, but what really destroys projects is the lack of communication and time. The people needs to feel great working on the project, they must be motivated, and it&#8217;s everybody&#8217;s job to keep it that way. Never forget about the people you are working with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2010/02/28/oken/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/OkenMenuTheme.mp3" length="2292423" type="audio/mpeg" />
		</item>
		<item>
		<title>Introduction to Game Development tips by Walter Rotenberry</title>
		<link>http://www.blog.silentkraken.com/2010/02/15/introduction-to-game-development-tips-by-walter-rotenberry/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2010/02/15/introduction-to-game-development-tips-by-walter-rotenberry/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 22:20:17 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=128</guid>
		<description><![CDATA[Last month Walter Rottenberry came to Guadalajara to teach us about the very basics of game development. As usual, let me share my notes:
AI:

Tips from Steve Rabin in &#8220;Game Programming Gems 2&#8243;
Use event driven behavior rather than polling
Reduce redundant calculations
Centralize cooperation with managers
Run the AI less often
Distribute the processing over several frames
Employ AI LODs
Solve only [...]]]></description>
			<content:encoded><![CDATA[<p>Last month Walter Rottenberry came to Guadalajara to teach us about the very basics of game development. As usual, let me share my notes:</p>
<p>AI:</p>
<ul>
<li>Tips from Steve Rabin in &#8220;Game Programming Gems 2&#8243;</li>
<li>Use event driven behavior rather than polling</li>
<li>Reduce redundant calculations</li>
<li>Centralize cooperation with managers</li>
<li>Run the AI less often</li>
<li>Distribute the processing over several frames</li>
<li>Employ AI LODs</li>
<li>Solve only part of the problem</li>
<li>Do the hard work offline</li>
<li>Use emergent behavior to avoid scripting</li>
<li>Amortize costs with continuous bookkeeping</li>
<li>Rethink the problem</li>
</ul>
<p>Game Theory:</p>
<ul>
<li>Prisoner dilemma</li>
<li>Types of challenges</li>
<li>Implicit vs explicit</li>
<li>Perfect vs imperfect information</li>
<li>Intrinsic vs extrinsic knowledge</li>
<li>Pattern recognition</li>
</ul>
<p><strong> Level design:</strong></p>
<p>Level designer responsibilities:</p>
<ul>
<li>Create terrain</li>
<li>Create the rooms</li>
<li>Add props</li>
<li>Add triggers</li>
<li>Look great</li>
<li>Make it work</li>
</ul>
<p><strong> Technical limitations:</strong></p>
<ul>
<li>The platform</li>
<li>Affects how the level should be built (not the level itself)</li>
</ul>
<p>Main factors:</p>
<ul>
<li>Memory</li>
<li>Processing power and frame rate</li>
<li>Level performance</li>
<li>Polycount</li>
<li>Lighting</li>
<li>AI</li>
<li>Media format</li>
<li>Target and minimum specifications</li>
</ul>
<p>GPUs take care of the eye candy in the game<br />
Special effects consume a lot of processing power instead of RAM<br />
Performance:</p>
<ul>
<li>Fast moving games require faster frame rate</li>
<li>Level designer should be aware of strain on GPU and not frustrate for that</li>
</ul>
<p>Polycount:</p>
<ul>
<li>What really matters is  the number of polygons seen on the screen at any given moment</li>
<li>Contributors
<ul>
<li>Too many characters in a single space</li>
<li>Special effects (smoke, falling leaves, fire, a black hole, etc)</li>
<li>Emmitters need to be watched closely</li>
</ul>
</li>
<li>Use LODs (Level of detail)
<ul>
<li>Characters: 3 LODs</li>
<li>Objects: 2-3 LODs</li>
<li>Environments: distances vary depending on level and game</li>
</ul>
</li>
</ul>
<p>Lighting:</p>
<ul>
<li>Lights and shadows both pulls on the GPU</li>
<li>Dynamic lights are cool but expensive</li>
<li>Traditionally had static lights</li>
<li>Lights and shadows can be baked into textures</li>
</ul>
<p>Game metrics:</p>
<ul>
<li>Happens after the player metrics are known</li>
<li>Properties of the main character are the biggest factor</li>
<li>Examples:
<ul>
<li>Height and width</li>
<li>Walk and run speed</li>
<li>Jump distance</li>
<li>Jump height</li>
<li>Interaction distance (how far the player needs to be from an interactuable object to interact with it)</li>
</ul>
</li>
<li>Character metrics
<ul>
<li>The visual size is different from the collision size</li>
<li>Use collision volumes</li>
<li>Make doors and corridors slightly bigger than realistic proportions</li>
</ul>
</li>
<li>Warning: Beware the game designer who gives you a ballpark figure for vital game data</li>
<li>Get hard data before creating the level</li>
<li>Level designer should decide the movement speed and jump metrics</li>
</ul>
<p>Tips:</p>
<ul>
<li>FaceFX for facial animation</li>
<li>Use cell diagrams (also called bubble diagrams) for gameplay</li>
</ul>
<p>Thank you Walter. This was very useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2010/02/15/introduction-to-game-development-tips-by-walter-rotenberry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TransformUtilities</title>
		<link>http://www.blog.silentkraken.com/2010/02/06/transformutilities/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2010/02/06/transformutilities/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 03:36:02 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unity3d]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=121</guid>
		<description><![CDATA[Release of the TransformUtilities tools for Unity3d.]]></description>
			<content:encoded><![CDATA[<div id="attachment_149" class="wp-caption alignleft" style="width: 334px"><a href="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/TransformUtilitiesWindow.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="size-full wp-image-149" title="TransformUtilitiesWindow" src="http://www.blog.silentkraken.com/wp-content/uploads/2010/02/TransformUtilitiesWindow.jpg" alt="" width="324" height="266" /></a><p class="wp-caption-text">This is how the tool looks like</p></div>
<p>Hello. I&#8217;ve been working on a set of four tools to aid in the Unity3d development. After using Unity for a while I encountered the classic problem of needing to copy the position of an object over and over. This led me to create the &#8220;Copy&#8221; tool. I&#8217;ve found a <a href="http://www.unifycommunity.com/wiki/index.php?title=CopyTransform">similar script</a> on the Unify community, but I wanted to extend the tool. It is now possible to copy position, rotation and scale of any axis you want. Also, the values apply to all objects selected in the scene.</p>
<p>After that, and inspired by the tools I found on the Gamebryo Lightspeed editor, I created the Randomize and Add Noise tools. Those tools work almost the same, the randomize the position, rotation of scale of any object selected (or all objects selected). The difference is that while Randomize sets the absolute values for position, rotation or scale, Add noise adds a delta to the current value of the transform. This is useful for example to randomize the Y rotation of all the trees in your level, or to make a bunch of boxes look more natural by not being perfectly aligned.</p>
<p>Finally, after been learning Autodesk 3ds Max, I created the Align tool inspired by a tool in that software. It basically takes a source transform, just like the Copy tool, then uses it&#8217;s collider and the collider of the object (or objects) selected to align it. You can align for example, the minimum point of your selection with the maximum point of your source (what you are aligning to) to place an object over another. It let&#8217;s you align using the minimum point, maximum point, the center of the object or the pivot point on both the selection and the source. You can align on all 3 axis.</p>
<p>To use these tool, all you need to do is download the script file, and add it into a folder named Editor in your project&#8217;s Asset folder. Once compiled by Unity you find the new functionality in Window -&gt; TransformUtilities, or simply press Ctrl+t (Cmd+t for Mac users)</p>
<p>Developed by Daniel Rodríguez (Seth Illgard) in January 2010</p>
<p><strong><a href="http://files.silentkraken.com/tools/unity3d/TransformUtilities/TransformUtilitiesWindow.cs">Download TransformUtilities!</a></strong></p>
<p>Hope you find them useful, and please let me know how can I improve theses tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2010/02/06/transformutilities/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Coroutines in Unity3d (C# version)</title>
		<link>http://www.blog.silentkraken.com/2010/01/23/coroutines-in-unity3d-c-version/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2010/01/23/coroutines-in-unity3d-c-version/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 00:04:15 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Coroutines]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unity3d]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=106</guid>
		<description><![CDATA[Coroutines in C# work the same way that they do in Javascript (UnityScript), the only difference is that they require more typing (they have a slightly more complicated syntax). You should see the blog post on Javascript coroutines first.
Here, I present the differences:
Coroutines must have the IEnumerator return type:

IEnumerator MyCoroutine()
{
	//This is a coroutine
}

To invoke a [...]]]></description>
			<content:encoded><![CDATA[<p>Coroutines in C# work the same way that they do in Javascript (UnityScript), the only difference is that they require more typing (they have a slightly more complicated syntax). You should see the <a href="http://www.blog.silentkraken.com/2010/01/22/coroutines-in-unity3d/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">blog post on Javascript coroutines first</a>.</p>
<p>Here, I present the differences:</p>
<p><strong>Coroutines must have the <code>IEnumerator </code>return type:</strong></p>
<pre class="brush: csharp;">
IEnumerator MyCoroutine()
{
	//This is a coroutine
}
</pre>
<p><strong>To invoke a coroutine you must do it using the <code>StartCoroutine</code> method:</strong></p>
<pre class="brush: csharp;">
public class MyScript : MonoBehaviour
{
    void Start()
    {
		StartCoroutine(MyCoroutine());
    }

    IEnumerator MyCoroutine()
    {
        //This is a coroutine
    }
}
</pre>
<p><strong>The <code>yield</code> statement becomes <code>yield return</code> in C# :</strong></p>
<pre class="brush: csharp;">
IEnumerator MyCoroutine()
{
    DoSomething();
    yield return 0;	//Wait one frame, the 0 here is only because we need to return an IEnumerable
    DoSomethingElse();
}
</pre>
<p>Remember that we need to return an <code>IEnumerable</code>, so the Javascript <code>yield;</code> becomes <code>yield return 0;</code> in C#</p>
<p>Also, since C# requires you to use the <code>new</code> operator to create objects, if you want to use <code>WaitForSeconds </code> you have to use it like this:</p>
<pre class="brush: csharp;">
IEnumerator MyCoroutine()
{
    DoSomething();
    yield return new WaitForSeconds(2.0f);	//Wait 2 seconds
    DoSomethingElse();
}
</pre>
<p>Happy coroutining <img src='http://www.blog.silentkraken.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2010/01/23/coroutines-in-unity3d-c-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coroutines in Unity3d (Javascript version)</title>
		<link>http://www.blog.silentkraken.com/2010/01/22/coroutines-in-unity3d/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2010/01/22/coroutines-in-unity3d/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 03:23:42 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Coroutines]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Unity3d]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=80</guid>
		<description><![CDATA[The coroutine system in Unity3d hides a great power. Are you up to the task of discovering it?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with Unity3d for some time now and I couldn&#8217;t really make good use of the coroutines because I was unable to truly understand them. After some time playing with them and making some experiments I realized their true power. I couldn&#8217;t believe what I was missing! So, a couple of fellow game devs asked me to explain the concept to them. I decided that a blog post was the perfect way to do it and, at the same time, share this with everyone.</p>
<p><strong>Coroutines</strong>: Special type of functions(in the programming sense) that allows to stop it&#8217;s own execution until certain condition is met.</p>
<p>A coroutine looks like this (on javascript, the C# version is <a href="http://www.blog.silentkraken.com/2010/01/23/coroutines-in-unity3d-c-version/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">here</a>):</p>
<pre class="brush: jscript;">
function MyCoroutine()
{
	DoSomething():
	yield;                         //Mystery here
	DoSomethingElse();
}
</pre>
<p>When you invoke this function (start the coroutine) it will behave just like any other normal function you have ever seen, until it reaches the <strong>yield </strong>instruction.   The yield instruction explained:  The yield instruction works like a <strong>return </strong>statement in the sense that it stops the execution of the function and returns control to the code that invoked that function. The main difference is that the yield instruction lets you delay the execution of the code that is after it (in the last example, the DoSomethingElse() statement).</p>
<pre class="brush: jscript;">
function MyCoroutine()
{
	DoSomething():			//Do this immediately
	yield;                          //Return control to the caller
	DoSomethingElse();		//This will be executed one frame later
}

void Start()
{
	MyCoroutine();
}
</pre>
<p>What happens if you have more code after the MyCoroutine call? Let&#8217;s see an example with some prints:</p>
<pre class="brush: jscript;">
function MyCoroutine()
{
	print(&quot;This is printed second&quot;);
	yield;    	//Return control to the Start function
	print(&quot;This is printed one fourth, exactly one frame after the third&quot;);
}

void Start()
{
	print(&quot;This is printed first&quot;);
	MyCoroutine();
	print(&quot;This is printed third&quot;);
}
</pre>
<p>You can control when do the code after the yield instruction will be executed. It depends on the parameter of the yield instruction, according to the following table</p>
<p><strong>Nothing</strong>: It will wait one frame<br />
<strong>Another coroutine invocation</strong>: It will wait until the invoked coroutine finishes execution<br />
<strong>A WaitForSeconds object</strong>: It will wait certain amount of time</p>
<p>Confused? Here are the examples:</p>
<pre class="brush: jscript;">
function MyCoroutine()
{
	DoSomething():				//Do this immediately
	yield WaitForSeconds(2);   	//Return control to the caller
	DoSomethingElse();			//This will be executed 2 seconds after
}

void Start()
{
	MyCoroutine();
}
</pre>
<pre class="brush: jscript;">
function MyCoroutine()
{
	DoSomething():				//Do this immediately
	yield MyOtherCoroutine();   //Go and execute MyOtherCoroutine!
	DoSomethingElse();			//This will be executed after MyOtherCoroutine finished execution
}

function MyOtherCoroutine()
{
	DoStuff():				//Do this immediately
	yield WaitForSeconds(2);   	//Return control to the caller (in this case the Start function)
	DoMoreStuff();			//This will be executed 2 seconds after
	//MyOtherCoroutine finishes execution here
}

void Start()
{
	MyCoroutine();
}
</pre>
<p>As you can see, coroutines are very powerful and easy to use once you understand how they work. I will post some usage examples and the C# version of the scripts on this post soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2010/01/22/coroutines-in-unity3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game development facts and tips</title>
		<link>http://www.blog.silentkraken.com/2009/11/19/game-development-facts-and-tips/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2009/11/19/game-development-facts-and-tips/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 02:16:20 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=78</guid>
		<description><![CDATA[Last month I had the pleasure of finding a new friend in the gamedev community: Ian Masters, a senior game programmer at Sidhe Interactive, creators of the Speed Racer game for Nintendo Wii and Sony PlayStation 2.
While he was in town I managed to compile a list of game development facts and tips. Here they are:
Programming:
Everybody [...]]]></description>
			<content:encoded><![CDATA[<p>Last month I had the pleasure of finding a new friend in the gamedev community: <a href="http://www.linkedin.com/in/mysticcoder">Ian Masters</a>, a senior game programmer at <strong><a href="http://www.sidhe.co.nz/">Sidhe Interactive</a>, creators of the Speed Racer game for Nintendo Wii and Sony PlayStation 2.</strong></p>
<p>While he was in town I managed to compile a list of game development facts and tips. Here they are:</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Programming:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Everybody creates their own internal technology to build games. They modify engines and create frameworks for internal use.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The technical director is the responsable of selecting technology like the game engine.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Developing a game engine from scratch could take years and it&#8217;s not recommended.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The most used languages in game development are : C++, Lua and Python.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It&#8217;s common to have a prototyping team.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Use source control (SVN, mercurial, etc.)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Have all your projects into a solution, prefer that to link against static libraries (including third party code).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Have your engine&#8217;s source code in your source control system so you can modify it and the changes will propagate.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">QA:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Unit testing is very important (specially for math libraries and core functions).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Regression testing is important too.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">QA team is different from playtesting. QA test QA, playtesters test fun.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">No QA guys in multidisciplinary teams.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Art:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Conceptual art should be delivered as soon as possible before programming start (at least a month ahead).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Work on iterations.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Artists hate naming conventions.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It&#8217;s not easy to convince the artists to follow naming conventions (normally you need a producer to talk to them).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Having a lead artist who follows naming conventions is crucial.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Try to integrate audio as soon as possible. Audio is not a luxury.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Post effects are often decided between the post effects coder and the art director.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Camera effects are often decided between the camera scripters and the designers.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Have metrics with the export tools (poly counts, texture sizes, bone count, etc)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Should present a visual target.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Design:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">They can&#8217;t account for everything.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Design document should be as detailed as possible.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Design document should be a live document.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">They define tunable properties.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Normally use XML files for tunable properties (exported from spreadsheets for extra awesomeness).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">There are co-designers (scripters).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Production:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Producer&#8217;s work is to assure work is being done and cycles are running smoothly.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Wikis are awesome.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">You can manage a whole project documentation using exclusively a wiki.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Procedures, knowledge and project management all fit into a wiki.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Multidisciplinary teams are a great way to work.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Have a list of features that need to be tested on the prototype.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Recommendations:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Scrum is the way to go.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Use Scrum properly.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Scrum meetings in the mornings.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Put scrum plans on the wiki.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Create tickets on Trac or a similar tool.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Keep things visible and transparent.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Read a lot. Be proactive and an active learner and problem solver.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Try to work as close as possible with artists, programmers and designers.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">You need a published title to get into the industry. To get that title you need to be in the industry. Indie titles are a good way to break into it.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Prototype as soon as possible.</div>
<p>Programming:</p>
<ul>
<li>Everybody creates their own internal technology to build games. They modify engines and create frameworks for internal use.</li>
<li>The technical director is the responsable of selecting technology like the game engine.</li>
<li>Developing a game engine from scratch could take years and it&#8217;s not recommended.</li>
<li>The most used languages in game development are : C++, Lua and Python.</li>
<li>It&#8217;s common to have a prototyping team.</li>
<li>Use source control (SVN, mercurial, etc.)</li>
<li>Have all your projects into a solution, prefer that to link against static libraries (including third party code).</li>
<li>Have your engine&#8217;s source code in your source control system so you can modify it and the changes will propagate.</li>
</ul>
<p>QA:</p>
<ul>
<li>Unit testing is very important (specially for math libraries and core functions).</li>
<li>Regression testing is important too.</li>
<li>QA team is different from playtesting. QA test QA, playtesters test fun.</li>
<li>No QA guys in multidisciplinary teams.</li>
</ul>
<p>Art:</p>
<ul>
<li>Conceptual art should be delivered as soon as possible before programming start (at least a month ahead).</li>
<li>Work on iterations.</li>
<li>Artists hate naming conventions.</li>
<li>It&#8217;s not easy to convince the artists to follow naming conventions (normally you need a producer to talk to them).</li>
<li>Having a lead artist who follows naming conventions is crucial.</li>
<li>Try to integrate audio as soon as possible. Audio is not a luxury.</li>
<li>Post effects are often decided between the post effects coder and the art director.</li>
<li>Camera effects are often decided between the camera scripters and the designers.</li>
<li>Have metrics with the export tools (poly counts, texture sizes, bone count, etc)</li>
<li>Should present a visual target.</li>
</ul>
<p>Design:</p>
<ul>
<li>They can&#8217;t account for everything.</li>
<li>Design document should be as detailed as possible.</li>
<li>Design document should be a live document.</li>
<li>They define tunable properties.</li>
<li>Normally use XML files for tunable properties (exported from spreadsheets for extra awesomeness).</li>
<li>There are co-designers (scripters).</li>
</ul>
<p>Production:</p>
<ul>
<li>Producer&#8217;s work is to assure work is being done and cycles are running smoothly.</li>
<li>Wikis are awesome.</li>
<li>You can manage a whole project documentation using exclusively a wiki.</li>
<li>Procedures, knowledge and project management all fit into a wiki.</li>
<li>Multidisciplinary teams are a great way to work.</li>
<li>Have a list of features that need to be tested on the prototype.</li>
</ul>
<p>Recommendations:</p>
<ul>
<li>Scrum is the way to go.</li>
<li>Use Scrum properly.</li>
<li>Scrum meetings in the mornings.</li>
<li>Put scrum plans on the wiki.</li>
<li>Create tickets on Trac or a similar tool.</li>
<li>Keep things visible and transparent.</li>
<li>Read a lot. Be proactive and an active learner and problem solver.</li>
<li>Try to work as close as possible with artists, programmers and designers.</li>
<li>You need a published title to get into the industry. To get that title you need to be in the industry. Indie titles are a good way to break into it.</li>
<li>Prototype as soon as possible.</li>
</ul>
<p>Hope that helps, and a big &#8220;Thank you&#8221; to Ian for his time with us. I learned a lot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2009/11/19/game-development-facts-and-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Game Development and Unity3d</title>
		<link>http://www.blog.silentkraken.com/2009/11/19/introduction-to-game-development-and-unity3d/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2009/11/19/introduction-to-game-development-and-unity3d/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 01:41:39 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unity3d]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=71</guid>
		<description><![CDATA[Today I was invited to the UVM University to give a workshop on game development using Unity3d. For that purpose I created a small presentation that you can find in pdf format here: Introduction to game development and Unity3d.
It is a very basic introduction, but I hope you like it.
]]></description>
			<content:encoded><![CDATA[<p>Today I was invited to the <a href="http://www.uvmnet.edu/">UVM University</a> to give a workshop on game development using Unity3d. For that purpose I created a small presentation that you can find in pdf format here: <a rel="attachment wp-att-72" href="http://www.blog.silentkraken.com/2009/11/19/introduction-to-game-development-and-unity3d/introduction-to-game-development-and-unity3d/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Introduction to game development and Unity3d</a>.</p>
<p>It is a very basic introduction, but I hope you like it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2009/11/19/introduction-to-game-development-and-unity3d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Game design with Noah Falstein, part 4: Brainstorming and extra tips</title>
		<link>http://www.blog.silentkraken.com/2009/10/10/game-design-with-noah-falstein-part-4-brainstorming-and-extra-tips/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2009/10/10/game-design-with-noah-falstein-part-4-brainstorming-and-extra-tips/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 02:44:54 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[GameDesign]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=51</guid>
		<description><![CDATA[Meta-observation:

The best way to learn is by playing many games and learning from other designers
Game designers must also learn to observe themselves on many levels as they play
Some levels in playing/designing games: Mechanics, strategies, cheat/exploit, game design rules&#8230; but there are other ways to see it

Basic brainstorming:

Be aware of, but not shackled by constrains
Listen to [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0cm; text-decoration: none;">Meta-observation:</p>
<ul>
<li>The best way to learn is by playing many games and learning from other designers</li>
<li>Game designers must also learn to observe themselves on many levels as they play</li>
<li>Some levels in playing/designing games: Mechanics, strategies, cheat/exploit, game design rules&#8230; but there are other ways to see it</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Basic brainstorming:</p>
<ul>
<li>Be aware of, but not shackled by constrains</li>
<li>Listen to what others say</li>
<li>Challenge assumptions – your own and others</li>
<li>Vary discussion of theme/story and gameplay mechanics (Important!)</li>
<li>Try to cross-fertilize ideas even (specially) when it seems absurd</li>
<li>You are finding new neural pathways</li>
<li>Mixing wildly different ideas or themes can create useful tension</li>
<li>Example: Art deco + bio-tech + Ayn Rand + 1960 + underwater = Bioshock</li>
<li>Ideas, not egos: Critique concepts, not people</li>
<li>Review constraints and question them too</li>
<li>Good, not escential, to have a reason why</li>
<li>Nothing is to odd or silly – low hit ratio</li>
<li>It&#8217;s normal to wander – some!</li>
<li>Best size around 5 +- 2</li>
<li>Common ground, divergent opinions</li>
<li>Avoid including managment directly (fear of firing, danger of deferring to boss)</li>
<li>Consider flied trips, resources, toys</li>
<li>Time pressure (optional)</li>
<li>No judgments (optional, useful for dealing with people that has never done brainstorming)</li>
<li>More than art as you gain experience</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Great game elements (advanced techniques):</p>
<ul>
<li>Classic convexity structure (Start wth one node, then many, then one again)</li>
<li>Appropiate inteface</li>
<li>Negative feedback (Handicap)</li>
<li>Self-tunning features</li>
<li>Emergent complexity (Overlap various game mechanics)</li>
<li>Great balance (tradeoffs again!)</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Negative feedback examples:</p>
<ul>
<li>Exponential costs (experience, money, etc)</li>
<li>Easier to aim after each failure or death</li>
<li>Selling items give you less money that what you originally paid for it</li>
<li>Stronger units are more restictive (specialized, only good against another specific unit, etc)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2009/10/10/game-design-with-noah-falstein-part-4-brainstorming-and-extra-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game design with Noah Falstein, part 3: Natural funativity theory</title>
		<link>http://www.blog.silentkraken.com/2009/10/04/game-design-with-noah-falstein-part-3-natural-funativity-theory/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2009/10/04/game-design-with-noah-falstein-part-3-natural-funativity-theory/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 22:10:36 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[GameDesign]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=40</guid>
		<description><![CDATA[Natural Funativity Theory:
Natural funativity theory is Noah&#8217;s own work. You can find the original gamasutra article here. What I present here are only my notes on the subject, my personal interpretation of the theory. Hope you find it useful.
What is fun?

Dictionary: Enjoyment, a souce of amusement (that does not help)
Consider underlying reasons
“Funativity”: Thinking about fun [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0cm; text-decoration: none;"><strong>Natural Funativity Theory:</strong></p>
<p style="margin-bottom: 0cm; text-decoration: none;"><a href="http://www.gamasutra.com/view/feature/2160/natural_funativity.php">Natural funativity theory</a> is Noah&#8217;s own work. You can find the original gamasutra article <a href="http://www.gamasutra.com/view/feature/2160/natural_funativity.php">here</a>. What I present here are only my notes on the subject, my personal interpretation of the theory. Hope you find it useful.</p>
<p style="margin-bottom: 0cm; text-decoration: none;">What is fun?</p>
<ul>
<li>Dictionary: Enjoyment, a souce of amusement (that does not help)</li>
<li>Consider underlying reasons</li>
<li>“Funativity”: Thinking about fun in terms of a measurable cause and effect</li>
<li>Inevitably this leads to “Why do we commonly share the experience of fun?”</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Evolutanary roots:</p>
<ul>
<li>We must look to our distant past</li>
<li>Young mamals play to learn basic survival skills</li>
<li>Games are organized play</li>
<li>Human entrataiment is more complicated</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Entretaiment is Learning:</p>
<ul>
<li>Life is either work, rest or entretaiment</li>
<li>Perhaps at first it was all work or rest</li>
<li>Play (and fun) may be neotenal traits</li>
<li>Fun is about practicing or learning new survival skillin a relatively safe setting</li>
<li>People who didn&#8217;t experience were less likely to survive to become our ancestors</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Natural Funativity Theory:</p>
<ul>
<li>Basic concept is that all fun derives from practicing survival and social skills</li>
<li>Partly learning new skills, partly mastering and mantaining familiar ones</li>
<li>Key skills relate to stone-age human life, but often in modern context</li>
<li>Three cathegories: Physical, Social, Mental</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Physical fun:</p>
<ul>
<li>Sports generally enhance our strength, stamina, coordination skills</li>
<li>Exploration is fun, both of local area and knowledge of exotic places</li>
<li>Physical aspect to gathering “stuff”</li>
<li>Hand/eye coordination and tool use are often parts of fun activities, crafts</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Social fun:</p>
<ul>
<li>Storytelling is a social activity, a way to lean important survival and social lessons from others, our first VR</li>
<li>Gossip, bonding with friends aids survival</li>
<li>Flirting, showing off, finding mates is a key component in social fun</li>
<li>Language has become paramount</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Mental fun:</p>
<ul>
<li>Pure abstract reasoning practice is fun</li>
<li>Pattern matching and generaion</li>
<li>Music, art, puzzles, all pattern based, both perception and creation</li>
<li>Gathering has also a mental aspect: categorizing and identifyng patterns</li>
</ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Multipurpose fun:</p>
<ul>
<li>Many fun activities have physical, social and mental aspects in combination</li>
<li>Games that mix these aspects tend to be very popular (e.g. Blizzard games)</li>
<li>Incorporate ways to practice these skills to increase popularity of games</li>
</ul>
<p>Noah also mentioned that Diablo 2 was a great in combining the 3 types of fun. You have great physical (hack and slash mechanics, click click click), great mental (inventory, item management, etc) and of course, great social fun (multiplayer is great!).</p>
<p>Seth out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2009/10/04/game-design-with-noah-falstein-part-3-natural-funativity-theory/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Game design with Noah Falstein, part 2: Fundamentals</title>
		<link>http://www.blog.silentkraken.com/2009/10/03/game-design-with-noah-falstein-part-2-fundamentals/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.blog.silentkraken.com/2009/10/03/game-design-with-noah-falstein-part-2-fundamentals/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 01:10:08 +0000</pubDate>
		<dc:creator>Daniel Rodríguez</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[GameDesign]]></category>

		<guid isPermaLink="false">http://www.blog.silentkraken.com/?p=17</guid>
		<description><![CDATA[Ok, continuing with my notes on game design, here you have the fundamentals that Noah Falstein teach us:
Identify your constrains:

Creative: expectations and goals
Technical (including platform)
Bussiness, marketing, sales, 	distribution
People: skills and personalities
Internal politics
Serious games – add 	teaching/training and real world content constraints


Game design fundamentals:

Creative plagiarization: Take only 	what is appropiate, make it your own
Sid Meier&#8217;s rule: [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0cm;">Ok, continuing with my notes on game design, here you have the fundamentals that Noah Falstein teach us:</p>
<p style="margin-bottom: 0cm;">Identify your constrains:</p>
<ul>
<li>Creative: expectations and goals</li>
<li>Technical (including platform)</li>
<li>Bussiness, marketing, sales, 	distribution</li>
<li>People: skills and personalities</li>
<li>Internal politics</li>
<li>Serious games – add 	teaching/training and real world content constraints</li>
</ul>
<ul></ul>
<p style="margin-bottom: 0cm;">Game design fundamentals:</p>
<ul>
<li>Creative plagiarization: Take only 	what is appropiate, make it your own</li>
<li>Sid Meier&#8217;s rule: Fun for the 	player, not for computer or designer</li>
<li>Albert Einstein: Make it as simple 	as possible, and no simpler</li>
<li>Make it 	familiar, yet new</li>
<li>Easy to 	learn, hard to master</li>
<li>Easy, 	clean, deep</li>
<li>Emphasize 	exploration and discovery</li>
<li>Have a 	clear short, medium and long term goals</li>
<li>Natural 	funativity: hunting and gathering</li>
</ul>
<ul></ul>
<p style="margin-bottom: 0cm; text-decoration: none;">A great game:</p>
<ul>
<li>A series of 	interactive choises in the persuit of a series of well stablished  	and compelling goals</li>
<li>Must be a 	series of choises or it&#8217;s too simple to be a game</li>
<li>Must have a 	goal or it&#8217;s a software toy</li>
<li>With Sim 	City and The Sims players may bring heir own goals</li>
<li>Choises 	need to be meaningful</li>
<li>If choises 	are dull could be that:</li>
<li>Easy to 	code that way</li>
<li>Lazy 	designer</li>
<li>Meaningful 	choises are perceived by the player as having significant 	consequences</li>
<li>May not 	have actual consequences</li>
</ul>
<ul></ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Goals:</p>
<ul>
<li>Clear  	goals: it&#8217;s not fun to flounder aimlessly</li>
<li>Avoid “the 	protagonist with amnesia” cliché</li>
<li>Compelling 	goals are goals that follow the concepts in natural funativity</li>
<li>Surival is 	always a compellin goal</li>
</ul>
<ul></ul>
<p style="margin-bottom: 0cm; text-decoration: none;">Flow:</p>
<ul>
<li>Combine 	intense learning with practical gameplay</li>
<li>Start with 	a relatively low stress level</li>
<li>Combine 	rapid difficulty increase with slower increase. That maximizes fun.</li>
<li>High 	difficulty increase: Boss battles, climatic battles, quest 	resolutions</li>
<li>Low 	difficulty increase: Bonus levels, new resource ad tresure-rich 	areas, series of easy minion enemies</li>
<li>Overlap 	introduction of new skills, areas to explore, tools, enemies</li>
</ul>
<ul></ul>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.silentkraken.com/2009/10/03/game-design-with-noah-falstein-part-2-fundamentals/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
