<?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>Chrome Cow &#187; Design A Day</title>
	<atom:link href="http://www.chromecow.com/category/design-a-day/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chromecow.com</link>
	<description>Game designer, mad scientist and tinkerer</description>
	<lastBuildDate>Wed, 26 May 2010 06:07:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DD37: SchrÃ¶dinger&#8217;s Pawn</title>
		<link>http://www.chromecow.com/2007/03/10/dd37-schrodingers-pawn/</link>
		<comments>http://www.chromecow.com/2007/03/10/dd37-schrodingers-pawn/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 00:33:46 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2007/03/10/dd37-schrodingers-pawn/</guid>
		<description><![CDATA[
WARNING: What follows is a game only a Geek could love.
Today&#8217;s design is a twist on the venerable game of chess, via quantum mechanics (See&#8230;I warned you).  
If you&#8217;re the kind of savvy reader that hangs out at the Chrome Cow, you doubtless are familiar with a certain theoretical feline belonging to one Erwin <a href='http://www.chromecow.com/2007/03/10/dd37-schrodingers-pawn/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div class="caption right"><a title="Design-A-Day Archives" href="http://www.chromecow.com/category/design-a-day/"><img width="90" height="90" alt="Design A Day Icon" title="Design A Day Icon" src="http://www.chromecow.com/wp-content/graphics/Main/Design-A-Day-Sun.gif" /></a></div>
<p><strong>WARNING</strong>: What follows is a game only a Geek could love.</p>
<p>Today&#8217;s design is a twist on the venerable game of chess, via quantum mechanics (See&#8230;I warned you).  </p>
<p>If you&#8217;re the kind of savvy reader that hangs out at the Chrome Cow, you doubtless are familiar with a certain <a title="SchrÃ¶dinger's cat" target="_blank" href="http://en.wikipedia.org/wiki/Schrodinger%27s_Cat">theoretical feline</a> belonging to one Erwin Schr&ouml;dinger. This cat has the misfortune to be confined in a box with a deadly device that has a 50-50 chance of triggering with an hour. At the end of the hour, goes the thought experiment, the cat, sealed from observation inside the box, is neither dead or alive, but is in superposition, a combination of these possible states. The cat does not live or die until the box is opened by an observer, who through the act of observation collapses the possible dead/alive states of the cat into one or the other state.</p>
<p>So what&#8217;s that got to do with Chess? What, indeed!</p>
<p>Enter Superpositional Chess (Super Chess? EigenChess? Quantum Chess? Schr&ouml;dinger&#8217;s Pawn?).<br /><span id="more-176"></span><br />Like Schr&ouml;dinger&#8217;s experiment with the Cat, mine too is wholly theoretical, so to follow along you will need the following imaginary supplies:</p>
<ul>
<li>Two Chess Boards</li>
<li>Two Sets of Chess Pieces</li>
</ul>
<p>Set up both boards in the traditional manner. The players will take turns as per usual, but each player will move one piece of their color on each board, each turn.</p>
<p>If each player moved the same piece on each board to the same spot, the game would be identical to standard chess. It&#8217;s when the two moves diverge that things get interesting.</p>
<p><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Knight_01.jpg" alt="Possible Legal Moves" /></p>
<p>In this example, the white Knight has two potential legal moves.</p>
<p>If, on the two separate chess boards, he moves to each of these legal spots:<br />&nbsp;</p>
<div align="center"><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Knight_03_Super.jpg" alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Knight_03_Super.jpg" /></div>
<p>&nbsp;The <strong>superpositional </strong>board is the additive result of Boards A &amp; B.&nbsp; In the above example, the knight is said to be <strong>superpositional</strong>, it exists only potentially in both spots.</p>
<p>So before things get too confusing, here are the rules:</p>
<hr width="100%" size="2" /></p>
<h2>Basic Definitions</h2>
<ul>
<li>Each board is set up like a traditional chess game</li>
<ul>
<li>Both boards have the same color pieces facing the same player</li>
</ul>
<li>If two of the <em>same type</em> of pieces of the <em>same color</em> occupy the <em>same space</em> on both boards, that piece <strong>Exists </strong>in that space.</li>
<li>Only one piece can <strong>Exist</strong> in one space at any given time.</li>
<ul>
<li>At the beginning of the game, before anyone has moved,</li>
<ul>
<li>All pieces <strong>Exist</strong></li>
</ul>
</ul>
<li>If two of the same pieces of the same color occupy <em>different spaces</em> on both boards, those pieces are <strong>Superpositional</strong>.</li>
<ul>
<li>See example above</li>
</ul>
<li>Only two <strong>Superpositional</strong> pieces of <em>any color</em> and <em>any type</em> can occupy the <em>same space</em>:</li>
</ul>
<p></p>
<div align="center"><img alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/super_01.jpg" src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/super_01.jpg" /></div>
<ul>
<li><strong>Existing</strong> pieces take precedence over <strong>Superpositional </strong>pieces</li>
<ul>
<li>No move can be made that creates a <strong>Superpositional</strong> piece on a space occupied by an <strong>Existing</strong> piece</li>
</ul>
</ul>
<hr width="100%" size="2" />
<h2>Player&#8217;s Turn</h2>
<ul>
<li><strong>Movement Round</strong></li>
<ul>
<li>Player may move a piece of his color on each board, <strong>OR</strong></li>
<li><strong>Collapse </strong>a <strong>Superpositional </strong>piece</li>
<ul>
<li>Player chooses two <strong>Superpositional </strong>pieces of the same type and color</li>
<li>Player moves one of those pieces&nbsp; to match the position of the matching type of piece on the other board</li>
<li>That piece now <strong>Exists </strong>(this example follows on from the Knight example above):</li>
</ul>
</ul>
</ul>
<div align="center"><img alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Knight_04_Collapse.jpg" src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Knight_04_Collapse.jpg" /></p>
</div>
<div>
<hr width="100%" size="2" /></div>
<h2>Resolution Phase</h2>
<p>Two <strong>Superpositional</strong> pieces of different colors may occupy the same space, but what happens when one of those pieces is <strong>Collapsed</strong>, and now <strong>Exists </strong>in that space?</p>
<p></p>
<div align="center"><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Sample_01.jpg" alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Sample_01.jpg" /></p>
</div>
<p>Above we see four <strong>Superpositional </strong>pieces.</p>
<p></p>
<div align="center"><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Sample_02.jpg" alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Sample_02.jpg" /></p>
</div>
<p>Black chooses to <strong>Collapse </strong>their Pawn. At then end of Black&#8217;s turn, we have a Black Pawn that <strong>Exists </strong>in the same space as a <strong>Superpositional </strong>White Knight. This is not allowed, so White now has a Resolution Phase to correct the problem:</p>
<div align="center"><img alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Sample_03.jpg" src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/Sample_03.jpg" /></p>
<div align="left">
<p>In the above example, White chooses to <strong>Collapse </strong>the Knight to the space not occupied by the Black Pawn. If White had chosen to <strong>Collapse </strong>the Knight to the same space as the Black Pawn, the White Knight would have been forfeit. </p>
<p></p>
<ul>
<li>The first piece to <strong>Exist </strong>in a given square captures any piece that comes to occupy that space in the resulting Resolution Phase.</li>
</ul>
<p>It is very likely as the game progresses that one move will trigger a cascade of alternating <strong>Resolution Phases</strong>.</p>
<ul>
<li>White&#8217;s move requires a Black <strong>Resolution Phase</strong></li>
<li>Black&#8217;s <strong>Resolution Phase</strong> requires a White <strong>Resolution Phase</strong></li>
<li>And so on&#8230;</li>
</ul>
<p>&nbsp;</p>
<hr width="100%" size="2" />
<p>&nbsp;</p>
<h2>Threat and Check</h2>
<p>For <strong>Existing </strong>pieces, the endgame rules of Check and Checkmate are the same as regular chess. It is when we bring <strong>Superpositional </strong>pieces into the mix that we need new rules.</p>
<h3>Threat</h3>
<ul>
<li>When a <strong>Superpositional </strong>piece is placed such that it can execute a capture move on a King (<strong>Existing </strong>or <strong>Superpositional</strong>) the next turn, the player that moved it there must announce &quot;<strong>Threat</strong>&quot;</li>
<ul>
<li><strong>Threat </strong>is one step less serious than <strong>Check</strong></li>
<ul>
<li>The player would have to spend their next turn <strong>Collapsing </strong>the piece for it to escalate into a<strong> Check:</strong></li>
</ul>
</ul>
</ul>
<p><strong><br /></strong></p>
<div align="center"><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/threat.jpg" alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/threat.jpg" /></p>
<div align="left">
<ul>
<li>When an <strong>Existing </strong>piece is placed such that it can execute a capture move on a <strong>Superpositional</strong> King the next turn, the player that moved it there must announce &quot;<strong>Threat</strong>&quot;</li>
<ul>
<li><strong>Threat </strong>is one step less serious than <strong>Check</strong></li>
<ul>
<li>The <strong>Threatened </strong>player can <strong>Collapse </strong>their King to safety:</li>
</ul>
</ul>
</ul>
<p></p>
<div align="center"><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/threat2.jpg" alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/threat2.jpg" /></p>
<div align="left">
<p>What about the case where two <strong>Superpositional </strong>pieces are threatening two <strong>Superpositional </strong>kings?</p>
<p></p>
<div align="center"><img src="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/threat3.jpg" alt="http://www.chromecow.com/wp-content/graphics/DaD/SuperChess/threat3.jpg" /></p>
<div align="left">
<p>This is still classified as a <strong>Threat</strong>.      </p>
<ul>
<li>A <strong>Check </strong>or <strong>Checkmate </strong>is only possible when an <strong>Existing </strong>King is in peril from an <strong>Existing </strong>enemy piece.</li>
</ul>
<p><strong>Threat, Check and Checkmate</strong> must be announced both in in the <strong>Movement Phase</strong> and the <strong>Resolution Phase</p>
<p></strong><br />
<hr width="100%" size="2" />
<h2><strong>Optional Rules</strong></h2>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<h3>Entanglement</h3>
<ul>
<li>For all pieces except the king and queen</li>
<ul>
<li>Number the pieces</li>
<ul>
<li>Pawns 1-8</li>
<li>Knights 1-2</li>
<li>etc.</li>
</ul>
<li>When placing the pieces in their initial position</li>
<ul>
<li>Lowest number go on the left</li>
<ul>
<li>So the leftmost pawn is #1, the rightmost #8</li>
<li>Leftmost Knight is #1, rightmost is #2</li>
</ul>
</ul>
</ul>
<ul>
<li>You may only collapse pieces</li>
<ul>
<li>Of the same Color</li>
<li>Type, AND</li>
<li>Number</li>
</ul>
</ul>
</ul>
<p>
<hr width="100%" size="2" /></p>
<h2>Final Thoughts</h2>
<p>This game (I kind of like the name EigenChess) might be a great way to introduce young Chess players to the world of quantum mechanics, and build up some intuition for some of the non-intuitive aspects of that branch of scientific inquiry. </p>
<p>If someone really wanted to play this on an ongoing basis, the easiest approach is probably a software solution to manage the boards and states of the pieces. </p>
<p>However, you could also set up two physical boards, place a top-down video camera over each board and then superimpose the two video streams, which would give you a result like the Superpositional Board used in the above illustrations.</p>
<p>Either way, drop me a line and let me know how it works&#8230;};^)</p>
<p>-game over- </p>
<p>Thanks for reading another action-packed installment of Design a Day. For background on the Design A Day challenge, take a peek <a title="Challenge: A Design A Day" href="../../../../../2006/02/28/challenge-a-design-a-day/">here</a>  and <a title="Fifty Pounds of Ideas" href="../../../../../2006/03/01/fifty-pounds-of-ideas/">here</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2007/03/10/dd37-schrodingers-pawn/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>DD36: World Cup Foosball</title>
		<link>http://www.chromecow.com/2006/06/18/dd36-world-cup-foosball/</link>
		<comments>http://www.chromecow.com/2006/06/18/dd36-world-cup-foosball/#comments</comments>
		<pubDate>Mon, 19 Jun 2006 04:23:43 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/06/18/dd36-world-cup-foosball/</guid>
		<description><![CDATA[

Ok. I owe you a Lazarus and the Time Machine Part 2, but I can&#8217;t resist the chance to post a quite nearly timely World Cup inspired design.
I&#8217;ve consulted with experts in the field, and the consensus is that the World Cup involves Soccer. 
In my mind this is quite nearly the same thing as <a href='http://www.chromecow.com/2006/06/18/dd36-world-cup-foosball/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div class="caption right"><a href="http://www.chromecow.com/category/design-a-day/" title="Design-A-Day Archives"><img width="90" height="90" src="http://www.chromecow.com/wp-content/graphics/Main/Design-A-Day-Sun.gif" title="Design A Day Icon" alt="Design A Day Icon" /></a></div>
<div class="caption left"><img src="/wp-content/graphics/DaD/foosball.jpg" alt="Foosball" title="Foosball" /></div>
<p>Ok. I owe you a <a href="http://www.chromecow.com/2006/05/08/dd35-lazarus-and-the-time-machine/" target="_self" name="DD35: Lazarus and the Time Machine" title="DD35: Lazarus and the Time Machine">Lazarus and the Time Machine</a> Part 2, but I can&#8217;t resist the chance to post a quite nearly timely World Cup inspired design.</p>
<p>I&#8217;ve consulted with experts in the field, and the consensus is that the World Cup involves Soccer. </p>
<p>In my mind this is quite nearly the same thing as Foosball, except that in Soccer the games are much longer and harder schedule.</p>
<p>I admit it. I&#8217;m not really an organized sports guy, and today&#8217;s design is less inspired by the World Cup and more by Rockstar&#8217;s latest table tennis opus.</p>
<p>The idea is simple:</p>
<p>Foosball + Wii = Awesome.<br /><span id="more-169"></span><br />The perspective is top down, and on the bottom of the screen you can see the single player&#8217;s control rods.</p>
<p>Moving the Wii controller left and right in front of the player selects different rods. Moving the wand forward and backwards slides the rod in and out. Twisting the wand (which should be readable with the accelerometer, I think) twists the corresponding handle.</p>
<p>There&#8217;s not much more to it. It is single player versus AI. There is a multiplayer mode for two or four people over the network. Two players play head to head, four players play two-on-two.</p>
<p>There is of course room for much ancillary bling: skinnable, unlockable men, unlockable tables, special physics modes, special team count and placement modes, ladder play and of course, as the title of this design suggests, some excellent branding opportunities.</p>
<p>It&#8217;s a simple game, where execution and feel is everything.</p>
<p>-game over- </p>
<p>Thanks for reading another action-packed installment of Design a Day. For background on the Design A Day challenge, take a peek <a title="Challenge: A Design A Day" href="../../../../../2006/02/28/challenge-a-design-a-day/">here</a>  and <a title="Fifty Pounds of Ideas" href="../../../../../2006/03/01/fifty-pounds-of-ideas/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/06/18/dd36-world-cup-foosball/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design-A-Tron Lite</title>
		<link>http://www.chromecow.com/2006/05/21/design-a-tron-lite/</link>
		<comments>http://www.chromecow.com/2006/05/21/design-a-tron-lite/#comments</comments>
		<pubDate>Mon, 22 May 2006 02:49:32 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/21/design-a-tron-lite/</guid>
		<description><![CDATA[Look up at the top of the main page and you&#8217;ll see a new addition.
The Design-A-Tron Lite. Rewritten, a mere 20k, not counting the text for the database. I think it&#8217;s up to about 890+ billion potential combinations.
The new version of the full implementation is in the works. It has&#8230;more.
]]></description>
			<content:encoded><![CDATA[<p>Look up at the top of the main page and you&#8217;ll see a new addition.</p>
<p>The Design-A-Tron Lite. Rewritten, a mere 20k, not counting the text for the database. I think it&#8217;s up to about 890+ billion potential combinations.</p>
<p>The new version of the full implementation is in the works. It has&#8230;more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/21/design-a-tron-lite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now with Phat Beats</title>
		<link>http://www.chromecow.com/2006/05/19/now-with-phat-beats/</link>
		<comments>http://www.chromecow.com/2006/05/19/now-with-phat-beats/#comments</comments>
		<pubDate>Sat, 20 May 2006 04:30:25 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/19/now-with-phat-beats/</guid>
		<description><![CDATA[My little Flash learning project, eRadiRace was in need of a soundtrack, so I dusted off my ancient copy of of Acid and laid down some phat beats* to help keep the gameplay (what there is of it) moving along.
You can groove to it on the eRadiRace page, and remember the late nineties. It has <a href='http://www.chromecow.com/2006/05/19/now-with-phat-beats/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>My little Flash learning project, eRadiRace was in need of a soundtrack, so I dusted off my ancient copy of of Acid and laid down some phat beats* to help keep the gameplay (what there is of it) moving along.</p>
<p>You can groove to it on the <a href="http://www.chromecow.com/game_design/eradirace-using-draw-api/" target="_blank" class="Oh beats, how phat you are.">eRadiRace page</a>, and remember the late nineties. It has a certain Wipeout PSX thing going for it.</p>
<p>Aside: Wipeout XL. Best video-game soundtrack ever. I have a the original game disk lying around here somewhere, and in a move that would be utterly foreign to the DRM-crazy Sony of today, the songs from the game are encoded on the disk as regular old CD audio. </p>
<p>I was going to link to Amazon, and point to a preview clip, but I realized the song I like best from the game isn&#8217;t on the official soundtrack album. Perhaps someone out there can help me identify the artist and song name of this clip:</p>
<pre><code>[audio:http://www.chromecow.com/wp-content/audio/WipeoutXL_Artist_Unknown.mp3]</code></pre>
<p>Some day <a href="http://www.catb.org/jargon/html/R/Real-Soon-Now.html" target="_blank" title="RSN on jargonfile">real soon now</a> I&#8217;m going to write up what I have learned in these Flash projects, and how I see it applying to prototyping in a production environment.</p>
<p>* Beats certified phat by and independent panel of beatologists.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/19/now-with-phat-beats/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://www.chromecow.com/wp-content/audio/WipeoutXL_Artist_Unknown.mp3" length="657408" type="audio/mpeg" />
		</item>
		<item>
		<title>And They Called Me Mad&#8230;Mad I Say!</title>
		<link>http://www.chromecow.com/2006/05/19/and-they-called-me-madmad-i-say/</link>
		<comments>http://www.chromecow.com/2006/05/19/and-they-called-me-madmad-i-say/#comments</comments>
		<pubDate>Sat, 20 May 2006 02:59:55 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/19/and-they-called-me-madmad-i-say/</guid>
		<description><![CDATA[If you have been following the (increasingly misnamed) Design-a-Day posts (and a few of you have), you will know I have made some bold assertions regarding the roadmap for future games development.
It was therefore gratifying to see some of the movers and shakers in the industry make announcements this week that amount to first steps <a href='http://www.chromecow.com/2006/05/19/and-they-called-me-madmad-i-say/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>If you have been following the (increasingly misnamed) Design-a-Day posts (and a few of you have), you will know I have made some bold assertions regarding the roadmap for future games development.</p>
<p>It was therefore gratifying to see some of the movers and shakers in the industry make announcements this week that amount to first steps toward the Chrome Cow&#8217;s mad, glorious vision for the future.</p>
<p>I direct you first to the lads in Redmond, as Microsoft introduces their <a title="Live Anywhere on Gamasutra" name="Live Anywhere" target="_blank" href="http://www.gamasutra.com/php-bin/news_index.php?story=9369">Live Anywhere</a> strategy. To quote the Gamasutra article,</p>
<p>&nbsp;</p>
<blockquote><p>One of the biggest announcements at E3 was that Microsoft is developing Live Anywhere, a network infrastructure that will allow players to communicate and interact seamlessly with the Xbox 360, Windows Vista PCs, and Windows Mobile and Java-based mobile phones.</p></blockquote>
<p>&nbsp;</p>
<p></p>
<p>Combine this with John Carmack&#8217;s latest announcement about Massively Multiplayer Cellphone Games (via CNN),</p>
<p>&nbsp;</p>
<blockquote><p><span class="newsbody"></span>&quot;We&#8217;re probably going to have a sequel to &#8216;Orcs and Elves&#8217; but I&#8217;m really into the idea of a massively multiplayer cell phone title,&quot; he said. &quot;I have absolutely no interest in going and competing with Blizzard in the high end of that market, but a cell phone version might be interesting.&quot; <em>John Carmack</p>
<p> </em></p></blockquote>
<p>&nbsp;</p>
<p>Now we are getting very close to the kind of persistent, cross platform and multi-game shared universe that I have proposed in various guises in <a title="DD7: Towards a Better World" target="_blank" href="http://www.chromecow.com/2006/03/09/dd7-towards-a-better-world/">Towards a Better World</a>, <a title="DD18: Cross Dressing: AR Across Platforms" target="_blank" href="http://www.chromecow.com/2006/03/24/dd18-cross-dressing-ar-across-platforms/">Cross Dressing: AR Across Platforms</a> and <a title="DD32: Open.World" target="_blank" href="http://www.chromecow.com/2006/04/21/open-world/">Open.World</a>.</p>
<p>One Universe, many games, many platforms. You heard it here first.</p>
<p><span class="newsbody"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/19/and-they-called-me-madmad-i-say/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DD35: Lazarus and the Time Machine</title>
		<link>http://www.chromecow.com/2006/05/08/dd35-lazarus-and-the-time-machine/</link>
		<comments>http://www.chromecow.com/2006/05/08/dd35-lazarus-and-the-time-machine/#comments</comments>
		<pubDate>Mon, 08 May 2006 13:47:28 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/08/dd35-lazarus-and-the-time-machine/</guid>
		<description><![CDATA[
The Unspoken Superpowers of the Average Player Character
Though Lazarus and the Time Machine sounds like a pairing straight from the Design-a-Tron, the next few Design-A-Days will be focused on two main metaphors: Time travel and resurrection.
And metaphors they are&#8230;most of the time. I&#8217;m not an academic, so you&#8217;ll have to live with my conjecture and <a href='http://www.chromecow.com/2006/05/08/dd35-lazarus-and-the-time-machine/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div class="caption right"><a title="Design-A-Day Archives" href="http://www.chromecow.com/category/design-a-day/"><img width="90" height="90" alt="Design A Day Icon" title="Design A Day Icon" src="http://www.chromecow.com/wp-content/graphics/Main/Design-A-Day-Sun.gif" /></a></div>
<h4>The Unspoken Superpowers of the Average Player Character</h4>
<p>Though Lazarus and the Time Machine sounds like a pairing straight from the Design-a-Tron, the next few Design-A-Days will be focused on two main metaphors: Time travel and resurrection.</p>
<p>And metaphors they are&#8230;most of the time. I&#8217;m not an academic, so you&#8217;ll have to live with my conjecture and the occasional link to Wikipedia to back up the loose history that comes next.</p>
<h4><a href="http://en.wikipedia.org/wiki/Continue" title="Continue?" target="_blank">The Continue</a></h4>
<p>I think it is a safe bet to assume that the original notion of the Continue was a simple revenue calculation. A player is more likely to pay another quarter to continue playing a game they have already invested time in rather than starting over from scratch. My quick search of the interweb hints at this, though I have found no direct confirmation.</p>
<p>Further, he conjectured, certain limitations inherent to the original arcade machine architecture would have limited the options for allowing the player to continue a game. Due primarily to the small amounts of RAM, if any, available (he pulled out of his assumptions) you would have been limited to either restarting the player from the point of death (no RAM, simply continuing in-situ), or restarting the player at the beginning of a level (saving only the level-start score, all other state restored from ROM).</p>
<p>But how do we continue a game from the point the player died? They&#8217;re dead, after all. Just drop their avatar back in the game, and let them go. Who&#8217;s going to question?</p>
<p>What about starting them back at the beginning of the level? Won&#8217;t that transition be jarring? Will they recognize that they have moved backwards in the game? It&#8217;s not that different than the jump-cut discontinuities of French New Wave Cinema; players will adapt.</p>
<p>And it was from these completely plausible and humble beginings that the two most powerful and successful metaphors of video game history were born: Resurrection and Time Travel.<br /><span id="more-151"></span><br />In the intervening years, the hardware changed, moved into the home on consoles and on home computers. The abilities changed, the requirements and player expectations evolved, but the save and the continue still exert a powerful influence today. This column is going to focus primarily on the way things are generally done. The next two or three will look into directions to expand and play with the underlying mechanics.</p>
<h4>The World Clock</h4>
<p>I&#8217;m going to go out on a limb and say that most saved games use the following model (yes, there are notable exceptions, and I plan to note them, give a fella a chance):</p>
<blockquote><p>The avatar dies. The World Clock is rewound to a previous state, and the player resumes from this earlier time, but with an inexplicable (usually, in game terms) knowledge of future events.</p></blockquote>
<p>There are many ways to embroider this basic mechanic. Marathon&#8217;s Pattern Buffer states this explicitly, most of the time it is just an unspoken superpower possessed by <a href="http://en.wikipedia.org/wiki/Deus_Ex" target="_blank" title="Deus Ex">nanotechnologically enhanced super-agents</a> down to lowly <a href="http://en.wikipedia.org/wiki/Mafia_%28video_game%29" target="_blank" title="Mafia">1930&rsquo;s cabbies</a> alike. Sometimes the granularity is user controlled (Quick Save), other times doled out sparingly by the designer (Resident Evil PS&#8217;s Typewrite Ribbons).</p>
<h4>The Danse Macabre</h4>
<p>Platform games have evolved their own baroque traditions for bringing the player back into the game. The checkpoint is essentially a World Clock rollback. The <a href="http://en.wikipedia.org/wiki/Saved_game#Checkpoints" target="_blank" title="Checkpoints">checkpoint</a> is usually where a player goes when he has run out of lives, triggering a continue. But before such drastic measures, the player must first lose a number of lives*. When a life is lost, the player respawns (resurrects) in place. In-game powerup or score triggers can increase either number of lives, or number of continues. </p>
<p>There are many games who break these conventions (to their great credit), like Prince of Persia: Sands of Time which allows the player not simple reset the world clock, but scrub the timeline (in a limited way). I will talk more about these exceptions next time, and explore some alternatives. Until then. </p>
<p>-game over- </p>
<p>* Another common model is lives lost return you to a checkpoint, a continue bounces you to the start of the level. </p>
<p>Thanks for reading another action-packed installment of Design a Day. For background on the Design A Day challenge, take a peek <a href="../../../../../2006/02/28/challenge-a-design-a-day/" title="Challenge: A Design A Day">here</a>  and <a href="../../../../../2006/03/01/fifty-pounds-of-ideas/" title="Fifty Pounds of Ideas">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/08/dd35-lazarus-and-the-time-machine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DD34: eRadiRace, Flash Game #2</title>
		<link>http://www.chromecow.com/2006/05/04/dd34-eradirace-flash-game-2/</link>
		<comments>http://www.chromecow.com/2006/05/04/dd34-eradirace-flash-game-2/#comments</comments>
		<pubDate>Fri, 05 May 2006 03:53:16 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/04/dd34-eradirace-flash-game-2/</guid>
		<description><![CDATA[
 Well, I finally got eRadiRace in a presentable form. You can read the release notes .
Launch eRadiRace!
Here is a recap of how to play:
eRadiRace is a two player game.
Player 1 Controls: Left/Right/Up/Down Arrows
Player 2 Controls: A/W/S/D Keys
Player&#8217;s crafts leave  colored walls on the playing field. The player who survives the longest without hitting <a href='http://www.chromecow.com/2006/05/04/dd34-eradirace-flash-game-2/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div class="caption right"><img src="http://www.chromecow.com/wp-content/graphics/Main/Design-A-Day-Sun.gif" alt="Design A Day Icon" title="Design A Day Icon" width="90" height="90" /></div>
<p> Well, I finally got eRadiRace in a presentable form. You can <a href="http://www.chromecow.com/game_design/eradirace-using-draw-api/" title="eRadiRacePage">read the release notes</a> .<br />
<h4><a href="http://www.chromecow.com/game_design/eradirace-using-draw-api/" title="Launch eRadiRace!">Launch eRadiRace!</a></h4>
<p>Here is a recap of how to play:</p>
<p>eRadiRace is a two player game.</p>
<p>Player 1 Controls: Left/Right/Up/Down Arrows</p>
<p>Player 2 Controls: A/W/S/D Keys</p>
<p>Player&#8217;s crafts leave  colored walls on the playing field. The player who survives the longest without hitting a wall or the edge of the screen wins that round.</p>
<p>Players can control the speed of their craft.</p>
<p>To speed up, hold down the key in the direction of travel.</p>
<p>To slow down, hold down the keep opposite the direction of travel.</p>
<p>Example: If you are moving up, hold down the Up key / W Key to speed up. To slow down, hold down the Down key/ S Key.</p>
<p>Warning: Going fast makes you larger!</p>
<hr />
<p>-game over-</p>
<p>Thanks for reading another action-packed installment of Design a Day. For background on the Design A Day challenge, take a peek <a href="http://www.chromecow.com/2006/02/28/challenge-a-design-a-day/" title="Challenge: A Design A Day">here</a>  and <a href="http://www.chromecow.com/2006/03/01/fifty-pounds-of-ideas/" title="Fifty Pounds of Ideas">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/04/dd34-eradirace-flash-game-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Best Laid Non-Plans&#8230;</title>
		<link>http://www.chromecow.com/2006/05/04/the-best-laid-non-plans/</link>
		<comments>http://www.chromecow.com/2006/05/04/the-best-laid-non-plans/#comments</comments>
		<pubDate>Thu, 04 May 2006 13:42:38 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/04/the-best-laid-non-plans/</guid>
		<description><![CDATA[Wouldn&#8217;t you know it. The moment I get busy and swear off posting for a bit, I get a set of ideas that will not be denied. So this weekend I&#8217;ll be working on a new series of Design-A-Day posts, which should start showing up Monday. I would preview them, but hey&#8230;that would just be <a href='http://www.chromecow.com/2006/05/04/the-best-laid-non-plans/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Wouldn&#8217;t you know it. The moment I get busy and swear off posting for a bit, I get a set of ideas that will not be denied. So this weekend I&#8217;ll be working on a new series of Design-A-Day posts, which should start showing up Monday. I would preview them, but hey&#8230;that would just be teasing.</p>
<p>Also, eRadiRace is close enough to done that you can pretty safely look for it in all of its two-player splendor sometime this evening.</p>
<p>Woot, as the kids say.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/04/the-best-laid-non-plans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DD33.5.1: News and Updates</title>
		<link>http://www.chromecow.com/2006/05/01/dd3351-news-and-updates/</link>
		<comments>http://www.chromecow.com/2006/05/01/dd3351-news-and-updates/#comments</comments>
		<pubDate>Mon, 01 May 2006 13:25:51 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/05/01/dd3351-news-and-updates/</guid>
		<description><![CDATA[
There is a new (and still incomplete) version of eRadiRace posted.
Launch the new broken thing!
I&#8217;ve come to the conclusion that talking about learning Flash is about as interesting as watching The Paint Drying Channel. So, I&#8217;ll spare you further exposure to that curse. What I will do is post these things up as they are <a href='http://www.chromecow.com/2006/05/01/dd3351-news-and-updates/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div class="caption right"><a title="Design-A-Day Archives" href="http://www.chromecow.com/category/design-a-day/"><img width="90" height="90" alt="Design A Day Icon" title="Design A Day Archives" src="http://www.chromecow.com/wp-content/graphics/Main/Design-A-Day-Sun.gif" /></a></div>
<p>There is a new (and still incomplete) version of eRadiRace posted.</p>
<h4><a href="http://www.chromecow.com/game_design/eradirace-using-draw-api/" title="Launch eRadiRace_Draw!">Launch the new broken thing!</a></h4>
<p>I&#8217;ve come to the conclusion that talking about learning Flash is about as interesting as watching The Paint Drying Channel. So, I&#8217;ll spare you further exposure to that curse. What I will do is post these things up as they are finished in the game design section, along with the source code and pertinent lessons learned. The code may be ugly, but it&#8217;s well commented. </p>
<p>The preview: Flash 8&#8217;s Draw API is your friend.</p>
<h4>Lameness Alert:</h4>
<p>Pre-production is in full swing on the next round of games at Helixe, which means I&#8217;m Johnny-on-the-Spot for the next couple of months.</p>
<p>So yes, expect further slippage on the Design-A-Day. You deserve better, and I&#8217;ll understand if you want to start seeing other designers. It&#8217;s not you&#8230;it&#8217;s me.</p>
<p>I&#8217;ll endeavor to keep you amused and entertained, if not enlightened, in the meantime.</p>
<p>Code to the new version after the jump.</p>
<p><span id="more-147"></span>//&nbsp; Base Contruction for Multiplayer Line Blocking Game</p>
<p>/* This makes heavy use of the Flash 8 Drawing API<br />&nbsp;&nbsp; there is a good overview of it here:<br />&nbsp;&nbsp;&nbsp; http://www.adobe.com/devnet/flash/articles/image_api_print.html<br />*/</p>
<p>//import classes we will be using<br />import flash.display.BitmapData;<br />import mx.managers.DepthManager<br />&nbsp;&nbsp;&nbsp; //http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&amp;file=00002014.html<br />import flash.geom.Rectangle<br />//_______________________________________________________________________<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />// Initialize Stage and Load BG image from Libray&nbsp;&nbsp;&nbsp; <br />var stageW:Number = 485;<br />var stageH:Number = 600;</p>
<p>var bg_mc:MovieClip = this.createEmptyMovieClip (&quot;mc&quot;, 1);<br />var myBmp:BitmapData = new BitmapData (stageW, stageH, true, 0&#215;00000000);</p>
<p>myBmp.draw (BitmapData.loadBitmap (&quot;bg_pic&quot;));<br />bg_mc.attachBitmap (myBmp, 0, &quot;never&quot;, false);<br />&nbsp;&nbsp;&nbsp; //trace(bg_mc.getDepth());</p>
<p>// Sets the Player Avatar Depth above that of the Background<br />Player_1_mc.setDepthTo(DepthManager.kTopmost);<br />&nbsp;&nbsp;&nbsp; //trace(Player_1_mc.getDepth());</p>
<p>//_______________________________________________________________________</p>
<p>// Initialize Sounds</p>
<p>badGoalSound = new Sound();<br />badGoalSound.attachSound(&quot;badGoal&quot;);</p>
<p>//________________________________________________________________________<br />//Initialize all variables <br />gameOver = 0;<br />topSpeed = 7;<br />lowSpeed = 2;</p>
<p>// for Player 1<br />p1_X_Dir = 0;<br />p1_Y_Dir = -1;<br />p1_Speed = 3;<br />p1_X = 243;<br />p1_Y =590;<br />p1_lose = 0;<br />p1_baseScale=1;</p>
<p>//________________________________________________________________________</p>
<p>// Main Game Loop</p>
<p>this.onEnterFrame = function() {<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; if (gameOver == 0) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Old_X = p1_X;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Old_Y = p1_Y;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //__________________________________________________________<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Player_1 Keyboard Input<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (Key.isDown(Key.RIGHT)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_X_Dir != -1){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_X_Dir = 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Y_Dir = 0;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &lt; topSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed += .5;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &gt; lowSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed -= .5;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (Key.isDown(Key.LEFT)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_X_Dir != 1){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_X_Dir = -1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Y_Dir = 0;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &lt; topSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed += .5;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &gt; lowSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed -= .5;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (Key.isDown(Key.UP)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Y_Dir != 1) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_X_Dir = 0;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Y_Dir = -1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &lt; topSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed += .5<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &gt; lowSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed -= .5<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (Key.isDown(Key.DOWN)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Y_Dir != -1) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_X_Dir = 0;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Y_Dir = 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &lt; topSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed += .5;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(p1_Speed &gt; lowSpeed){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Speed -= .5;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //__________________________________________________________<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Update Player_1 Location<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_X += (p1_Speed * p1_X_Dir);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_Y += (p1_Speed * p1_Y_Dir);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //__________________________________________________________&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Collision Detection<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pixelColor = myBmp.getPixel(p1_X, p1_Y);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //trace(&quot;0x&quot;+pixelColor.toString(16)); //outputs : 0&#215;00000000<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //trace(pixelColor);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (pixelColor == 65535) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1_lose = 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gameOver = 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gotoAndPlay(3);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //___Add front array of detectors based on direction<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //__________________________________________________________<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Place and Scale Player 1<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _root.Player_1_mc._x = p1_X;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _root.Player_1_mc._y = p1_Y;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _root.Player_1_mc._xscale = p1_baseScale + (p1_Speed * 23);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _root.Player_1_mc._yscale = p1_baseScale + (p1_Speed * 23);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //__________________________________________________________<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Draw the Line for Player 1<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (p1_Y_Dir == -1) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Width = 7;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Height = p1_Old_Y &#8211; p1_Y + 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_X = p1_X &#8211; 3;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_Y = p1_Y;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myRect = new Rectangle(topleft_X,topleft_Y,p1Width,p1Height);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //The first two parameters are the x/y coordinates of the top left-hand corner of the rectangle. <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //The last two parameters specify the dimensions of the rectangle (width and height).<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myBmp.fillRect(myRect,0xFF00FFFF);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (p1_Y_Dir == 1) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Width = 7;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Height = p1_Y &#8211; p1_Old_Y + 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_X = p1_X &#8211; 3;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_Y = p1_Old_Y;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myRect = new Rectangle(topleft_X,topleft_Y,p1Width,p1Height);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //The first two parameters are the x/y coordinates of the top left-hand corner of the rectangle. <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //The last two parameters specify the dimensions of the rectangle (width and height).<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myBmp.fillRect(myRect,0xFF00FFFF);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (p1_X_Dir == -1) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Height = 7;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Width = p1_Old_X &#8211; p1_X + 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_X = p1_X;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_Y = p1_Y &#8211; 3;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myRect = new Rectangle(topleft_X,topleft_Y,p1Width,p1Height);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myBmp.fillRect(myRect,0xFF00FFFF);&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (p1_X_Dir == 1) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Height = 7;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p1Width = p1_X &#8211; p1_Old_X + 1;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_X = p1_Old_X;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; topleft_Y = p1_Y &#8211; 3;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myRect = new Rectangle(topleft_X,topleft_Y,p1Width,p1Height);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myBmp.fillRect(myRect,0xFF00FFFF)&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; //________________________________________________________________________<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; } // Closes &quot;if(gameOver == 0)&quot;<br />} // Closes &quot;OnEnterFrame&quot;<br />stop();</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/05/01/dd3351-news-and-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DD33.5&#8230;And Holding&#8230;</title>
		<link>http://www.chromecow.com/2006/04/28/dd335and-holding/</link>
		<comments>http://www.chromecow.com/2006/04/28/dd335and-holding/#comments</comments>
		<pubDate>Sat, 29 Apr 2006 02:56:13 +0000</pubDate>
		<dc:creator>Sean Hyde-Moyer</dc:creator>
				<category><![CDATA[Design A Day]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://www.chromecow.com/2006/04/28/dd335and-holding/</guid>
		<description><![CDATA[
Curse you, Flash!
Why solve simple problems, when you can be stumped by hard ones? I appear to have out-clevered myself for the moment. I&#8217;m not finding any good way to test for collsions against the arbitrary line movie_clip I&#8217;m drawing as a trail.
I&#8217;ll paste the code after the jump, if anyone wants to take a <a href='http://www.chromecow.com/2006/04/28/dd335and-holding/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div class="caption right"><a title="Design-A-Day Archives" href="http://www.chromecow.com/category/design-a-day/"><img width="90" height="90" alt="Design A Day Icon" title="Design A Day Archives" src="http://www.chromecow.com/wp-content/graphics/Main/Design-A-Day-Sun.gif" /></a></div>
<p>Curse you, Flash!</p>
<p>Why solve simple problems, when you can be stumped by hard ones? I appear to have out-clevered myself for the moment. I&#8217;m not finding any good way to test for collsions against the arbitrary line movie_clip I&#8217;m drawing as a trail.</p>
<p>I&#8217;ll paste the code after the jump, if anyone wants to take a peek. Perhaps a good night&#8217;s sleep will bring council.</p>
<p><span id="more-145"></span></p>
<p>Nothing shocking:</p>
<p>The green ball is Player_1_mc, the green line is Line_mc<br />
<hr width="100%" size="2" />//  Base Contruction for Multiplayer Line Blocking Game</p>
<p>Player_1_mc.gotoAndStop(10);</p>
<p>JUNK = 0;</p>
<p>badGoalSound = new Sound();<br />badGoalSound.attachSound(&quot;badGoal&quot;);</p>
<p>createEmptyMovieClip(&quot;Line_mc&quot;,1);<br />Line_mc.lineStyle(10,0&#215;00FF00,100); </p>
<p>p1_X_Dir = 0;<br />p1_Y_Dir = -1;<br />p1_Speed = 3;<br />p1_X = 243;<br />p1_Y =590;</p>
<p>topSpeed = 10;<br />lowSpeed = 1;</p>
<p>baseScale=30;</p>
<p>Line_mc.moveTo(p1_X, p1_Y);</p>
<p>this.onEnterFrame = function() {</p>
<p>	// Player_1 Keyboard Input</p>
<p>	if (Key.isDown(Key.RIGHT)) {</p>
<p>		if(p1_X_Dir != -1){</p>
<p>			p1_X_Dir = 1;<br />			p1_Y_Dir = 0;</p>
<p>			if(p1_Speed &lt; topSpeed){<br />				p1_Speed += .5;<br />			}<br />		}<br />		else {<br />			if(p1_Speed &gt; lowSpeed){<br />				p1_Speed -= .5;<br />			}<br />		}<br />	}</p>
<p>	if (Key.isDown(Key.LEFT)) {<br />		if(p1_X_Dir != 1){<br />			p1_X_Dir = -1;<br />			p1_Y_Dir = 0;<br />			if(p1_Speed &lt; topSpeed){<br />				p1_Speed += .5;<br />			}<br />		}<br />		else {<br />			if(p1_Speed &gt; lowSpeed){<br />				p1_Speed -= .5;<br />			}<br />		}<br />	}</p>
<p>	if (Key.isDown(Key.UP)) {<br />		if(p1_Y_Dir != 1) {<br />			p1_X_Dir = 0;<br />			p1_Y_Dir = -1;<br />			if(p1_Speed &lt; topSpeed){<br />				p1_Speed += .5<br />			}<br />		}<br />		else {<br />			if(p1_Speed &gt; lowSpeed){<br />				p1_Speed -= .5<br />			}<br />		}<br />	}	</p>
<p>	if (Key.isDown(Key.DOWN)) {<br />		if(p1_Y_Dir != -1) {<br />			p1_X_Dir = 0;<br />			p1_Y_Dir = 1;<br />			if(p1_Speed &lt; topSpeed){<br />				p1_Speed += .5;<br />			}<br />		}<br />		else {<br />			if(p1_Speed &gt; lowSpeed){<br />				p1_Speed -= .5;<br />			}<br />		}<br />	}</p>
<p>	// Update Player_1 Location<br />	p1_X = p1_X + (p1_Speed * p1_X_Dir);<br />	p1_Y = p1_Y + (p1_Speed * p1_Y_Dir);</p>
<p>	// Place Player 1</p>
<p>	temp_X = p1_X + (25 * p1_X_Dir);<br />	temp_Y = p1_Y + (25 * p1_Y_Dir);	</p>
<p>	_root.Player_1_mc._x = temp_X;<br />	_root.Player_1_mc._y = temp_Y;	</p>
<p>	_root.Player_1_mc._xscale = baseScale+(p1_Speed*11);<br />	_root.Player_1_mc._yscale = baseScale+(p1_Speed*11);</p>
<p>	JUNK += 1;<br />		// Player 1 Collision Detection	</p>
<p>        // detect if edges of the player is colliding with the Maze Walls<br />        if (_root.Player_1_mc.hitTest(getBounds(_root.Line_mc).xMax, _y, true)) {<br />            trace(&quot;Hit xMax &quot;+JUNK);<br />			_root.badGoalSound.start(0,1);<br />        }<br />        if (_root.Player_1_mc.hitTest(getBounds(_root.Line_mc).xMin, _y, true)) {<br />            trace(&quot;Hit xMin &quot;+JUNK);<br />			_root.badGoalSound.start(0,1);<br />        }<br />        if (_root.Player_1_mc.hitTest(_x, getBounds(_root.Line_mc).yMax, true)) {<br />            trace(&quot;Hit yMax &quot;+JUNK);<br />			_root.badGoalSound.start(0,1);<br />        }<br />        if (_root.Player_1_mc.hitTest(_x, getBounds(_root.Line_mc).yMin, true)) {<br />            trace(&quot;Hit yMin &quot;+JUNK);<br />			_root.badGoalSound.start(0,1);<br />        }</p>
<p>	// Draw the Line<br />	Line_mc.lineTo(p1_X, p1_Y);	</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chromecow.com/2006/04/28/dd335and-holding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
