<?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>Tosos Game Project</title>
	<atom:link href="http://www.tosos.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.tosos.com</link>
	<description>Independent Gaming Information and Discussion</description>
	<lastBuildDate>Tue, 11 May 2010 05:17:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Blender&#8217;s Phantom Meshes</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Mon, 10 May 2010 04:14:55 +0000</pubDate>
		<dc:creator>jharger</dc:creator>
				<category><![CDATA[Blender/Unity Integration]]></category>
		<category><![CDATA[Unity Game Development]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=80</guid>
		<description><![CDATA[While working on an collaborative AI project, I came across a very interesting issue with some Blender models. Since AI was the focus, we decided not to worry much about the graphics, and imported some models off of a Blender community site. We found a house that didn&#8217;t have too many polygons which looked pretty [...]]]></description>
			<content:encoded><![CDATA[<p>While working on an collaborative AI project, I came across a very  interesting issue with some Blender models.</p>
<p>Since AI was  the focus, we decided not to worry much about the graphics, and imported  some models off of a Blender community site. We found a house that didn&#8217;t have  too many polygons which looked pretty good. Upon importing this asset  and placing a few instances around the scene, we found that the graphics  performance decreased <em>dramatically</em>.</p>
<p>At first, we thought  it was just because the house had too many pieces, so we used the  Combine Children script to try to bring them all into one mesh. This  helped a little, but the draw calls were still way too high.</p>
<p>After  further investigation, we discovered that there was some funky bit of  disconnected triangles floating around each house. Each of these  triangles had something like 30 individual materials attached to it. <em>That</em> was the root of our problem. The only question was, where did this come  from?</p>
<p>It turned out that the .blend file had some extra objects  in it that the artist had used to store materials that he/she may have  wanted to reuse later. Well, this object didn&#8217;t show up in the 3D  window, so it wasn&#8217;t apparent to the casual Blender user that it even  existed. However, Unity imported it as if it were any other object, which caused the  problem.</p>
<p>What&#8217;s the solution? Well, if you don&#8217;t care about  maintaining connections with your mesh objects, just delete the  offending mesh object from the scene hierarchy or prefab and all is well. If you do  care, there&#8217;s an easy workaround.</p>
<div id="attachment_81" class="wp-caption alignnone" style="width: 250px"><a href="http://www.tosos.com/wp-content/uploads/2010/05/blendersnip.png"><img class="size-medium wp-image-81" title="Finding the Outliner" src="http://www.tosos.com/wp-content/uploads/2010/05/blendersnip-240x300.png" alt="Finding the Outliner" width="240" height="300" /></a><p class="wp-caption-text">The last item in the View menu lets you switch modes</p></div>
<p>Open  the file in Blender, and open the &#8220;Outliner&#8221; window. In here, there are  two nice views. One is an object-oriented look at all your objects and  their connections, this is called the <span style="color: #000000;">&#8220;<span style="color: #008080;">Oops Schematic</span>&#8220;</span>.  The other, shows a list of everything in the scene, simply called the &#8220;<span style="color: #339966;">Outliner</span>&#8220;. The latter is the one you want.</p>
<p>If  you are not in the Outliner, click on the View menu and choose &#8220;Show Outliner&#8221;. Now you should see every object in the file, even those that aren&#8217;t visible in the 3D window. All you have to  do is click on the offending object and delete it. If your artist sends  you a new copy of the file, just repeat the process.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Blender%27s+Phantom+Meshes+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=Blender%27s+Phantom+Meshes" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Blender%27s+Phantom+Meshes" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Blender%27s+Phantom+Meshes" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another Game and Facebook Woes (er&#8230; Tutorial)</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Sat, 08 May 2010 19:21:20 +0000</pubDate>
		<dc:creator>duhprey</dc:creator>
				<category><![CDATA[Unity Game Development]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=86</guid>
		<description><![CDATA[First, I&#8217;ll cut to the chase and announce the alpha release of a card game I&#8217;ve been working on called Who Cut The Deck. The idea for the game  was born of a necessity.  A friend of mine is leaving town, but we regularly get together to play cards or board games.  We considered the [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_88" class="wp-caption alignright" style="width: 205px"><a href="http://apps.facebook.com/WhoCutTheDeck"><img class="size-medium wp-image-88 " title="Guillotine_colored" src="http://www.tosos.com/wp-content/uploads/2009/12/Guillotine_colored-e1273343557961-195x300.png" alt="Guillotine Image" width="195" height="300" /></a><p class="wp-caption-text">Who Cut the Deck - A Facebook card game.</p></div>
<p>First, I&#8217;ll cut to the chase and announce the alpha release of a card game I&#8217;ve been working on called Who Cut The Deck.</p>
<p>The idea for the game  was born of a necessity.  A friend of mine is leaving town, but we regularly get together to play cards or board games.  We considered the idea of using some kind of Skype arrangement to handle the games, but a basic problem exists for any game which uses cards&#8230; we can&#8217;t network the arrangement of shuffling.  So, I decided to make a network card shuffler.</p>
<p>It&#8217;s expanded, as these things do.  And the goal for me has now become to as closely match as possible the feel of being in the same room sitting around a table playing these games.  Thus it&#8217;s in 3d, it has physics simulation, and hopefully at some point I can get sound and video achieve the verisimilitude.</p>
<p>Finally, I&#8217;ll admit the point wasn&#8217;t to use a standard deck, but some of the more interesting card and board games that are out there.  Of course, these won&#8217;t be released as I&#8217;m keeping them for our personal use, but I may approach the copyright owners at some point and see if something can be arranged.  Until then, I hope people outside our group of friends will enjoy playing any game possible with a normal deck of cards.  There are, after all, quite a few of them.</p>
<p><img class="alignleft" title="Screenshot" src="http://www.tosos.com/WhoCutTheDeck/screenshot.png" alt="" width="400" height="360" /></p>
<p>Now, to maintain some of the technical quality of this site, I&#8217;ll talk about some of the trials and tribulations of integrating Facebook and Unity.  It&#8217;s not as bad as trying to network from scratch (the worst possible programming hell you&#8217;ll ever face, thank you Unity/Raknet for taking that out of my hands), but it&#8217;s not as easy as you might expect from some of the tutorials around the web.</p>
<p>One thing is that Facebook has very recently changed the API.  You can still use existing methods, but they are probably going to be deprecated.  I continue to use them (specifically the original PHP api) myself, because I just wanted to get it working, but it&#8217;s good to know where things break down.</p>
<p>I won&#8217;t list them here because it&#8217;s easy enough to search the web for &#8220;Unity3d Facebook Tutorial&#8221;, but a good one I used to setup is <a href="http://glowacharris.com/blog/?p=91">here</a>.  As of this writing, it is not yet complete.  I&#8217;ll expand on it a little bit here.</p>
<p>The last entry ends with a query to the image FQL.  This is a nice start, but one of the most important things you&#8217;ll run into is that using PHP you&#8217;ll need to do a large portion of your queries on the front end.  This is because PHP processes on the server, but Unity runs on the client.  Now, you can also setup some PHP helpers callable from Unity using it&#8217;s WWW class, but none of these can use authorization directly.  I believe it is possible to establish the authorization with Unity in the initial load and pass this into unity to forward back to these helper queries, but I haven&#8217;t made that work yet.</p>
<p>In the meantime, you can only get basic information available without access to the login (in my case I query name and profile image).  The following code is how I pull out the name and image you see when you first load up the game.  Find it at http://www.tosos.com/WhoCutTheDeck/getFBProfile.php</p>
<pre>&lt;?php
$user_id = $_REQUEST["id"];
require_once 'facebook-platform/php/facebook.php';
$apikey = XXXXXX;
$secret = YYYYYY;
$facebook = new Facebook ($apikey, $secret);
$info = $facebook-&gt;api_client-&gt;users_getInfo ($user_id, array ('first_name'));
$query = "SELECT pic_big FROM profile WHERE id = $user_id;";
$result = $facebook-&gt;api_client-&gt;fql_query($query);
print $info[0]['first_name'].",".$result[0]["pic_big"];
?&gt;</pre>
<p>The Unity code that accesses this is:</p>
<pre>var url = correctURL+"getFBProfile.php?id="+userId;
var www = new WWW (url);
yield www;
var data = www.data.Split(","[0]);
playerName = data[0];
if (imageCache.Contains(userId)) {
  playerImage = imageCache[userId];
} else {
  www  = new WWW (data[1]);
  yield www;
  playerImage = www.texture;
  imageCache.Add (userId, playerImage);
}</pre>
<p>Finally, the note I need to explain is how to get the userId into Unity.  Following the tutorial above, you&#8217;ll see how to get to that point.  To get it into Unity is not nearly as trivial as I expected it would be.  First you don&#8217;t know when unity is loaded from the webpage so you can&#8217;t call it immediately, instead you need some javascript function in the webpage that calls back into unity.  I have:</p>
<pre>&lt;script type="text/javascript"&gt;
function initializeUnity () {
  GetUnity().SendMessage("Main Menu", "SetGameType", "Facebook");
  GetUnity().SendMessage("Main Menu", "SetUserId", &lt;? print "\"$user_id\"" ?&gt;);
  GetUnity().SendMessage("Main Menu", "SetFriends", &lt;? print "\"$friends\"" ?&gt;);
  GetUnity().SendMessage("Main Menu", "InitializationComplete", "");
};
&lt;/script&gt;</pre>
<p>That final InitializationComplete is the most important missing piece from documentation I could find.  It sets a variable &#8220;loaded&#8221; to true inside Unity so that I can do the following before doing anything else using userId.</p>
<pre>Application.ExternalCall ("initializeUnity", "");
while (!loaded)
  yield WaitForSeconds(0.1);</pre>
<p>This is because those calls in the webpage are Message and those will be passed asynchronously (for all intents and purposes) to your javascript.  So you need to wait until they all come through before assuming they have completed.</p>
<p>However, by this point in your application you&#8217;ll have everything you need (and if you ever pass through authorization keys that&#8217;ll also work beyond this point&#8230;) to proceed as expected.  Good luck.</p>
<p>One of these days I&#8217;ll talk about latency issues with Unity&#8217;s master server from the states.  And why it&#8217;s probably much better to keep it somewhere close to your users :)</p>
<p>In the meantime, let me know if you try Who Cut the Deck and feel free to offer suggestions or bugs in the comments.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Another+Game+and+Facebook+Woes+%28er...+Tutorial%29+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=Another+Game+and+Facebook+Woes+%28er...+Tutorial%29" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Another+Game+and+Facebook+Woes+%28er...+Tutorial%29" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Another+Game+and+Facebook+Woes+%28er...+Tutorial%29" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Global Game Jam 2010 Post Mortem</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Wed, 03 Feb 2010 06:45:09 +0000</pubDate>
		<dc:creator>duhprey</dc:creator>
				<category><![CDATA[Unity Game Development]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=42</guid>
		<description><![CDATA[This year we attended the Global Game Jam with the Albuquerque chapter of the IGDA.  It was the second game jam we&#8217;ve attended but the first global one.  Last summer our local IGDA held a game jam in the same format as the global one, but just locals.  I&#8217;ll talk a little bit about the [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 490px"><a href="http://www.tosos.com/MaidThief6.html"><img title="Maid of Dishonor" src="http://globalgamejam.org/sites/default/files/uploads/2010/5997/Screen%20shot%202010-01-31%20at%203.07.13%20PM.png?1264975740" alt="" width="480" height="300" /></a><p class="wp-caption-text">Maid of Dishonor.  Global Game Jam 2010 (click to play in browser).</p></div>
<p>This year we attended the <a href="http://globalgamejam.org">Global Game Jam </a> with the Albuquerque <a href="http://globalgamejam.org/sites/rio-grande-gamers/jammers">chapter</a> of the IGDA.  It was the second game jam we&#8217;ve attended but the first global one.  Last summer our local IGDA held a game jam in the same format as the global one, but just locals.  I&#8217;ll talk a little bit about the differences I felt between the smaller venue and the larger one.  But I want to spend more time talking about some of the lessons we learned about the process of building a game in 48 hours between the two sessions, and what we learned about this particular <a href="http://globalgamejam.org/2010/maid-dishonor">game</a> as we were developing it.</p>
<p>One of the things that stuck out to me doing the global version was that it doesn&#8217;t feel all that much different than the local version.  We really only interact with the people at our location.  It&#8217;s too bad because there were ustreams set up, apparently, but people only really watched some streaming dogs (from what I knew).  I&#8217;m not sure how to achieve a more global feel.  There was one point where we heard a weird horn coming in through the speakers and went to investigate and discovered that we were watching Iceland.  More of that would have been pretty entertaining, but also distracting from the task at hand, no doubt!  I wonder if it would make any sense to allow people to work across country borders?  The time limits would be strange, but the open source community does it often enough it might not be impossible to consider.</p>
<p>Despite all the differences I didn&#8217;t notice there was one I did notice a great deal.  That is that in both cases the global and local version, our ideas (from each group) were well contained, and by the end familiar.  This is great because even though people are working on different projects, we can feed off each other for ideas and there&#8217;s a lot of similarity that comes out in the various projects (but also different perspectives on the concept).</p>
<p>When there&#8217;s a global group to look at you suddenly discover other cells which have come up with a completely different sort of convergence.  It&#8217;s a bit of the best of both worlds, you get used to seeing and thinking about what the people around you are working on, but when you go look at the global submissions it&#8217;s more than a little surprising what other directions are discovered.  I imagine for the organizers looking for great ideas coming out (and I&#8217;d love to see a summarization of some of the best, most original) it is a well-spring of thought.</p>
<p>The more interesting differences between the two sessions for us were in the game itself.  For the two of us, there was no difference in how the 48 hours played out: Friday mostly planning, Saturday work to death, Sunday cleanup race to the finish.  Except this time we had the experience of hind sight.  We came in with two very important personal constraints.  The first was that we were going to use Unity instead of Pygame which we did last time.  We both know XNA and other systems (like Ogre and Crystalspace) but Unity&#8217;s editor is simply one of the best.  It makes things very simple to get working quickly, and we wanted to spend time thinking about the game and not how to make some code work (I&#8217;ve got a day job for that :).</p>
<div id="attachment_48" class="wp-caption alignleft" style="width: 280px"><a href="http://www.tosos.com/wp-content/uploads/2010/02/SnakeCrushScreen.png"><img class="size-medium wp-image-48 " title="SnakeCrushScreen" src="http://www.tosos.com/wp-content/uploads/2010/02/SnakeCrushScreen-300x178.png" alt="" width="270" height="160" /></a><p class="wp-caption-text">SnakeCrush.  Written in Pygame for the NM Game Jam 2009 (click to download source)</p></div>
<p>When we were doing pygame, we spent most of Saturday building an engine.  The 3-layer parallax motion system I was trying to develop did not work out (and probably wouldn&#8217;t have the way I was thinking of it) and we ended up going with a more &#8220;Double Dragon&#8221; style system on Sunday.  Compared with Unity, we had the basic game working on Saturday morning.  In fact, we had the basic game, walking around the room, working on Friday night after we spent a few hours throwing the models together.  We finished up the Eye, the first camera (in the lamp) and the mechanism for clicking on the lamp and the picture to determine whether you&#8217;d win or not, but more on the design (and subsequent evolution) later.</p>
<p>The other constraint that we went in with was to <strong>not</strong> do physics.  Despite that Unity makes it fairly easy to get physics working, there is still so much tweaking that&#8217;s involved in getting the numbers to work out, especially in terms of friction and collision response that it either requires being too careful with measuring to &#8220;act right&#8221; or spending too much time twiddling numbers until it &#8220;looks to act right&#8221;.  Although I was personally tempted several times to just turn on physics (let you move the furniture around, bump into the desk, etc) it made proving out the mechanism much easier.  Instead of having to detect some complicated motion which is &#8220;bad&#8221; we simply defined moving using the right mouse button as &#8220;bad&#8221; and there was no question.</p>
<p>But for a more advanced design, perhaps having such subtle movement in the presence of the Eye would be an interesting twist.  What if instead of having to explicitly turn the lamp away from the portrait, a player could instead vacuum up against the desk and bump it cause the lamp to fall.  This sort of complexity may be an interesting take in the future, but first to discuss the evolution from the start.  The game we finished on Saturday morning (and uploaded to the site) was the simplest possible concept:  Either turn the lamp before moving the portrait and win, or turn the portrait without first turning the lamp and lose.  The point of the game was to use the eye to learn that the camera was in the lamp and thus realize that you must turn the lamp first to clear the portait.</p>
<p>While this was useful, it&#8217;s really not an interesting game.  So we went to lunch to discuss what it would take to make it better.  We had a few thoughts.  One was to install multiple cameras, so that we would have cameras watching cameras and more of a puzzle to determine how to move objects while off camera so as to clear the space.  To make it interesting (and because we skipped physics) we made it so that when you moved one object with a camera in it, it might point at another object with a camera, thus increasing the challenge.  You&#8217;d have to move object A (which is pointing at B), move object B (which is pointing at C), move object A back (since it is currently also pointing at C), and finally move object C to clear the goal.  This is what we ended up with (although there&#8217;s a D).</p>
<div id="attachment_50" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-50 " title="Opening the Cabinet" src="http://www.tosos.com/wp-content/uploads/2010/02/Cabinet-300x235.png" alt="" width="300" height="235" /><p class="wp-caption-text">We were very pleased with the hand gesture for opening.  It&#39;s like Fonzi meets the Force.</p></div>
<p>One of the other thoughts we decided to discard was requiring that you close the door.  We thought perhaps that while the door was open the eye should be fully on.  You&#8217;d have to first close the door before you could start moving stuff.  However, once you closed the door you had 5 minutes (chosen based on one of the achievements) to solve the puzzle.  In the end we decided the puzzle was hard enough as is.</p>
<p>There was one other decision which seemed somewhat minor, but ended up, I think, becoming fundamental to the possible future of this game.  That is that originally before you could win the game by finding the safe behind the picture you had to clean the room of every stain.  However, due to the mechanism for moving some stains couldn&#8217;t be reached until you solved the puzzle with the Eye.  It doesn&#8217;t really line up with the motif, but it makes the business of finding the stains much more interesting.  It&#8217;s safe to clean them (after all that is your cover story) but to get to some stains you have to move furniture which sets off the alarm.  Silly, but effective.</p>
<div id="attachment_51" class="wp-caption alignright" style="width: 310px"><a href="http://www.tosos.com/wp-content/uploads/2010/02/SpotCleaner.png"><img class="size-medium wp-image-51" title="Spot Cleaner" src="http://www.tosos.com/wp-content/uploads/2010/02/SpotCleaner-300x235.png" alt="" width="300" height="235" /></a><p class="wp-caption-text">Can&#39;t leave a spot untouched.  Even if you risk the alarm to do it!</p></div>
<p>Well at some point, I thought that it didn&#8217;t make sense to have to find every stain because the main point was to get the treasure from the safe  (also I couldn&#8217;t find some of the spots that John put in and got annoyed and disabled the condition check so that I could test the win condition :).  We thought it would be a nice bonus to see who while finding the treasure could also clean the most spots.  However, after seeing the way people played, nobody really cared much about the treasure, they only cared about finding all the spots to clean and cleaning the room.  Our organizer said it was like &#8220;OCD&#8221;, he *had* to find all the spots.</p>
<p>After talking some, we thought really the whole concept of Extreme Maid Cleaning service was much more entertaining than just stealing while cleaning.  Forget the treasure altogether.  Instead you&#8217;re supposed to clean the place without setting off alarms or traps (we&#8217;d always pictured having traps at some point.. .like trying to break into the Pentagon, Mission Impossible style).  But what kind of insane place would require the maid service to work around traps?  Well a super villain hideout of course!  They need janitorial staff too don&#8217;t they?  They can&#8217;t really risk turning off all the alarms and traps just to clean things.  That&#8217;s exactly when that jerk James Bond would come in dressed like a maid and pretend to clean everything with all the traps disabled (perish the thought&#8230; someone pretending to be a maid).  So better for the super villain to be safe and leave the traps and alarms on, requiring the maid to have to work her way around them.</p>
<p>Who do you call when your average maid service just doesn&#8217;t cut it (and keeps getting killed by your Robot Sentry&#8217;s)?  You call Extreme Maid Services (or Ninja Maids&#8230; or &#8230; something)!</p>
<div id="attachment_52" class="wp-caption alignleft" style="width: 816px"><img class="size-full wp-image-52 " title="For the Win" src="http://www.tosos.com/wp-content/uploads/2010/02/YouWin.png" alt="" width="806" height="632" /><p class="wp-caption-text">For the Win</p></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Global+Game+Jam+2010+Post+Mortem+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=Global+Game+Jam+2010+Post+Mortem" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Global+Game+Jam+2010+Post+Mortem" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Global+Game+Jam+2010+Post+Mortem" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hardpoints and Workflow</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Sun, 24 Jan 2010 07:49:07 +0000</pubDate>
		<dc:creator>duhprey</dc:creator>
				<category><![CDATA[Unity Game Development]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=34</guid>
		<description><![CDATA[One of the interesting questions dealing with a full featured editor like Blender is how much really makes sense to do.  There&#8217;s a full game engine there, and so it&#8217;s possible to create an entire game within it.  But of course, given all I&#8217;m talking about is Unity then I don&#8217;t really want to make [...]]]></description>
			<content:encoded><![CDATA[<p>One of the interesting questions dealing with a full featured editor like <a href="http://www.blender3d.org">Blender</a> is how much really makes sense to do.  There&#8217;s a full game engine there, and so it&#8217;s possible to create an entire game within it.  But of course, given all I&#8217;m talking about is Unity then I don&#8217;t really want to make the full game in blender.</p>
<p>This came to mind recently because I was thinking about hard-points to place on the ships.  The idea is similar to that handled in Galactic Civilization 2.  Each component you add can be joined against a hard-point in the existing set.  You start with a chassis which has a certain number and then you add a wing</p>
<div class="wp-caption aligncenter" style="width: 490px"><a href="http://www.galciv2.com"><img class="  " title="Galactive Civilizations 2:  Constructing space vehicles from hard points." src="http://www.galciv2.com/ScreenShots/Twilight%20Screens%207-16-08/Ship%20Design/GC2TA_Terran%20Alliance_1.jpg" alt="Galactive Civilizations 2:  Constructing space vehicles from hard points." width="480" height="383" /></a><p class="wp-caption-text">Constructing space vehicles from hard points.</p></div>
<p>which has it&#8217;s own hard-points.  The wing attaches to one, but contains many more itself.  This allows you to build very customizable ships, and I plan to use this concept to allow the players to build their ship for <a href="http://www.tosos.com/ShooterMark2.html">space combat</a>.  Such a feature provides a number of great game benefits, like finding (in-game) particular or rare pieces (especially those that give certain abilities when attached to the ship) and allowing them to be specifically targeted, damaged and destroyed during combat.  But the basic point is that it allows individuality and customization.</p>
<p>So the question was:  Who is responsible for the hard-points?  Is it the artist who places them when he designs the chassis in order to place them in the most aesthetically pleasing way?  Or is it the game designer who needs to set them up based on number of properties necessary for game balance?  Most likely for game balance the designer would only need to specify the number of hard points to allow, but it&#8217;s also possible for perhaps physical reasons, and in my case that certain specialized hard points would be needed on top and bottom since they&#8217;d rarely be seen in this pseudo 2d game.</p>
<p>In some way&#8217;s the answer is both, but that&#8217;s not an answer easily addressable in Blender.  The easiest way I could imagine to do this would be to have the artist generate empties (which are objects that contain only one vertex).   The game designer could also modify these directly in the blend file, which would allow, for instance, the artist to place initial hard points where he likes them and the designer could delete or move them to fit some balance notion.</p>
<p>However, model files as they are treated in Unity are read only.  And when considering the work-flow of a designer doing a rapid test cycle within Unity, pulling up blender to modify the location of those hard points seems like more effort than necessary.  So the next direction to take is to use an element in Unity itself.</p>
<p>The good news is that Unity already has a visual editing capabilities similar to those in Blender which an artist would be familiar with using.  One of the things I&#8217;ve learned over the years of programming is that the shorter the test cycle is between making a change and trying out the effects of that change means the better you can work.  In Unity it is actually possible to modify within the editor <strong>while</strong> the game is running.   When I first started testing the physics restoration on the ships, I ran the editor and pulled them out of alignment using the model editing tools while the physics was running.  The physics  would then work to fix the alignment back to the 2d plane.  This was an amazingly tight loop to fudge numbers which are not based on any physical reality in the first place.</p>
<p>So there is one final decision which I haven&#8217;t nailed down a direction to take.  On the one hand, I might use Unity&#8217;s empties to attach to the object and position for hard points.  These would be children in the prefab, and I&#8217;d use the script to find them when it came time to attach parts.  However, the other option would be to store them as variables in scripts.  It turns out using the <a href="http://unity3d.com/support/documentation/Components/gui-ExtendingEditor.html">GUI extension scripting</a> in Unity you can setup widgets to modify even variables graphically.  The easiest way to handle this is to add each variable to the script for each hard point.  The script would then be attached to the object and each of the hard points would have the small edit widgets to allow the artist to change them.  If the designer really does only need to worry about the number of hard points he can decide this by attaching the appropriate script and let the artist set the actual position for each.</p>
<p>In the next post on this topic, I&#8217;ll address the decisions made on which methods to take for implementing hard points and post links to the prototype in-game editor.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Hardpoints+and+Workflow+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=Hardpoints+and+Workflow" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Hardpoints+and+Workflow" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Hardpoints+and+Workflow" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shootin&#8217; Off the Design</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Tue, 15 Dec 2009 06:51:46 +0000</pubDate>
		<dc:creator>duhprey</dc:creator>
				<category><![CDATA[Unity Game Development]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=21</guid>
		<description><![CDATA[One of the games I recently added on the Unity Games page is a remake of a not-quite game that John and I did a few years back.  I thought I&#8217;d take some time to explain the design ideas and delve into where I&#8217;m taking it.  Click the image below to play with it in [...]]]></description>
			<content:encoded><![CDATA[<p>One of the games I recently added on the Unity Games page is a remake of a not-quite game that John and I did a few years back.  I thought I&#8217;d take some time to explain the design ideas and delve into where I&#8217;m taking it.  Click the image below to play with it in the Unity Web Player.</p>
<div id="attachment_22" class="wp-caption alignnone" style="width: 310px"><a href="http://www.tosos.com/ShooterMark2.html"><img class="size-medium wp-image-22" title="Screen Shot from Shooter Remake" src="http://www.tosos.com/wp-content/uploads/2009/12/ShooterMark2Screen-300x225.png" alt="Asteroid being destroyed" width="300" height="225" /></a><p class="wp-caption-text">Asteroid being destroyed</p></div>
<h3 style="text-align: center; ">Background</h3>
<p>The idea originated with John (also on this site) and where it came from is probably best left to a post from him.  For several years we worked on Crystalspace.  When we decided to quit, Shooter (later to be named Longshot as you&#8217;d see in the web player) was our foray into designing our own game engine (also another story&#8230;)  At the same time I was working my way through a Masters degree and taking a course in machine learning.  At about that same time I agreed to develop the AI for the game.  I realized I didn&#8217;t really feel like generating a long tree of if-then rules and had just learned about behavior cloning in class.  So I pushed John into helping me round it out for the class.  We added another ship and spent some time with networking and left it there to see whether this behavior cloning thing would work&#8230; but this behavior cloning thing is <em>also</em> going to be another story. :)</p>
<h3 style="text-align: center; ">Original Design</h3>
<p>I&#8217;ve seen so many of these games now that it&#8217;s hard to decide if anything in particular was innovative about what we were doing.  Perhaps some of it was at the time.  It&#8217;s a top down space shooter that includes asteroids.  Much has been written on the rite of passage that is cloning asteroids&#8230; everyone should do it at least once.  Of course, we couldn&#8217;t seem to get the asteroids physics to work as well as we liked so we dropped them.  But really there&#8217;s nothing new there.  For the sake of curiosity, I&#8217;ve uploaded the windows installer for the original <a href="http://tosos.com/LongshotInstaller.exe" target="_self">here</a>.</p>
<p>Where there was a sense of newness was in the design of the engine itself.  This design, it turns out, is described pretty handily as &#8220;System of Systems&#8221;.  It is an idea employed by the military for many simulation games and uses High Level Architecture (HLA) as the formalism.  The idea there is that each of these systems is developed by separate entities, but they can be brought together and easily coupled into large, more complex systems.  Our thinking at the time wasn&#8217;t quite so complex.  I simply wanted to see whether or not we could thread one loop of physics at a reasonable simulation rate and thread another loop of graphics at a separate rate and yet another loop for gameplay without strongly coupling any of them.  My thought was that graphics could run just fine at 30 frames per second and the only reason to run it higher was because if it were strongly coupled with the physics you&#8217;d want that at a higher rate.   We did run the physics at a higher rate of 100 hz (along with the input so it felt responsive).  Interestingly the gameplay was entirely event driven responding only to collision events.  This is where Unity&#8217;s design is so nice because in the same way all of the gameplay exists now in the collision code.</p>
<p style="padding-left: 30px; "><code>function OnTriggerStay (other : Collider) {<br />
if (other.name != "Bullets" &amp;&amp; GetComponent(FireBullet).remoteFire) {<br />
if (other.GetComponent(LifeCycle) != null) {<br />
other.GetComponent(LifeCycle).hitpoints -= 1;<br />
}<br />
var closestPoint = other.ClosestPointOnBounds(transform.position);<br />
var sparkPos = (other.rigidbody.position + closestPoint) / 2;<br />
var spark = Instantiate (prefab, sparkPos, Quaternion.identity);<br />
var sparkForce = transform.position - sparkPos;<br />
spark.GetComponent(ParticleAnimator).force = sparkForce;<br />
Destroy (spark.GetComponent(ParticleRenderer),0.5);<br />
Destroy (spark.GetComponent(ParticleAnimator),0.5);<br />
Destroy (spark.GetComponent(ParticleEmitter),0.5);<br />
Destroy (spark,0.5);<br />
}<br />
</code></p>
<p>It&#8217;s not entirely true that it&#8217;s all in that script, but that is a majority of it.  Two of my favorite results to come out of that design were the fact that the game ran with almost no CPU usage despite maintaining responsiveness and that I could lower the graphics to 8 fps and still play the game just fine.  It was painfully strobed, but it was possible to see what was going on.  Due to this it would have been easy to scale the graphics however necessary to fit into whatever capability the system had while allowing the physics to operate however needed.  However, this innovation wasn&#8217;t really much related to how the game played.</p>
<p>What may have been most interesting to me was the &#8220;hovercraft&#8221; design.  Although the motif is ships flying out in space, I thought it would be more interesting to see them rock as though on water.  We had already decided on forcing the 3d physics engine to fit to the 2d plane, but since we were using 3d models and a fully 3d engine, I thought we might as well show it off.  In order to do so we&#8217;d have the ship lean forward when moving forward and lean further forward when going really fast.  When stopping it would rear back (almost like a horse).  And best of all, when an explosion would go off it should rock the ship.  It wasn&#8217;t until using Unity&#8217;s Detontation engine that the rocking effect came into it&#8217;s own.  You can see this when you blow up an asteroid and get close.</p>
<p>The way this rocking effect was modeled was to virtually attach a spring to the front, back, and sides and have this pull the ship back into the plane.  Then we could apply forces from thrusters or explosions which would offset the springs and ultimately either pull or balance them out.</p>
<p style="padding-left: 30px; "><code>function FixedUpdate () {<br />
if (rigidbody.position.y != 0) {<br />
rigidbody.AddForce (0, rigidbody.position.y * -restore.y, 0);<br />
}<br />
yoff = transform.localRotation * Vector3(1, 0, 0);<br />
xoff = transform.localRotation * Vector3(0, 1, 0);<br />
rigidbody.AddRelativeTorque(xoff.y * -restore.x, -yoff.y * -restore.z, 0);<br />
}</code></p>
<p>One of the really amusing side effects that came out of this was that by timing a forward and reverse thrust, one could cause the ship to rock to higher and higher degrees until ultimately flipping over.</p>
<h3 style="text-align: center; ">New Design</h3>
<p>Enter Unity.  For some reason Unity is designed with me in mind.  I don&#8217;t know who read my mind and made everything I could have possibly wanted out of a game editor, but someone did.  Thanks! :)  The result you see <a href="http://www.tosos.com/ShooterMark2.html" target="_blank">here</a> was built in 2 weekends taking all the assets from the old project and porting all the code necessary (not very much) into javascript.  All told, I think  I spent about 20 hours on it and most of that was on learning how to do the networking (something I never did get right for internet latency on the old version).</p>
<p>Although I haven&#8217;t yet brought back the behavior cloning, even with a second ship the game was pretty boring.   But I really like the idea of modifying ships and customizing.  I&#8217;m not a very good artist, and I don&#8217;t feel like making hundreds of ship models.  So instead, I plan to make a bunch of ship pieces and allow the user to put them together into different pieces.  Of course some of the obvious choices would be chassis size and style, engine power, weapon type etc.  But one of the more fun ones due to this wobbly control scheme is to allow various levels of restoration power based on the types of items added to the ship.  If you don&#8217;t mind wobbling a great deal perhaps you can load your ship with more weapons.  Or perhaps you want a tight control and will exchange that for less fire power.  I&#8217;m giddy with the options :)</p>
<p>Another gameplay element I&#8217;m toying with is one that used to come up when playing Magic the Gathering.  When you&#8217;d duel another player you were supposed to put a card out on the line.   Whoever won would get the other player&#8217;s card (as well as their own back, of course).  Well I haven&#8217;t quite decided how players get cards (or really ship components) yet, but I thought it would make for an interesting gambit that when you do duel somebody you can take a component from their collection if you beat them.</p>
<p>More interesting however is to bring the behavior cloning back into it.  Because the idea behind BC is to create a model of how you play, one could imagine building a fleet of ships and playing with each in order to build up a clone which plays a particular way.  This allows one player to virtually control an entire armada when fighting another player, not just one ship.  But the downside is that if a ship gets captured that clone could be taken (or maybe just copied).  If you&#8217;ve made a particularly effective opponent someone may be able to steal that and use it in their own fleet.  Reminds me again of Magic the Gathering.  I used to play exclusively blue.  I don&#8217;t remember the names of the spells exactly, but I think they were &#8220;Steal Creature&#8221; and &#8220;Clone Creature&#8221;.  I remember playing one guy who was quite proud when he brought out some very rare, very powerful monster onto the playing field to take me out.  I had a steal creature sitting in my hand waiting for just that to happen.  On my next turn before he was able to attack, I stole it to use on my side.  And on the turn after that I cloned it.  Now instead of him having one very rare and powerful creature he had none.  I had two.  He was very, very angry.  I beat him quickly and left just as quickly :)</p>
<p>Anyway, hopefully people won&#8217;t be nearly as upset at losing a clone in the wages of war.  It is after all just a clone, but it creates some very frightening possibilities for components!   Keep an eye on this space, I&#8217;ll  talk more about advances in the game as well as give some background on behavior cloning and how to make it work.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Shootin%27+Off+the+Design+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=Shootin%27+Off+the+Design" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Shootin%27+Off+the+Design" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Shootin%27+Off+the+Design" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The game I&#8217;d someday like to make</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Sat, 12 Dec 2009 07:54:43 +0000</pubDate>
		<dc:creator>duhprey</dc:creator>
				<category><![CDATA[Immortals of Hishran]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=13</guid>
		<description><![CDATA[Although it&#8217;s likely to never come about, I&#8217;d like to think of this writing as tracking progress toward a game I&#8217;ve wanted to make for a very long time, called Immortals of Hishran. When the game starts the players are in a world that has been split in two.  On one side is the ordinary [...]]]></description>
			<content:encoded><![CDATA[<p>Although it&#8217;s likely to never come about, I&#8217;d like to think of this writing as tracking progress toward a game I&#8217;ve wanted to make for a very long time, called <em>Immortals of Hishran</em>.</p>
<p>When the game starts the players are in a world that has been split in two.  On one side is the ordinary world where mortals go about their business and live their lives.  On the other side is the Shadow of Hishran.  This is where the Demimortals live, the players.  There is a substantially large city that they inhabit and are confined within.   (This premise may share some passing resemblance to Brandon Sanderson&#8217;s new book Warbreaker, but my plot will likely not nearly be as good.  Go read his books!)</p>
<p>The Demimortals having nothing better to do have found cracks in the fabric dividing the two worlds of Hishran and have found a way to possess the mortals on the other side.  Thus, they search for answers to questions.  Who they are?  How they came to be?  How can they permanently escape that blasted City in the Shadow?</p>
<p>The idea formed around the desire to test some principles of AI interaction.  I wanted to have an alife system which was stable and where the individuals acted &#8230; well as individuals without an overall guidance, but up to the level of fairly complex societies.  Then I could introduce humans into the mix, having them operate on the same level the AI operated (both playing the same game, having the same game controls) and see how things went with the AI observing and responding to the humans, and the humans hopefully intrigued by the AI.</p>
<p>So, I will treat this as a way to progress toward the goal of creating the game, but also to talk about some of the things I have done over time to approach that goal.  Some of these will lead to posts about Behavioral Cloning, Sheep and Wolves, Unity Games, and of course more about the world of the Immortals&#8230; for a sneak peak, I&#8217;m running a campaign at <a href="http://www.obsidianportal.com/campaign/immortals/">Obsidian Portal</a> in the world a millennium before the video game would start.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=The+game+I%27d+someday+like+to+make+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=The+game+I%27d+someday+like+to+make" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=The+game+I%27d+someday+like+to+make" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=The+game+I%27d+someday+like+to+make" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initial Alpha Unity Games</title>
		<link>http://www.tosos.com/http:/www.tosos.com/SanityEngine</link>
		<comments>http://www.tosos.com/http:/www.tosos.com/SanityEngine#comments</comments>
		<pubDate>Fri, 11 Dec 2009 07:35:22 +0000</pubDate>
		<dc:creator>duhprey</dc:creator>
				<category><![CDATA[Unity Game Development]]></category>

		<guid isPermaLink="false">http://www.tosos.com/?p=6</guid>
		<description><![CDATA[I&#8217;ve put up a page of the unity games I&#8217;m tinkering around with.  It&#8217;s labeled &#8220;Unity Games&#8221;. If you&#8217;ve ever wanted to make a game do it in Unity.  Intuitive doesn&#8217;t seem like a strong enough word.  And it&#8217;s free (at least with some stipulations). Tweet This! Share this on Facebook Digg this! Submit this [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve put up a page of the unity games I&#8217;m tinkering around with.  It&#8217;s labeled <a href="http://www.tosos.com/?page_id=3">&#8220;Unity Games&#8221;.</a></p>
<p>If you&#8217;ve ever wanted to make a game do it in <a title="Unity" href="http://unity3d.com">Unity</a>.  Intuitive doesn&#8217;t seem like a strong enough word.  And it&#8217;s free (at least with some stipulations).</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Initial+Alpha+Unity+Games+-+http://b2l.me/abr6p6&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;t=Initial+Alpha+Unity+Games" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Initial+Alpha+Unity+Games" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tosos.com/http:/www.tosos.com/SanityEngine&amp;title=Initial+Alpha+Unity+Games" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.tosos.com/http:/www.tosos.com/sanityengine/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tosos.com/http:/www.tosos.com/SanityEngine/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
