<?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>Zachernuk.com &#187; flash</title>
	<atom:link href="http://www.zachernuk.com/category/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zachernuk.com</link>
	<description>The desk of Brandel Zachernuk</description>
	<lastBuildDate>Tue, 27 Jul 2010 01:39:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>More laser cuttings + an automatic shape generator in the works?</title>
		<link>http://www.zachernuk.com/2010/07/27/more-laser-cuttings-an-automatic-shape-generator-in-the-works/</link>
		<comments>http://www.zachernuk.com/2010/07/27/more-laser-cuttings-an-automatic-shape-generator-in-the-works/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 01:39:26 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[3mm]]></category>
		<category><![CDATA[acrylic]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[belt]]></category>
		<category><![CDATA[car]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[compass]]></category>
		<category><![CDATA[cubes]]></category>
		<category><![CDATA[cutting]]></category>
		<category><![CDATA[enclosure]]></category>
		<category><![CDATA[feelspace]]></category>
		<category><![CDATA[finger joint]]></category>
		<category><![CDATA[laser]]></category>
		<category><![CDATA[MDF]]></category>
		<category><![CDATA[motor]]></category>
		<category><![CDATA[ponoko]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=598</guid>
		<description><![CDATA[I went to Ponoko yesterday and picked up my next set of cut materials &#8211; after my first design didn&#8217;t factor the cut width into the calculations at all I might have overcompensated, but only very very slightly &#8211; and now I know that the way to correct for it is as simple as an [...]]]></description>
			<content:encoded><![CDATA[<p>I went to Ponoko yesterday and picked up my next set of cut materials &#8211; after my first design didn&#8217;t factor the cut width into the calculations at all I might have overcompensated, but only very very slightly &#8211; and now I know that the way to correct for it is as simple as an &#8216;offset path&#8217; command.  If anyone is interested I can put up a video tutorial showing where the options are in Illustrator and Inkscape. I am especially pleased with the enclosure!</p>
<h2>The Car</h2>
<p>I have the mk.2  car back!  It went together very well, though it was perhaps too tight in some places &#8211; the short loops and forks that hold the drive wheels to the gears needed to be shaved a little.  I added 0.1mm to the perimeter of all the shapes, and on thinking about it, it seems likely that it should have been more like 0.08 mm or so.  Needing to make adjustments that tiny is a strange business indeed!</p>
<p>Anyway, here is the finished product in all its lasered glory:</p>
<p><a href="http://www.flickr.com/photos/brandelf/"><img class="alignnone" src="http://farm5.static.flickr.com/4126/4831972265_7b87ff2833.jpg" alt="" width="500" height="333" /></a></p>
<p>This time there were only two things amiss:  First, I didn&#8217;t account for the width of the AA batteries in the bottom compartment in <em>addition</em> to the holder for the power transfer gear, so it can only hold 1x AA in the bottom bay and 2x AA in the top &#8211; although you could probably pack a bunch of those squishy Lithium ion batteries in with no problem.  The other problem lies in trying to make the design too cramped &#8211; on each side, one wheel is attached directly to the motor, and one wheel is attached via a wooden axle, to a point behind the motor that powers the opposite side.  The current design is so compact, though, that there isn&#8217;t really enough room behind the motor for a solid fixture, and it has a tendency to fall off.</p>
<p>Widening the design by 3mm would solve both of those problems and the whole plan would stay well within the 181 x 181 mm limits set by Ponoko though, so I&#8217;m pretty pleased with the design.  Ideally I&#8217;d like to be able to keep the base design small enough that it can form the basis of a miniature robotics platform, and be able to have room on a P1 board to put holders for sensors or a small robotic arm. Stay tuned!</p>
<h2>Arduino Enclosure</h2>
<p>I also needed to make an enclosure for the Arduino Duemilanove as part of another project I&#8217;ve been tinkering with. After looking online I found surprisingly few examples anywhere &#8211; in particular a total absence of  compact, fully-enclosing cases, so I designed one and got it cut.  At first I was going to get it made in 3mm MDF as well but Heather suggested that an acrylic would be more pleasing and I agree.  It looks like this:</p>
<p><a href="http://www.flickr.com/photos/brandelf/"><img class="alignnone" src="http://farm5.static.flickr.com/4083/4831929119_a3b02998a9.jpg" alt="" width="500" height="333" /></a></p>
<p>There are pass-through holes for the three holes in the Duemilanove board,  so it could be bolted to another object.  I offset the pats for this design by 0.1mm as well, and unfortunately, acrylic is a lot more brittle than MDF, which has meant a couple of small parts snapping off when I tried to force them.  Other than that, though, the design is perfect and the tightness has meant it keeps together really well!</p>
<p><a href="http://www.flickr.com/photos/brandelf/"><img class="alignnone" src="http://farm5.static.flickr.com/4090/4831930539_fa04ab8bcf.jpg" alt="" width="500" height="333" /></a></p>
<p>The other good thing about sticking the Arduino in an enclosure is that you can stick other things to it &#8211; in this case I wanted to guarantee the orientation and position of a compass module on top of the unit, which is encased in the small box on top.</p>
<p>Once I made the enclosure design (and was able to verify that it actually works), I decided that it would be worth looking into making the interlocking parts more automatically.  I was inspired by <a href="http://www.flickr.com/photos/generated/tags/cubes/">Jared Tarbell&#8217;s Cubes</a> to start thinking about how to generate the map automatically.  It&#8217;s still very much a sketch, but the principle is straightforward enough to automate most &#8211; if not all- of the process.</p>
<p>Lay out the lines of a shape by clicking, adjust the tooth width with the slider and hit &#8216;clear&#8217; to clear the shape.  Enjoy!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_BoxDrawer_119976298"
			class="flashmovie"
			width="600"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2010/07/BoxDrawer.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2010/07/BoxDrawer.swf"
			name="fm_BoxDrawer_119976298"
			width="600"
			height="600">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2010/07/27/more-laser-cuttings-an-automatic-shape-generator-in-the-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;NUI&#8221;, or how Bill Buxton just changed your relationship</title>
		<link>http://www.zachernuk.com/2010/06/21/nui-or-how-bill-buxton-just-changed-your-relationship/</link>
		<comments>http://www.zachernuk.com/2010/06/21/nui-or-how-bill-buxton-just-changed-your-relationship/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 08:09:08 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Webcam]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[bill]]></category>
		<category><![CDATA[buxton]]></category>
		<category><![CDATA[CES]]></category>
		<category><![CDATA[distance]]></category>
		<category><![CDATA[face]]></category>
		<category><![CDATA[facial]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[MSR]]></category>
		<category><![CDATA[NUI]]></category>
		<category><![CDATA[recognition]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[TLA]]></category>
		<category><![CDATA[vision]]></category>
		<category><![CDATA[ZUI]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=543</guid>
		<description><![CDATA[Anyone who knows the history computing knows that right now, we have computers that are preposterously powerful in comparison to what was on offer twenty, ten or even five years ago &#8211; that the technical specs of the machines on offer now are between a thousand and ten million times better.
Someone interested in the history [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who knows the history computing knows that right now, we have computers that are preposterously powerful in comparison to what was on offer twenty, ten or even five years ago &#8211; that the technical specs of the machines on offer now are between a thousand and <em>ten million</em> times better.</p>
<p>Someone interested in the history of of User Interface (UI) will also know that the history on that front has not been quite so dramatic.  From the first popular consumer mouse in 1984 to the present day, very little has changed about how we use computers.  Mouse and keyboard, windows and icons &#8211; up until about 2007, when people started to get excited about NUI.</p>
<p>What NUI is depends on who you ask.  People like Microsoft&#8217;s Chief research and Strategy officer, think that<a href="http://channel9.msdn.com/posts/LauraFoy/Craig-Mundie-shows-off-the-future-of-NUI/"> NUI means doing away with the mouse and keyboard entirely</a>.  Instead we should be doing all our computing with a tap of the finger or a gesture of the hand.  Not to mention Steve Jobs&#8217; claim that if <a href="http://www.engadget.com/2010/04/08/jobs-if-you-see-a-stylus-or-a-task-manager-they-blew-it/">you have to include a pen in an interface, you&#8217;ve screwed up</a>.</p>
<p>While this enthusiasm for futuristic interfaces and simplicity of design is commendable, it ignores the fact that the mouse and keyboard are themselves pretty cool.  The speed of input on a keyboard leaves writing, text-to-speech and neat alternatives like <a href="http://www.inference.phy.cam.ac.uk/dasher/">Dasher</a> in the dust.  The mouse is an incredibly accurate pointing device &#8211; one that may be wasted on the majority of computing tasks, but indispensable for CAD and other realms where exactness is more important than fluidity.</p>
<p>The problem with the over-enthusiasm to ditch the old and embrace the new and super-simplified is that it rings hollow to anyone who knows where the old fits best.  If you tell a typist that speech recognition is the way of the future, they&#8217;ll know that you&#8217;re wrong on that point &#8211; and consequently will be suspicious of claims in other realms they have less expertise in.  Promising that NUI will overturn <em>everything</em> in computing, rather than just where our current solutions need work, threatens to turn people off of the whole thing.</p>
<p>That&#8217;s why voices like Bill Buxton&#8217;s are so important.  In a <a href="http://channel9.msdn.com/posts/LarryLarsen/CES-2010-NUI-with-Bill-Buxton/">video interview</a> this year, he said he doesn&#8217;t even like the <em>term</em> NUI, let alone the suggestion that it will replace everything.  Take the time to <a href="http://channel9.msdn.com/posts/LarryLarsen/CES-2010-NUI-with-Bill-Buxton/">watch the video</a>, it grounds the conversation about what comes next in something a little more useful, while still being optimistic about what can happen.  I like his term &#8220;Appropriate User Interface&#8221;, because 1. it&#8217;s less dramatic and 2. it provides a reminder that the application -as in where an interface is <em>applied</em> &#8211; is more important than the amazingness of the new- or recently-fangled technology we have available.</p>
<p>Aside from the hilarity at 10:50 when he freaks the presenter out by standing way too close,  I was really intrigued by the idea of using distance-aware displays to dynamically scale things up or down depending on how far away you are.  I knocked together a Flash-based experiment to that effect. Have a look at it below!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FaceZoom_1206635731"
			class="flashmovie"
			width="600"
			height="480">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2010/06/FaceZoom.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2010/06/FaceZoom.swf"
			name="fm_FaceZoom_1206635731"
			width="600"
			height="480">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>the closer your monitor is to your webcam the better, but it&#8217;s an interesting experience having the size of an image remain the same relative to your distance from the screen! It give the impression, like Johnny Chung Lee&#8217;s experimnts, of turning the screen into a window through which you just see another world, rather than just a picture.  I&#8217;m very interested in how this will feel built ino a more robust framework.</p>
<p><a href="http://www.zachernuk.com/wp-content/2010/06/facey.jpg"><img class="alignnone size-full wp-image-549" title="facey" src="http://www.zachernuk.com/wp-content/2010/06/facey.jpg" alt="facey" width="64" height="64" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2010/06/21/nui-or-how-bill-buxton-just-changed-your-relationship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digital sand</title>
		<link>http://www.zachernuk.com/2010/03/17/digital-sand/</link>
		<comments>http://www.zachernuk.com/2010/03/17/digital-sand/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 03:07:20 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[doodle]]></category>
		<category><![CDATA[emergent]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[sand]]></category>
		<category><![CDATA[simulation]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=400</guid>
		<description><![CDATA[As I have mentioned earlier,  what excites me most about gaming &#8211; and computers in general &#8211; is the capability for simulation. If we create a system that obeys the same rules as reality, we can use that system to better understand reality.  Not only that, it allows us to test out new [...]]]></description>
			<content:encoded><![CDATA[<p>As I have mentioned earlier,  what excites me most about gaming &#8211; and computers in general &#8211; is the capability for simulation. If we create a system that obeys the same rules as reality, we can use that system to better understand reality.  Not only that, it allows us to test out new theories and ask  &#8220;what would happen if things were a little different?&#8221;</p>
<p>The complexity of the thing you simulate doesn&#8217;t have to be much either.  The term &#8220;computer simulation&#8221; often evokes imagery of simulating enormous and complex systems &#8211; weather patterns or the turbulence flow from a large-scale atomic detonation &#8211; but simulation can be useful on a more modest scale too.  In University, a friend of mine threw together a blackjack simulation.  He wanted to see the patterns of how well a virtual player does when it follows hard-and-fast rules &#8211; refusing cards over a total of 16, 18 and so on.* The first programmable computer, the Z3, ran at a staggering 10 Hertz &#8211; roughly one <em>billionth </em>of the speed of a modern computer.  Even at that speed, though, it brought the science of aviation forward by a decade through simulating wing flutter at rates of execution that were previously impossible to reach.</p>
<p>The example I often use to explain my fascination with simulation is this:  Imagine a child&#8217;s sand-pail at a beach.  Imagine the light dusting of sand it gets from a long day of use.  The smoothness at the joints, the build-up inside any detailing and under the lip.  Now imagine taking the bucket away and leaving the sand &#8211; the suggestion of form but not the form itself.  Next to impossible in reality, but in a simulation, once you have the base action down, setting things to on or off is the easiest thing in the world.</p>
<p><a href="http://www.zachernuk.com/wp-content/2010/03/sandy.PNG"><img class="alignnone size-full wp-image-407" title="sandy" src="http://www.zachernuk.com/wp-content/2010/03/sandy.PNG" alt="sandy" width="293" height="274" /></a></p>
<p>I&#8217;ve been using this example of the sand and the bucket for years now, and recently I decided to actually do something about it &#8211; make a sand simulation that can show you what I mean, rather than just telling people about it.  Here it is! Just move the mouse around on the play field to shift the sand.  If you want extra options for playing with the sand fall or changing the pen size, open the options panel.  Many thanks to Aidan of <a href="http://aidan.rfm.co.nz/blog/">Shade and Prime</a> for the fantastic elevation visualizer.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_SandDisplacer_656571108"
			class="flashmovie"
			width="400"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2010/03/SandDisplacer.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2010/03/SandDisplacer.swf"
			name="fm_SandDisplacer_656571108"
			width="400"
			height="600">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>iPhone app, anyone?</p>
<p>*  While it might seem like this is a less-than-useful endeavour to use computers for, I&#8217;m sure we can all agree that it is better to test a virtual player losing virtual money than trying it at your local casino.  In fact, after finding that there is no foolproof approach to blackjack, he gave up on it altogether and started putting his money in the stock market&#8230; you win some, you lose some.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2010/03/17/digital-sand/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extrusion shapes in Papervision</title>
		<link>http://www.zachernuk.com/2010/02/20/extrusion-shapes-in-papervision/</link>
		<comments>http://www.zachernuk.com/2010/02/20/extrusion-shapes-in-papervision/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 03:51:32 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[custom geometry]]></category>
		<category><![CDATA[extrude]]></category>
		<category><![CDATA[extrusion]]></category>
		<category><![CDATA[face]]></category>
		<category><![CDATA[papervision]]></category>
		<category><![CDATA[polygon]]></category>
		<category><![CDATA[pv3d]]></category>
		<category><![CDATA[triangle3d]]></category>
		<category><![CDATA[vertex]]></category>
		<category><![CDATA[vertex3d]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=393</guid>
		<description><![CDATA[As part of the early phase of experimentation in a potential project, I started fiddling with creating custom geometry in pv3d, rather than tweaking the vertices of existing primitives.    The results so far aren&#8217;t perfect, but they&#8217;re looking good:

I&#8217;m not sure whether this is re-creating functionality that other people have already put into papervision, [...]]]></description>
			<content:encoded><![CDATA[<p>As part of the early phase of experimentation in a potential project, I started fiddling with creating custom geometry in pv3d, rather than tweaking the vertices of existing primitives.    The results so far aren&#8217;t perfect, but they&#8217;re looking good:</p>
<p><a href="http://www.zachernuk.com/wp-content/2010/02/Extrusion-shapes.png"><img class="alignnone size-medium wp-image-396" title="Extrusion-shapes" src="http://www.zachernuk.com/wp-content/2010/02/Extrusion-shapes-296x300.png" alt="Extrusion-shapes" width="296" height="300" /></a></p>
<p>I&#8217;m not sure whether this is re-creating functionality that other people have already put into papervision, but it was a lot of fun! There are some issues with shaded materials, but so far I have bitmap- and colour materials displaying and it&#8217;s looking good.  You can try it for yourself!  Like the pale text says &#8211; click in the window to add a vertex, press space to close the shape.  It seems to work even on pretty low-powered machines, so give it a try!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_Ribbons-earclip_794064727"
			class="flashmovie"
			width="400"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2010/02/Ribbons-earclip.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2010/02/Ribbons-earclip.swf"
			name="fm_Ribbons-earclip_794064727"
			width="400"
			height="600">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2010/02/20/extrusion-shapes-in-papervision/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cascading OpenAvatar</title>
		<link>http://www.zachernuk.com/2010/02/11/cascading-openavatar/</link>
		<comments>http://www.zachernuk.com/2010/02/11/cascading-openavatar/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 00:06:08 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[avatar]]></category>
		<category><![CDATA[customization]]></category>
		<category><![CDATA[Grand theft auto]]></category>
		<category><![CDATA[GTA]]></category>
		<category><![CDATA[Playfish]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[WoW]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=388</guid>
		<description><![CDATA[A few months back I played through as . social and internet games as I could get my hands on.  One thing I was always simultaneously impressed and frustrated by was customization.  Games like YoVille and Pet Society,  environments like IMVU and the short-lived Google Lively often boast about detailed avatar controls &#8211; not just [...]]]></description>
			<content:encoded><![CDATA[<p>A few months back I played through as . social and internet games as I could get my hands on.  One thing I was always simultaneously impressed and frustrated by was customization.  Games like YoVille and Pet Society,  environments like IMVU and the short-lived Google Lively often boast about detailed avatar controls &#8211; not just shirt and trouser colour, but jawline, skin colour and sometimes even customizable decals.   I think this functionality is a great idea &#8211; the wardrobe features in World of Warcraft or Grand Theft Auto are things that draw the unlikeliest players into the game, and help players identify more closely with their character.  It&#8217;s not easy to tell just how strongly that is felt until it&#8217;s gone &#8211; in Playfish&#8217;s new game Gangster City on Facebook, the customization is completely absent &#8211; the back-story each player encounters is identical, with no real accommodation for concurrent players existing in the same universe at the same time.  It was surprising to realize how much I missed it.</p>
<p>Of course, it&#8217;s great when GTA and WoW do it because you know that any investment you make in your character customization is going to be worth it.  Each new installment of GTA offers gameplay for dozens of hours, and you can play WoW, for better or worse, for as long as you can stand it without running out of things to see.  In games of this calibre, the new customization options are a welcome sight, and I enjoy discovering what new options are available as time goes on.</p>
<p>In a new game &#8211; particularly one without the backing of recognizable names &#8211; customization screens can have the opposite effect.  Without knowing a little bit of what I&#8217;m in for, it&#8217;s hard to muster up the enthusiasm to define my character.  If it&#8217;s a requirement, which it often is, I make rash decisions in a show of contempt for the system that end up making my avatar look something of a mess.  The remainder of my play experience is then realized through this hash of a character, and ends up tarnishing my experience of the whole game.  A difficult-to-implement feature, that is often considered a must-have for social games, can end up ruining it.</p>
<p>So customization screens as a first port-of-call are annoying, but so is a lack of customization options.  It can be made an optional, progressive task, as in GTA: San Andreas, but most games can&#8217;t afford to demand the sheer amount of time that GTA can.  In addition, games in a highly-connected, social space <em>have</em> to make this a requirement in order to make concurrent players distinct, so it has to be done, and done before a lot of the fun can begin &#8211; so the question we&#8217;re left with is <em>&#8220;How do you give people a meaningful custom avatar without forcing them into a customization screen?&#8221;</em></p>
<h2>Web development to the rescue</h2>
<p>I&#8217;ve done time as a web developer before, and one of the technologies that has made the job much easier since the 1990s is the development of  <em>Cascading Style Sheets, </em>or CSS.   The Cascading part refers to a neat technique where more general definitions are are inherited by more specific ones, unless otherwise specified.  Basically this means if I want all text to be red, I say &#8220;All text should be red&#8221;.  Then, headings, subheadings, body and caption text will all be red &#8211; unless I want caption text to be green, in which case I say &#8220;All text should be red but caption text should be green&#8221;.  This has a significant advantage over defining each piece of text colour by hand in that it&#8217;s smaller to load, faster to write and easier to change if you decide you want to go with a slightly less gross colour scheme.</p>
<h2><em>..So?</em></h2>
<p>What I would like to borrow from CSS here is the idea that definitions can start out as vague, and become more specific with time &#8211; not just definitions of web pages, but definitions of character customization too.  Say I often have pale skin, wear glasses, grey shorts and a red-and-blue T-shirt (I do).  It wouldn&#8217;t be a bad place to start for <em>every</em> character I start out as to possess these properties,  and if I want to refine them further, I could.  If a game demanded a character that was an elephant instead of a humanoid, I might decide that I would prefer it not to wear glasses, but I&#8217;m not likely to resent the attempt, particularly if it was done automatically.</p>
<p>To an extent, Nintendo already does this with the concept of the portable &#8216;Mii&#8217;, which can represent you in a number of different games.  However, Nintendo requires that the Mii be presented indentically in all the games it appears in, which either limits the aesthetic of the game to the standard set by the Mii art, or jars with the artistic style employed in the game.  On the other extreme is Second life, where there are next to no restrictions on what you can do to your avatar or to your island.  The results of that aren&#8217;t pretty either.  I&#8217;d suggest we not go there.</p>
<p><a href="http://farm3.static.flickr.com/2676/4058110942_b4d9093104_m.jpg"><img style="border: 0px initial initial;" title="Cascading OpenAvatar" src="http://farm3.static.flickr.com/2676/4058110942_b4d9093104_m.jpg" alt="" width="240" height="125" /></a></p>
<p>I think it would be possible to find something in the middle.  If players could define a character appearance once. with some kind of open standard, then it would be possible to use that as a basis for any new character in a game.  If those parameters were made available to game developers, they could be integrated into the game in a manner that was in-keeping with the artistic direction of the game.  Players get avatars that they can immediately identify with, without having to invest time in building them,  Developers get a recognizable source of customization data that they can interpret how they like.  Everybody wins!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2010/02/11/cascading-openavatar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First-Person Snake!</title>
		<link>http://www.zachernuk.com/2009/12/18/first-person-snake/</link>
		<comments>http://www.zachernuk.com/2009/12/18/first-person-snake/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 09:13:59 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[bitmap]]></category>
		<category><![CDATA[fill]]></category>
		<category><![CDATA[fps]]></category>
		<category><![CDATA[relative]]></category>
		<category><![CDATA[rotation]]></category>
		<category><![CDATA[snake]]></category>
		<category><![CDATA[transform]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=352</guid>
		<description><![CDATA[Finally finished the work that had built up over my time in Qatar!  After making the Buffer-snake game I started wondering about what else you can change about the basic game mechanic &#8211; if you followed the snake head,  or pivoted with it as though you were playing from something more like a first-person perspective.
The [...]]]></description>
			<content:encoded><![CDATA[<p>Finally finished the work that had built up over my time in Qatar!  After making the Buffer-snake game I started wondering about what else you can change about the basic game mechanic &#8211; if you followed the snake head,  or pivoted with it as though you were playing from something more like a first-person perspective.</p>
<p>The following is the outcome:  Make sure you click inside the window to get it started, the keys are as follows:</p>
<p><strong>Q: </strong>Toggles making the camera turn with the snake, so the head is always pointing down.</p>
<p><strong>W: </strong>Toggles moving with the snake, so the head is always center screen.</p>
<p><strong>E: </strong>Toggle turn amount (90º or continuous)</p>
<p><strong>R: </strong>Get points (increase length)</p>
<p><strong>Arrow Keys:</strong> Turn snake.  In continuous-turn mode, or in rotate-with-snake mode, left and right turn CCW and CW,  and in right-angle,  non-rotate mode, the arrow keys behave like a normal snake game.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FPSnake3_759406161"
			class="flashmovie"
			width="400"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2009/12/FPSnake3.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2009/12/FPSnake3.swf"
			name="fm_FPSnake3_759406161"
			width="400"
			height="600">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>What do you think of it?  How do the changes in presentation affect your feelings on the game?  Any reactions would be most welcome.</p>
<p>Personally, I&#8217;m pretty impressed by how different a follow-mode snake feels.  You could imagine navigating a much wider world, or even a looping one where subtle differences creep in over time. Making the game focused on the<em> player (</em>rather than the<em> level) </em>makes me think of it as a much more character- or story-focused environment.</p>
<p>I was also very surprised by just how sickening the motion is in first-person mode.  After messing around with it for about three hours today,  I think I&#8217;m going to need a lie-down.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/12/18/first-person-snake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LSOs, RTMP, EC2 and Other Fancy Acronyms (OFA)</title>
		<link>http://www.zachernuk.com/2009/12/10/lsos-rtmp-ec2-and-other-fancy-acronyms-ofa/</link>
		<comments>http://www.zachernuk.com/2009/12/10/lsos-rtmp-ec2-and-other-fancy-acronyms-ofa/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 15:56:31 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Webcam]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[adabisc]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[fuel your senses]]></category>
		<category><![CDATA[fuelyoursenses]]></category>
		<category><![CDATA[localsharedobject]]></category>
		<category><![CDATA[lso]]></category>
		<category><![CDATA[media server]]></category>
		<category><![CDATA[message passing]]></category>
		<category><![CDATA[osflash]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[puttygen]]></category>
		<category><![CDATA[qtel]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[rtmp]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[sharedobject]]></category>
		<category><![CDATA[sol]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=345</guid>
		<description><![CDATA[I recently completed a job for the good people at ADabisc, an advertising agency in Qatar for QTel, the national telecommunications carrier.   It was a lot of fun, and we all learned a lot in the process.    Since I knew next to nothing about the titular acronyms before I started, and I know [...]]]></description>
			<content:encoded><![CDATA[<p>I recently <a href="http://www.fuelyoursenses.qa">completed a job </a>for the good people at <a href="http://www.adabisc.com">ADabisc</a>, an advertising agency in Qatar for <a href="http://www.qtel.com.qa">QTel</a>, the national telecommunications carrier.   It was a lot of fun, and we all learned a lot in the process.    Since I knew next to nothing about the titular acronyms before I started, and I know <em>something</em> about them now, I thought I would describe what they are and why they were useful to me.</p>
<p><a href="http://www.zachernuk.com/wp-content/2009/12/fuelyoursenses.JPG"><img class="alignnone size-medium wp-image-348" title="fuelyoursenses" src="http://www.zachernuk.com/wp-content/2009/12/fuelyoursenses-300x169.jpg" alt="fuelyoursenses" width="300" height="169" /></a></p>
<p><strong>LSO </strong>(<a href="http://en.wikipedia.org/wiki/Local_Shared_Object">Wikipedia</a>) stands for<strong> &#8216;</strong>Local Shared Object&#8217;, and is a native  interchange format which is integrated into flash at the very core.  It&#8217;s also very old &#8211; They first appeared in Flash Player 6 / Flash MX,  so they enjoy near-universal support.  You create and edit them by calling</p>
<pre style="padding-left: 30px; ">var lso:SharedObject = SharedObject.getLocal("local","/");</pre>
<pre style="padding-left: 30px; ">lso.data["message"] = "Hello, World (of Local SharedObjects!)";</pre>
<p>The parameters here, &#8220;local&#8221; and &#8220;/&#8221; are less important than maintaining consistency.  They refer to how the locally-saved SharedObject data will be stored &#8211; something we don&#8217;t really need to concern ourselves with.    All we need to care about now is using this lso.data object as the container for the persistent data we want to store.  If a user leaves your website or closes the flash player window, the data is still stored in the same form as it was prior to closure.  It&#8217;s locally stored per-user on a machine so if the same user goes to the same window, then the flash files will have access to the same LSO.  The Wikipedia article suggests that some have gripes with this, since it&#8217;s a data store that isn&#8217;t flushed along with the other private data in a browser, but as long as you&#8217;re using it for good then it&#8217;s not the end of the world.  This has the upside that there is more limited room for abuse of things like number-limited offers &#8211; since nobody really knows about what LSOs are and how they work,</p>
<p>The other great thing about this system is that the objects are <em>shared</em>, so that <em>any</em> flash files (again, on the same domain and for the same user, to prevent misuse)  will have access to the same data.  So in FuelYourSenses I have about 5-6 separate .SWF files communicating with one another indirectly &#8211; told about new data through Event dispatches, and then reading the new data from these agreed-upon Shared Objects.</p>
<p><strong>RTMP</strong> (<a href="http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol">Wikipedia</a>) : Real-Time Messaging Protocol</p>
<p>RTMP is another one of Flash&#8217;s native tricks for multimedia streaming.  It&#8217;s a proprietary protocol, which means in order to get the full functionality out of it you need to buy the Flash Media Server, but for our purposes we were happy to use the very excellent opensource version or the Media Server,  <a href="http://osflash.org/red5">Red5</a>.  It&#8217;s a Java-based implementation that apparently only contains a portion of the full Media Server functionality, but it was more than sufficient for our needs.  If you&#8217;re interested in Media streaming (Audio, video, both or neither(!)) then it would be well worth your time to download Red5 and start experimenting.  The Demo files show you all you need to know to start recording and rebroadcasting streams as soon as you can get a server that you have permission to run a Java application on.  Once you have a video feed up, say, from a webcam or a locally stored .flv file, you just publish to the RTMP server and you&#8217;re done!  I was shocked.</p>
<p><strong>EC2</strong> (<a href="http://en.wikipedia.org/wiki/Amazon_EC2">Wikipedia</a>, <a href="http://aws.amazon.com/ec2/">Official site</a>):  Elastic Compute Cloud</p>
<p>Amazon EC2 is a place where you can hire a (virtual) server by the hour.  You have full and unfettered access to machines that run either Linux or Windows,  with a number of pre-installed options for software provided by Amazon and other third parties.  We were initially unsure about the level of traffic the site would attract, whether one server would be sufficient or whether we would need to scale up.  Because of this, and the entirely reasonable concern that QTel had of letting a rogue developer have unfettered access to a server in their data center,  we decided early on to manage the audio/video streaming with a solution we could 1.  have complete control over without freaking anyone out, and 2.  scale without having to divert existing servers or purchase new ones.</p>
<p>EC2 isn&#8217;t the easiest thing in the world to work with, but there&#8217;s a lot of good help out there.  We learned a lot from this very useful <a href="http://www.youtube.com/watch?v=9QKnORsJKt4&amp;annotation_id=annotation_297897&amp;feature=iv">Youtube tutorial</a>.  We did as the tutorial says and used ElasticFox, Amazon&#8217;s Firefox plugin, to manage the whole process &#8211; without it I think it would be just about impossible.  Between that,  Amazon&#8217;s documentation and our undergrad dabbling in Linux we were able to select a flavour of Linux, install Apache, Java and Red5 .  The default installations are seriously minimal so you&#8217;ll have to install a lot of things that you would have expected to come built-in.</p>
<p>I hit an irritating stumbling block in getting a Linux instance up and communicating with my Windows desktop:  if you&#8217;re using puTTY rather than a straight SSH command in OS X / Linux, you&#8217;ll need to convert the keypairs as generated by Amazon,  into puTTY&#8217;s native format for handling credentials.  This is done with <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">puTTYgen</a>.  Aside from that and making sure that you have opened the appropriate ports for SSH and other traffic to the server, it was relatively straightforward.</p>
<p>All in all it was a fascinating project to jump into,  and I&#8217;d like to thank ADabisc and QTel for the opportunity to work on it.  The site went live on November 22, and after a pretty modest start it is now up to 10,000 Pageviews, and has broken 1,000 Daily views for the past 3 days!  Not bad for the 16 days or so it has been up.  My blog has had 1,800 pageviews in the 14 <em>months </em>it has been online,  so it has been by far the mos-viewed piece of work I have ever created.  The numbers are exciting but bring with them their own worries.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/12/10/lsos-rtmp-ec2-and-other-fancy-acronyms-ofa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Face Detection-based 3d Game</title>
		<link>http://www.zachernuk.com/2009/11/14/face-detection-based-3d-game/</link>
		<comments>http://www.zachernuk.com/2009/11/14/face-detection-based-3d-game/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 23:18:25 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Webcam]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=333</guid>
		<description><![CDATA[I&#8217;m especially proud of this one. I was stuck in the office until later than expected last night, so I spent my time finding more Flash resources to read up on.  I have now clicked through all of Mr Doob&#8217;s stuff,  all of the impressive Clockmaker Labs gallery, 1cm, nodename, a fair chunk of Quasimondo [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m especially proud of this one. I was stuck in the office until later than expected last night, so I spent my time finding more Flash resources to read up on.  I have now clicked through all of <a href="http://mrdoob.com/">Mr Doob&#8217;s</a> stuff,  all of the impressive <a href="http://clockmaker.jp/labs/">Clockmaker Labs</a> gallery, <a href="http://onecm.com/">1cm,</a> <a href="http://nodename.com/blog/">nodename</a>, a fair chunk of <a href="http://www.quasimondo.com/">Quasimondo</a> as well as a new one for me, <a href="http://algorithmist.wordpress.com/">The Algorithmist.</a></p>
<p>A lot of these guys have flickr accounts that show off some of their more entertaining screenshots as well, so I browsed through them too &#8211; it&#8217;s equal parts amusing and disturbing that the straight-up photography that we do*  ends up so strikingly similar &#8211; the sun at a certain angle, a piece of bark which must have looked spectacular at the time but looking somewhat nondescript on screen. I think there are some recurring images and patterns that we just <em>like. </em></p>
<p>Anyway, I digress.  On Quasimondo I found a fantastic and reasonably lightweight face detection library.  I&#8217;ve been hankering after one of these for <em>years</em>.  I tried it, and it works reasonably well &#8211; better than I would expect in flash, certainly. This must be the lib that <a href="http://blog.oaxoa.com/">oaxoa </a>used in his Rorshach mask &#8211; Mr. Doob too.  They both applied a large opaque decal on top of the face region, which looks great.  I wanted to try something different though, so I started to think about what you could use this face data for.    It might be possible to get some Johnny Lee stuff happening &#8211; I&#8217;ll need to play around with it a little more to decide if it can hold up to that &#8211; but what I ended up with is a 3d variant of <em>Worm</em> or <em>Chopper </em>or whatever you want to call it.  Here&#8217;s how to play:</p>
<p><a href="http://www.zachernuk.com/wp-content/2009/11/facedetect.png"><img class="alignnone size-full wp-image-334" title="facedetect" src="http://www.zachernuk.com/wp-content/2009/11/facedetect.png" alt="facedetect" width="550" height="400" /></a></p>
<p>Navigate through the space and collect as many of the tokens as you can &#8211; They were going to be carrots, and I started going down that road before realizing it was something of a <a href="http://en.wikipedia.org/wiki/Maximin_%28decision_theory%29">Maxi-min</a>, so they&#8217;re stuck as orangey-red triangular pyramids.  Here goes!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FaceDetector_1683179429"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2009/11/FaceDetector.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2009/11/FaceDetector.swf"
			name="fm_FaceDetector_1683179429"
			width="800"
			height="600">
	<!--<![endif]-->
		<a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>It&#8217;s not the smoothest of interfaces, but I&#8217;m sure it can be improved upon, even if I have to drop Flash for something more robust.  I recently noticed that the<a href="http://nehe.gamedev.net/"> NeHe openGL</a> resources are still being maintained, which is extremely tempting &#8211; especially since working in FlashDevelop has made me much more comfortable  with Visual Studio and &#8220;Real Programming&#8221;, although <a href="http://mememamo.com/">Ian </a>has tempted me greatly with the promise of a genuine visual programming environment in <a href="http://en.wikipedia.org/wiki/Quartz_Composer">Quartz Composer.</a> We&#8217;ll have to see once I get some real downtime.</p>
<p>What do you think?  What would you do with this new face-detecting superpower?  I&#8217;d love to know!</p>
<p>* I consider myself part of this fraternity of flash dabblers, or would at least like to join them in due course.  I must learn their secret handshake!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/11/14/face-detection-based-3d-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More camera effects</title>
		<link>http://www.zachernuk.com/2009/11/07/more-camera-effects/</link>
		<comments>http://www.zachernuk.com/2009/11/07/more-camera-effects/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 12:03:42 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[flash as3 camera displacement map evident utensil distortion live fx vfx vj]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=315</guid>
		<description><![CDATA[Hello!
I have some musings on social games coming up, but in the meantime I got an effect even closer to what I was imagining.  Again, this requires a webcam, I may try to record a version to youtube, but here it is!
Remember that if your camera isn&#8217;t showing up, you can open the settings panel [...]]]></description>
			<content:encoded><![CDATA[<p>Hello!<br />
I have some musings on social games coming up, but in the meantime I got an effect even closer to what I was imagining.  Again, this requires a webcam, I may try to record a version to youtube, but here it is!</p>
<p>Remember that if your camera isn&#8217;t showing up, you can open the settings panel to make sure it&#8217;s enabled and that it&#8217;s the right camera. On Macs especially, there are a number of cameras installed by default and it might not be auto-selecting the right one.</p>
<p>Also, only one program is allowed to have the webcam at a time, so you&#8217;ll have to make sure that nothing else is using it.</p>
<p>A little explanation:  The top left is the raw video feed, the top right is the difference between the current frame and the last one.</p>
<p>the bottom left is an accumulation of those differences over the past ~30 frames, and the bottom right is the actual effect &#8211; try moving around to see how it works.  The button in the middle lets you toggle between using the difference or the accumulated difference as the displacer.</p>
<p>Enjoy!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_VideoDiff_1645440166"
			class="flashmovie"
			width="640"
			height="480">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2009/11/VideoDiff.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2009/11/VideoDiff.swf"
			name="fm_VideoDiff_1645440166"
			width="640"
			height="480">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/11/07/more-camera-effects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where we have been, and where opticks is going</title>
		<link>http://www.zachernuk.com/2009/09/19/where-we-have-been-and-where-opticks-is-going/</link>
		<comments>http://www.zachernuk.com/2009/09/19/where-we-have-been-and-where-opticks-is-going/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 08:36:44 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[The Order]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[opticks]]></category>
		<category><![CDATA[2d]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[beams]]></category>
		<category><![CDATA[buddhist]]></category>
		<category><![CDATA[chinese]]></category>
		<category><![CDATA[laser]]></category>
		<category><![CDATA[light]]></category>
		<category><![CDATA[monastery]]></category>
		<category><![CDATA[monk]]></category>
		<category><![CDATA[order]]></category>
		<category><![CDATA[painting]]></category>
		<category><![CDATA[ray]]></category>
		<category><![CDATA[raycasting]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=260</guid>
		<description><![CDATA[Long time no post! Mid-year break is a very long holiday in the Chinese Highschool system, so we made the most of it by doing a lot of traveling.  We saw a lot of wonderful and amusing historical and contemporary sights, and managed to catch up with Family.  I don&#8217;t have a laptop, though, so after [...]]]></description>
			<content:encoded><![CDATA[<p>Long time no post! Mid-year break is a very long holiday in the Chinese Highschool system, so we made the most of it by doing a lot of traveling.  We saw a lot of wonderful and amusing historical and contemporary sights, and managed to catch up with Family.  I don&#8217;t have a laptop, though, so after a couple of days of trying to program (and debug) on paper, I decided to turn my attention to more promising things.</p>
<p>I began thinking about how to write an optics engine in about September 2008.  At the time, I thinking about more minigame scenarios for <a href="http://www.casebookthegame.com">Casebook</a> &#8211; specifically, to find something do with microscopy more that was more interesting than just pulling the focus, taking a stab at the correct zoom level or panning over an endless  expanse of dust specks.  I became intrigued by the complexity present in microscopy &#8211; beams of light reflected, focused, dispersed and focused again.</p>
<p>I started writing a 2D ray-casting system which could do the basic laserbeam-like  stuff. Intersecting with linear mirrors and bouncing off if they were reflective.  From there it was a simple step to add in partial reflectivity &#8211; (a white beam hitting a red mirror would reflect red, a blue beam wouldn&#8217;t reflect at all).   After that, it&#8217;s not a far step from <em>that </em>to implementing solid polygonal objects.  From there, in theory, it&#8217;s just a short jump to including a 2d physics (mechanics) engine like Box2D. From there it looks worthwhile to include image textures on said polygons, as well as applying forces on them at the point of ray intersections.</p>
<p>You may be able to see where this is going.  It&#8217;s a hobby project, so there&#8217;s no harm in it continuing indefinitely, though it helps to have an idea to work toward.  Since I&#8217;m in China, I thought it would be interesting to draw on some of the culture around me &#8211; my first idea*  was &#8220;There was a medieval order of monks in China whose daily lives revolved around doing interesting things with beams of light&#8221;. This is the picture I came up with to express that.</p>
<p><img class="alignnone" title="Initial concept" src="http://farm4.static.flickr.com/3405/3635546314_7a1bc3acd6.jpg" alt="" width="500" height="364" /></p>
<p>With a slightly more concrete direction to move toward, I was able to avoid considering the detail of what the game would be about or how the player would engage with it, adding the necessary engine features that would be required irrespective of how those decisions panned out.</p>
<p>So far, so good.  When I found myself with nothing to do but ponder what the game would actually <em>involve</em>, though,I was at a bit of a loss.  What does the player control?  How would a game progress?  It seems that no matter where a game is supposedly rooted, be it feudal Japan, post-apocalyptic Mars or Victorian England, the game always finds a way of shoehorning in the same mechanics.  I&#8217;m something of an activist when it comes to how the and how the interaction in a game relates to its premise, so if possible I&#8217;d like to go against that trend.</p>
<p>I&#8217;ve got here a bundle of (very) novel mechanics here, so I started by trying to extrapolate from the basic functions, what kind of play experience might to possible.</p>
<p>The first thing that springs to mind is the optics stuff.  As in the image above, having to get a goal object to be lit up, or for a beam to pass from one room into another without interruption would be a reasonable game task, and it could be explained in the context of the Monastery by saying that the place runs on light, and intermittent blockages, dusty mirrors or wild animals can come and interfere with the operation of the place.  Great! You could start out as a janitor!</p>
<p>Next, given what a mechanics engine is typically able to perform, I knew we could have the mechanics stuff like shapes falling, turning, connected by pivots and whatnot.  If you add in to that the ability to use lasers to cut those shapes, I figured we could develop some kind of object deformation, and that could allow for levels where the player is required to destroy an object or a machine. It would be a solid mechanic, but very similar to Nitrome&#8217;s <a href="http://www.nitrome.com/games/icebreaker/">Icebreaker</a> or Eugene Karataev&#8217;s two <a href="http://www.physicsgames.net/game/Splitter.html">Splitter </a><a href="http://www.physicsgames.net/game/Splitter_2.html">games</a>.   There would be differences &#8211; timing would become a factor, as a laser doesn&#8217;t have to cut through a block instantaneously, but it would be much the same mechanic. I <span style="text-decoration: line-through;">anticipate </span>daydream that it would look something like this:</p>
<div id="attachment_264" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-264 " title="order-carving" src="http://www.zachernuk.com/wp-content//order-carving-300x225.jpg" alt="channeling blue light to cut up a red stone" width="300" height="225" /><p class="wp-caption-text">Channeling blue light to cut up a red stone, but with Drama! (Drama = lens flares)</p></div>
<p>Then I remembered you could use this constructively, too &#8211; by chipping away at an object, or cutting out pieces of it carefully, you could fashion replacement pieces for existing machinery &#8211; a new cam, piston casing or something.  You could be the Order&#8217;s <em>handyman </em>too!</p>
<p>From there, I started to think about how the player could rise through the ranks of the place, and what other roles there might be to play.  Living in the Monastery, you may need to defend it, or attack it in order to oust invaders who have already infiltrated the place.</p>
<div id="attachment_266" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-pagoda-entrance.jpg"><img class="size-medium wp-image-266 " title="order-pagoda-entrance" src="http://www.zachernuk.com/wp-content//order-pagoda-entrance-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">... Turning on the outside light?</p></div>
<div id="attachment_267" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-reflecting.jpg"><img class="size-medium wp-image-267 " title="order-reflecting" src="http://www.zachernuk.com/wp-content//order-reflecting-300x225.jpg" alt="Acting as an impromptu mirror during an inconvenient flood of godrays." width="300" height="225" /></a><p class="wp-caption-text">Acting as an impromptu mirror during an inconvenient flood of god-rays.</p></div>
<p>Also, since the life of the people in the Order is defined by this light, they&#8217;d probably use it as the basis of technology.  I&#8217;ll write more about this later, but I&#8217;d like to see what I call &#8220;Brown-box&#8221; technology.  It&#8217;s not black box because you&#8217;re allowed to see inside it, but it&#8217;s not white box either, because you don&#8217;t need to (and indeed, unless you do, the action of the box is simplified down to being that component.   It&#8217;s something I&#8217;ve been pondering over for a long time, and a <a href="http://apes-abroad.livejournal.com/33111.html">post by Colin Northwa</a>y of   <a href="http://fantasticcontraption.com/">Fantastic Contraption</a> got me thinking about how to have my cake and eat it too. Anyway, the brown boxes:</p>
<div id="attachment_268" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-miniature-level.jpg"><img class="size-medium wp-image-268" title="order-miniature-level" src="http://www.zachernuk.com/wp-content//order-miniature-level-300x225.jpg" alt="A mess of componentry in no particular order" width="300" height="225" /></a><p class="wp-caption-text">A mess of componentry in no particular order</p></div>
<div id="attachment_269" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-miniature-level-2.jpg"><img class="size-medium wp-image-269" title="order-miniature-level-2" src="http://www.zachernuk.com/wp-content//order-miniature-level-2-300x225.jpg" alt="More junk.  I have some idea what it could be, but it's all just some idea at the moment." width="300" height="225" /></a><p class="wp-caption-text">More junk.  I have some idea what it could be, but at this point, all of this is just some idea. </p></div>
<p>Next are some images that just help set the scene &#8211; I imagine that the monastery complex will have some very tall buildings, though the tallest classical structures in China (other than the walls and gatehouses) are these heavy stone pagodas.  This one is fairly squat, but they can be quite dizzyingly high.</p>
<div id="attachment_272" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-pagoda.jpg"><img class="size-medium wp-image-272" title="order-pagoda" src="http://www.zachernuk.com/wp-content//order-pagoda-300x225.jpg" alt="One of the shorter pagodas on a misty morning." width="300" height="225" /></a><p class="wp-caption-text">One of the shorter pagodas on a misty morning.</p></div>
<p>Finally, Some pictures that have more to do with just feeling out what the world will be like.</p>
<div id="attachment_273" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-lightcage.jpg"><img class="size-medium wp-image-273" title="order-lightcage" src="http://www.zachernuk.com/wp-content//order-lightcage-300x225.jpg" alt="A precious stone protected by a cage of light beams.  The beams just happen to look very dramatic too." width="300" height="225" /></a><p class="wp-caption-text">A precious stone protected by a cage of light beams.  The beams just happen to look very dramatic too.</p></div>
<p>Dangerous fire-light could be used as a defensive mechanism, protecting valuable things and stopping animals from wandering into places.  Special stones and crystals could be used to convert light from one colour to another, to store energy, or to change properties (density, velocity etc.) upon charging.</p>
<div id="attachment_274" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-backstory.jpg"><img class="size-medium wp-image-274" title="order-backstory" src="http://www.zachernuk.com/wp-content//order-backstory-300x225.jpg" alt="A monument to the first guy who figured out how to play with light.  May or may not be based on the Buddha." width="300" height="225" /></a><p class="wp-caption-text">A monument to the first guy who figured out how to play with light.  May or may not be based on the Buddha.</p></div>
<p>Like the standard representation of magic, preparation or the special treatment of substances to reveal their particular powers could be quite fun.</p>
<div id="attachment_270" class="wp-caption alignnone" style="width: 310px"><a href="http://www.zachernuk.com/wp-content//order-collect.jpg"><img class="size-medium wp-image-268" title="Order-collect" src="http://www.zachernuk.com/wp-content//order-collect-300x225.jpg" alt="Collecting... something?" width="300" height="225" /></a><p class="wp-caption-text">Collecting... something?</p></div>
<p>All in all, while the scope of the idea is probably <span style="text-decoration: line-through;">a little </span>impossibly large, it means there is something to work towards, which I&#8217;m looking forward to continuing.</p>
<p>* Actually, the second idea.  Apparently &#8220;you&#8217;re an undergraduate physics student, experimenting at an optics workbench&#8221; doesn&#8217;t doesn&#8217;t set fire to the imagination as much as I had initially hoped.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/09/19/where-we-have-been-and-where-opticks-is-going/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
