Saturday, December 29, 2007

Don't Involve Yourself

I loathe and detest DIY. And owning a new house which needs work has help me pinpoint some reasons why: it's primarily the differences between DIY and software development that make it so frustrating for me.


1. Inaccuracy

When writing a piece of code, I can make it unfailingly correct and absolutely precise. When complete it's a thing of beauty which perfectly fits the task for which it was intended, smoothly sliding into the software without touching any sides.

When I try to mark a straight, horizontal line on a wall, measure and mark off some screw points and drill them out, it just seems impossible to achieve anything close to precision.

For one thing, in our house, the walls aren't even perfectly straight (it's an old house). Then there's the process of marking things with a pencil (whose lead has a thickness and which must run alongside a rule - both sources of inaccuracy). Then there's the drilling itself - trying to hold a heavy vibrating machine completely still while it both hammers and twists itself around isn't easy, especially working off a ladder. And then there's the structural integrity of the wall - being composed of a combination of soft and hard material at unpredictable points so that the drill will move very rapidly through the soft before striking something hard which causes it to jolt off course.

All of these factors conspire to result in drilling holes which:
a) don't go straight into the wall, which makes putting the screws in difficult.
b) aren't in the right place, which makes putting the screws in impossible.



2. Lack of Undo or Source Control

When coding, if I do something wrong, I hit Ctrl-Z to undo. And because I always set my undo buffer size to something enormous, I can successively undo changes a long way back. If I want to retrieve an earlier version of some code, I can usually go and find it in Source Control.

When I drill a hole (or worse, a series of them!) in the wrong place, there's no recourse to any such convenience. Moving a curtain pole means unscrewing it from the wall and starting over. And hopefully it's being moved up and not down, because otherwise the result is unsightly rawlplug holes who staring at you accusingly from above the pole. The only thing to do then is pray that you're planning on decorating soon (my advice for new homeowners: drill and screw and install every single thing you're every going to need, and only then decorate the entire place).



3. How long everything takes

Now I've been doing it for a while, I can make software happen pretty fast. Modern IDEs and SDKs are well-streamlined, and knowledge of where to find your tools allows solutions to come together with relative ease.

Doing even simple DIY tasks seems to take me ages. And I'm not even talking about the extra time to minimise the inaccuracy (which in my case is considerable). I just mean locating the right tools, putting them in the right place, and swapping between them as required.

In fairness, what I have in software development is the equivalent of a work-shop, with all my tools arranged tidily where I can find them and with plenty of space to do things. But (also in fairness) a real-life work-shop wouldn't be a lot of use in a number of the DIY tasks around the house, where tools need to be brought into the field. The worst is drilling and screwing up a ladder on your own, where you have to come up and down the ladder to exchange tools.

I was thinking that perhaps a decent tool-belt might be a solution, but to take the example of switching between electric hammer drill and electric screwdriver, this just isn't feasible, so I guess what I'm really waiting for is some kind of hand held multi-tool from Star Trek.



4. Lack of a Community

I'm working on some code, and I'm stuck. Maybe I don't have any idea how to achieve what I want, or I'm aware of a range of solutions and don't know which to choose, or else I've chosen a solution and it doesn't seem to be working for me. Either way, I switch to a browser window, do a search, and can usually turn up some useful advice in minutes. Failing that there are email lists full of wise people who always seem happy to help their fellow developer.

In contrast, when working on a DIY project, I feel as alone as Samus in an alien cave. I've searched, and the internet isn't so full of helpful DIY advice as it is for programming. I think one reason is that the medium isn't text-based like code, so it's harder both to give advice in that form and to search for it. But mainly I think it's because the people with all the wisdom - the DIY mavens - aren't on the internet doling it out like they should be.



5. Bad Tools

Where DIY is concerned I'm happy to describe myself as a bad workman - in fact I'm rubbish. But that doesn't disprove the existence of bad tools.

In software there are bad tools too, but this is mitigated considerably by the existence of a strong community who are constantly refining their tools and and sharing them on the internet. Not happy with the standard c++ String clases? So head over to CodeProject and consider one of the many alternatives.

Actually the reusable tools of DIY like hammers and screwdrivers aren't the focus of my ire here - oh sure, the hammer drill isn't the most accurate of beasts, but at least it fundamentally works.

No I'm talking more about things like curtain rails or plumbing components, which seem to be suffering from underdesign. Plumbing in particular doesn't seem to have moved forward much since the Romans - it's 2007 and we're still having to hacksaw up bits of plastic to make them fit together before employing a combination of various sticky sealant solutions and blind faith in order to tame the water. By the 21st century, I'd have expected plumbing to be no more complex than Lego by now, but apparently not. I think there are two reasons why this is the case:

1) The key stakeholders (like plumbers) have little to gain from making their trade accessible to the wider public.

2) Whereas the internet serves as the mechanism for software tools to be constantly improved upon and then fed back into the development community, no such mechanism (or indeed community) exists for trades like plumbing.


6. Lack of Reusability

This point is perhaps a bit flippant, but apart from keeping out of the cold and the rain, one of the nice things about being a software developer is that the requirement to repeat the same tasks over and over again is fairly limited. Once you have a piece of code in your toolshed you can wheel it out over and over whenever it's needed, repurposing as required.

Unfortunately, when you need to drill holes in walls, or sand floorboards, or repair toilet cisterns, you actually have to do it each time. Bah!



7. Underwhelming End Result

My final issue with DIY is that the requirement for the work is usually in order to achieve something utterly mundane. If all the misery of sawing, drilling, glueing and screwing was aimed at creating some kind of adventure-playground funhouse-wonderland for some children, well! I still wouldn't enjoy doing it, but at least it would give me a sense of gritty determination knowing that the end result would be worth it.

I just don't get that from towel rails.


Saturday, December 22, 2007

Highlights

This will be my final post before I disappear off to rural Ireland for Christmas, so I'm going to take the opportunity to look back on some of the good stuff that happened in 2007:


Moving into a new house of our very own, in Finsbury Park. Hurrah!

Playing guitar in Satan's Cock

Some games I particularly enjoyed included:

Praise for the game I designed, Prism:Light the Way:

Working on Hohokum with Hoggo:

Thursday, December 20, 2007

Not Fun

I'll tell you what kind of game wouldn't be fun: A game where you have to lay out and cut rolls of loft insulation and then lay out and cut sheets of chipboard, in order to insulate and board a loft - that's what kind.

Monday, December 17, 2007

Gamma 256

Last night I had a blast through some of the entries to Gamma 256 - an indie game dev competition whose event closes the Montreal Games Summet.

You can find the games here.

So far, stand-outs include:





Bloody Zombies, where you mow down the dead with a lawnmower, Braindeadstyle, then surf around on their blood like that old forgotten Molyneux platformer, Flood.






Mr Heart Loves You Very Much, which is an interesting take on the space-navigation, block-sliding puzzler.


And Stdbits, which is like a nu-rave take on the old Atari VCS game Adventure.



You'll be wanting an Xbox 360 controller for Windows, which (happily) is becoming a standard requirement in the indie-games scene. Enjoy!

Saturday, December 15, 2007

Fez

In a two-for-one-weekend-special, here's a game I found linked from Jason Rohrer's Arthouse Games Blog.

It's called Fez, and it looks very much like a cross between Cave Story, and the PSP game Crush (which I've not played yet). It's being made by a group called Kokoromi.


Passage

Here's an interesting piece of interactive art (I would hesitate to describe it as a game exactly, although it shares many elements with simple games.


It's called Passage. Download it (PC, mac, unix) and play through at least twice. The visual effects are interesting as is the procedural music, but it's also strangely affecting, considering its limitations. Get it here

Once you've played it a few times, there's a statement by the artist, Jason Rohrer about the work here.

Tuesday, December 11, 2007

Self-Assessment and Mario

Phew! Something about the end of year does something funny to me. I think a combination of both the year and my age changing in such a short space of time makes me take a long hard think about what I've achieved in the year, usually resulting in a coding frenzy that starts in mid-November, and continues into the new year. The regime of doing a full day's work before heading home in the dark and cold for another few hours bathed in the glow of a screen is both gruelling and exhilarating in equal measures, but I definitely wouldn't do it if I didn't have a project I was proper excited about.

Work on Hohokum has been progressing pretty well, albeit not quite as quickly as I'd naively hoped. The thing about programming is that you can go really fast and throw skyscrapers up in no time, but if you do their internal layouts tend to work out a bit sub-optimal, and you find yourself walking out of lifts straight into toilets and all kinds of weird stuff. It's generally better to spend ages on the lobby and make sure you've got it just right before you start heading for the stars. Anyway, excuses aside, I should be able to post something here before the end of the year, assuming I can work out how to link it into the blog.

I've also finished the Flash version of CowBandits, which is a game I last made in 2002 for mobile, and involves the player piloting a little Thrust craft through a subterranean cave system looking for cows to abduct and drop into a giant space mincer. I'm really happy with the way it turned it - it's much closer to my original vision of the game, which was somewhat sullied by the format at the time - chiefly that mouse controls are much better than mobile phone keypads for controlling fiddly little spaceships being pulled by gravity.

And finally, I'm still playing Mario Galaxy. I have over 60 stars now and have 'completed' the game, so now it's the hunt for every last one. I still look forward to playing it every time I turn on the Wii, but I think there are a few glaring faults:

Dear Nintendo,
  • Guys, it's 2007 - it's now officially okay to not have a lives system. It patently doesn't add anything to the game - I've yet to run out of lives once so far, and even if I wasn't diligently hoovering up all the star bits for regular 1-Ups I get plenty from the hub world (primarily from Peach and her stupid letters, which keep arriving even now she's safe in her Mushroom Castle). When I'm on a particularly difficult level, the distant possibility of running out of lives and being rudely booted back to the hub isn't a good thing- it's just unnecessary stress that marrs an otherwise wonderful experience.
  • Please put in ALL of the sensible restart points in future. Oh sure, Galaxy is still hundreds of times better in this area than most of the main offenders (many other Nintendo games among them), but it's still not perfect. The rule is really simple - doing a difficult bit successfully, then failing at the next difficult bit and being forced to repeat the first one is just NEVER FUN. You've almost put restart points in all the right places - now just go and add that final 10%, and we have a deal.
  • Springy Mario and flying Mario aren't added bonus features. They're irritating and half-baked - don't acknowledge this by barely using them; just remove them instead - Galaxy has plenty else that works brilliantly, so we won't mind, honest.
Thanks.

love Ricky

Wednesday, December 05, 2007

Thoughts from the Toilet Bowl

Flicking through the back of Edge magazine, I wondered what the games industry would be like if nearly all the advertisments for jobs or degree courses didn't employ a picture of a  giant fucking barbarian on horseback, or a scantily clad manga babe.

More exposition coming real soon folks!

Friday, November 23, 2007

Friday already!

Apologies, dear regular readers (both of you) for these past days of blogging indolence. I can however report that I've been absorbing myself in relevant activities, discussion of which will reach these very pages, very soon (read: I've been playing Mario and compiling a list of complaints).

Work on my current side-project, Hohokum, is gathering pace. I've now switched physics engines, from Ape, to an Actionscript3 port of Box2D. B2 seems much more fully featured, being a port of an existing c++ engine, and it's also really nippy, partly because it implements a broad phase - a pre-process to calculations which works out which objects have no chance of interacting, and so massively reduces the overhead of calculations.

I'll be sad to leave Ape behind, partly because the userbase is very active and enthusiastic, but it simply doesn't support some of the features I'm looking for in a physics engine at this stage.

Anyhow, I now have my Extractors vibrating as they pump out lumps of rock, whose physics are handled by Box2D beautifully. I'll post something in the next month so you can see what the hell I'm talking about.

In work news, this week we had a big meeting with our publisher, where we unveiling the various games we've been prototyping, and then we all decide which one we should make next. It's kind of a strange bitter-sweet experience - you'll only be able to take one of your children home and raise them, which is fantastic, but the others will have to stay in the orphanage for the time being, until their features have grown more beautiful.

Monday, November 19, 2007

D(ecision) Day has passed..

... and Super Mario Galaxy was the winner!

On Sunday, I played a few hours of both Mario and Crysis. Both great games, but the latter is Far Cry with better graphics and a lower frame rate, whereas the former is proper good old fashioned Fun, like in the old days, with bright colours and capital letters and everything, where all the old stuff works exactly as it should and everything new exactly as you suspect it might.

So today I came home and made a bee-line for Mario, played it for a solid two hours, and didn't want to stop. Every level it's something completely new, whether it be 2D platforming with a twist, reprises of Mario 64 levels with 2007 (ok, 2005) presentation, or a minigame tuned to perfection for the Wiimote. 20 stars in and 10/10 so far.

Saturday, November 17, 2007

In the Prime of Life

Happy Birthday to me! The obscenely large television is here, the 360 is connected to it with a copy of Gears good to go, plus I have Crysis and I'm getting Mario Galaxy...

Tell me what to do first!

Friday, November 16, 2007

Nil Points

Team Fortress 2 is the game I've been thinking about playing but haven't most over the past few weeks. I fired it up last night for a few hours, and reminded myself why. I absolutely stink at Team Fortress 2.

I'm not even sure why this is - in principle it should be ideal for me. I'm moderately skilled at First Person Shooters; usually play things on Hard, and my favourite ever deathmatch experience was Doom - super fast and simple with a limited requirement to exhaustively learn the maps to the depth that games like Counterstrike or Battlefield demand.

But in practice, it just doesn't quite work out for me. Eschewing the complexity of a class like the engineer or spy, my weapon of choice alternates between the soldier and the scout, depending on the map. But as the soldier my rockets never quite seem to connect solidly with their intended targets. And when I'm the scout my shotgun blasts - whilst consistently hitting their man - rarely provide the killing blow.

Oh sure, I can bob and weave about to avoid the sniper fire well enough most of the time, or play sniper when I want to spare myself the ignominy of coming bottom, but I still feel like I'm missing out on most of the joy that TF2 should so clearly be providing.

Are my reactions gradually dulling with age, or have I spent too much time away from these type of games to ever catch up with the other boys and girls, who seem to know instinctively how to land a grenade on a distant head, or baseball bat a passing goon at high speed?

Bah and double-bah! I'm going to keep at it a little longer before I finally hang up my spurs.

Thursday, November 15, 2007

Wow!

Was up late last night - checking out the new World of Warcraft patch 2.3 and questing with some guildies, hence no post this morning - only just had time to wolf down porridge, feed fish and dash!

It's surpising given how long the game has been running, and how successful it is that Blizzard are still ways to massively improve even the basic interface.

They've made it easier to level from 20 to 60 too, so no doubt I'm gonna park my 70 warrior and get back on my alts, juggling between Priest, Warlock and Hunter.

Still in for the long haul then, though if I don't see some major graphical improvements by the next expansion which make use of my 8800, I fear my attention will begin to wain..

Wednesday, November 14, 2007

Bridging the Gap

This week sees the release of Crysis, a game I am very much looking forward to playing. Crysis is the sequel to Far Cry, a game I very much enjoyed playing. Far Cry exemplified the 'sand-box' mode of play - give the player a wide environment, rich with its own systems, and let the player approach it as they like.

So, given a stretch of jungle with two villages connected by roads, you could choose to attack them in any order. Maybe steal a jeep from one and steam up and down the road mowing down the mercenary soliders. Or stay hidden the bushes gradually sniping the off one by one. Or perhaps just take a hang glider over the whole thing. The environments were *huge*, and exploration was nearly always rewarded - it was quite an eye opener for me at the time - I don't think any game before or since has trusted players with quite that degree of freedom, and the space to express it in.

Recently I completed episode 2 of Half Life, a series that approaches level design in the polar opposite way. In Half Life the player is led by a gentle but firm hand down a single path full of perfectly balanced combat situations and spectacular set pieces. If they are ever allowed to stray from the path, and do, the most that will happen is that Steam will capture and report this fact, and Valve will be sure to stick in another Gman sighting from that point (although I didn't spot him once in Ep2).

Both of these approaches make for good gameplay, but I find myself wondering whether they couldn't be combined in some way, and whether Crysis will go any way to address this.

The problem is that in order to have a truly successful 'set piece', the player needs to be genuinely involved in the action, rather than just stumbling into a situation that is going on regardless of their presence (like all those infinite npc battles raging on in World of Warcraft's Outland).

The way Half Life usually deals with this is to funnel the player down a narrow path, whereupon they trip an invisible wire, and the scripted action plays out right in front of their eyes, where they can't possibly miss it. In order to reproduce this kind of effect in a open Far Cry environment, the scripting, AI and triggering system would need to be considerably more complex. I guess what you'd ideally want is a way to describe a series of things happening in a general enough way to allow the game engine to apply them to arbitrary situations and environments.

At this point, even I barely know what I'm talking about, so I'm going to get back to Actionscript 3.

Tuesday, November 13, 2007

Nobi Nobi Boy

So Keita Takahashi, the designer behind Katamari Damacy, is making a game where - by the looks of things - you control either end of a stretchy worm boy with the two analogue sticks and use his body to herd animals around.

It seems the player will have some control over the tension in the body, and will be able to make the two ends fly into the air, trailing the body around like a colourful streamer. And eat the animals too, which then form lumps in the body which work their way down, presumably due to some revolutionary peristalsis physics engine.

Multiple players may join in for all kinds of entanglement too.

It's called Nobi Nobi Boy, and it's shaping up marvellously. He makes it seem almost effortless - and how many other games do you see demoed in this state - just a mechanic, with no game at all?


Monday, November 12, 2007

This was a Triumph!

So, I finished Portal this weekend, and can only reiterate what everyone has already said - a mind-bending and delightful way to spend two hours.

I can't remember the last time I laughed out loud so many times playing a game. There's a rich vein of science comedy that Valve do better than pretty much anyone else in the world, and the plot and script just got better and better right up until the tantalising credits (which surely deserve some kind of Bafta or something - I'm currently rewatching it on youtube twice a day).

If I have a criticism, it's that I'm not sure that the Portal gun alone is enough to support a sequel. By the last third of the game, I felt like it had already laid out its bag of tricks onto the table, and I was simply repeating the same mechanics in slightly different situations, and the final challenge was really more about exposition than play.

Still, that Half Life 2: Portal mod seems to have.. uh, potential, eh kids?

Friday, November 09, 2007

Tis the Season to Prioritise

So Bioshock didn't slip down then, but became lodged in my throat somewhere in the second chapter. The problem was that despite the rich environment, the plot, the plasmids, all the innovative ways to kill Splicers, Bioshock is a not-very-good First Person Shooter with a not-very-good version of PipeMania sellotaped to it.

Rapture may be lush, but it sure hasn't been designed for gun combat. The Splicer AI may be clever, but it isn't fun to fight. That graphical blurring effect that it covers the screen with may be pretty, but it pretty much breaks the firefights, along with its pal, 'realistic kickback'. The damage model is broken too (I can shoot a boss in the head at point blank range over 10 times to kill them, or just throw a piece of furniture at them? Whoops).

It's a shame, because I dearly wanted to be immersed in the game, and I love exploring the wide maps to find new diary entries, but when you're constantly under attack by Splicers chattering over the voice acting, it rather spoils the effect. Can someone release a mod that removes them from the game, leaving only the Big Daddies and Little Sisters please.

Oh, and about *that* 'interesting moral decision'. Come ON. Is this really the best example of we've seen yet in games? If so, we should definitely stop going on about it. Anyway, which characters to take to level 80 in FFXII was easily more interesting (Balthier and Fran ftw!)


It's that time of year - and this year especially - when all the big publishers prepare their marketing goons with the finest marching powder, take out their giant cocks and start swinging them around. It started with the aforementioned Bioshock, which I abandoned just in time for the Orange Box. Finished Episode 2, enjoyed being rubbish at TF2, but haven't quite finished Portal (I know, I know). Then Metroid 3 comes out, but I still haven't finished Phantom Hourglass on the DS. Now it's my birthday, and I'm 'looking forward' to Mario Galaxy, Crysis, Call of Duty 4, Assassin's Creed. Plus I just got a 360 (thanks mum n dad!) so there's a giant backlog of other stuff to play, to say nothing of little snacky oddities like Rockstar's Table Tennis on the Wii, or Geometry Wars Galaxies.

It isn't good for the gamer, all this. Nothing to play but World of Warcraft for months on end, and then waaaay too much at once. I understand that the industry has locked itself into this Q4 feedback loop over the years, but the sense of magic you used to get back in the day when a new game came out that everyone had been waiting for, and every gamer friend you knew would be playing it at the same time has been lost. I've no idea in what order to tackle the seasonal releases this year, or which consoles to plug into which tellies to best share out the experience between Nikki and myself (adhering strictly to the no spoilers rule, where every time you enter a room, you daren't look at the screen for fear of seeing a boss fight before you've reached that bit).

Thursday, November 08, 2007

Flash on the Beach

Just got back from Brighton, where I've been attending talks at the Flash on the Beach conference. Really good timing, since I'm just about to plough right into Actionscript 3 programming by porting my current game CowBandits (itself a port of the second mobile game I ever made).

I'm also going to port my particle engine across from c++ (in fact I already started on the laptop), and the work of algorithmic artists such as Robert Hodgin, Joshua Davis, Eric Natske and Jared Tarbell have left me super-inspired to add a number of features to it. In particular, I want to have bitmap data affecting particle behaviour in various ways, introduce ribbon trails and get some sound interaction going.

I'm gonna add these guys to a new 'art' section in my links. They deserve it.

I'm also keen to check out the Processing language - Robert Hodgin's work especially shows off what this can do, and I'm particularly interested in the ability to do spectral analysis on an audio input and infer physics properties from the sound data - thinking about doing some work towards visualising my brother's band.

Most of all though, I want to get back to working on the Flash game I'm making with my pal Dick Hogg, codename 'Hohokum'. It's inspired by Asteroids, Armadillo Run and Katamari, and I must must must get back to it!

(I finished reading The Hobbit on the train down to Brighton yesterday. Gandalf is nowhere near as hardcore in that book - he must have gone to advanced wizard training college between that and the start of Lord of the Rings, otherwise he'd have had no chance against the Balrog).

Monday, February 19, 2007

Attack of the Clones

For many of the most successful games in the casual space, there are a number of clones - games with the same functionality, often with no, or only very minor changes, except for the artwork and sound. Sometimes even the theming will be the same.

Most clones so far have been of games which don't rely on a large amount of varying art assets, and where the levels can be generated programmatically with a simple algorithm.

There are a number of properties of a game that would make it considerably more difficult to clone, and whilst higher production costs are a factor, I don't think there's a direct relationship between the development cost of a game and its cloneability. Creative developers should consider what they can do - relatively inexpensively - to give themselves a competitive advantage over uncreative developers seeking to piggyback their work.

Here are some of those properties off the top of my head:
  • reliance on hand-designed levels, so that the player feels like they are solving a problem that another person has designed for them.
  • reliance on a large amount of high-quality artwork (like Huntsville).
  • reliance on a 'black box' simulation where it isn't immediately obvious how to copy the functionality (e.g. a sports management game).
  • inclusion of a well-written, well-presented story (like Monkey Island).
  • inclusion of strong characters (and perhaps even their development).
  • an online community providing social play (like Puzzle Pirates).

Saturday, February 10, 2007

Back from the Dam

Yikes! You look around and suddenly it's been three months since you last posted anything.

I'm blaming three primary factors here:
  1. I've been working really hard to get Morpheme's first truly 'casual' game finished, which has involved a whole load of sanding the floor, painting the fence (both sides) and waxing the cars until they're really shiny.
  2. I've been readusting the balance of my spare time I spend on content-creation versus content-consumption (read: I've been playing Zelda on the Wii and looking at crap on the net).
  3. I've joined a band, which has really fun cos I'd forgotten how much I enjoyed playing electric guitar.

Anyway, the main purpose of this post is to report from Amsterdam, where I just returned from the Casual Games Conference, Casuality. I love this city anyway - so much good food and architecture, and really close to London, so it's a perfect place to get out of the office for a few days.

These kind of things are where industry folks meet to strike deals, so the air is thick with hectic sales talk. Being a developer though I can sort of sidetrack a lot of that and just enjoy the talks, chat to folks, and generally let the zeitgeist wash over me whilst I meditate on plans for the future. Special mention goes to Scott Bilas, whose talk on tools and optimisation of the development pipeline was chock-full of useful stuff.

I say sort of, because I actually did some pitching this time - showing my game 'Bernie the Pyromancer' to some folks, who really seemed to like it. Once our current game is done, I'm hoping to concentrate on Bernie full time and get it released on some interesting platforms.

I have loads of draft posts queued up, by the way, so hopefully I'll bash a few of them into shape before another three months is up.