<?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>Mobeen Fikree's Homepage</title>
	<atom:link href="http://www.mobeenfikree.com/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mobeenfikree.com/blog</link>
	<description>Blogging about videogames and game development</description>
	<lastBuildDate>Fri, 11 Sep 2009 17:17:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OCD about GUIs: examining Civ Rev for iPhone</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2009/09/11/ocd-about-guis-examining-civ-rev-for-iphone/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2009/09/11/ocd-about-guis-examining-civ-rev-for-iphone/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 17:17:58 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Videogames]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/?p=71</guid>
		<description><![CDATA[Civilization and the iPhone are an obvious match. A mouse-controlled, turn-based strategy is pretty much the ideal game to port to the iPhone. So obvious that it wasn&#8217;t a matter of &#8220;if&#8221; but &#8220;when&#8221; Civ would hit the iPhone. I&#8217;m glad Firaxis took their time with this one, because if it hit before I graduated, [...]]]></description>
			<content:encoded><![CDATA[<p>Civilization and the iPhone are an obvious match. A mouse-controlled, turn-based strategy is pretty much the ideal game to port to the iPhone. So obvious that it wasn&#8217;t a matter of &#8220;if&#8221; but &#8220;when&#8221; Civ would hit the iPhone. I&#8217;m glad Firaxis took their time with this one, because if it hit <a href="http://twitter.com/caffeinemonster/status/3228765498">before I graduated</a>, it would have led to a premature end to my university career.</p>
<p>Or maybe not? Despite my initial excitement, Civilization Revolution for the iPhone left me a little cold. The game itself is an excellent reimagining of the franchise for a more casual crowd, programmed by Sid Meier himself. The interface, on the other hand, leaves much to be desired.</p>
<p><strong>Don&#8217;t drag, tap!</strong></p>
<p>The basic interaction in Civ Rev is moving units across the world. This is done by tap-and-holding a unit, and then dragging to the destination. This doesn&#8217;t work as well as you&#8217;d expect.</p>
<p>The difference between the mouse and the finger as a pointing device is that the mouse cursor lives in the screen, but your finger is attached to your hand. As you drag your finger across the screen your hand gets in the way.</p>
<p>This is especially annoying in Civ Rev because as you drag, the game draws the path your unit is going to take. Because my hand covers most of the screen while dragging, I find myself constantly struggling to both move to my destination as well as review the path which my unit will take. That the fundamental interaction in the game is this frustrating ruins the game for me.</p>
<p><span id="more-71"></span></p>
<p>Solutions? At the very least, instead of commiting the move immediately after the finger is raised off the screen, allow the player to move the destination somewhere else before commiting the command.</p>
<p>A better interface would involve more tapping and less dragging. Upon tapping a unit to select it, the game would show the possible destinations, and allow the player to simply tap to select the destination. The excellent Advance Wars for Nintendo&#8217;s GBA and DS do this, and it works very well.</p>
<p>Civ Rev includes an option that <em>kind of</em> allows this, but it involves and extra tap (to initiate the move command) and is quite glitchy. Why this was not polished up and used as the default movement method is anyone&#8217;s guess.</p>
<p><strong>No love for lefties</strong></p>
<p>Civ Rev contains context-sensitive commands for the unit/city you have selected. These appear in a vertically laid out menu on the right of the screen.</p>
<div style="text-align:center;">
<img style="border: 1px solid black;" src="http://www.mobeenfikree.com/wordpress/wp-content/uploads/civrev0.jpg" />
</div>
<p>Are there no lefties at Firaxis?!</p>
<p>This is <em>incredibly</em> frustrating. This means I need to stretch my left thumb all the way over to right side of the screen. Moreover, like moving, it means that my hand is often covering most of the screen.</p>
<p>A &#8220;lefty flip&#8221; option would be ideal. Move the context-sensitive buttons to the left of the screen, and the non-interactive interface elements to the right, flipping the current interface setup.</p>
<p>I know it seems like a minor point, but it is very frustrating for us lefties.</p>
<p><strong>Yet another pointless use of tilt</strong></p>
<p>The screens to select a leader and advisors are presented using a rather lovely Cover Flow style interface. Similar to Cover Flow, the player swipes to scroll through the cards, and taps to select. Unfortunately, it also uses an awful tilt-to-scroll method, where tilting the device left and right scrolls through the list.</p>
<div style="text-align:center;">
<img style="border: 1px solid black;" src="http://www.mobeenfikree.com/wordpress/wp-content/uploads/civrev1.jpg" />
</div>
<p>This means that if I want to select something, I need to hold my iPhone incredibly steady and then carefully swipe through the list. Thankfully, there is a clear indication of how far you&#8217;ve tilted the device above the cards. This makes the experience <em>slightly</em> less painful.</p>
<p>There&#8217;s no need for this. It adds nothing to the game, it&#8217;s not intuitive, and worst of all, it cannot be disabled.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2009/09/11/ocd-about-guis-examining-civ-rev-for-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gaming Bliss is &#8230;</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2009/07/13/gaming-bliss-is/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2009/07/13/gaming-bliss-is/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 03:18:25 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Videogames]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2009/07/13/gaming-bliss-is/</guid>
		<description><![CDATA[&#8230; playing Street Fighter IV in glorious HD with the exquisite Street Fighter IV Tournament Edition Fightstick.

Obviously, this controller is incredible! Firm stick, tactile buttons, and nicely laid out. It&#8217;s designed with a bunch of well thought out extras too: turbo modes, a built-in storage compartment for the cable, and the ability to lock Xbox [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; playing Street Fighter IV in glorious HD with the exquisite Street Fighter IV Tournament Edition Fightstick.</p>
<p><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/sfiv01.jpg' /></p>
<p>Obviously, this controller is incredible! Firm stick, tactile buttons, and nicely laid out. It&#8217;s designed with a bunch of well thought out extras too: turbo modes, a built-in storage compartment for the cable, and the ability to lock Xbox Guide button. The build quality feels solid without being very heavy. I play with it on my lap very comfortably.</p>
<p><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/sfiv02.jpg' /></p>
<p>Also, the packaging is <em>very</em> fancy. I haven&#8217;t gotten this exciting about an unboxing since my <a href="http://www.mobeenfikree.com/blog/index.php/2008/03/23/shes-beautiful/">MacBook</a>.</p>
<p><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/sfiv03.jpg' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2009/07/13/gaming-bliss-is/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Iteration at play – GTA: Chinatown Wars</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2009/05/23/iteration-at-play-%e2%80%93-gta-chinatown-wars/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2009/05/23/iteration-at-play-%e2%80%93-gta-chinatown-wars/#comments</comments>
		<pubDate>Sat, 23 May 2009 17:24:17 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Videogames]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2009/05/23/iteration-at-play-%e2%80%93-gta-chinatown-wars/</guid>
		<description><![CDATA[Back in December I lamented that GTA IV, while very good, didn&#8217;t significantly improve the game mechanics of GTA. As a long time GTA fan the formula began to run thin. I desperately wanted Rockstar North to make progressive design decisions, to reinvent the mechanics of GTA. I wanted GTA to be fun again, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mobeenfikree.com/blog/index.php/2008/12/24/games-of-2008/" target="_blank">Back in December</a> I lamented that GTA IV, while very good, didn&#8217;t significantly improve the game mechanics of GTA. As a long time GTA fan the formula began to run thin. I desperately wanted Rockstar North to make progressive design decisions, to reinvent the mechanics of GTA. I wanted GTA to be fun again, but all I got was more of the same. However it seems the old adage, good things come in small packages, is still alive and well. GTA: Chinatown Wars for the Nintendo DS delivered <em>exactly</em> what I wanted.</p>
<p>Chinatown Wars addresses core issues with the GTA formula, and does so ingeniously.</p>
<p><span id="more-69"></span></p>
<p>We start with the core mechanic of GTA: losing the cops. Previously this involved running away, hiding, or zooming to the nearest Pay &#8216;n&#8217; Spray. Evading the cops meant giving up the all carnage and destruction which makes GTA so much fun. Chinatown Wars replaces this with a perfectly thought out arcade-style mechanism. Instead of running away, you lose cop cars by smashing them off the road! The more cops you lose this way, the less cop cars are left to chase you. Play your cards right (which does, I admit, involve a <em>bit</em> of hiding out) and the cops are off your tail. Violence just lead to more cops in GTA IV, but here violence is the solution.</p>
<p>The controversial <a href="http://www.t3.com/news/gta-chinatown-wars-has-drug-dealing-mini-game?=36782" target="_blank">drug dealing mini-game</a> is surprisingly good. I worried it would end up being gimmicky &#8220;added shock-value&#8221; feature, but I couldn&#8217;t have been further from the truth. It&#8217;s a modern-day take on Elite. It follows a simplistic &#8220;buy low, sell high&#8221; formula with the added twist of time-limited deals and the occasional drug bust. What should be a simple &#8220;drive from A to B&#8221; exercise always ends up being exciting due to the inherently unpredictable nature of GTA.</p>
<p>Speaking of which, sandboxes are wonderful things, but only if you get fun toys to play with. Rockstar have consistently created cities that feel alive, but also empty when there isn&#8217;t much to do. Chinatown Wars introduces armoured vans dotted around the city which you can hijack for weapons or drugs. Taxis, police cars, ambulances and fire trucks have done similar in the past. But these are minigames which need to be explicitly activated, and play out as (dare I say it) gimmicky side-missions. Hijacking an armoured van is completely seamless. There is no explicit activation here, you simply ram into the vans and/or using some good old fashioned weapon-based violence. Moreover, the vans are filled with valuable drugs or weapons, giving you far more incentive to have a go than the other minigames.</p>
<p>Finally, there are a few small but very welcome changes. Restartable missions were introduced in GTA IV, but here we have the ability to not only restart a mission, but also to skip the drive-to-this-location foreplay that missions often begin with. You can also replay previously successful missions.</p>
<p>I&#8217;m really pleased with what Rockstar have done here and, judging by the <a href="http://www.metacritic.com/games/platforms/ds/grandtheftautochinatownwars" target="_blank">rave reviews</a>, the critics agree. I can say without a doubt that Chinatown Wars is the most fun I&#8217;ve had playing GTA in years. By making daring design changes in the smaller, cheaper to produce GTA game, Rockstar has been able to innovate without risking their flagship title (GTA IV). I&#8217;ll be very surprised if we don&#8217;t see some (if not all) these excellent mechanics in the next release of GTA on consoles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2009/05/23/iteration-at-play-%e2%80%93-gta-chinatown-wars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tonight: Franz Ferdinand</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2009/05/12/tonight-franz-ferdinand/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2009/05/12/tonight-franz-ferdinand/#comments</comments>
		<pubDate>Wed, 13 May 2009 03:46:35 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2009/05/12/tonight-franz-ferdinand/</guid>
		<description><![CDATA[The odds were stacked against them. Franz Ferdinand&#8217;s self-titled debut album was a good one, but there was still this feeling that they were a one-hit wonder with Take Me Out. Their second album, You Could Have It So Much Better, didn&#8217;t really do it for me. So when the band starting talking about abandoning [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/tonight.jpg' alt='Tonight: Franz Ferdinand' style='float: right; padding: 0 16px 8px 0;' />The odds were stacked against them. Franz Ferdinand&#8217;s self-titled debut album was a good one, but there was still this feeling that they were a one-hit wonder with Take Me Out. Their second album, <em>You Could Have It So Much Better</em>, didn&#8217;t really do it for me. So when the band starting talking about abandoning their sound for something more electronica, well &#8230; like I said, the odds were stacked against them. The album turning out well at all would be nice. That it&#8217;s their best album yet is nothing short of a miracle.</p>
<p>A reasonably established band going off and doing something different is a recipe for disaster, but when it turns out well, it&#8217;s oh-so rewarding. Fatboy Slim&#8217;s <em>Palookaville</em> is the last time I recall an artist reinventing themselves like this. Franz Ferdinand do much the same, albeit not to the same extent. They&#8217;re still hanging on to their (excellent) edgy vocals and indie sounds, but there&#8217;s a distinct electronica influence to the music. Tonight manages to work as a dance album as much as it does an indie album. Ulysses, their debut single and first song off the album, captures this perfectly. Smooth lyrics, an electronica vibe, and some very strong vocals definitely inspired my confidence that Franz could actually pull this off. The album moves from one catchy, energetic song to the next at a relentless pace hitting the apex at Bite Hard. Working toward the conclusion Tonight mellows out, producing memorable songs with a different, but very distinctly Franz, style.</p>
<p>There isn&#8217;t a weak song on the album, although some may argue it lacks variation. I wouldn&#8217;t disagree, but I&#8217;d also say that the sound is interesting enough to hold my interest from start to end over the course of dozens and dozens of listens. <em>Tonight: Franz Ferdinand</em> is a great album with a unique new sound. It&#8217;ll appeal to the electronica fan and the indie fan alike. And if, like me, you happen to adore both genres, you&#8217;re in for a real treat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2009/05/12/tonight-franz-ferdinand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Games of 2008</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2008/12/24/games-of-2008/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2008/12/24/games-of-2008/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 00:09:49 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Videogames]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2008/12/24/games-of-2008/</guid>
		<description><![CDATA[As we near the end of December the time to reflect over games we&#8217;ve played over the year has arrived. I&#8217;ve compiled my list of the best games I&#8217;ve played this year along with lots of text explaining why the heck you should care about them. Enjoy!
6. Grand Theft Auto 4
I agonized over including this. [...]]]></description>
			<content:encoded><![CDATA[<p>As we near the end of December the time to reflect over games we&#8217;ve played over the year has arrived. I&#8217;ve compiled my list of the best games I&#8217;ve played this year along with lots of text explaining why the heck you should care about them. Enjoy!</p>
<p><strong>6. Grand Theft Auto 4</strong><br />
I agonized over including this. GTA4 is fun, but it fails to do anything interesting with the GTA format. I&#8217;ve been a fan since the first (top-down view) game, so I was heartbroken to find that GTA4 is essentially The Same Game With Better Graphics<sup>TM</sup>. The few tweaks in there are great. Specifically, the wanted system now displays the police patrol radius on your mini-map telling you how far you need to drive to lose your wanted rating. Brilliant! I just wish Rockstar North did more of this sort of thing, i.e.: iterating on the core mechanics of GTA.</p>
<p><span id="more-67"></span></p>
<p>Having said that, experiencing Liberty City in its HD glory for the first time is an amazing experience. Never has a city been so well realized in a game before. It&#8217;s been said about many an open world game before, but Liberty City really does feel alive. There are <em>approximately</em> a million different little touches you notice over the course of playing the game. How the radio keeps playing when you leave a car. How people stand around and chat about things. How every citizen looks and dresses a little differently. I really could go on forever.</p>
<p>The setting should have been a platform for great storytelling, but GTA4 is very disappointing here. The protagonist, Nico Bellic, is a likable character. The dialogue is excellent: short, to-the-point and very witty. The plot, the tale of an immigrant and the American Dream, is an interesting one. The problem is that it never really materializes. It starts off strong, but ends up getting lost in the endless stream of repetitive missions, most of which are only loosely related to the plot, if at all. Which is a shame, because I think there is a lot of potential, especially in the colourful cast of characters.</p>
<p>After ten years, I think I&#8217;m getting a bit tired of the formula. Curiously, I put a ridiculous amount of hours into this game. So for the sole reason of being oddly addictive despite knowing that I&#8217;ve done it all before, GTA4 gets included.</p>
<div style='text-align:center'>
<img class='thumb' src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/gta4.jpg'/><br />
&nbsp;
</div>
<p><strong>5. Everyday Shooter</strong><br />
Everyday Shooter picks up where Rez left off: a beautiful fusion of abstract art and procedural music.</p>
<p>Mechanically, it&#8217;s a solid game, but it&#8217;s nothing spectacular. Your avatar (a tiny white dot) moves sluggishly and is often difficult to see. You can only shoot in 8 directions even when played with dual analog sticks. It seems to hold little promise, but the level design is where it all comes together. Everyday Shooter uses the concept of an &#8220;album game&#8221;, where each level/song is a different take on the &#8220;explode&#8221; mechanic (as made famous by Every Extend). Every level is a new world to explore, each with its own unique mechanics, enemies, music, and art. This works wonders.</p>
<p>It&#8217;s not best shooter, but Everyday Shooter is one of those games which are more than the sum of its parts. Playing it in a dark room with loud speakers and a big TV is gaming bliss.</p>
<div style='text-align:center'>
<img class='thumb' src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/everyday_shooter.jpg'/><br />
&nbsp;
</div>
<p><strong>4. Gears of War 2</strong><br />
CHAINSAW GUN! GoW2 is more of the same, but that&#8217;s not a bad thing. Epic took GoW and tweaked it into run-and-gun gaming perfection. Satisfying combat, meaty guns, and an excellent cover system contribute toward this. The level design is littered with lots of fun set pieces. Heck, even the laughable storyline adds to the charm. Of course, playing co-op is the <strong>only</strong> way to go. There&#8217;s nothing more fun than making intricate strategies with your co-op buddy followed by attempt after attempt at it going oh-so-horribly wrong. Things go south when the game strays from the excellent run-and-gun formula. The vehicles are mediocre, the bosses needlessly frustrating, and the platforming level is perhaps the most appallingly ill-conceived videogame sequence I&#8217;ve experienced in all of 2008. Ultimately, my critical analysis leads me to belie- CHAINSAW GUN! BBBRRRRRRR!!!! *splat* *splat*.</p>
<div style='text-align:center'>
<img class='thumb' src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/gow2.jpg'/><br />
&nbsp;
</div>
<p><strong>3. World of Goo</strong><br />
World of Goo is one of those games that puts a huge stonkin&#8217; grin on my face every time I boot it up. After a long day of work, I could always rely on World of Goo to cheer me right up. The initial loading screen is filled with little jokes. Then the upbeat (and incredibly catchy) music kicks in. Already I&#8217;m grinning, and that&#8217;s just the menu! The game itself of course is even better, with great music, quirky characters, cute sound FX, and little gags hidden all over the place. There&#8217;s something about a joke hidden away that is inherently funnier than one that is simply presented to you. 2D Boy gets this.</p>
<p>The game itself relies on a bridge-building/physics mechanic which has that Nintendo-esque &#8220;quick to pick up, but plenty of depth&#8221; quality to it. The mechanics are presented as you go through the levels in a simple, non-intrusive way. This is backed up with levels that constantly challenge and surprise you with their inventiveness. There are plenty of &#8220;Aha!&#8221; moments to be had.</p>
<p>The best thing I can say about World of Goo is that I couldn&#8217;t stop playing the damn thing! I constantly wanted to know, &#8220;what are they going to throw at me next?!&#8221; So I&#8217;d click on the next level and get sucked into the gleeful world of Goo!</p>
<div style='text-align:center'>
<img class='thumb' src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/wog.jpg'/><br />
&nbsp;
</div>
<p><strong>2. Mirror&#8217;s Edge</strong><br />
Mirror&#8217;s Edge comes in a close second. Yes, my experience was also filled with retries and weak gunplay, but that is missing the point entirely. The movement, the speed, and the physicality that Faith displays, that&#8217;s the point. Playing Mirror&#8217;s Edge is a new experience. You can&#8217;t say that about many games.</p>
<p>The fluid player movement is worthless without controls to back them up. Mirror&#8217;s Edge delivers with elegantly designed controls. Three buttons (up action, down action, turn) perform all the moves in the game. These aren&#8217;t arbitrary combos to memorize, they are logical, context sensitive actions. Push &#8220;up action&#8221; to jump. Do it while running against a wall will do a wall run. Do it while on a wall run will make you jump off the wall. Push down action when you&#8217;re about to land will give you a rolling finish. Simple. Logical. Ingenious.</p>
<p>Mirror&#8217;s Edge feels a bit like a good shoot-em-up. It&#8217;s part memorization, part improvisation. And lots of trying again and again.</p>
<div style='text-align:center'>
<img class='thumb' src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/mirr_edge.jpg'/><br />
&nbsp;
</div>
<p><strong>1. Braid</strong><br />
To describe Braid in one word: mind-fuck. And a wonderful one at that. It&#8217;s been so long since a game has made me sit down and stare at it for 20 minutes, finally producing an &#8220;Aha!&#8221; followed by solving a puzzle. I described World of Goo as having plenty of &#8220;Aha!&#8221; moments. Braid is a series of sixty incredible &#8220;Aha!&#8221; moments.</p>
<p>Braid is split up into 5 worlds, each with it&#8217;s own unique time mechanic. Each puzzle is entirely unique. Puzzles will build upon other puzzles, but you&#8217;ll never solve two puzzles in the same manner. As a result, the game is constantly challenging you to experiment and to think differently.</p>
<p>Finally, and I say this without a hint of hyperbole, Braid has an ending sequence that is the greatest meld of story and game mechanism I have ever witnessed. Definitely the best game I&#8217;ve played all year.</p>
<div style='text-align:center'>
<img class='thumb' src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/braid.jpg'/><br />
&nbsp;
</div>
<p><strong>Closing thoughts</strong><br />
It&#8217;s worth noting what a great year it&#8217;s been for graphics. I left this out of the individual write ups so I could mention it here. Four of the games on this list feature non-realistic art styles, and remarkably, each of them are unique. Everyday Shooter with it&#8217;s abstract weirdness. World of Goo with it&#8217;s charming cartoony art. Mirror&#8217;s Edge with its stark, flat-shaded, and almost sterile environments. And finally Braid with its beautiful watercoloured backgrounds. Even GTA4 and Gears, while firmly set in reality, have a stylized look to them.</p>
<p>Also, 2008 will definitely be remembered as the year of the indie. Games like Braid, Castle Crashers, Everyday Shooter and World of Goo made their debuts this year. They made it with critical acclaim and commercial success. This is a good sign for things to come.</p>
<p>Finally, I should point out that I haven&#8217;t played Fable 2, Dead Space and Far Cry 2 as yet. I suspect at least one (if not all) of them would have made it onto the list had I found the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2008/12/24/games-of-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bezzy DevBlog: Best of the rest, Part 2</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2008/12/01/bezzy-devblog-best-of-the-rest-part-2/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2008/12/01/bezzy-devblog-best-of-the-rest-part-2/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 16:48:06 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Bezzy]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2008/12/01/bezzy-devblog-best-of-the-rest-part-2/</guid>
		<description><![CDATA[When I said I&#8217;d post part 2 &#8220;soon&#8221;, I really meant, &#8220;I&#8217;ll totally forget about posting it for four months and then post it soon&#8221;. Without further delay then, dynamic tessellation (part 2) and a tech demo called BezzyDemo.

Dynamic Tessellation, Part 2
Part 1 went through the initial attempts at dynamic tessellation. They were good but [...]]]></description>
			<content:encoded><![CDATA[<p>When I said I&#8217;d post part 2 &#8220;soon&#8221;, I really meant, &#8220;I&#8217;ll totally forget about posting it for four months and <em>then</em> post it soon&#8221;. Without further delay then, dynamic tessellation (part 2) and a tech demo called BezzyDemo.</p>
<p><span id="more-66"></span></p>
<p><strong>Dynamic Tessellation, Part 2</strong></p>
<p><a href="http://www.mobeenfikree.com/blog/index.php/2008/07/22/bezzy-devblog-dynamic-tessellation-part-1/">Part 1</a> went through the initial attempts at dynamic tessellation. They were good but I wanted to do better. Turns out, doing better is really hard. <img src='http://www.mobeenfikree.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I ended up using a really simple algorithm that works well most of the time, but still isn&#8217;t as &#8220;perfect&#8221; as I wanted.</p>
<p>The algorithm works like this:</p>
<pre>
segment bézier curve into 4 edges
change = true

while (change)
{
   change = false

   for (each edge)
   {
      if ( edge.length > THRESHOLD )
      {
         change = true
         split the edge in half
      }
   }
}
</pre>
<p>Basically, we start off with 4 edges, and tessellate the curve until no edge is longer than THRESHOLD pixels. Using a small enough value for THRESHOLD (I used 8.0) ensures that the curve will appear be smooth when rendered. The problem with this method is that it doesn&#8217;t work well for small paths. Given a path that is small enough, a complete change in slope can happen within 8 pixels. This method would most likely skip the slope entirely, thus not really rendering the curve correctly.</p>
<p>I suspect a better solution would be to combine the threshold idea presented here with the methods I discussed in Part 1.</p>
<p><strong>BezzyDemo</strong></p>
<p>BezzyDemo tied it all together. The idea was to do something subtle. Not too flashy, not too complicated, but pretty, in that abstract art kind of way. It also had to show off all the features of Bezzy. I&#8217;ll let the result speak for itself.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy20.png'><img class="thumb"  src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy20th.png'/></a>&nbsp;<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy21.png'><img class="thumb" src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy21th.png'/></a>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2008/12/01/bezzy-devblog-best-of-the-rest-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bezzy DevBlog: Best of the rest, Part 1</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2008/08/04/bezzy-devblog-best-of-the-rest-part-1/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2008/08/04/bezzy-devblog-best-of-the-rest-part-1/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 04:23:32 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Bezzy]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2008/08/04/bezzy-devblog-best-of-the-rest-part-1/</guid>
		<description><![CDATA[So it&#8217;s been a while since I&#8217;ve posted an update, but that&#8217;s not to say progress hasn&#8217;t been made. Very far from it. Bezzy was due last week, which means I spent all my days (and nights) scrambling to get it done. This has left me with little time to update this blog. I ended [...]]]></description>
			<content:encoded><![CDATA[<p>So it&#8217;s been a while since I&#8217;ve posted an update, but that&#8217;s not to say progress hasn&#8217;t been made. Very far from it. Bezzy was due last week, which means I spent all my days (and nights) scrambling to get it done. This has left me with little time to update this blog. I ended up getting everything I wanted done in time, albeit not quite as polished as I would have liked. Still, that&#8217;s how software development goes.</p>
<p>So what have I been working on for the past week? Keyframe animation, two Non-Photorealistic Rendering (NPR) fill techniques, and a little tech demo to tie all of this together. I also visited my &#8220;friend&#8221; Dynamic Tessellation for a bit.</p>
<p>We&#8217;ll talk about the first two today. Part two will be posted &#8220;soon&#8221;.</p>
<p><span id="more-64"></span></p>
<p><strong>Keyframe animation</strong></p>
<p>This along with <a href="http://www.mobeenfikree.com/blog/index.php/2008/07/18/bezzy-devblog-morphing-animation/">morphing animation</a> forms the animation module of Bezzy. I was a bit unsure whether something as high-level as animation would work in a very low-level API, but it turned out really well. What&#8217;s neat is that there&#8217;s a good deal of flexibility to allow for the type of &#8220;reactive&#8221; animation that videogames require. So you can start an animation and (with a bit of work) tweak it on a per-frame basis depending on what the state of the game is.</p>
<p>Keyframe animation does two things: (a) it allows you to make an object move along a path, and (b) rotate and scale an object any number of times along the way.</p>
<p>Here&#8217;s an example screenshot. I&#8217;ve super-imposed the animation on the same image to save me the trouble of posting a video. As you can see, the diamond is scaling differently on both axes, as well as rotating clockwise and counter-clockwise along the path. The path it travels on is rendered in the background, but this is obviously my doing, not the API.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy16.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy16th.png'/></a>
</div>
<p><strong>Non-Photorealistic Rendering</strong></p>
<p>The field of Computer Graphics is focused on achieving photorealistic rendering. Thankfully, some smart people decided this was a <em>terrible</em> goal, and started researching aspects of non-photorealistic rendering. This has lead to all sorts of fantastic rendering techniques that are more art-like, and mostly quite abstract. I implemented two NPR techniques right into Bezzy.</p>
<p>The first is Stippling. Stippling is using dots to simulate light and shading. This is problematic, because Bezzy is 2D, and therefore doesn&#8217;t have any light or shading. To compensate for that, I simulate light for stippling. Basically, to stipple fill a path you have to provide a light position and radius.</p>
<p>This was the last feature I implemented, so it was a bit rushed. I&#8217;m not entirely pleased with it, but it works reasonably well.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy17.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy17th.png'/></a>
</div>
<p>Contour filling, on the other hand, worked out fantastically. Like contours on a map, this renders a gradient fill of your path using discrete colours. The number of contours and their distance is customizable, as the screenshot below demonstrates.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy18.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy18th.png'/></a>
</div>
<p>I plan to take this a step further and write a &#8220;smooth contour&#8221; fill mode to make the transitions between the contours gradient, which would create a sort of halo of the path. Presently, I can do this by increasing the contour count to a very big number, but there&#8217;s a very noticeable hit on performance.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy19.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy19th.png'/></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2008/08/04/bezzy-devblog-best-of-the-rest-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bezzy DevBlog: Bounds on fills</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2008/07/27/bezzy-devblog-bounds-on-fills/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2008/07/27/bezzy-devblog-bounds-on-fills/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 21:33:36 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Bezzy]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2008/07/27/bezzy-devblog-bounds-on-fills/</guid>
		<description><![CDATA[In my last post, I said I&#8217;d talk about how I fixed a rather &#8220;fun glitch&#8221; which related to fill modes. Just to refresh your memory, it looked a little something like this:

If you read my last post you can probably figure out what&#8217;s going on here. The fill geometry I&#8217;m rendering is smaller than [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post, I said I&#8217;d talk about how I fixed a rather &#8220;fun glitch&#8221; which related to fill modes. Just to refresh your memory, it looked a little something like this:</p>
<div style='text-align: center'><a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy13.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy13th.png'/></a></div>
<p>If you read my <a href='http://www.mobeenfikree.com/blog/index.php/2008/07/25/bezzy-devblog-the-big-idea-behind-fills/'>last post</a> you can probably figure out what&#8217;s going on here. The fill geometry I&#8217;m rendering is smaller than the path itself. Here&#8217;s a screenshot that makes this a bit more obvious:</p>
<div style='text-align: center'><a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy14.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy14th.png'/></a></div>
<p>This is possible because the programmer has the ability to scale the fill and position the fill origin wherever s/he would like. What I need to do is ensure that the entire path is always filled, regardless of the fill parameters. This means that the geometry needs to be big enough to go from the fill origin to every vertex that creates the path. </p>
<p><span id="more-63"></span></p>
<p>An obvious solution is to loop through each vertex (and control point for Bézier curves) finding the distance between the point and the fill origin. Keep track of the largest value and use that as the width of the fill. That works, but we can do a bit better.</p>
<p>Instead of doing a distance check with each vertex, why not do a distance check with each corner of the path? My optimized solution calculates the bounding box for each path on creation. When the path is rendered it simply checks the distance between the fill origin and each corner of the bounding box. The maximum distance becomes the size of the fill geometry. Simple optimization, but it takes us from O(n) efficiency to O(1).</p>
<p>Now that we know what the size of the geometry should be, what do we do with the extra space? I went with the easiest solution of just &#8220;clamping&#8221; the fill, which means it&#8217;ll use whatever colour is at the edge of the fill. In the future, I could make this a configurable setting, similar to OpenGL. This would make tiling possible by allowing the fills to repeat or mirror.</p>
<div style='text-align: center'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy15.png'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2008/07/27/bezzy-devblog-bounds-on-fills/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bezzy DevBlog: The big idea behind fills</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2008/07/25/bezzy-devblog-the-big-idea-behind-fills/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2008/07/25/bezzy-devblog-the-big-idea-behind-fills/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 22:01:09 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Bezzy]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2008/07/25/bezzy-devblog-the-big-idea-behind-fills/</guid>
		<description><![CDATA[I&#8217;ve taken a break from working on the confusing world of dynamic tessellation to work on the slightly less confusing world of fill modes. While the screenshots I&#8217;ve been posting should make it obvious that I already have filling working, it is still mostly prototype code, and therefore is filled with holes, hacks, and fun [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve taken a break from working on the confusing world of dynamic tessellation to work on the slightly less confusing world of fill modes. While the screenshots I&#8217;ve been posting should make it obvious that I already have filling working, it is still mostly prototype code, and therefore is filled with holes, hacks, and fun glitches like this:</p>
<div style='text-align: center'><a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy13.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy13th.png'/></a></div>
<p>We&#8217;ll go into how I fixed that in my next post. I want to spend this post talking about how I got fill modes to work in the first place.</p>
<p>Anyone who has done any work in OpenGL will tell you that creating gradient filled shapes is a trivial task. All the programmer has to do is assign colours to each vertex in a triangle and OpenGL will do all the magic colour interpolation for you. Unfortunately, this isn&#8217;t good enough for Bezzy. If we can only colour on a per-vertex basis, what happens when a gradient fill is applied to a path where the colour changes <em>between</em> vertices?</p>
<p>For example, let&#8217;s say we have a rectangle filled with a red-green-blue linear gradient fill. The rectangle has four vertices, one at every corner. We can colour those vertices red or blue, but since there are no vertices in the middle of the rectangle, we can&#8217;t colour anything green.</p>
<p>The obvious solution is to use pixel shaders to do the filling. Bezzy is targeted at computers with fixed-pipeline graphics cards, so I didn&#8217;t even consider that solution. Instead, I used a magic little videocard feature called the stencil buffer.</p>
<p><span id="more-59"></span></p>
<p>The stencil buffer is a buffer (duh!) on the GPU similar to the depth buffer. However, instead of storing depth data, it stores whatever data you&#8217;d like by drawing geometry to the buffer using a set of rules. Then, when drawing to the colour buffer (the screen) you can run &#8220;stencil tests&#8221; on the subsequent drawing operations. Stencil tests determine whether or not a pixel will be drawn by examining the value at the same pixel-position on the stencil buffer. Think of all this as an elaborate form of masking.</p>
<p>Using the stencil buffer, I came up with the following algorithm to render a linear or radial filled path:</p>
<p>1. Render the filled path to the stencil buffer using a certain value. Let&#8217;s say the value is &#8220;1&#8243; in this example.</p>
<p>2. Set OpenGL to render to the colour buffer using a stencil rule that states, &#8220;only draw if the stencil buffer value of this pixel equals to 1&#8243;.</p>
<p>3. Render some simple geometry representing the fill to the colour buffer. For a linear fill, draw a gradient coloured quad, and for a radial fill draw a gradient coloured circle. This geometry will definitely fall out of the bounds of the shape, but the stencil test will ensure that the only pixels within the path are actually drawn.</p>
<p>I hope that made sense. If not, here&#8217;s a diagram that might help.</p>
<div style='text-align: center'>
<img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy12.png' alt='bezzy12.png' /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2008/07/25/bezzy-devblog-the-big-idea-behind-fills/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bezzy DevBlog: Dynamic Tessellation, Part 1</title>
		<link>http://www.mobeenfikree.com/blog/index.php/2008/07/22/bezzy-devblog-dynamic-tessellation-part-1/</link>
		<comments>http://www.mobeenfikree.com/blog/index.php/2008/07/22/bezzy-devblog-dynamic-tessellation-part-1/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 16:59:30 +0000</pubDate>
		<dc:creator>Mobeen</dc:creator>
				<category><![CDATA[Bezzy]]></category>

		<guid isPermaLink="false">http://www.mobeenfikree.com/blog/index.php/2008/07/22/bezzy-devblog-dynamic-tessellation-part-1/</guid>
		<description><![CDATA[I&#8217;ve spent the past couple of days refactoring a tonne of code. That&#8217;s the problem with writing prototype/proof of concept code &#8230; eventually you need to go back and make sure it all works! With that out of the way (and the code looking pretty spiffy), I focused my attention on dynamic tessellation. I haven&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the past couple of days refactoring a tonne of code. That&#8217;s the problem with writing prototype/proof of concept code &#8230; eventually you need to go back and make sure it all works! With that out of the way (and the code looking pretty spiffy), I focused my attention on dynamic tessellation. I haven&#8217;t come up with an optimal solution yet, but I&#8217;ve made some good progress.</p>
<p>First, what the heck is tessellation, and why is my approach dynamic? Tessellation is breaking up smooth paths (in our case, Bézier curves) into a number of smaller lines. The more lines we use, the closer the approximation is to the actual curve, and as a result, the smoother the lines appear to be. Videocards are unable to render Bézier curves, they can only render points, lines and triangles. As a result, tessellation is critical to rendering curves on hardware.</p>
<p>Now the &#8220;dynamic&#8221; bit. This has to do with how we perceive smoothness. Basically, the bigger a curve appears on screen, the more lines are required to make it appear smooth. By scaling the amount of tessellation we use on the curves, we can ensure that we always have smooth looking curves using a minimal amount of lines.</p>
<p>Let&#8217;s take a look at the different approaches I took to solving this problem. I used three paths which I will creatively call (from left to right) Path 1, Path 2 and Path 3. The screenshot on the left shows the paths rendered in debug mode. Each line is coloured differently to make the tessellation obvious. The screenshot on the right shows how it would actually appear.</p>
<p><span id="more-56"></span></p>
<p><strong>The naive approach</strong></p>
<p>When I started off with my prototype, I simply used 16 edges for every curve regardless of it&#8217;s size or complexity. As you can see, some paths work out better than others. In particular, Path 1 looks terrible.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy06.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy06th.png'/></a><a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy07.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy07th.png'/></a>
</div>
<p><strong>Length by control points</strong></p>
<p>This method scales the tessellation by using the length of the curve. The longer the curve, the more tessellation required. We calculate the length by finding the distance between p0, c0, c1, p1 and multiplying by the scaling factors.</p>
<p>It then uses this rather arbitrary formula to figure out tessellation:</p>
<p>number of edges = 16 * (quicklength / 10000.0f) + 1<br />
<small>(quicklength is defined as the length sans the square root part &#8230; it&#8217;s an extra operation I save, and I&#8217;m not terribly interested in the actual length, just some form of measuring relative distances)</small></p>
<p>While Path 2 &#038; 3 are look quite nice, Path 1 has visible edges. This is because the more extreme the shape of the path, the further the control points are from the actual curve. Take a look at the debug screenshot below to see what I mean.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy08.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy08th.png'/></a><a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy09.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy09th.png'/></a>
</div>
<p><strong>Length by coarse sampling</strong></p>
<p>I solve the issue above by using coarse sampling. Instead of using the control points I sample the curve at t=0.00, 0.25, 0.50, 0.75, 1.00 and find the &#8220;quicklength&#8221;. This yields better results, but there are still problems.</p>
<p>The middle of Path 1 is too finely tessellated whereas Path 3 isn&#8217;t well tessellated at all. The reason for this is that we are uniformly tessellating the curve. Slope plays a big role in how finely tessellated a path should be, and we aren&#8217;t taking this into consideration.</p>
<div style='text-align:center'>
<a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy10.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy10th.png'/></a><a href='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy11.png'><img src='http://www.mobeenfikree.com/wordpress/wp-content/uploads/bezzy11th.png'/></a>
</div>
<p><strong>What&#8217;s next</strong></p>
<p>My next algorithm will non-uniformly tessellate the curve by taking it&#8217;s slope into account. Wish me luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobeenfikree.com/blog/index.php/2008/07/22/bezzy-devblog-dynamic-tessellation-part-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
