Home    Blog    Projects    About

OCD about GUIs: examining Civ Rev for iPhone  (September 11th, 2009 at 12:17 pm)

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’t a matter of “if” but “when” Civ would hit the iPhone. I’m glad Firaxis took their time with this one, because if it hit before I graduated, it would have led to a premature end to my university career.

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.

Don’t drag, tap!

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’t work as well as you’d expect.

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.

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.

(read on…)

Posted in Usability, Videogames.

Gaming Bliss is …  (July 13th, 2009 at 10:18 pm)

… 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’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.

Also, the packaging is very fancy. I haven’t gotten this exciting about an unboxing since my MacBook.

Posted in Tech, Videogames.

Iteration at play – GTA: Chinatown Wars  (May 23rd, 2009 at 12:24 pm)

Back in December I lamented that GTA IV, while very good, didn’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 exactly what I wanted.

Chinatown Wars addresses core issues with the GTA formula, and does so ingeniously.

(read on…)

Posted in Videogames.

Tonight: Franz Ferdinand  (May 12th, 2009 at 10:46 pm)

Tonight: Franz FerdinandThe odds were stacked against them. Franz Ferdinand’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’t really do it for me. So when the band starting talking about abandoning their sound for something more electronica, well … like I said, the odds were stacked against them. The album turning out well at all would be nice. That it’s their best album yet is nothing short of a miracle.

A reasonably established band going off and doing something different is a recipe for disaster, but when it turns out well, it’s oh-so rewarding. Fatboy Slim’s Palookaville 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’re still hanging on to their (excellent) edgy vocals and indie sounds, but there’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.

There isn’t a weak song on the album, although some may argue it lacks variation. I wouldn’t disagree, but I’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. Tonight: Franz Ferdinand is a great album with a unique new sound. It’ll appeal to the electronica fan and the indie fan alike. And if, like me, you happen to adore both genres, you’re in for a real treat.

Posted in Music.

Games of 2008  (December 24th, 2008 at 7:09 pm)

As we near the end of December the time to reflect over games we’ve played over the year has arrived. I’ve compiled my list of the best games I’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. GTA4 is fun, but it fails to do anything interesting with the GTA format. I’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 GraphicsTM. 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.

(read on…)

Posted in Videogames.

Bezzy DevBlog: Best of the rest, Part 2  (December 1st, 2008 at 11:48 am)

When I said I’d post part 2 “soon”, I really meant, “I’ll totally forget about posting it for four months and then post it soon”. Without further delay then, dynamic tessellation (part 2) and a tech demo called BezzyDemo.

(read on…)

Posted in Bezzy.

Bezzy DevBlog: Best of the rest, Part 1  (August 4th, 2008 at 11:23 pm)

So it’s been a while since I’ve posted an update, but that’s not to say progress hasn’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’s how software development goes.

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 “friend” Dynamic Tessellation for a bit.

We’ll talk about the first two today. Part two will be posted “soon”.

(read on…)

Posted in Bezzy.

Bezzy DevBlog: Bounds on fills  (July 27th, 2008 at 4:33 pm)

In my last post, I said I’d talk about how I fixed a rather “fun glitch” 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’s going on here. The fill geometry I’m rendering is smaller than the path itself. Here’s a screenshot that makes this a bit more obvious:

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.

(read on…)

Posted in Bezzy.

Bezzy DevBlog: The big idea behind fills  (July 25th, 2008 at 5:01 pm)

I’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’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:

We’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.

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’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 between vertices?

For example, let’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’t colour anything green.

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’t even consider that solution. Instead, I used a magic little videocard feature called the stencil buffer.

(read on…)

Posted in Bezzy.

Bezzy DevBlog: Dynamic Tessellation, Part 1  (July 22nd, 2008 at 11:59 am)

I’ve spent the past couple of days refactoring a tonne of code. That’s the problem with writing prototype/proof of concept code … 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’t come up with an optimal solution yet, but I’ve made some good progress.

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.

Now the “dynamic” 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.

Let’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.

(read on…)

Posted in Bezzy.
« Earlier Entries Next Page »

Site and contents © Mobeen Fikree. Blog powered by Wordpress.