All entries from Feb 2008

29 Feb 2008
27 Feb 2008

Bigger isn't always better

After the end of an incredible year for triple-A console titles we now find ourselves in a post-Christmas lull. There's a sour taste in our mouths from the few hopefuls who closed out the year with a rush to market in search of easy xmas dollahs (pointing no fingers). So what can be done to sweeten our palate? Well I don't know about you, but I'm seeing more and more promise in the lands of the portable, the web-based and the independent.

Let me enumerate the ways. First, three games I've played:

  • Professor Layton and the Curious Village

    Ghibli-esque DS puzzle adventure in which Professor Layton and his boy apprentice solve the problems of the curious villagers and unravel their mysteries through a series of varied and perfectly-pitched puzzles. This thing is an instant classic, very charming and totally engaging throughout. It's also masterfully paced with each tiny piece of exposition being carefully interleaved between slices of puzzling gameplay and exploration.

    My only gripe would be that it's a shame when they set games up with sequels and franchising in mind at the start. Obviously it's a perfect fit, and it's nice to know there's more on its way, but the quality can only diminish when there's a built in formula. Hopefully this one will hold up a bit better where lesser games (Pheonix Wright?) might begin to wilt.

  • ForumWarz

    NSFW web-based game in the form of an internet mirror-world parodying the worst of net archetypes and bad behaviour. Mechanically, gameplay takes the form of a turn-based combat RPG with character classes of Camwhore, Emo & Troll. But the outer shell feels like something new, with combat wearing the guise of forum flamewars, and NPC interaction performed via in-game IM. Its closest relative is probably Kingdom of Loathing and it sometimes brings to mind parody tabletop RPGs like Greg Costikyan's Paranoia, but the slick interface and clever matching of medium and message create something fresh. Andy Baio has just done an interview with lead developer Robin Ward.

  • N+

    Physics-y platformer with a mean difficulty curve, previously found success online as a flash game, now ported to XBLA. It's been tarted up with additional content, multiplayer and a built-in level editor. Incredibly addictive and incredibly difficult in equal measure, it didn't take long for me to rack up the "Practice Makes Perfect" achievement for dying 1000 times. Everything about it tells you that it was made by good, honest, indie gamers. From the old school die-and-try-again play ethic to the minimal anti-glitz look and feel. One more go?

Followed by three I can only admire from afar:

  • Fez

    A sprinkling of Paper Mario's dimension-twisting mixed into a smattering of Cave Story's engrishly narrated pixel-art. The 2D platformer gains a 3rd dimension when you rotate a level, only to be flattened back down into 2 dimensions when the spinning stops. Best to watch a video to understand the head-scratching gameplay potential that enables. Also has siblings in Echochrome and Crush.

  • Braid

    Painterly platformer due to arrive on XBLA sometime soon. I don't know much about this one yet but the graphics look lovely and I understand there's some time-rewinding action involved a-la Prince of Persia: Sands of Time.

  • AudioSurf

    Everyone seems to be talking about this one at the moment, which only makes me more eager to try it (PC only). By the looks of it, it's a block-matching puzzle set on a Wipeout-style race track with the twist being that the tracks are generated by music you play from your collection. I have to say I'm a little skeptical of this one. Vib Ribbin on the Playstation had a similar option and it was never as satisfying as the default tracks.

0 comments

25 Feb 2008
513dhukitol

I've been playing: Mass Effect (Xbox 360)

Dear oh dear. It seems to me that we're in a strange predicament at the moment. The sheer budget, visual polish and hollywood-ification of a lot of next-gen output is throwing our good/bad detectors off kilter. There's something very wrong when a game like Mass Effect sneaks into the metacritic charts alongside 90 percenters like Bioshock, The Orange Box, CoD4 and even Halo 3. Let's not beat about the bush, Mass Effect is a terrible game.

Fantastic character design, yes. Decent voice acting, yes. Pretty good writing, yes. Nice cut-scene cinematography, yes. Those things would be wonderful if this was an animated movie, but games are meant to be played, not watched. Apparently people are so blinded by the glossy visuals that they're unable to call it for what it is.

Mass Effect has the most uninspired level design I've ever seen. Most of the environments are barely designed at all. Locations look ok at first glance, but take a look at the overhead map and you'll be lucky to find yourself in anything more elaborate than a giant rectangular box room or on a snaking road taking you directly from A-to-B.

Combat would be passable if your enemies weren't often so tiny on screen that they're obscured by your equally tiny targeting reticle. So much for "the whites of their eyes". At one point, frustrated with repeated insta-kills, I went into the options and set the combat difficulty to easy, only to find the one-hit kills still in effect. Mini-games played to open item containers can barely call themselves games at all. And the over-plentiful items plundered from within are a selection of boring weapons, dull armor, or worthless upgrades. None of which have any appreciable effect on your character's handling or combat performance.

Many UI decisions are simply mind-boggling. Your team's health is represented by 3 small red bars in the lower left of your screen. If a team mate is damaged, but regenerating, their bar turns green. So red is sometimes good, sometimes bad, and green is... what, exactly? Good luck figuring it out at a glance.

The colour contrariness is also carried through to the inventory screen where you can compare your currently equipped items against those you've picked up. Here, the compared item's statistics are shown as green if identical, red if worse and yellowy green if better. But there's no grading of these colours, so an item that's slightly worse in one area, but much better in another shows up as having one stark bright red bar and one barely perceptible yellowy green bar.

The ineptitudes pervade almost every aspect of this game, and I stumbled across a blog post a while back that did a fantastic job of dissecting each horrible misstep in turn but I'm having trouble digging it back up. So for now, I'll have to leave you with the above cautionary morsels and hope you see fit to take the mainstream reviews with a generous hunk of rock salt.

1 comment

23 Feb 2008
19 Feb 2008
15 Feb 2008
12 Feb 2008
11 Feb 2008

So many toys, we find, only become serviceable with a little smashing.

H.G. Wells, Floor Games

0 comments

8 Feb 2008
6 Feb 2008
5 Feb 2008

Extending BlueCloth with Pygments

I just spent a fun couple of days tinkering with the engine of this site and have finally emerged bruised, tired and slathered in axle grease.

I started out just adding syntax highlighting but ended up adding page caching (to offset the performance hit of parsing code), and upgrading to Rails 2 (to get at a couple of caching related niceties). So due to all the change there may be the odd unresolved issue here or there that I've missed. Just drop me a comment if you spot anything poking out at an awkward angle.

I figured I'd inaugurate my code highlighting with a little write-up of how I ended up doing it. I originally planned to use Ultraviolet, but found it way too slow and a bit verbose in the CSS-naming department among other things. I also looked at various JS highlighters, but couldn't find one to suit, and decided it's a fairly resource intensive task to be off-loading onto the client anyway. Then I finally came back around to what I'd been looking at originally, which was the excellent Python library, Pygments. I was put off at first by it not being ruby-native, and wondered if I'd need something like RuPy to bridge the gap. In the end I decided it'd be acceptable to do a system call out to the pygmentize command line interface:

class BlueCloth

  def escape_shell_arg(str)
    "'%s'" % str.gsub("'","'\\\\''")
  end

  def transform_code_blocks(str, rs)
    @log.debug " Transforming code blocks"

    str.gsub(CodeBlockRegexp) {|block|
      code,rest = $1,$2

      # Remove the syntax line and extract the language from it
      regx = /(?:[ ]{4}|\t)+@@(.*)\n+/
      lang = code.slice!(regx).slice(regx,1)
      # Call out to pygmentize to markup the code for highlighting
      code = `echo #{escape_shell_arg(code)} | pygmentize -f html -l #{escape_shell_arg(lang)}`
      # Remove the extraneous wrapper markup that we don't need
      code.sub!(/<div class="highlight"><pre>(.*)<\/pre><\/div>/m, '\1')

      # Generate the codeblock
      %{\n\n<pre class="code"><code>%s\n</code></pre>\n\n%s} % [ outdent(code).rstrip, rest ]
    }
  end

end

As you can probably see, I'm using BlueCloth to format my posts, so I'm over-riding the method it calls to deal with indented code blocks. Doesn't provide any more graceful hooks unfortunately. I've also added an @@language line inspired by an article at Warpspire so that Pygments doesn't have to play the language guessing game. In fact, if you're using a JS highlighter and that's all you need, you can get away with something like this:

class BlueCloth

  alias old_transform_code_blocks transform_code_blocks

  def transform_code_blocks(str, rs)
    str = old_transform_code_blocks(str, rs)
    str.gsub!(/<code>@@(.*)\n+/, '<code class="\1">')
    return str
  end

end

Aliasing the existing handler method to another name so that we can write a wrapper for it rather than over-writing it completely.

Probably bears repeating that the first option isn't the speediest thing in the world, and might be best avoided unless you're prepared to implement some sort of caching. I should also mention that I finished putting this in place and then immediately found mention elsewhere of CodeRay, which is a self-professed "fast" Ruby-native highlighter. I haven't tried it out yet but it looks fairly young and recommends Pygments itself right there on the front page anyway. Worth a look though.

Oh, one last thing. I've used javascript (and Prototype) for my line-numbering so it doesn't get in the way in the source and stays out of CSS-unfriendly formats like RSS:

function codeLineNumbering() {
    $$('pre.code code').each(function(code){
        var count = code.innerHTML.split("\n").length - 1;
        var lines = $A($R(1,count)).join("\n");
        code.insert({before:'<pre class="line"><code>'+lines+'</code></pre>'});
    });
}

Short and sweet!

Update: Seems I was a little hasty with that line numbering function, here's a version that should also work in IE.

2 comments

2 Feb 2008

Other dates

Visit the archive if you wish to skip merrily through time, tumbling this way and that at your leisure.