<?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>Quick Fingers</title>
	<atom:link href="http://www.quickfingers.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.quickfingers.net</link>
	<description>An Independent Game Developer</description>
	<lastBuildDate>Thu, 26 Jan 2012 19:02:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Come Home</title>
		<link>http://www.quickfingers.net/come-home</link>
		<comments>http://www.quickfingers.net/come-home#comments</comments>
		<pubDate>Thu, 26 Jan 2012 18:58:13 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=1192</guid>
		<description><![CDATA[A NEW IDEA I&#8217;ve been contemplating posting this for over 6 weeks now. It was a project I started on December the 1st and finished on December the 14th of 2011. A new type of project for me, and something I believe to be fairly unique in the gaming world. It&#8217;s a pretty personal subject matter and the story is right there for everyone to see. No names or anything were used but the people involved are fully aware and &#8230; <a href="http://www.quickfingers.net/come-home" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<h2>A NEW IDEA</h2>
<p>I&#8217;ve been contemplating posting this for over 6 weeks now. It was a project I started on December the 1st and finished on December the 14th of 2011. A new type of project for me, and something I believe to be fairly unique in the gaming world. It&#8217;s a pretty personal subject matter and the story is right there for everyone to see. No names or anything were used but the people involved are fully aware and have given the all clear for showcasing this online.</p>
<p>Come Home is an interactive true story based on moments in my life. It&#8217;s a PC/Mac Standalone game. It&#8217;s a fairly weighty download (around 75mb) and has some fairly heavy image effects so a fairly good GPU is recommended. If this isn&#8217;t enough to scare you off then go right ahead to the <a title="Come Home" href="http://www.quickfingers.net/portfolio/come-home">game page here</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/come-home/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boom Bugs Released!</title>
		<link>http://www.quickfingers.net/boom-bugs-released</link>
		<comments>http://www.quickfingers.net/boom-bugs-released#comments</comments>
		<pubDate>Sun, 11 Dec 2011 19:12:31 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[Boom Bugs]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=1102</guid>
		<description><![CDATA[Title says it all :) Boom Bugs my physics based destruction game has officially been released on iPhone and Android, and the iPad HD edition is under review as we speak. After working solo on the project for a little while I collaborated with the guys at Playerthree and between us we finished it from an early alpha to the polished game that it is now! If you aren&#8217;t familiar with the game, please take a look at the trailer &#8230; <a href="http://www.quickfingers.net/boom-bugs-released" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>Title says it all :) Boom Bugs my physics based destruction game has officially been released on iPhone and Android, and the iPad HD edition is under review as we speak.</p>
<p>After working solo on the project for a little while I collaborated with the guys at Playerthree and between us we finished it from an early alpha to the polished game that it is now!</p>
<p>If you aren&#8217;t familiar with the game, please take a look at the trailer below (courtesy of unity3d.com)</p>
<p><iframe src="http://video.unity3d.com/v.ihtml?token=7dc77cd7aabacec4d600bcf5409eb240&#038;photo%5fid=4067298" width="630" height="355" frameborder="0" border="0" scrolling="no"></iframe></p>
<p>All you have to do is head on over to <a href="http://www.playboombugs.com" target="_blank">www.playboombugs.com</a> for more information, get it on your smartphones and start killing some spiders!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/boom-bugs-released/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Designing for iOS</title>
		<link>http://www.quickfingers.net/designing-for-ios</link>
		<comments>http://www.quickfingers.net/designing-for-ios#comments</comments>
		<pubDate>Wed, 26 Oct 2011 20:44:32 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=1054</guid>
		<description><![CDATA[I&#8217;ve been quiet recently, a lot of this is due to me focussing on a couple of key titles for me for iOS. One you already know about and one is totally unannounced. With all this work on little screens I was doing all sorts of UI and HUD design and one of the things that bothered me was previewing the work I was doing in Photoshop on a device at native resolution. (especially with retina display when the native &#8230; <a href="http://www.quickfingers.net/designing-for-ios" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been quiet recently, a lot of this is due to me focussing on a couple of key titles for me for iOS. One you already know about and one is totally unannounced. With all this work on little screens I was doing all sorts of UI and HUD design and one of the things that bothered me was previewing the work I was doing in Photoshop on a device at native resolution. (especially with retina display when the native resolutions screen area is tiny compared to most computer monitors displaying the same resolution). I&#8217;ve researched some solutions but inevitably came up with my own that suits me best.</p>
<h2>There&#8217;s an app for that.</h2>
<p><img class="alignright size-full wp-image-1056" title="liveviewicon" src="http://www.quickfingers.net/wp-content/uploads/2011/10/liveviewicon.png" alt="" width="57" height="58" /><img class="alignright size-full wp-image-1057" title="reviewicon" src="http://www.quickfingers.net/wp-content/uploads/2011/10/reviewicon.png" alt="" width="57" height="58" /></p>
<p>Currently there&#8217;s a couple of apps out there suited to this. First up is <a href="http://www.zambetti.com/projects/liveview/" target="_blank">LiveView</a> from Nicolas Zambetti. This is a free screencast type affair that broadcasts a select area of your screen to your device. Setup is super simple, you do need a host app installed on your computer and it is only available for Mac, once installed the device connects over wifi and everything works. You need to specify an area of your screen just for the screencast, this means if you move your photoshop windows about a lot it&#8217;ll break the illusion and you might spend time re aligning to the capture area.</p>
<p>The second app i tested is called <a href="http://www.getreviewapp.com/" target="_blank">Review</a> by Kevin Kalle and Pieter Omvlee. This is a more bespoke tool for the task, specifically targeting photoshop users. It is a file sync solution that again requires a host application and again is Mac only. (I use both a mac and pc throughout development so I prefer cross platform solutions)</p>
<p>Once you&#8217;ve got both the iOS app and the mac app running syncing them was easy enough and to use it, there&#8217;s a system wide shortcut for syncing any images selected in the finder or any active window open in photoshop as a png. Very nice. The only negative thing i found was the process to update an image currently being displayed was slightly convoluted. It requires you to go back to the start of the app, hit the refresh button, wait for the update and the click on the image again to show the updated version. The iOS app of Review is also not free. It&#8217;s currently being sold for £1.99.</p>
<p>So one app (LiveView) provides instant updates as you make them via screen casting techniques but requires you to have a reserved area of your monitor specifically for this so didn&#8217;t really allow for folks like me who chuck photoshop windows around reckless abandon. On the flip side Review was more suited to me, just a keyboard shortcut and a file is ready to be viewed on the device, however the price and process to view a file I may of only changed a couple of things in meant it wasn&#8217;t right for me. The other problem I had with both these apps was having to install another helper app on the mac side was something I&#8217;d like to avoid if possible (and ideally, get a cross platform solution) and with liveview, broadcasting a screencast does have an impact on your processor.</p>
<h2>My solution (Dropbox / custom website)</h2>
<div id="attachment_1061" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-1061 " title="Screen shot 2011-10-26 at 20.51.29" src="http://www.quickfingers.net/wp-content/uploads/2011/10/Screen-shot-2011-10-26-at-20.51.29-300x142.png" alt="" width="300" height="142" />
<p class="wp-caption-text">Photoshop Action (bound to SHIFT-F1)</p>
</div>
<p>So what was the end result? Well I chose to use neither. Instead I utilised what I already had available to me&#8230; Namely a Dropbox account and a tiny little web site on my domain. How this works is as follows&#8230; I&#8217;m messing around with a mockup in photoshop, I hit a keyboard shortcut, an action runs to save a copy to my Dropbox public folder with a specific name (in my case iospreview.png) and I just tap my iPhone screen and the image magically appears.</p>
<p><img class="alignright size-full wp-image-1066" style="border-style: initial; border-color: initial;" title="dropboxwait" src="http://www.quickfingers.net/wp-content/uploads/2011/10/dropboxwait.png" alt="" width="83" height="22" /> (One added bonus of using Dropbox is the nice little icon that tells me when the image is done. And if the changes are minor it only uploads the delta so it&#8217;s pretty darned fast)</p>
<p>That magical bit is where the interesting part lies, I&#8217;m using a free app on my iPhone called <a href="http://itunes.apple.com/us/app/free-full-screen-private-browsing/id368483462?mt=8" target="_blank">Full Screen Browser</a> (this app is also a <em>private </em>browser, whatever that means, but the full screen bit was perfect for my needs. I have a website that just shows that drop boxed image, and nothing else. With some metadata and javascript I&#8217;ve made it fit the iPhone screen pixel perfect and make the image a link to refresh the page. Simple! Now I can design on my Mac or my PC, with no extra applications running and update my iOS view with a simple shortcut and a tap of the screen. It also works without the iPhone being on the same network as my computer (Useful if your workplace has network restrictions or no public wireless) and its totally free.</p>
<div id="attachment_1069" class="wp-caption aligncenter" style="width: 582px"><img class="size-full wp-image-1069 " title="capture3" src="http://www.quickfingers.net/wp-content/uploads/2011/10/capture3.png" alt="" width="572" height="224" />
<p class="wp-caption-text">Before and After some HUD Changes. 1 key press &amp; 1 tap to see the update on device.</p>
</div>
<p><em>As an added bonus I included a swipe control on the website that toggles a &#8220;screen-door&#8221; effect. This basically emulates a non retina screen on a retina display device. So when viewing images on my iphone4. I can see how they would look on an iphone 3gs and lower just by swiping across the image. For information on how this works (and why it is different to just viewing a half resolution image on your retina screen) visit <a href="http://mantia.me/blog/retro-display/" target="_blank">Louie Mantia&#8217;s blog here</a></em></p>
<p>If you want the source code for the html page to do this click the big blue button</p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://www.quickfingers.net/scratch/2011/iosfeedsrc.zip" class="su-button su-button-style-2" style="background-color:#00ccff;border:1px solid #00a3cc;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;"><span style="color:#003d4c;padding:12px 25px;font-size:18px;height:18px;line-height:18px;border-top:1px solid #b3f0ff;text-transform:uppercase;border-radius:7px;text-shadow:1px 1px 0 #80e6ff;-moz-border-radius:7px;-moz-text-shadow:1px 1px 0 #80e6ff;-webkit-border-radius:7px;-webkit-text-shadow:1px 1px 0 #80e6ff;">Download Source</span></a></p>
<p style="text-align: center;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/designing-for-ios/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ludum Dare, Me and The Future</title>
		<link>http://www.quickfingers.net/ludum-dare-me-and-the-future</link>
		<comments>http://www.quickfingers.net/ludum-dare-me-and-the-future#comments</comments>
		<pubDate>Mon, 29 Aug 2011 02:58:42 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=1022</guid>
		<description><![CDATA[Last weekend I participated in the 21st Ludum Dare. The ultimate 48 hour game jam. The  competition phase is now underway and voting is taking place. My entry was called AWOL and information and play links are available on the project page. As far as how I felt it went. It was really smooth, even smoother than the last LD I participated in, finishing earlier, having a better  game at the end and enjoying slightly more  break time than before. &#8230; <a href="http://www.quickfingers.net/ludum-dare-me-and-the-future" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-1014" title="awol1" src="http://www.quickfingers.net/wp-content/uploads/2011/08/awol1-120x90.jpg" alt="" width="120" height="90" /></p>
<p>Last weekend I participated in the 21st<a title="Ludum Dare" href="http://www.ludumdare.com/compo"> Ludum Dare</a>. The ultimate 48 hour game jam. The  competition phase is now underway and voting is taking place. My entry was called AWOL and information and play links are available on the <a title="AWOL" href="http://www.quickfingers.net/portfolio/awol">project page</a>.</p>
<p>As far as how I felt it went. It was really smooth, even smoother than the last LD I participated in, finishing earlier, having a better  game at the end and enjoying slightly more  break time than before. I put this partially down to luck and also just down to my initial motivation being more directed to begin with. I will write a Post mortem of AWOL as my next blog and explain some of the tricks and interesting things I did in that.</p>
<h2>Current Projects</h2>
<p>So as you might be aware if you&#8217;ve been  following my stuff for a while I have a few projects that are still in  development. Some I&#8217;ve talked about a fair bit, others not so much. But  these are the projects currently in development and their status:</p>
<p><strong>Boom Bugs</strong> : My iOS title that was announced  months ago. Development of this has been continuing and I have been  working on this a lot over the last few weeks. It&#8217;s getting close. This  is likely to be the next release from me. But I&#8217;m afraid I cannot really  offer more details on this title any more, I&#8217;m sure you can work out  what that means ;)</p>
<p><strong>Island Strike</strong> : Momentarily halted&#8230; Keep reading.</p>
<p><strong>The Core </strong>: Hehe yeah yeah&#8230; when its done!</p>
<h2>Me and Now</h2>
<p>So Quick Fingers has been running for just 6 months now although it feels like a lot longer. For those that don&#8217;t know, my background is about 6 years as a Flash Developer, as soon as I discovered Unity a couple of years ago I knew that was where I wanted to be. So I spent a little time playing about, but ever since last year I&#8217;ve been learning intensively and for the last 6 months (as Quick Fingers) actively developing projects and hopefully becoming a part of the Unity community.  Based on my work over the last 6 months I&#8217;ve been offered a full time position doing purely Unity development and I have taken it :) Further more, the company that I now work at is happy for me to continue Quick Fingers work in my own time so for you guys enjoying my games and updates, nothing should really change. I&#8217;m letting you guys know because it&#8217;s a pretty good moral. I was unhappy making Flash games for a living, I had a lot of love for Unity and I wanted to use it professionally, but without a portfolio or any &#8216;proof&#8217; of what I could do with it, I took 6 months to really put myself out there and develop like crazy and now I have that job. So there! It&#8217;s never a bad thing to shake things up in your career and change tech, and possibly&#8230; even your discipline&#8230;</p>
<h2>The Near Future</h2>
<h2><img class="alignright size-medium wp-image-1023" title="artdesigndevelop" src="http://www.quickfingers.net/wp-content/uploads/2011/08/artdesigndevelop-300x285.png" alt="" width="300" height="285" /></h2>
<p>Which leads me neatly onto my final point. In the past I&#8217;ve always considered myself more a &#8220;Developer&#8221; than an artist or designer in the gaming world. I&#8217;m happiest knee deep in my comfortingly syntax coloured C# scripts, tweaking and hacking away at things I don&#8217;t fully understand. Design has always been a part of me and music of course. But as for raw artistic ability&#8230; that&#8217;s my weak area.</p>
<p>At the moment I&#8217;m firmly in the Pink area of this neat little diagram I made. I want to be in the middle. So for the next few weeks, outside of my work at my new Unity job, I will be doing drawing lessons, doing a course on Maya and trying to get into creating some awesome environments and architecture in 3D. So that&#8217;s why Island Strike is currently on hold, only temporarily mind you whilst I get this urge to do artisty type things out of my system :) Anyway, wish me luck! And I apologise in advance if I&#8217;m distant or neglect the updates while I go on my little journey to environment artist!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/ludum-dare-me-and-the-future/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>iPhone 4 Gyro Control in Unity</title>
		<link>http://www.quickfingers.net/iphone-4-gyro-control-in-unity</link>
		<comments>http://www.quickfingers.net/iphone-4-gyro-control-in-unity#comments</comments>
		<pubDate>Sun, 07 Aug 2011 21:52:33 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=963</guid>
		<description><![CDATA[The Write Up. This idea spawned from seeing an iPhone app called Cameraman for Maya by Wes Mcdermott (www.the3dninja.com). The basic principle is you can use the gyro inside an iPhone 4 to record motion capture data. Really useful if you want to get an authentic shaky cam effect. I&#8217;ve been planning some larger projects in my head and figured something like this would be really useful for getting some animation clips for the camera in cutscenes. Initially I thought &#8230; <a href="http://www.quickfingers.net/iphone-4-gyro-control-in-unity" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p><object width="630" height="384"><param name="movie" value="http://www.youtube.com/v/sjwy3oGPu6Y?hd=1&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/sjwy3oGPu6Y?hd=1&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="true" allowfullscreen="true" width="630" height="384" flashvars=""></embed></object></p>
<h2>The Write Up.</h2>
<p>This idea spawned from seeing an iPhone app called Cameraman for Maya by Wes Mcdermott (<a href="http://www.the3dninja.com" target="_blank">www.the3dninja.com</a>). The basic principle is you can use the gyro inside an iPhone 4 to record motion capture data. Really useful if you want to get an authentic shaky cam effect. I&#8217;ve been planning some larger projects in my head and figured something like this would be really useful for getting some animation clips for the camera in cutscenes.</p>
<p>Initially I thought this would be really easy in Unity. It has a remote iPhone app and I can just use that. I had a friendly peer-imposed deadline of 24 hours from Prime_31 so I figured why not :).</p>
<p>Unfortunately gyroscope support has only been added to Unity in the very latest version (3.4) and the remote hasn&#8217;t been updated to send Gyroscope data to Unity when using it as a remote. So that was out, (although that would also have limited me to having a usable system only on Mac). So I tried something else.</p>
<p>(If your not interested in the background and just want to get it going on your own projects, goto the bottom of the post to get the download links and how-to)</p>
<h2>OSC?</h2>
<p>For the uninitiated OSC stands for open sound control and is a messaging format optimized to be super fast over current networks. It&#8217;s primary use is in audio, controlling synthesizers and synchronising hardware with software. However due to its light weightness its really good for real time stuff, I did a quick search for iPhone apps that support OSC and found a BEAUTY. This is part 1 of the puzzle to get this thing running.</p>
<h2>Control</h2>
<p><img class="size-full wp-image-975 alignright" title="control1" src="http://www.quickfingers.net/wp-content/uploads/2011/08/control1.png" alt="" width="200" height="161" />The app is called control. It&#8217;s a single dev&#8217;s work by the name of Charlie Roberts (<a href="http://www.charlie-roberts.com/Control/" target="_blank">www.charlie-roberts.com/Control/</a>). If it wasn&#8217;t for this I wouldn&#8217;t have made my 24 hour deadline. It&#8217;s basically a customizable interface allowing access to all sensor and touch events and send the raw data with OSC. The great thing about it is the interfaces are in JSON format so writing your own is a piece of cake. Oh yeah, and it&#8217;s <strong>free</strong>! Here&#8217;s an example interface for Control:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript">loadedInterfaceName <span class="sy0">=</span> <span class="st0">&quot;template&quot;</span><span class="sy0">;</span>
interfaceOrientation <span class="sy0">=</span> <span class="st0">&quot;portrait&quot;</span><span class="sy0">;</span>
&nbsp;
pages <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>
<span class="br0">&#123;</span>
    <span class="st0">&quot;name&quot;</span><span class="sy0">:</span> <span class="st0">&quot;refresh&quot;</span><span class="sy0">,</span>
    <span class="st0">&quot;type&quot;</span><span class="sy0">:</span> <span class="st0">&quot;Button&quot;</span><span class="sy0">,</span>
    <span class="st0">&quot;bounds&quot;</span><span class="sy0">:</span> <span class="br0">&#91;</span>.6<span class="sy0">,</span> .9<span class="sy0">,</span> .2<span class="sy0">,</span> .1<span class="br0">&#93;</span><span class="sy0">,</span>
    <span class="st0">&quot;startingValue&quot;</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">,</span>
    <span class="st0">&quot;isLocal&quot;</span><span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span>
    <span class="st0">&quot;mode&quot;</span><span class="sy0">:</span> <span class="st0">&quot;contact&quot;</span><span class="sy0">,</span>
    <span class="st0">&quot;ontouchstart&quot;</span><span class="sy0">:</span> <span class="st0">&quot;interfaceManager.refreshInterface()&quot;</span><span class="sy0">,</span>
    <span class="st0">&quot;stroke&quot;</span><span class="sy0">:</span> <span class="st0">&quot;#aaa&quot;</span><span class="sy0">,</span>
    <span class="st0">&quot;label&quot;</span><span class="sy0">:</span> <span class="st0">&quot;refrsh&quot;</span><span class="sy0">,</span>
<span class="br0">&#125;</span><span class="sy0">,</span>
<span class="br0">&#93;</span>
<span class="br0">&#93;</span><span class="sy0">;</span></pre>
</div>
</div>
<p>So I made an interface that sends the gyroscope information 100 times a second and also has 4 triggerable buttons on the screens (used for movement in Unity). Once you&#8217;ve got all this sending data, it has to be received by something. So another app was required here. (Sending the gyro at 100hz was absolutely fine as long as my wireless signal was strong. Any sort of interference or low signal caused a few drops here and there)</p>
<h2>Osculator</h2>
<h2><img class="alignright size-full wp-image-977" title="gyrodata" src="http://www.quickfingers.net/wp-content/uploads/2011/08/gyrodata-e1312752693853.png" alt="" width="180" height="252" /></h2>
<p>Another wonderful application that I utilised is <a href="http://www.osculator.net" target="_blank">Osculator</a> (Mac only unfortunately. I didn&#8217;t search for a Windows alternative but OSC is an open format so should be plenty of software out there!). It is available as a demo which functions fully apart from a pause every 10 minutes or so for 20 seconds. This application receives all the OSC data you can throw at it then does whatever you want with it. You can see in the screenshots it provides these great live views for any parameters you send it so I get a nice graph showing me exactly whats happening with the gyroscope. On my osculator setup shown in the screenshot you can see I mapped each gyro output (pitch, roll and yaw) to a different joystick axis and then assigned the 4 on screen buttons to joystick buttons. Now just have to hook them up in the Unity editor and half the puzzle is solved.</p>
<div id="attachment_978" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.quickfingers.net/wp-content/uploads/2011/08/osculator.png"><img class="size-medium wp-image-978 " title="osculator" src="http://www.quickfingers.net/wp-content/uploads/2011/08/osculator-300x263.png" alt="" width="300" height="263" /></a>
<p class="wp-caption-text">Osculator Setup</p>
</div>
<h2>Unity</h2>
<h2><img class="alignright size-full wp-image-982" title="Screen shot 2011-08-07 at 01.54.28" src="http://www.quickfingers.net/wp-content/uploads/2011/08/Screen-shot-2011-08-07-at-01.54.28.png" alt="" width="261" height="210" /></h2>
<p>Once we are in Unity we just set up the 3 axes in the Input Manager and write some script to handle it. The scripting is pretty straight forward. Just adding a little code to convert the axes into the transform data and everything starts moving around as it should. Initially when I did this I had the animation creation as a 2 step process where you would make your data whilst playing, then create the animation file and edit it after the game has ended and your back in editor. Now I&#8217;ve streamlined it thanks to Unitys AssetDatabase API I can create the animation asset whilst your playing and store it in your Assets folder. (This will obviously only work in the editor still, it wont work if you export. That was never my intention). Anyway that was the final hurdle so now, we are done :) It took me 20 hours in total to reasearch and complete the prototype.</p>
<p>&nbsp;</p>
<h2>Trying it Yourself!</h2>
<p>If you&#8217;d like to give this a go yourself&#8230; Well, cool. But there&#8217;s a few prerequisites.</p>
<div class="su-list su-list-style-blue">
<ul>
<li>Control Application for iOS (<a href="http://itunes.apple.com/us/app/control-osc-midi/id413224747?mt=8" target="_blank">iTunes Link</a>)</li>
<li>Osculator for Mac. (<a href="http://www.osculator.net/download/" target="_blank">Demo</a>)</li>
<li>iOS with Gyro (iPhone 4 or iPad 2)</li>
<li>Your computer and iOS device on the same network.</li>
</ul>
</div>
<h2>Okay I have all that, I still wanna do this!</h2>
<div class="su-list su-list-style-blue">
<ul>
<li>Start <strong>Osculator</strong> and grab my patch file from <a href="../unitygyro/gyro.oscd" target="_blank">here.</a> Load it and leave it running.</li>
<li>Start <strong>Control</strong> on your device: In the app, goto &#8216;<em>Interfaces</em>&#8216; click the plus (+). Point it at the URL <strong><em>http://www.quickfingers.net/unitygyro/layout.js </em></strong>(This will download the interface to your phone so it&#8217;ll always be there from now on) You should see it in the list as &#8220;<strong>Unity Controller</strong>&#8220;. Now goto &#8216;<em>Destinations</em>&#8216; and your computer&#8217;s IP address should be there, tap it. Then back to &#8216;<em>Interfaces</em>&#8216; and tap Unity Controller. </li>
<li>Inside <strong>Osculator</strong> you should see things starting to flash.</li>
<li>Now open a new or existing Unity Project</li>
<li>Download the <a href="http://www.quickfingers.net/unitygyro/GyroRecorder.cs">GyroRecorder.cs</a> file and attach it to the camera. (Or anything you want to record animation for)</li>
<li>Download the <a href="http://www.quickfingers.net/unitygyro/InputManager.asset">InputManager.asset</a> file and overwrite the one in your projects /Library folder. (Be aware this will destroy your Input Managers settings so don&#8217;t do this on some pre existing project with complex button mapping setup).</li>
<li>Restart Unity.</li>
<li>With Control and Osculator running, hit play in Unity and everything should just work!</li>
<li>Hit &#8216;<em>Zero</em>&#8216; on the device to reset the current gyroscope position as 0,0,0.</li>
<li>If your getting weird behaviour and flipping make sure to lock your devices orientation. This uses Core Motion so the accelerometer does come into play. I had weird effects when the orientation was detected. It&#8217;s better to just lock it</div>
</li>
</ul>
<p>The rest should be pretty straight forward! Hit the record button to start tracking input. If you stop the engine or press stop it&#8217;ll output to a .anim file in the Assets root directory. Okay enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/iphone-4-gyro-control-in-unity/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Kongregate : My Experiences</title>
		<link>http://www.quickfingers.net/kongregate-my-experiences</link>
		<comments>http://www.quickfingers.net/kongregate-my-experiences#comments</comments>
		<pubDate>Sat, 06 Aug 2011 01:11:55 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=936</guid>
		<description><![CDATA[For the last 6 months I&#8217;ve been pushing my games through Kongregate exclusively and as I recently won the Project Eden contest (with Drop.) I thought now would be a good time to share my experiences. So&#8230; if you&#8217;re unaware, Kongregate pays developers with a share of the advertising revenue earned on your games page. The standard cut to you is 25%, the percentage can vary based on a few things, most importantly exclusivity. Your share goes from 25% to &#8230; <a href="http://www.quickfingers.net/kongregate-my-experiences" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>For the last 6 months I&#8217;ve been pushing my games through Kongregate exclusively and as I recently won the Project Eden contest (with <a title="Drop" href="http://www.quickfingers.net/portfolio/drop">Drop.</a>) I thought now would be a good time to share my experiences.</p>
<p>So&#8230; if you&#8217;re unaware, Kongregate pays developers with a share of the advertising revenue earned on your games page. The standard cut to you is <em>25%</em>, the percentage can vary based on a few things, most importantly exclusivity. Your share goes from <em>25%</em> to <em>40% </em>if you don&#8217;t put your game anywhere else. How they police this, I&#8217;m not exactly sure but I&#8217;ve done that for any games that I could.</p>
<p>The other ways to earn money are the monthly and weekly contests. For more information on this you can check the Kongregate page on it <a href="http://www.kongregate.com/contests">here</a>.</p>
<h2>Figures</h2>
<p>Here are the figures for advertising revenue for my games&#8230;</p>
<p><a href="http://www.quickfingers.net/wp-content/uploads/2011/08/Screen-shot-2011-08-06-at-00.18.00.png"><img class="alignnone size-large wp-image-939" title="Kongregate Stats" src="http://www.quickfingers.net/wp-content/uploads/2011/08/Screen-shot-2011-08-06-at-00.18.00-630x164.png" alt="" width="630" height="164" /></a></p>
<p>I&#8217;ve got 6 Unity games on Kongregate and so far my cut of the ad earnings has been around <strong>$827</strong> with a total playcount of around 440,000 . That&#8217;s with varying revenue cuts. (Not quite sure how they are worked out&#8230;) Some games have the full <em>50%</em> and other (like step seq) are strangely at around <em>46%</em>.</p>
<p>I&#8217;ve had 1 monthly contest win at <strong>$1,000</strong> and a weekly contest win at <strong>$150</strong> bringing the total up to just shy of <strong>$2,000.</strong></p>
<p>As you can see here my Game Jam titles (<a title="Stratosfear" href="http://www.quickfingers.net/portfolio/stratosfear">Stratosfear</a> and <a title="The Last of the Nyoms" href="http://www.quickfingers.net/portfolio/last-of-the-nyoms">The Last of the Nyoms</a>) prove a point that quality really is king on Kongregate and the audience is certainly fussy. I love the community there and the site is VERY active (more on this later) but as you can see, if your game is unfinished/unpolished gamers move on and don&#8217;t give it a vote, and to be honest with such a busy site, the only way you can pull your game up from the massive amounts of submitted content is to hope you get a few 4 and 5 star reviews early on, possibly get on the list of game eligible for the weekly and monthly contest and then your on the front page and should see a surge of hits.</p>
<h2>Project Eden</h2>
<p><img class="size-medium wp-image-940 alignright" title="coe_landing_eden" src="http://www.quickfingers.net/wp-content/uploads/2011/08/coe_landing_eden-300x161.jpg" alt="" width="300" height="161" /></p>
<p>So far $2,000 may not seem enough considering the amount of work and time that goes into creating Unity games. I would be inclined to agree that on it&#8217;s own, a small amount of ad revenue isn&#8217;t going to get your bills paid. Until I won the sponsored contest for Ubisofts Child of Eden game.</p>
<p>The grand prize was <strong>$10,000</strong>! A much needed boost to my all but drained bank account.</p>
<p>So now my total is a much more respectable <strong>$12,000</strong>. For half a years work, that puts my annual salary at <strong>$24,000</strong> which is quite low for a game developer, but hey, I got to do it all in my underwear.</p>
<p>These sponsored contests are good fun with their themed content, have big prizes, but sadly don&#8217;t come around too often. If I dropped everything else I did from Kongregate I think I&#8217;d always make time to enter at least one entry to all the sponsored competitions.</p>
<h2>The pays not great, but the people. . .</h2>
<p>Where Kongregates strength lies is in its visibility, activity and  ease of use for a dev. You can potentially throw a game on Kongregate and get 90,000  hits in 48 hours (<a title="Step Seq" href="http://www.quickfingers.net/portfolio/step-seq">Step Seq.</a>) without doing any advertising, marketing or  well, anything at all. When I think of the Kongregate community the  visual image in my head is a herd of religious army ants desperate to  eat your game alive, so as soon as you drop one in the pit they all go  nuts and either demolish it or worship it almost immediately and swiftly  becoming a rabble once more and demanding fresh content.</p>
<p>Pointless analogies aside, they are also  an incredibly useful lot, filtering through the comments see&#8217;s them coming up with some fantastic ideas for  Step-seq and drop. If you implement there suggestions, they love you for  it, but effectively they have just play-tested your games for free and  provided essential feedback. <strong><br />Do not underestimate the usefulness of  this</strong>.</p>
<p>I think with this level of activity its impossible to  ignore Kongregate not for its Ad-revenue (chump change), maybe not even  for contests (too luck based), but as a potential driver to some other  method of monetising your game it is absolutely great. See the revenue  as a bonus and decide if you would put it on the site without it. I bet you  still would purely for the visibility, so that&#8217;s what its about for me.</p>
<h2>Conclusions</h2>
<p>So can you make money on Kongregate.. you know, like properly?</p>
<p>I would say, exclusively, no. If it wasn&#8217;t for the Project Eden contest I&#8217;d actually be homeless. So there&#8217;s a lot of risk in putting all your eggs in one basket. I&#8217;ve noticed good games that sometimes just go unnoticed or under appreciated. Whilst some weird meta games start getting really high scores so there is an element of luck. (Don&#8217;t get me wrong, if your game is seriously great, it&#8217;ll get noticed and you&#8217;ll get SOME money) But to make enough to make it worthwhile you need to be winning monthly and weekly contests and you just can&#8217;t predict what awesome games are going to be released the same month as yours and throw you off the top spot.</p>
<p>It&#8217;s a fickle place, it&#8217;s a hyper-active community of people not afraid to speak their mind, it&#8217;s a proving ground. But if your not utilising the community in some way I think you&#8217;d be missing out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/kongregate-my-experiences/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>New Web Design!</title>
		<link>http://www.quickfingers.net/new-web-design</link>
		<comments>http://www.quickfingers.net/new-web-design#comments</comments>
		<pubDate>Mon, 01 Aug 2011 03:23:31 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=933</guid>
		<description><![CDATA[I&#8217;ve just launched the new site design! Take a look around and see what you think. I really liked the old design but there were a few reasons that forced me to change it. Most importantly the site is wordpress powered, and the initial design was a very hacky implementation of a wordpress theme, nothing &#8220;worked&#8221; properly and was a real issue every time I wanted to add a new page or game. With the new design I&#8217;ve properly integrated &#8230; <a href="http://www.quickfingers.net/new-web-design" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just launched the new site design! Take a look around and see what you think. I really liked the old design but there were a few reasons that forced me to change it.</p>
<p>Most importantly the site is wordpress powered, and the initial design was a very hacky implementation of a wordpress theme, nothing &#8220;worked&#8221; properly and was a real issue every time I wanted to add a new page or game. With the new design I&#8217;ve properly integrated everything, it&#8217;s 100% wordpress now with no hax!</p>
<p>Secondly the strong red colouring was causing my eyes (as a color blind person) to go funny after a while. So the new design is a much easier to see (for me) blue and uses more neutral greys so project banners and screenies don&#8217;t clash no matter what the game content. I&#8217;m still keeping my light on dark text throughout the blog, that&#8217;s just a personal preference :)</p>
<p>Finally, I&#8217;m putting more emphasis still on the blog content. There is no longer a home splash type page the home page is the blog</p>
<p>Hope you like the new style</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/new-web-design/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Doing it alone</title>
		<link>http://www.quickfingers.net/doing-it-alone</link>
		<comments>http://www.quickfingers.net/doing-it-alone#comments</comments>
		<pubDate>Sat, 25 Jun 2011 14:36:23 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=675</guid>
		<description><![CDATA[One of the questions I regularly get e-mails about is my general work ethic. The one man army approach to game development is seen as I guess the holy grail of &#8220;indie&#8221;. No boss, no rules, only working to self imposed deadlines, ability to work naked. So, the question usually takes the form &#8220;How do you do that?&#8221;, &#8220;Where do you find the time?&#8221; or as smart ass Prime_31 (responsible for the best selection of Unity plugins for mobile devices) &#8230; <a href="http://www.quickfingers.net/doing-it-alone" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>One of the questions I regularly get e-mails about is my general work ethic. The one man army approach to game development is seen as I guess the holy grail of &#8220;indie&#8221;. No boss, no rules, only working to self imposed deadlines, ability to work naked. So, the question usually takes the form &#8220;How do you do that?&#8221;, &#8220;Where do you find the time?&#8221; or as smart ass Prime_31 (responsible for the best selection of Unity plugins for mobile devices) elequently put it <a href="http://twitter.com/#!/prime_31/status/83390713844346880">here.</a></p>
<p>So instead of answering the e-mails individually (which I&#8217;ve done to this point) I thought I&#8217;d copy/paste out some of the bits I&#8217;ve said to others and hope this resonates true to some or helps you out:</p>
<h2>Multi disciplinarian</h2>
<p><a href="http://www.quickfingers.net/wp-content/uploads/2011/06/3732851541_366445cc7d.jpg"><img class="alignright size-medium wp-image-854" title="3732851541_366445cc7d" src="http://www.quickfingers.net/wp-content/uploads/2011/06/3732851541_366445cc7d-300x199.jpg" alt="" width="300" height="199" /></a>My University studies and first couple of jobs were in graphic design so I learnt a lot from there, but not actually having much skill in real drawing left me wanting to do more technical jobs, so I went into development. Musics always been a hobby of mine since birth, playing the piano from age 4 along with guitar and drums at certain points in life, and I&#8217;ve been producing ambient Electronica under the name Freshcut for a few years now.</p>
<p>However! Doing art, music, programming, game design all take time, a lot of time, but I think the point I&#8217;m making by seemingly bragging about my talents is that although in every project I don&#8217;t necessarily focus my energy on everything equally (For example, in <a href="http://surrender.quickfingers.net">Surrender</a>, I bought the music track royalty free and bought some stock 3d models aswell)  the important thing is that I have an understanding in all the disciplines which helps me make educated decisions, i.e. I knew exactly the track I wanted when I was buying it. I have a good idea of the style I want the art to be like if I don&#8217;t have the time to make it all myself , I will buy things as long as my designer eye is in when I&#8217;m shopping I know I&#8217;ll make a decent choice when selecting assets that will &#8216;fit&#8217;.</p>
<p>So if you&#8217;re not a great artist, it doesn&#8217;t matter, as long as you have an understanding of style and continuity then you can make good choices when sourcing art, same for music, if you have an appreciation for soundtracks and the mood they set you can find a piece of music that will seem like it was made for your game. But it can sometimes take just as long a time to find the piece of music/artwork that you are exactly looking for, and it becomes a bit of a skill in itself in finding stuff that you know you can use or finding something that is close enough that you feel confident you&#8217;ll be able to manipulate yourself into what you want. But with practise and always thinking about the immersion factor of your game you will hopefully make decent choices in terms of where to spend your time vs. where to shortcut and purchase assets.</p>
<h2>Getting TEH SKILLZ</h2>
<p><img class="alignright size-full wp-image-693" title="gettingskills" src="http://www.quickfingers.net/wp-content/uploads/2011/06/gettingskills.jpg" alt="" width="188" height="180" align="right" />Play A LOT of games. Even ones you don&#8217;t think your going to like but they are getting great reviews, play them objectively, look at what makes these games ace. Just because I&#8217;m making a 2d puzzle game doesn&#8217;t mean you can&#8217;t learn something from the production values of a halo or half life. You might find FIFA has an awesome transition between menu to game or Fallout has some real nice way of illustrating you&#8217;ve started a new mission, doesn&#8217;t matter that your making &#8220;Generic match 3 game : The lost levels&#8221; you can still learn a lot from games of all genres.</p>
<p>Little things such as the way the music fades out when someone gives you an important piece of information, or an important visual clue activates only when your actually facing the correct way may seem really obvious and actually totally transparent to someone just playing a game (that&#8217;s a good thing) but you need to see these things, learn from them and you&#8217;ll be all the better equipped for making good games yourself. I&#8217;m not saying if you see a really great idea done by someone else you should just copy it, I&#8217;m just saying you need to be aware of what makes games &#8220;good&#8221; and the only way to do that, is, play more games :)</p>
<h2>Limit yourself</h2>
<p><img class="alignright size-full wp-image-697" title="limit" src="http://www.quickfingers.net/wp-content/uploads/2011/06/limit.png" alt="" width="120" height="150" align="right" />Knowing your limitations and working within them can often lead you to being more creative than treating everything with a no holds barred approach. For example my latest release Drop. Features very little in the way of graphics. A pretty rudimentary understanding of graphic design is all that you really need to create the graphics for that game, simple font selection and a few transparency and blur effects is all the skill that was required for the art. But because there is nothing jarringly out of place, it still works as a consistent and (hopefully!) visually appealing piece. It&#8217;s very easy to slip up and create something that doesn&#8217;t fit if you&#8217;re not thinking about it, if some element of the game had an outline on it, or the droplets had realistic shading, it would of looked weird but a pure programmer might not notice whereas a designer would never let such things happen.</p>
<p>So you need training in each discipline just so you know you&#8217;re going to make appropriate choices.</p>
<h2>But I want to make a fantasy mmo</h2>
<p>Yeah, I&#8217;m guessing your new to this? Despite what people may say to you, knocking you down and saying you have no idea, no realism, it is my belief that this is okay! Fuck what the nay-sayers say hey! we all have to dream.</p>
<p>When I was 15 I wanted to make a quake mod which would turn this medieval fps into a skateboarding game. How utterly stupid I think now, but that didn&#8217;t matter at the time. All I could actually do was make a skate park in a map editor. I was convinced I would make an awesome skateboarding game. (A little while later Tony Hawks Pro Skater was released and I gave up) but, I honestly believe this is a process we all go through, the C.U-N.T. phase (Completely Unrealistic &#8211; No Thought). So go for it, get it out of your system!</p>
<p>As I said in the previous paragraph, working within your limits is liberating and often very creative, but firstly you need to learn your limits, so go on! Attempt that MMO, get shot down, ridiculed, whatever&#8230; What seperates the men from the boys is that you&#8217;ll fail, pick yourself up and go right I didn&#8217;t want to make a shitty mmo anyway, I&#8217;m gonna make a horror FPS. Rinse and repeat each time lowering your goals, and eventually you&#8217;ll finish a game. Then you&#8217;re a game developer! Woo well done you. Remember you can&#8217;t actually FAIL at this gig, because every project will teach you something, and there is a hell of a lot to learn. So all projects are experience, even the ones that don&#8217;t make it, and all experience is neccesary.</p>
<p>I believe this stereotypical process is a staple of any creative industry. I bet all the budding James Camerons out there are dying to make the next Aliens or Avatar. But they&#8217;ll get shot down until there expectations are in line with their abilities, and once they line up, they&#8217;ll build up from there.</p>
<p>To me it seems that it&#8217;s a sign of great motivation to do amazing things. Someone saying I want to create an MMO! (knowing nothing of development) is a much more heart warming message than seeing new people saying &#8220;I know I&#8217;m rubbish so I&#8217;ll make a naughts and crosses game&#8221;. Yes its more realistic and they&#8217;ll probably finish, but hey where&#8217;s the completely outrageous self belief :)</p>
<p><em>Photo by <a href="http://www.flickr.com/photos/dnorman/">D&#8217;arcy Norman</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/doing-it-alone/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Drop. Creative Mode</title>
		<link>http://www.quickfingers.net/drop-creative-mode</link>
		<comments>http://www.quickfingers.net/drop-creative-mode#comments</comments>
		<pubDate>Thu, 23 Jun 2011 14:07:40 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[Drop]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=676</guid>
		<description><![CDATA[Here is a preview of what I&#8217;ve been working on for the last few days: (I recommend full screen viewing) So what is going on here? This is an extension of the sandbox mode in the current version of Drop. I&#8217;m calling it, creative mode. The idea of it is to give players total control of the tonality of each line, more freedom in placing objects, controlling the flow of start pipes and let them place behavioural objects as seen &#8230; <a href="http://www.quickfingers.net/drop-creative-mode" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>Here is a preview of what I&#8217;ve been working on for the last few days:<br/><br />
(I recommend full screen viewing) <br/><br />
<object width="630" height="384"><param name="movie" value="http://www.youtube.com/v/Gmtjz-MaxZs?hd=1&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/Gmtjz-MaxZs?hd=1&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="true" allowfullscreen="true" width="630" height="384" flashvars=""></embed></object><br />
<br/><br />
So what is going on here? This is an extension of the sandbox mode in the current version of Drop. I&#8217;m calling it, creative mode. The idea of it is to give players total control of the tonality of each line, more freedom in placing objects, controlling the flow of start pipes and let them place behavioural objects as seen in the puzzle mode (like bouncy blue objects, and reacting yellow objects) and be able to tweak all parameters for them. All in all lots of tools to create some great sounds!<br />
The Pièce de résistance is definitely the quantization that I&#8217;ve been working on (I turn it on at 1:34 in the video). This basically keeps all the hits in time. I&#8217;ve been playing with settings to try and get something that always sounds great, but obviously having strict timing means that thingswill be bound to a certain tempo. So I&#8217;m planning on having a slider control to dictate how tight you want the quantizing.<br />
<br/>I&#8217;m still playing with buffer lengths and getting the ideal timings to allow the audio to play without hiccups and retaining sample accuracy. It&#8217;s just trial and error but right now it&#8217;s getting close to awesome.<br />
<br/>The end goal is a service similar to Step/Net in Step Seq. Allowing players to share and rate others compositions. I learnt a lot from doing that before and I know there&#8217;s a few areas I need to tighten up. Namely not letting others just load your creation then reupload it as their own. This got on a few peoples nerves and rightly so. This time it wont be so easy to steal others work :)<br />
<br/>The GUI has actually been pretty nice to me this time round. I&#8217;m using all built in UnityGUI stuff as I&#8217;m familiar with it, but stuff like sliders and radio buttons are all handled for me and I&#8217;m used to coding gui&#8217;s rather than designing them.<br />
<br/>Hope you like it so far and I really hope you&#8217;re going to enjoy it and make some great sounds.<br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/drop-creative-mode/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drop. Post Mortem</title>
		<link>http://www.quickfingers.net/drop-post-mortem</link>
		<comments>http://www.quickfingers.net/drop-post-mortem#comments</comments>
		<pubDate>Sat, 18 Jun 2011 12:56:46 +0000</pubDate>
		<dc:creator>Quick Fingers</dc:creator>
				<category><![CDATA[Drop]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.quickfingers.net/?p=624</guid>
		<description><![CDATA[Right time for another post mortem. Drop. has been fairly successful on Kongregate, Stabilising at around 4.08 rating which means its sitting in 2nd place in the Project Eden contest behind Step Seq. So altogether I&#8217;m pretty happy with how its been received. The future of Drop is an unknown right now, there&#8217;s a million ideas of what I want to do with it in my head, expansive composition elements, more focus on the music aspect&#8230; but for now as &#8230; <a href="http://www.quickfingers.net/drop-post-mortem" >&#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>Right time for another post mortem. Drop. has been fairly successful on Kongregate, Stabilising at around 4.08 rating which means its sitting in 2nd place in the Project Eden contest behind Step Seq. So altogether I&#8217;m pretty happy with how its been received. The future of Drop is an unknown right now, there&#8217;s a million ideas of what I want to do with it in my head, expansive composition elements, more focus on the music aspect&#8230; but for now as I&#8217;m hideously hung over, I thought I&#8217;d just write a post mortem of the first version instead. There&#8217;s a few interesting key things I&#8217;d like to go over how I did them.</p>
<h2>physics</h2>
<p>Arguably the most important aspect of the game, which was going to determine how the thing felt under your mouse, was the physics.</p>
<p><img class="size-full wp-image-626 aligncenter" title="firstversion" src="http://www.quickfingers.net/wp-content/uploads/2011/06/firstversion.jpg" alt="" width="250" height="300" align="left" /><br /> <img class="size-full wp-image-634 alignnone" title="problem" src="http://www.quickfingers.net/wp-content/uploads/2011/06/problem1.png" alt="" width="300" height="279" /></p>
<p>Now my first prototype of this project (which had a little youtube video about a month or so ago) used Unitys built in Nvidia Physx engine, constrained to 2 dimensions. Each line was a box collider and each drop a spherical rigidbody. Using the various physics material properties and rigidbody mass and drag settings I got a pretty good model of how I wanted it to feel. There was one quite major issue with this method though, and that is that Physx is non deterministic, there&#8217;s no way to make it fully deterministic as well, which means, two balls hitting exactly the same point on a line, with exactly the same velocity, may bounce in slightly different arcs.This essentially makes the game feel completely unfair as your balls will start deviating when your not doing anything. Bad bad user experience in a game like this. So, only one thing for it, write a really simplified physics engine from scratch with just the bare essentials to handle line/ball collisions. Nothing else was really needed and without the complexity of a full simulation the deviation from floating point rounding errors and such (which are prevalent in an advanced simulation such as using physx) are gotten rid of.</p>
<p><a href="http://www.quickfingers.net/wp-content/uploads/2011/06/gratuitousvs1.jpg"><img class="alignleft size-medium wp-image-649" title="gratuitousvs" src="http://www.quickfingers.net/wp-content/uploads/2011/06/gratuitousvs1-300x187.jpg" alt="" width="300" height="187" align="left" /></a></p>
<p>As I have a flash background (back in the days of actionscript 1) I&#8217;m quite used to not having luxuries such as physics libraries, I did a lot of this kind of thing, simplified vector maths and such. I remembered a set of tutorials from a guy called Tony Pa. (Essential reading for anyone interested in vector math <a href="http://www.tonypa.pri.ee/vectors/start.html">Check it out here</a>)So just using the bare minimum of what he describes here (handily open in my visual studio side by side with my code) I was able to get a ball line simulation running in a couple of hours with ease, and with no deviation! Once that was in place it was fairly easy to start adding properties to the lines I created such as bounciness.</p>
<p><em><strong>So what about the solid objects? All I have in my simulation is Line/Ball collision, there&#8217;s no rigidbodies?</strong></em><br /> <img class="alignright size-medium wp-image-628" title="meshtolines" src="http://www.quickfingers.net/wp-content/uploads/2011/06/meshtolines-300x182.png" alt="" width="300" height="182" align="right" /><br /> All the shapes (triangles, pipes, stars and boxes) were created in 3D as simple 2d polygons, then I use a script to parse the vertices of the 3d shape and convert them into lines which can be utilized by my quick physics engine. Then I just have boolean switchees to define if the object needs to be updated per frame (if it has any movement behaviours attached this is necessary) which just keeps the lines updated to the co-ordinates of the vertices. The only caveat which I&#8217;ve yet to explore is corners! This is evident as droplets can be fired inside objects if you hit right on corner. (Thankyou Kongregate users for the approximately 400 bug report e-mails detailing this fact with many screenshots!) I admit I knew about the &#8216;bug&#8217; but kind of appreciated the effect it had, (it made really nice sounds after all) so decided it gave it character&#8230; possibly a bad call on my part but&#8230; Moving on!</p>
<h2>the logo</h2>
<p><img class="size-full wp-image-659 alignleft" title="logo1" src="http://www.quickfingers.net/wp-content/uploads/2011/06/logo1.jpg" alt="" width="300" height="227" /></p>
<p><img class="size-full wp-image-660 alignnone" title="droplogogrid" src="http://www.quickfingers.net/wp-content/uploads/2011/06/droplogogrid.png" alt="" width="211" height="148" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The logo was a bit of fun, just making some nice little animation gave it a bit more character than a static image. So I made all the individual dots animate to there appropriate place.  So how do they all know where they are going? Simple point cloud, manually edited. That&#8217;s it! As the name was simply Drop. I thought manually adding points wont take very long so just super imposed a grid in photoshop and copied the values into a script. Had it been called &#8220;Drop! &#8211; The Ambient Reflective Music Puzzle Game&#8221; I would of probably found a way to auto create the data :) Once I had all the positional data stored I just used Bob Berkebiles wonderful <a href="http://itween.pixelplacement.com/">iTween</a> with varying delays to make all the dots fall into place.</p>
<h2>the audio</h2>
<p>Given there is 12 notes in the scale, there&#8217;s quite a lot of audio bits, 36 in total for the hit sounds covering 3 octaves of plinky tones, I&#8217;m using the same logic as I used in Step Seq to pick the correct sound files for the key in which the level your playing is in. The theme tune is in the key of A as it&#8217;s alphabetically the first key and also the key of your first set of levels. The only clever bit really was in the drone pad. This was just the same sound file and I just adjusted the pitch by a certain amount to get it to the right key. However this had me confused for a while as I could hear the difference between a pitch value of 1 and 2 seemed like exactly one octave, so I thought well there&#8217;s 12 semi tones in an octave so each semi tone would be 1/12 pitch value right?<br /> WRONG&#8230; all along its</p>
<div class="wp_syntax">
<div class="code">
<pre class="csharp"><span class="kw4">float</span> targetPitch <span class="sy0">=</span> Mathf<span class="sy0">.</span><span class="me1">Pow</span><span class="br0">&#40;</span><span class="nu0">2</span>, semitones<span class="sy0">/</span>12f<span class="br0">&#41;</span><span class="sy0">;</span></pre>
</div>
</div>
<p>So there, if you need to pitch shift by a certain number of semi tones, that line will save your life.</p>
<h2>Level Structure</h2>
<p>Right so making all those levels was actually really fun and only took 2 days, because of the great way Unity components are setup I was able to easily setup a really simple serialisation system that would serialize any properties of components I wanted. It was really simple I just had an abstract class called Serializable that looks like this</p>
<div class="wp_syntax">
<div class="code">
<pre class="csharp"><span class="kw1">using</span> <span class="co3">System.Globalization</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">UnityEngine</span><span class="sy0">;</span>
<span class="kw1">public</span> abstract <span class="kw4">class</span> Serializable <span class="sy0">:</span> MonoBehaviour <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">public</span> abstract <span class="kw4">string</span> GetSerializedData<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">public</span> abstract <span class="kw4">void</span> SetSerializedData<span class="br0">&#40;</span><span class="kw4">string</span><span class="br0">&#91;</span><span class="br0">&#93;</span> data, NumberFormatInfo nfi<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre>
</div>
</div>
<p>Then anything I want serializable, instead of extending MonoBehaviour, I just extend my Serializable class and implement the methods. As an example, here is my EasedMovement behaviour:</p>
<div class="wp_syntax">
<div class="code">
<pre class="csharp"><span class="kw1">using</span> <span class="co3">System.Globalization</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">UnityEngine</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">System.Collections</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw4">class</span> EasedMovement <span class="sy0">:</span> Serializable <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">public</span> Vector2 amount<span class="sy0">;</span>
    <span class="kw1">public</span> <span class="kw4">float</span> duration<span class="sy0">;</span>
&nbsp;
    <span class="kw1">private</span> Vector3 startPosition<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">float</span> time<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">float</span> oneOverDuration<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">int</span> direction<span class="sy0">;</span>
&nbsp;
    <span class="co1">// Use this for initialization</span>
    <span class="kw4">void</span> Start<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        direction <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
        oneOverDuration <span class="sy0">=</span> 1f <span class="sy0">/</span> duration<span class="sy0">;</span>
        startPosition <span class="sy0">=</span> transform<span class="sy0">.</span><span class="me1">position</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="co1">// Update is called once per frame</span>
    <span class="kw4">void</span> FixedUpdate<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        time <span class="sy0">+=</span> Time<span class="sy0">.</span><span class="me1">deltaTime</span> <span class="sy0">*</span> 0<span class="sy0">.</span>5f <span class="sy0">*</span> oneOverDuration <span class="sy0">*</span> direction<span class="sy0">;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>time <span class="sy0">&gt;=</span> 1f <span class="sy0">&amp;&amp;</span> direction <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span> direction <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>time <span class="sy0">&lt;=</span> 0f <span class="sy0">&amp;&amp;</span> direction <span class="sy0">==</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span> direction <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
        <span class="kw4">float</span> newX <span class="sy0">=</span> <span class="br0">&#40;</span>amount<span class="sy0">.</span><span class="me1">x</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">?</span> Mathfx<span class="sy0">.</span><span class="me1">Hermite</span><span class="br0">&#40;</span>startPosition<span class="sy0">.</span><span class="me1">x</span>, startPosition<span class="sy0">.</span><span class="me1">x</span> <span class="sy0">+</span> amount<span class="sy0">.</span><span class="me1">x</span>, time<span class="br0">&#41;</span> <span class="sy0">:</span> startPosition<span class="sy0">.</span><span class="me1">x</span><span class="sy0">;</span>
        <span class="kw4">float</span> newY <span class="sy0">=</span> <span class="br0">&#40;</span>amount<span class="sy0">.</span><span class="me1">y</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">?</span> Mathfx<span class="sy0">.</span><span class="me1">Hermite</span><span class="br0">&#40;</span>startPosition<span class="sy0">.</span><span class="me1">y</span>, startPosition<span class="sy0">.</span><span class="me1">y</span> <span class="sy0">+</span> amount<span class="sy0">.</span><span class="me1">y</span>, time<span class="br0">&#41;</span> <span class="sy0">:</span> startPosition<span class="sy0">.</span><span class="me1">y</span><span class="sy0">;</span>
        transform<span class="sy0">.</span><span class="me1">position</span> <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Vector2<span class="br0">&#40;</span>newX, newY<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> GetSerializedData<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> amount<span class="sy0">.</span><span class="me1">x</span> <span class="sy0">+</span> <span class="st0">&quot;,&quot;</span> <span class="sy0">+</span> amount<span class="sy0">.</span><span class="me1">y</span> <span class="sy0">+</span> <span class="st0">&quot;,&quot;</span> <span class="sy0">+</span> duration<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">void</span> SetSerializedData<span class="br0">&#40;</span><span class="kw4">string</span><span class="br0">&#91;</span><span class="br0">&#93;</span> data, NumberFormatInfo nfi<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        amount <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Vector2<span class="br0">&#40;</span><span class="kw4">float</span><span class="sy0">.</span><span class="me1">Parse</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>, nfi<span class="br0">&#41;</span>, <span class="kw4">float</span><span class="sy0">.</span><span class="me1">Parse</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>, nfi<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        duration <span class="sy0">=</span> <span class="kw4">float</span><span class="sy0">.</span><span class="me1">Parse</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>, nfi<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
</div>
</div>
<p>You can ignore most of this, but pay attention to the GetSerializedData and SetSerializedData. Notice how Get just returns the values I want serialized and Set parses the values returned to it (always strings from a .txt file in my setup) and sets the variables up. This is it! Now thanks to my level saving and loading stuff (all very bespoke and messy so not posting ;) ) I can assign as many serializable components to every level object and all their individual datas will be stored, so I can just build my levels off of a few select prefabs, add components as I see fit and save to text format. (and obviously reload and make changes if necessary)</p>
<p>&nbsp;</p>
<h2>The end</h2>
<p>I&#8217;m going to finish by saying thankyou for reading all this crap, most importantly thanks for playing the game (if you did!) If you haven&#8217;t played it yet head on over to <a href="http://drop.quickfingers.net">drop.quickfingers.net</a> to learn more!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quickfingers.net/drop-post-mortem/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

