<?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>Pre 101 &#187; game</title>
	<atom:link href="http://pre101.com/blog/tag/game/feed/" rel="self" type="application/rss+xml" />
	<link>http://pre101.com/blog</link>
	<description>Getting the most from your Palm Pre</description>
	<lastBuildDate>Wed, 12 May 2010 19:11:20 +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>A Guide to CSS Transitions in webOS</title>
		<link>http://pre101.com/blog/2009/11/10/a-guide-to-css-transitions-in-webos/</link>
		<comments>http://pre101.com/blog/2009/11/10/a-guide-to-css-transitions-in-webos/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 14:03:45 +0000</pubDate>
		<dc:creator>Dan Kurtz</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[transition]]></category>
		<category><![CDATA[webOS]]></category>

		<guid isPermaLink="false">http://pre101.com/blog/?p=483</guid>
		<description><![CDATA[Bringing Styles Into the 4th Dimension
In the old days, in order to make HTML look the way you wanted, you used more HTML. Every element had to be individually styled, using ribbons of FONT and CENTER and B tags. Then CSS came along and gave web developers the ability to group elements into classes with [...]]]></description>
			<content:encoded><![CDATA[<h3>Bringing Styles Into the 4th Dimension</h3>
<p>In the old days, in order to make HTML look the way you wanted, you used more HTML. Every element had to be individually styled, using ribbons of <code>FONT</code> and <code>CENTER</code> and <code>B</code> tags. Then CSS came along and gave web developers the ability to group elements into classes with similar display characteristics. The world heaved a sigh of relief, and developers started making more complicated websites, confident that site styling would not get in the way of functionality.</p>
<p>Then JavaScript and AJAX became popular, and suddenly it became commonplace for elements to have their classes modified by JavaScript, based on the results of AJAX calls from the server. When an element&#8217;s class changes, it is updated instantaneously to reflect the styles associated with the new class. That&#8217;s fine for some stuff, but sometimes you want the transition between classes to be a bit more, um, classy. Let&#8217;s say your site has a login box that remains hidden on a page until a user clicks the &#8220;log in&#8221; link. If you switch the box&#8217;s style from <code>opacity: 0;</code> to <code>opacity: 1;</code>, it will appear right away by default. If you want it to fade in, you have to write a JavaScript function that increments the opacity bit by bit until it reaches 1, and you have to call that function at the same time as you change the class of the login box. If you have a bunch of login boxes on your site, you have to attach that transitional behavior to each one of them manually. Because CSS doesn&#8217;t have the concept of transitioning through time, animation-heavy websites are stuck in the same place that pre-CSS websites were before CSS came along.</p>
<p><strong>CSS transitions</strong> solve this problem by bringing styles into the 4th dimension. CSS transitions allow web developers to specify that if an element has its style modified, the browser should smoothly transition its appearance to the new style, rather than shifting it abruptly. They&#8217;ve been available in WebKit for <a href="http://webkit.org/blog/138/css-animation/">about two years now</a>, and <a href="http://blog.mozbox.org/post/2009/10/12/Some-new-demos">just appeared in Gecko</a> a few weeks ago. Since they&#8217;re not available in most browsers, webOS developers are among the privileged few who can take advantage of them. Here&#8217;s how.<br />
<span id="more-483"></span></p>
<h3>The Basics</h3>
<p>Suppose your login box is 300px wide and you want it to hide offscreen until a user clicks a link, at which point it should get the class <code>active</code> and appear onscreen.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#loginbox</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">fixed</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-300px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#loginbox</span><span style="color: #6666ff;">.active</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Here&#8217;s a version of that with transitions:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#loginbox</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">fixed</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-300px</span><span style="color: #00AA00;">;</span>
  -webkit-transition-property<span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
  -webkit-transition-duration<span style="color: #00AA00;">:</span> .5s<span style="color: #00AA00;">;</span>
  -webkit-transition-timing-function<span style="color: #00AA00;">:</span> ease-in<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#loginbox</span><span style="color: #6666ff;">.active</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>And here&#8217;s how it&#8217;d look if you wanted the box to fade in and slide in at the same time:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#loginbox</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">fixed</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-300px</span>
  opacity<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  -webkit-transition-property<span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span> opacity<span style="color: #00AA00;">;</span>
  -webkit-transition-duration<span style="color: #00AA00;">:</span> .5s .25s<span style="color: #00AA00;">;</span>
  -webkit-transition-timing-function<span style="color: #00AA00;">:</span> ease-in linear<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#loginbox</span><span style="color: #6666ff;">.active</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  opacity<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Here&#8217;s a brief overview of the three <code>-webkit-transition</code> properties used above;</p>
<dl>
<dt>-webkit-transition-property</dt>
<dd>A space-seperated list of the properties that should be animated when they change. You should only use numerical properties. &#8220;top&#8221;, &#8220;width&#8221;, &#8220;border-width&#8221; and &#8220;opacity&#8221; work, but &#8220;display&#8221;, &#8220;text-decoration&#8221; and &#8220;list-style-type&#8221;, for instance, do not. If this property is omitted, all the properties of an element will be animated. This is probably not what you want.</dd>
<dt>-webkit-transition-duration</dt>
<dd>A space-seperated list of the durations of the transitions of the different objects. &#8220;s&#8221; stands for seconds. This is 0s by default, so you need to set it.</dd>
<dt>-webkit-transition-timing-function</dt>
<dd>From the <a href="http://www.w3.org/TR/css3-transitions/">W3C Working Draft</a>:</p>
<blockquote><p>The &#8216;transition-timing-function&#8217; property describes how the intermediate values used during a transition will be calculated. It allows for a transition to change speed over its duration.</p></blockquote>
<p>&#8220;ease-in&#8221; starts slowly and picks up speed at the end. &#8220;linear&#8221; keeps the same speed all the way through.</p>
</dd>
</dl>
<p>And here are some things that <em>aren&#8217;t</em> supported in webOS (as of 1.2.1), but probably will be eventually, since they are part of WebKit 4:</p>
<dl>
<dt>-webkit-transition-delay</dt>
<dd>Allows you to set a delay before the start of the animation.</dd>
<dt>Events</dt>
<dd>Currently, there&#8217;s no way respond when a transition animation finishes, and this is the main drawback of the CSS approach to transitions. WebKit 4 lets objects listen for animation events, which will let you string a bunch of animations together without needing to call setTimeout() to activate each part of the animation.</dd>
</dl>
<p>In addition to the reduced code clutter, CSS transitions can speed up your app, since they are run from native compiled code, rather than from interpreted JavaScript. Don&#8217;t expect miracles, though &#8212; I&#8217;ve found that webOS can only handle a few animations at one time before things get choppy, and the size and complexity of the elements being animated also makes a difference. I was unable to animate a 320&#215;480 image without choppiness. While there is no programmatic way to cancel the animations, they are smart enough to smoothly reverse themselves if an element&#8217;s properties change in the middle of a transition. If the <code>active</code> class is removed from our login box while it&#8217;s still sliding in, it will slide out starting from wherever it happens to be at the moment the class was removed.</p>
<p>For more on the basics of transitions, check out the <a href="http://www.w3.org/TR/css3-transitions/">W3C docs</a>, and keep in mind that all the properties should be prefixed with <code>-webkit-</code> in webOS.</p>
<h3>Advanced Tricks with <code>-webkit-transform</code></h3>
<p>There&#8217;s another advanced CSS property in webOS, called <strong><code>-webkit-transform</code></strong>, that, when combined with CSS transitions, allows for some neat stuff. <code>-webkit-transform</code> is&#8230;well, I think of it as a mini-CSS within CSS. It lets you apply transformations to an element after it&#8217;s been rendered. In webOS, The available transformations (to my knowledge) are translate, scale, rotate and skew. To scale an element to twice its height and rotate it 30 degress (something that&#8217;s been impossible in HTML until now!), do like this:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#myDiv</span> <span style="color: #00AA00;">&#123;</span>
  -webkit-transform<span style="color: #00AA00;">:</span> scale<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span> rotate<span style="color: #00AA00;">&#40;</span>30deg<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>The crucial difference between scaling a div with <code>-webkit-transform</code> and scaling by manipulating its width and height is that <code>-webkit-transform</code> will scale (or skew or rotate) the entire rendered div and its children smoothly. For more on -webkit-transform, see <a href="http://www.the-art-of-web.com/css/css-animation/">this post at Art of Web</a>.</p>
<p>You can animate <code>-webkit-transform</code> by passing it to <code>-webkit-transition-property</code>. If you&#8217;re using a WebKit browser, hover over the card below to see an example.</p>
<p><img id="cardexample" src="/blog/wp-content/uploads/2009/11/cardback.jpeg" alt="" /><br clear="all" /></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#cardexample</span> <span style="color: #00AA00;">&#123;</span>
  -webkit-transition-property<span style="color: #00AA00;">:</span> -webkit-transform<span style="color: #00AA00;">;</span>
  -webkit-transition-duration<span style="color: #00AA00;">:</span> 1s<span style="color: #00AA00;">;</span>
  -webkit-transform<span style="color: #00AA00;">:</span> rotate<span style="color: #00AA00;">&#40;</span>0deg<span style="color: #00AA00;">&#41;</span> scale<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#cardexample</span><span style="color: #3333ff;">:hover </span><span style="color: #00AA00;">&#123;</span>
  -webkit-transform<span style="color: #00AA00;">:</span> rotate<span style="color: #00AA00;">&#40;</span>180deg<span style="color: #00AA00;">&#41;</span> scale<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1.5</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Our games <a href="http://www.selfawaregames.com/wordace.html">Word Ace</a> and <a href="http://www.selfawaregames.com/cardace.html">Card Ace</a> use this technique for pretty much every animation in the game. It&#8217;s a lot of fun to describe the behavior of a class in CSS and have elements automatically move around when they&#8217;re changed. There were times when I&#8217;d forgotten that I had set transition properties on an element, and was surprised when it started moving around of its own accord.</p>
<h3>Caveats</h3>
<p>Advanced animations are tricky with CSS. For example, the timers in Word Ace and Card Ace use transitions. In order to start a timer countdown, the yellow timer bar gets two classes set: one to set the bar to &#8220;full&#8221;, and another that sets it to &#8220;empty&#8221; with a transition, so that the width of the bar decreases slowly. My first pass at the code was something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">// CSS
<span style="color: #cc00cc;">#timer-bar</span><span style="color: #6666ff;">.full</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">22px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">yellow</span><span style="color: #00AA00;">;</span>
  -webkit-transition-property<span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">;</span>
  -webkit-transition-duration<span style="color: #00AA00;">:</span> 10s<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#timer-bar</span><span style="color: #6666ff;">.full</span><span style="color: #6666ff;">.counting-down</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">0</span>%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// JavaScript</span>
<span style="color: #003366; font-weight: bold;">function</span> startTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> timerBar <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer-bar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  timerBar.<span style="color: #660066;">addClassName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'full'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  timerBar.<span style="color: #660066;">addClassName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'counting-down'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>It didn&#8217;t work. The timer bar never went to &#8220;full&#8221;. After some research, I discovered <a href="http://www.frozen-o.com/blog/2009/02/webkit-css-animation-behavior-weirdness.html">a blog post</a> explaining that changes to element styles are batched during an event, and are processed all at once after an event has finished, for performance reasons. In this case, WebKit sees that the classes I&#8217;m adding would set the element&#8217;s width twice, so it only bothers setting the second width &#8212; 0%. If you need to do a multi-step transition this way, you need to chunk the DOM manipulation into different events:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> startTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> timerBar <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer-bar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  timerBar.<span style="color: #660066;">addClassName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'full'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    timerBar.<span style="color: #660066;">addClassName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'counting-down'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Tricky, huh? This also applies in cases where you need to set a hidden element to <code>display: block;</code> before you move it around.</p>
<h3>In Short&#8230;</h3>
<p>CSS transitions make our games smoother, more lively, and easier to maintain. They&#8217;re not without their pitfalls, but once you master the basics, they&#8217;re an easy, elegant way to add a bit of zest to your UI. For more information (not all of which applies to webOS, unfortunately), see the <a href="http://edr.euro.apple.com/safari/library/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Transitions/Transitions.html">Safari reference</a> and the <a href="http://www.w3.org/TR/css3-transitions/">W3C working spec</a>.</p>
<p><strong>Dan Kurtz is the webOS developer at <a href="http://selfawaregames.com">Self Aware Games</a>, makers of Word Ace and Card Ace for the Pre and Pixi. Both are online multiplayer card games that make extensive use of the advanced JavaScript and CSS techniques available in webOS.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://pre101.com/blog/2009/11/10/a-guide-to-css-transitions-in-webos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Interview With Self Aware Games&#8217; Seppo Helava</title>
		<link>http://pre101.com/blog/2009/09/03/interview-with-self-aware-games-seppo-helava/</link>
		<comments>http://pre101.com/blog/2009/09/03/interview-with-self-aware-games-seppo-helava/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 03:16:36 +0000</pubDate>
		<dc:creator>Pre101</dc:creator>
				<category><![CDATA[Interview]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://pre101.com/blog/?p=241</guid>
		<description><![CDATA[Recently, we had a chance to sit down (virtually speaking) with Seppo Helava, Self Aware Games&#8216; designer and one of the minds behind Word Ace, now available for free the Palm Pre and iPhone.  In the interview we talk a bit about Self Aware Games, Word Ace and their design process.  Read on:

Introduce yourselves and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-258" style="margin-left: 10px;" title="WordAce" src="http://pre101.com/blog/wp-content/uploads/2009/09/WordAce.png" alt="WordAce" width="256" height="384" />Recently, we had a chance to sit down (virtually speaking) with Seppo Helava, <a href="http://www.selfawaregames.com/">Self Aware Games</a>&#8216; designer and one of the minds behind Word Ace, now available for <strong>free</strong> the Palm Pre and iPhone.  In the interview we talk a bit about Self Aware Games, Word Ace and their design process.  Read on:</p>
<p><span id="more-241"></span></p>
<p><strong>Introduce yourselves and tell us about Self Aware Games.</strong></p>
<p>Self Aware Games is a small development studio, started in early 2009, to make games that use the new wave of mobile technology and social networking to let people play games together. That&#8217;s the official statement, at any rate. To put it differently, Self Aware&#8217;s a small group of people from wildly diverse backgrounds who work really hard to make games that people will love to play together.</p>
<p><strong>Who are those people?</strong></p>
<p>Self Aware Games is:</p>
<p>Colin Bulthaup Liotta: Engineer, tech pioneer, jack-of-all-trades<br />
Dan Kurtz: Engineer, thespian, man-about-town<br />
Crystal Silva: Artist, pugilist, gourmand<br />
Seppo Helava: Designer, speed-writer, the guy you&#8217;re talking to now</p>
<p><strong> How did you get started programming games?</strong></p>
<p>Each of us at Self Aware Games had a different start into the industry &#8211; but Self Aware Games, itself, was started earlier this year. Colin and I, who&#8217;ve been friends since we met 13 years ago at MIT, had made a homebrew Game Boy Advance game with some other friends for a contest a few years ago. That project was incredibly fun, both to build, and to play, so when Colin &amp; I each found ourselves with a little unexpected &#8220;free time&#8221; earlier this year, we were both really excited about working together like that again. To round out our skill-set and fill out the team, we brought on Crystal and Dan, both ridiculously talented folks, and Self Aware Games was born!</p>
<p><strong> Can you tell us some about your development process and tools?</strong></p>
<p>The development process is focused around answering the important questions as quickly as possible. Obviously, the most important question is, &#8220;Is the game fun?&#8221; But answering that requires you to break down the game, and figure out where the fun actually <strong>is</strong>.</p>
<p>For instance, with Word Ace, the biggest question is, &#8220;Is it fun to bet on whether you can spell the best word given a poker-style hand made up of letter cards?&#8221; On one hand, that&#8217;s a pretty simple way to describe <strong>the whole game</strong> &#8211; but you&#8217;ll note that nowhere in that question does it say that the game has to be in any sort of electronic form.</p>
<p>Before anyone wrote a single line of code, we answered the question with the cheapest, fastest tools possible: a pen, some index cards, and a stack of loose change. A cheap set of poker chips and an actual deck of cards that we wrote letters on came after that &#8211; but by playing the game with some cheap, quick mockups, and a handful of willing players, we learned a lot. When you want to play &#8220;one more hand,&#8221; and you end half the hands laughing manically, it&#8217;s a sure bet the core mechanics are right.</p>
<p>That took us two days &#8211; it showed us what was critical about the game, where potential weak points were, and what we might do to address them. One of the biggest things we learned was how critical the social aspect of the game was. Winning wasn&#8217;t winning without the ability to mock your opponents. From a gameplay perspective, this kind of rapid prototyping is essential.</p>
<p>For the actual implementation of the game, we took a bit of an unusual direction. When faced with a new platform (compounded by the fact that it was a new piece of hardware with a new OS), getting your bearings is always a challenge. When building a game, making sure the game works properly is always a challenge. Building a game on a new platform compounds those challenges and makes them 10x harder.</p>
<p>What we decided to do was to separate the problems as much as possible.</p>
<p>Dan took on the task of tackling the Mojo SDK and getting familiar with the Pre hardware. He was able to focus on just that task for a reasonable amount of time, because Colin took on the task of getting the game code up and running on a platform we already had experience with. Once the game was running, and relatively stable, Dan was able to build a webOS client for the game, focusing only on the problems specific to webOS.</p>
<p>This made development much easier and much faster than it would otherwise have been, and allowed us to get a really polished, really full-featured game onto a brand-new platform in a very short amount of time.</p>
<p><strong> <img class="alignright size-full wp-image-263" style="margin-left: 10px;" title="WordAcePrototype" src="http://pre101.com/blog/wp-content/uploads/2009/09/WordAcePrototype.jpg" alt="WordAcePrototype" width="384" height="288" />Where did you get the idea for Word Ace?</strong></p>
<p>The idea was sort of shockingly simple, but there&#8217;s a funny story behind it. The first thing we&#8217;d done was to try to figure out what kinds of games the Pre&#8217;s audience would like, what kinds of games the hardware would support, and what kinds of games we&#8217;d want to make. Word games and card games were the obvious choices, and so we bounced ideas for those kinds of games around for a couple days.</p>
<p>At 2 AM one morning, I woke up suddenly, sat bolt upright, and had this idea about how to smash the two together. I banged out an e-mail to the gang, and promptly fell back to sleep. In the morning, when we all got together to talk about it, we were all really psyched for the concept. Turned out, though, that everyone had completely misunderstood my e-mail &#8211; which was sensible, given that it was a garbled, mostly incoherent 2 AM mess &#8211; but that misunderstanding was better than the original idea&#8230; so we went with that, instead.</p>
<p>We ended up making a  prototype the next day with a stack of poker chips and a deck of hand-written index cards. We played for half an hour, and all of us knew this was what we had to do next.</p>
<p><strong> What drew you to the webOS platform?</strong></p>
<p>Obviously, it&#8217;s a feature-rich platform. Coupling things like background processing with the Pre&#8217;s hardware keyboard, GPS, touchscreen, and persistent connectivity &#8211; the possibilities are ridiculous! I can&#8217;t say anything about it at this point, but we&#8217;d laid out some long-term goals for Self Aware, and webOS&#8217;s features enable us to realize some of those goals in a way that can&#8217;t be done on any other platform. I&#8217;m afraid that&#8217;s all I can say about that, for now. <img src='http://pre101.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong> What experiences did you have with other mobile platforms before starting on Word Ace?    Are all your games solely for mobile devices?</strong></p>
<p>Self Aware Games was started at the beginning of the year &#8211; but team members&#8217; development experience ranges across lots of platforms, from the Game Boy Advance to the PSP to current-gen consoles and the iPhone. Our first game as Self Aware Games was Taxiball, for the iPhone, which let us get our feet wet with this incredibly powerful generation of mobile devices.</p>
<p>Our goal isn&#8217;t to focus on a single platform, but rather, a single concept &#8211; using new technology to let people do things together. While things like Twitter let you keep in touch with your friends, it&#8217;s almost more a notification service so that you friends can know what you&#8217;re doing on your own. Things like Word Ace let you have a shared experience with your friends, and interact with them *while you&#8217;re playing*. The goal was to get that &#8220;playing games with friends in your living room&#8221; vibe, but online.</p>
<p>So, to that end, we&#8217;re not focused on a single platform &#8211; we&#8217;re focused on putting that experience wherever it makes sense to have it.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ARczWpi2Jow&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/ARczWpi2Jow&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong> Were there many surprises while developing Word Ace?</strong></p>
<p>This may seem a little weird, but the biggest surprise while developing Word Ace was how few surprises there were. From the original concept, to the paper &amp; pen prototype, to the implementation in-game of everything from the core mechanics to the &#8220;frills&#8221; like the emotes and chat&#8230; almost nothing changed. There were a few tweaks here and there &#8211; the UI changed slightly, and some little details came and went, but the game was incredibly clear to everyone from the start &#8211; and over the course of development, the biggest surprise was how smoothly it all went.</p>
<p>This may not be surprising to the casual observer, but having worked in game development for the better part of the last decade, I&#8217;d never seen anything like it. Every project has something that goes horrendously wrong. This one didn&#8217;t.</p>
<p><strong> How did the roll-out of Word Ace go?</strong></p>
<p>Overall, the roll-out&#8217;s been spectacular. Response to the game has been overwhelmingly positive! We had a couple hiccups during the rollout, but we were able (with Palm&#8217;s gracious support) to iron everything out in a matter of days, and the game&#8217;s been running like butter ever since! People have had some really insightful feedback, which we&#8217;re working to incorporate into our next update &#8211; we&#8217;re constantly striving to make the game the best it can be.</p>
<p><strong> Will we be seeing another game for the Palm Pre in the near future?  Will we be seeing a port of Taxiball?</strong></p>
<p>It&#8217;s very unlikely that Taxiball will be ported to the Pre for a variety of reasons, mostly that Taxiball was written specifically for the iPhone &#8211; and porting it would require rewriting the game from scratch. We&#8217;ve got a huge number of ideas in the pipe, and with only four people, we just don&#8217;t have the manpower for the port. At some point, maybe &#8211; but it&#8217;s not in the cards for the foreseeable future.</p>
<p>But will you see more from Self Aware for webOS? Absolutely. One of the most-requested games for the Pre has been an online multiplayer Texas Hold &#8216;Em. I&#8217;m happy to say that we&#8217;re in the process of fulfilling that request right now. With all the features players love from Word Ace, like online multiplayer, Awards, in-game chat, and our unique emote system, we think our version of Hold &#8216;Em is what everyone&#8217;s been waiting for.</p>
<p><strong> Word Ace has been very well received by the Palm Pre community.  Did you have any concerns or were you confident it would be a success?</strong></p>
<p>Oh, there are always concerns &#8211; but we&#8217;ve had Word Ace up and running for months, so we&#8217;ve been playing it daily for a pretty long time. There were a few times where we were pretty sure things were turning out alright. We had some people over for a BBQ a couple weeks before the launch, and usually, our BBQs eventually turn into Rock Band parties. This time, though, everyone ended up playing Word Ace instead! For hours. Until their batteries all died. And then were talking about it the next day.</p>
<p>At that point, we were pretty sure the game itself was gonna be just fine.</p>
<p><strong> How important do you think is the social aspect of Word Ace to its success?</strong></p>
<p>In two ways, it simply can&#8217;t be overstated. First, when you surprise everyone at the table and take the pot, there&#8217;s no better feeling than knowing that it&#8217;s real people flipping their sad avatars and writing notes in the chat window. That social element makes the game what it is, and there&#8217;s no replacing it with any amount of AI.</p>
<p>Second, people want to play with their friends. That&#8217;s what Self Aware Games has been about from the start. All of our games have a social element to them, and Word Ace is the evolution of what we started to build with the leaderboards in Taxiball. Playing games to kill time is a fine distraction, but playing games with your friends is more than a distraction &#8211; it&#8217;s the kind of interaction that reinforces old friendships, and builds new ones.  And if we can get people to take a minute of their day to interact with each other, then to us, that&#8217;s the biggest success of all.</p>
<p><strong> <img class="alignright size-full wp-image-261" style="margin-left: 10px;" title="WordAceProfile" src="http://pre101.com/blog/wp-content/uploads/2009/09/WordAceProfile.png" alt="WordAceProfile" width="256" height="384" />Will we be seeing some new Word Ace awards soon?</strong></p>
<p>Yes. We actually have a whole handful of Awards that haven&#8217;t rolled out yet &#8211; there&#8217;s a really spectacular series of money-related Awards, and a couple sets of Awards that&#8217;ll roll out when we unveil a couple new features for the game.</p>
<p><strong> Word Ace features premium chip options.  When will that feature be enabled?</strong></p>
<p>That will be ready soon. We wanted to make sure everything was properly up and running, and past any usual launch &#8220;hiccups&#8221; before anyone even had the option of paying for anything in the game. With the last update, we&#8217;ve got those hiccups ironed out, and you&#8217;ll see the chip packages enabled shortly.</p>
<p><strong> Thank you very much for speaking with us.</strong></p>
<p>Thanks!</p>
<p>Updated: Added shot of the prototype game and a link to Seppo&#8217;s video.</p>
]]></content:encoded>
			<wfw:commentRss>http://pre101.com/blog/2009/09/03/interview-with-self-aware-games-seppo-helava/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>First Homebrew Game</title>
		<link>http://pre101.com/blog/2009/07/03/first-homebrew-game/</link>
		<comments>http://pre101.com/blog/2009/07/03/first-homebrew-game/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 13:56:06 +0000</pubDate>
		<dc:creator>Pre101</dc:creator>
				<category><![CDATA[homebrew]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://pre101.com/blog/?p=13</guid>
		<description><![CDATA[Janni Kovacs has produced what I think is the first homebrew game for the Pre: Snakes.  Snakes is your typical &#8216;eat-and-grow-longer&#8217; style game and I&#8217;m sure it will evolve nicely.  We&#8217;ll look forward to finding this on the App Catalog when Palm opens it up.  Unfortunately, if you&#8217;ve (been) updated to the 1.0.4 firmware you [...]]]></description>
			<content:encoded><![CDATA[<p>Janni Kovacs has produced what I think is the first homebrew game for the Pre: <a href="http://u-mass.de/snake">Snakes</a>.  Snakes is your typical &#8216;eat-and-grow-longer&#8217; style game and I&#8217;m sure it will evolve nicely.  We&#8217;ll look forward to finding this on the App Catalog when Palm opens it up.  Unfortunately, if you&#8217;ve (been) updated to the 1.0.4 firmware you will need to follow the <a href="http://forum.ppcgeeks.com/showthread.php?t=73265">SDK app installation instructions</a> (which is not for the faint of heart but is your only option for 1.0.4).  For more on installing homebrew apps you can check out <a href="http://forums.precentral.net/homebrew-apps/188555-read-first-welcome-homebrew-apps-section.html">this PreCentral post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pre101.com/blog/2009/07/03/first-homebrew-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
