<?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</title>
	<atom:link href="http://www.zachernuk.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zachernuk.com</link>
	<description>The desk of Brandel Zachernuk</description>
	<lastBuildDate>Sat, 20 Feb 2010 03:51:32 +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>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_1991402145"
			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_1991402145"
			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>0</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>On Social games: Why Mafia Wars isn&#8217;t social</title>
		<link>http://www.zachernuk.com/2010/01/09/on-social-games-why-mafia-wars-isnt-social/</link>
		<comments>http://www.zachernuk.com/2010/01/09/on-social-games-why-mafia-wars-isnt-social/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 03:29:09 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=360</guid>
		<description><![CDATA[I contend that "Social Games" are not currently Social at all.  I suggest some directions to explore.]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">I don&#8217;t really know what I want to say about Social games.  Is a background really interesting? I don&#8217;t think so.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">On Social Games: Mafia Wars and a question of &#8220;Social&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">A few months back I started playing through all of the main (free) Social Games available &#8211; I went through most of the games by the two major figures in the space, Playfish and Zynga, and a handful of the offerings from other competitors. I&#8217;m hoping to</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Why can&#8217;t we all just get along?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">One thing that struck me about these Social Games is how little social relevance they possess.  Mafia Wars, the most popular social game, puts you in the position of a mafia boss.  Friends of yours who also subscribe to the game comprise your mafia.  You are able to request assistance on specific jobs from your friends, give them gifts and swap special &#8216;collectible&#8217; items with them &#8211; but participation goes no further than this.  All that distinguishes one friend from another is their name, avatar and experience level.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">In fact, for a price, you are able to enlist random strangers into your ranks, who behave no differently to your peers. Equally, you are treated in an identical manner &#8211; your name used as a largely meaningless token in your friend&#8217;s Mafia engagements.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">So?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">To an extent, this is an inevitable part of gaming &#8211; if I create a game-world with a limited complexity of representation, some features of my personality will be rendered irrelevant.  The fact that I like long walks on the beach is likely to be insignificant in a game about intergalactic space battles, just as my intergalactic space tactics are likely to be unimportant in a game about long walks on the beach.  In Mafia wars, though, not even my views on &lt;i&gt;the mafia&lt;/i&gt; make the cut &#8211; not so much as a D&amp;D-style moral alignment or request to sacrifice progress toward one goal for another.  Likewise, any charitable acts I engage in &#8211; sending out an &#8220;Energy Pack&#8221; or giving a gift to my peers &#8211; carries no consequence to me.  The items are not available to me in the first place other than to give to others.  Without any opportunity cost there is no decision for me to make, and no way to make my mark or distinguish myself from other players.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The fact that players in Mafia Wars are often on at different times, and for wildly different quantities of time makes more direct involvement somewhat difficult, but not impossible.</div>
<p>A few months back I started playing through all of the main (free) Social Games available &#8211; I went through most of the games by the two major figures in the space, Playfish and Zynga, and a handful of the offerings from other competitors. I&#8217;m hoping to turn this into a series of posts on my observations through these games.</p>
<h2>Why can&#8217;t you play nicely with the others?</h2>
<p>One thing that struck me about these Social Games is how little social interaction actually occurs.  Mafia Wars, the most popular social game, puts you in the position of a mafia boss.  Friends of yours who also subscribe to the game comprise your mafia.  You are able to request assistance on specific jobs from your friends, give them gifts and swap special &#8216;collectible&#8217; items with them &#8211; but participation goes no further than this.  All that distinguishes one friend from another is their name, avatar and experience level.</p>
<p>In fact, for a price, you are able to enlist random strangers into your ranks, who behave no differently to your peers.   Equally, you are treated in an identical manner &#8211; your name used as a largely meaningless token in your friend&#8217;s Mafia engagements.</p>
<h2>So?</h2>
<p>To an extent, this is an inevitable part of gaming &#8211; if I create a game-world with a limited complexity of representation, some features of my personality will be rendered irrelevant.  The fact that I like long walks on the beach is likely to be insignificant in a game about intergalactic space battles, just as my intergalactic space tactics are likely to be unimportant in a game about long walks on the beach.  In Mafia wars, though, not even my views on <em>the Mafia </em>make the cut &#8211; not so much as a D&amp;D-style moral alignment or request to sacrifice progress toward one goal for another.  Likewise, any charitable acts I engage in &#8211; sending out an &#8220;Energy Pack&#8221; or giving a gift to my peers &#8211; carries no consequence to me.  The items are not available to me in the first place other than to give to others.  Without any opportunity cost there is no decision for me to make, and no way to make my mark or distinguish myself from other players.  When I play, no aspect of how <em>you</em> play has any impact on my game&#8217;s representation of you, and vice versa.</p>
<p><strong>How it normally works</strong></p>
<p>Most multiplayer games have been based on either <em>symmetrical </em>(largely turn-based) or <em>synchronous </em>play.  Symmetrical games like Chess require that for every move that you make,  I make one too.  Synchronous games like Warcraft 3 and Halo  rely on the fact that we are both given the same opportunity to act &#8211; they assume that every player is giving the game their full attention,  so that any difference in impact comes down to a difference in skill.   It&#8217;s not possible to rely solely on these techniques for creating a multiplayer experience in the social space &#8211;  I may rack up ten times the average play-time of my friends in a week.  A symmetrical, round-robin approach would mean that nine-tenths of my time in the game would be spent waiting for others to catch up, while a synchronous model would require that I be online at the exact same time as my friends in order to collaborate.</p>
<p>These traditional methods for creating a multi-player experience may fail in a larger social context, but they were  also designed for a different quantity of players.  Chess requires exactly two players to allow a game to proceed, and games like Warcraft or Halo require between 2 and 16 players.  A typical social game has players in the thousands &#8211; Mafia Wars has membership in the <em>tens of millions</em>.</p>
<p>The second difference is in the length of engagement.  A Counterstrike match  is generally around 35 minutes, and a game of Warcraft 3 can last between 30 and 120 minutes.  Mafia Wars and Pet Society offer a single, persistent game experience which lasts indefinitely, often with players racking up 30 minutes or more every day of the week.</p>
<p><strong>Options</strong></p>
<p>The differences between normal videogames and &#8220;Social Games&#8221; do close off some possibilities for how to establish a shared experience, so while we can&#8217;t rely on symmetrical play patterns from a core set of players, we can make use of much longer time-scales and a vastly larger pool of players to draw on.</p>
<p>Rather than a single, one-to-one sequence of interaction, social games can make use of the wider network of contacts &#8211; engaging in multiple parallel &#8216;quests&#8217;, each one requiring roughly equal participation from its members, where the number of quests allows the player to scale their level of involvement.  If I play 2 hours a week, I might participate in 3 quests,  where someone who spends 10 hours will join 20.</p>
<p>Another approach is to let the game play itself &#8211; or at least to for friends to interact with a simulated version of the player,  which is refined over the course of their play-time.  Say I&#8217;m predictably good-aligned in most games (I am.) &#8211; If a friend of mine requests my assistance on a mission which requires some morally dubious action,  It should be possible for my approximated self to decline any requests to participate.  If it is necessary at some later date to request the services of a character with such dull and unflinching moral fortitude, My virtual character may offer his services up (or at least ask me directly whether to do so).</p>
<p><strong>That&#8217;s <em>weird</em>.</strong></p>
<p><strong> </strong>While breaking the convention of a game following a single, coherent thread, or providing a simulated copy of me and my behaviours sound like strange approaches, this is essentially already happening in these social games.  Many avid &#8220;Social gamers&#8221; are registered in several services &#8211; and often several accounts &#8211; suggesting that thy feel that the maximum level of engagement available under a single game / account is insufficient.  Likewise,  any time a character bearing my name, experience level and portrait appears in a social game, it is <em>effectively</em> a simulation of me.  It just so happens that the simulation is  so poor that no two characters with the same level of experience can be considered behaviourally distinct.</p>
<p><strong>What do we get out of this?</strong></p>
<p>Using either (or both) of these approaches, we can come closer to having an actual social game experience.  By relaxing the requirements for symmetrical participation, we can play alongside a number of friends &#8211; and be playing with <em>them,</em> rather the  poor approximation we have now.  By relaxing the requirement for synchronous play through improving that approximation, we open up new opportunities for participation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2010/01/09/on-social-games-why-mafia-wars-isnt-social/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebKit / Mozilla rotation system</title>
		<link>http://www.zachernuk.com/2009/12/22/webkit-mozilla-rotation-system/</link>
		<comments>http://www.zachernuk.com/2009/12/22/webkit-mozilla-rotation-system/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 13:41:02 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[doodles]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=361</guid>
		<description><![CDATA[Every now and then I start looking at some lightweight, non-flash alternatives for doing silly things on web pages.  Recently I switched to using Google Chrome, which uses the Webkit engine for page rendering, which is said to be able to do rotation and the like very quickly.  Without a particular goal in [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and then I start looking at some lightweight, non-flash alternatives for doing silly things on web pages.  Recently I switched to using Google Chrome, which uses the Webkit engine for page rendering, which is said to be able to do rotation and the like very quickly.  Without a particular goal in mind, I decided I would write a basic move and rotation to see how it performed. If you&#8217;re using Firefox 3.5+, Chrome or Safari, you should see an unhelpful black rectangle swinging around in the top left corner. Here&#8217;s how you do it:<br />
<code><br />
theElement.style.setProperty("-webkit-transform","rotate("+(new Date().getTime()/500)+"rad)","");<br />
theElement.style.setProperty("-moz-transform","rotate("+(new Date().getTime()/500)+"rad)","");<br />
</code></p>
<p>Not the most advanced CSS experiment by any stretch of the imagination, but it&#8217;s a start!</p>
<p><script>// <![CDATA[
 setInterval(doStuff,100); var t = 0; function doStuff() { t++; var theElement = document.getElementById('theDivision'); try { theElement.style.setProperty("-webkit-transform","rotate("+(2*Math.sin(t/10))+"rad)","");  } catch(e){} try { theElement.style.setProperty("border",""+Math.round(10+10*Math.sin(t/10))+"px solid black","");  } catch(e){} try { theElement.style.setProperty("-moz-transform","rotate("+(2*Math.sin(t/10))+"rad)","");  } catch(e){} try { theElement.style.setProperty("left",(100+100*Math.cos(t/10))+"px",""); } catch(e){} try { theElement.style.setProperty("top",(100+100*Math.sin(t/10))+"px","");} catch(e){} theElement.innerHTML = ""+t;}
// ]]&gt;</script></p>
<style> div#theDivision{border:thin solid blue;width:120px;height:10px;-webkit-transform: rotate(-10deg); -moz-transform: rotate(-40deg); position:absolute;}</style>
<div id="theDivision">This is in my div</div>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/12/22/webkit-mozilla-rotation-system/feed/</wfw:commentRss>
		<slash:comments>0</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>

		<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_235538328"
			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_235538328"
			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_85431595"
			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_85431595"
			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>Freaky awesome 3d camera-projection</title>
		<link>http://www.zachernuk.com/2009/11/12/freaky-awesome-3d-camera-projection/</link>
		<comments>http://www.zachernuk.com/2009/11/12/freaky-awesome-3d-camera-projection/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 20:24:55 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=328</guid>
		<description><![CDATA[After promising myself I would go to bed early tonight, I got sidetracked looking through Mr Doob&#8217; s excellent flash experimentations.  Some of which involve camera input, some involving Pv3d.  A few involve both!  I have only very recently begun to dabble in camera input, but I have some experience with pv3d,  so I decided [...]]]></description>
			<content:encoded><![CDATA[<p>After promising myself I would go to bed early tonight, I got sidetracked looking through <a href="http://mrdoob.com/">Mr Doob&#8217; </a>s excellent flash experimentations.  Some of which involve camera input, some involving Pv3d.  A few involve both!  I have only very recently begun to dabble in camera input, but I have some experience with pv3d,  so I decided to have a quick go &#8211; making a relief map out of the greyscale pixel values of the camera feed.</p>
<p><a href="http://www.zachernuk.com/wp-content/2009/11/meshcam.jpg"><img class="alignnone size-medium wp-image-329" title="meshcam" src="http://www.zachernuk.com/wp-content/2009/11/meshcam-300x260.jpg" alt="meshcam" width="300" height="260" /></a></p>
<p>One thing I hadn&#8217;t thought of was the fact that, on a laptop with a monitor-fixed webcam, in a room where the monitor is the only light,  The relief map does a reasonable job of being a depth map!  The luminance might map to the square of the height or something but you can see from the image above how well it works.</p>
<p>You can try it for yourself if you like &#8211; Note the usual applies with the webcam&#8230; If you can see what it&#8217;s like in a darkened room, do try it! I&#8217;d love to see what other people come up with!</p>
<p>(mouse controls rotation, buttons toggle params &#8211; try the relief map with the original bitmap laid on top for freaky 3d-ness!)</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_meshcam_1713627857"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2009/11/meshcam.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2009/11/meshcam.swf"
			name="fm_meshcam_1713627857"
			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><strong>Update 2009-12-26<br />
</strong><br />
It is possible to make a 3d depth map in realtime, although there are a couple of hurdles to jump through. Even on a reasonable computer, the highest poly count you can expect out of Flash at present is about 5,000 triangles, so the resolution of the mesh used in this Flash experiment is 64 x 48.</p>
<p>If you were to do the same thing in a language that gave you access to DirectX or openGL you can expect to have poly counts in the millions, so one vertex per pixel is an easily achievable goal.</p>
<p>The next part is more complicated:  Getting a color channel to look like a depth channel.  The experiment above is using the red channel as the depth map.  This will yield a real depth map, but only under these two conditions:</p>
<p>1.  The light must originate from (close to) the camera.  That way, the brighter a point is, the closer to the camera it is. For objects that are reasonably distant &#8211; say, 50 cm away, it is sufficient for the light to be within 5cm, but the closer the lights are, the better.  You can buy some webcams with a built-in ring of LEDs &#8211; these are ideal.</p>
<p>2.  All the objects must exhibit <a href="http://en.wikipedia.org/wiki/Diffuse_reflection">Diffuse </a>/ <a href="http://en.wikipedia.org/wiki/Lambertian_reflectance">Lambertian </a>luminance.  Not as complicated as it sounds:  Basically, when an object has a mirrored or a shiny surface, its brightness depends on both how it is lit <em>and</em> the camera position (where you are looking at it.)  When you change your point of view, you change the brightness of the surface.  There are commercially-available Lambert materials like <a href="http://www.labsphere.com/productdetail.aspx?id=329">Spectralon</a>, but an unfired white clay will do just as well.  In fact, you could probably dust an object in any white powder &#8211; something like flour or baking soda,  light it under the right conditions and see what it looks like.</p>
<p>If anyone tries this I would love to see the results!  Under the two conditions above,  you should be able to use my mesh experiment above to make  meshes that show depth.  If you&#8217;re interested in some of the lower-level stuff in this subject, it&#8217;s part of <strong>Computer Vision, </strong>specifically<strong> Shape from Shading. </strong>As with any vision project, the best port-of-call is the <a href="http://opencv.willowgarage.com/wiki/">openC</a>V project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2009/11/12/freaky-awesome-3d-camera-projection/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Buffer Snake</title>
		<link>http://www.zachernuk.com/2009/11/11/buffer-snake/</link>
		<comments>http://www.zachernuk.com/2009/11/11/buffer-snake/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 19:04:57 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=323</guid>
		<description><![CDATA[The Fanciest version of snake you&#8217;ll play today.  It has a winning ending, my best time is 160 seconds.   How fast can you do it?
Click in the panel to get focus, then use left and right to steer your accumulation buffer-derived snake to victory.  Good luck!

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_BufferSnake2_646204293"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2009/11/BufferSnake2.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2009/11/BufferSnake2.swf"
			name="fm_BufferSnake2_646204293"
			width="800"
			height="600">
	<!--<![endif]-->
		


	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></description>
			<content:encoded><![CDATA[<p>The Fanciest version of snake you&#8217;ll play today.  It has a winning ending, my best time is 160 seconds.   How fast can you do it?</p>
<p>Click in the panel to get focus, then use left and right to steer your accumulation buffer-derived snake to victory.  Good luck!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_BufferSnake2_1049796075"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2009/11/BufferSnake2.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2009/11/BufferSnake2.swf"
			name="fm_BufferSnake2_1049796075"
			width="800"
			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/2009/11/11/buffer-snake/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_1371792738"
			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_1371792738"
			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>
	</channel>
</rss>
