Thursday, May 20, 2010

Incoboto Teaser Screen

I know I shouldn't do this so early, but it helps keep a record of my intent, and - believe it or not - giving an image public wings keeps me motivated.

So here it is: the first teaser screen of incoboto.















I'm trying something completely different, combining physics programming, my interest in generated content, cute-yet-unsettling moods and ambient music.

Game-play is really simple to control but has a lot of complex and chaotic repercussions.

I'm also going to be exploring the space between software-toys and games. Hopefully people will have fun with this even if they don't 'win'.

I'm also going to try and maintain a 'there are no bad things, only less-good things'. It'll be a challenge, but that's part of the fun.

Wednesday, April 28, 2010

First two tracks available...

Only a minor post. This is the first pair of Kitty Genovese songs to make it out into the world.

While You Sleep

Noone Knew Kitty Like Me

I'll post more as I go on.

Tuesday, April 20, 2010

Primary and Secondary

The First

I have uploaded video of the original version of Flaboo! from 2006. I coded it during a holiday in Cornwall - that being my idea of a nice, relaxing time. I believe it's one of the first of its kind: the endless jumping game. It's odd to know you pioneered a genre long before it became popular.

[Edit: see note from Kalev about 'NS Tower' which was developed in the early '90s!]

Flaboo! often gets compared to 'Doodle Jump'. Those who consider themselves in-the-know wink archly and say, "But Ah! Papi Jump was first..." I'll have to invent some other facial tic to preface my statement: "ACK-tually, Bounce was first. And here's a video of the original code running on a really old mobile."

Link.

I'm sure the scientists among you will state, quite correctly, that this does not constitute a proof. Furthermore, I'm aware that having not publicly 'published' Bounce (only a few friends downloaded it from my site) it is hard to verify.

However, I'm not attempting a scientific proof, nor gathering legal evidence. I know my little Fat Chick was bouncing high into the sky for years before the benozzled quadruped ever left terra-firma, and that's enough for me.

The Second
In other news, I'm facing 'second album blues' trying to decide what to do next. I've now built the animation exporter for Blender, so I can get more complex movement into games. However, with my experiences from Flaboo! it becomes quite hard to decide the best way to move next. I have about 6 game ideas to choose from. Some are ambitious. Some are quite simplistic. Some are very hard-core. Some are casual.

After trawling the feedback from the Free App A Day release back in March, I realised that I wasn't quite sure who I was making games for any more, nor were my personal motivations for making them clear. Here's a selection of the reasons people usually ascribe to their development:

1) To make money
Bwa. And indeed, Hahaha.
The iPhone market is so monumentally flooded with cheap games at the moment that it's hard to make any kind of impact, no matter how good your game might be. Getting your game into the top 25 is much like winning the lottery. I assure you, Flaboo!'s profit is negligible.

This is not the reason. Case 1 fail.

2) To make people happy
I've received quite a few positive comments about Flaboo! via email. When Flaboo! first came out, it averaged as a 5-star game. All seemed well.

However, a curious thing occurred when I made Flaboo! free for a day. My rating went down to 2.5 stars. There really does seem to be an enormous conceptual link between price and perceived value. In addition, I had one chap tell me that if he purchased an app which later went free, he went to all the app stores around the world and spammed them with negative comments to vent his ire. We're talking $0.99, folks. He would have spent at least an hour doing this. That's a lot of rage for such a tiny sum.

From some of the negative feedback and comments I received you'd imagine I'd violated their favourite pet with a novelty toothbrush. For these individuals it seems I actually made the world a worse place than it was before the little Fat Chick came into their lives.

Still others spent so little time even trying to play the game that they didn't realise the game had a) sound or b) tilt controls.

Oddly, and perhaps unscientifically, I find that the energy the world uses to fashion venom and negativity far outweighs the energy used to say something nice. I think YouTube comments illustrate this perfectly.

As a result, I don't feel making small games makes the world a happier, nicer place. Case 2 fail.

3) Just 'cos I have to
If I don't work on games for a week I start to go a bit funny. Ideas start bouncing around my head like ping-pong balls and I start gathering bits of paper together and start scribbling on them like a 3-year old on a tartrazine drip.

My work on Fable 2 largely consisted of director-like duties: ensuring things 'felt' appropriate to Fable, that the story's pace moved appropriately and so on. Despite its resemblance to game creation, it didn't feel like making a game to me, and that dissonance is what started me down the path of being deeply unhappy.

Now all these cares are absent, I'm a little too free. Ideas and justifications for each idea speed through my head and vie for attention, meaning it's difficult to decide... anything. The difficulty with making a game 'just 'cos' is that every damned idea seems like it's the most appropriate - depending on when you ask me, what I'm listening to, and how much coffee I have consumed. As many old club-going friends of mine will tell you, constraint can be a good thing.

Case 3 - a tentative 'yay'. With reservations.

So What Now?
In view of the circumstances, I have decided to take a short break from actively pursuing game-creation. I'm giving myself some time to write a CD based on the events surrounding the death of Kitty Genovese. The first track is here. There's a bit more work to be done, and about six more tracks to write, but I think a break from coding is a good idea. With luck one of the ideas bubbling around inside my head will rise to the top - and stay a while.

Tuesday, March 9, 2010

The Tortoise and the Hair

I've given in. I have succumbed. I have turned up my tootsies to the sky and cried 'Uncle!'

(It's always perplexed me that one's indication of submission would be to scream out the title of a family member. Odd. Possibly Freudian?
)

I have given up writing the Android version of Flaboo! The reasons? Oh, there are many...

1) Speed.
2) Java constraints.
3) The difficulties of writing native code.
4) The un-enjoyable development environment...

...to name but four off the top of my increasingly shiny head. My remaining hair now has a tuftier appearance than usual due to my grabbing fists-full of it in frustration.

Flutterbyes
When I left Lionhead, I filled my mind with thoughts of skipping through flower-filled fields, care-free, bouncing along greeting the trees and bunnies with a latte in one hand and a tiny, portable dev-machine in the other. In these fantasies I'd sit under a tree while butterflies kindly offered me refills (strong buggers, these particular lepidopterae) and helped me with my typing.

As such, Flaboo! was largely an experiment. It was an experiment in testing out the iPhone development environment. It was an experiment in working entirely by myself. It was an experiment in changing my life.

As such, it was pretty successful. I love Flaboo! I really do. It's one of the purest and best games I've ever written. It might be simple, but it's really, really 'clean' and incredibly addictive.

As such, I thought that branching out and spreading the Flaboo! love to other platforms would be a good thing to do. After all, the game originally started out as 'Hopping Mad Simon', written in Java back in the days of the Siemens MC65. How hard could it be?

Earlier in the year I went to the Google Android developer conference in London, and the folk at Google were kind enough to give me a Nexus One. They also listened to my questions, and have a spiffing support site filled with little gems for the burgeoning android developer community to sink their little milk-teeth into.

How jolly!

Creeping Dread
In horror films (um... take 'The Shining' as an example) numerous small details of 'wrong' slowly congeal into one super-powered 'mighty-wrong'; an axe-wielding Jack Nicholson in the case of 'The Shining', and Wendy Richards in my own personal nightmares.


Look at that face. It's Evil Edna in a wig made from Dougal's carcass. Brrr.

(Youngsters should look up Will-o-the-wisp and Magic Roundabout)









In the case of the Android, the first 'wrong' came when using the device. Its battery has roughly the lifespan of a chain-smoking mayfly who's eaten polonium-sushi for breakfast, followed by a nice long sit on public transport while wearing a bushy beard and a bulky, ticking backpack. Not long at all.

However, in light of the lovely pixel resolution and the early promise of a big friendly API allowing me to do things like play multiple sounds with minimal effort (no openAL! Woohoo!), it seemed like we were going to be bestest friends forever.

Then I started coding for it.

Java
Android uses Java as its primary development language. Java?! It's a language named after coffee! That's awesome! Coffee! Yaaaay!

A warning bell should have gone off when everyone writing Android apps said: "Don't allocate an object. Ever. No, really." At the time I pulled a confused 'Father Dougal' face and moved on. It was a hint of the 'wrong' to come.

Converting projects isn't really a lot of fun as it mostly consists of copying and pasting code over to the new environment, watching a load of red lines appear, and realising that your original code was a bit poo. Slowly, day by day, you watch more and more lines (out of your 300 000 total) turn from red into black.

And then break. You see, Java is a bit 'special'... seemingly just for the sake of it.

For a start there are no unsigned types nor typesafe enums. More little bits of 'wrong'.

(Jack is now sitting at a bar drinking imaginary scotch. It's only a matter of time before the creepy eyebrowless twins make an appearance.)

Also, Java's strings and arrays do not terminate with null characters. That broke a whole bunch of my data-parsing code without me realising it. It wasted about a day; a day where I both gnashed my teeth and smacked my head on the table such that I now have bite-marks in the woodwork. More tiny helpings of 'wrong'.

(Oh no! Jack's typing 'All work and no play...'!)

iPhone Flaboo! uses openGL to maximise performance. I used big interleaved vertex buffers and manipulated them in real-time to get the rotations and scaling you see in the game. Java does things a bit differently (uh oh). You have to use ByteBuffers instead of arrays, and there's no sensible way to cast different portions of them to different types - vital if you're interleaving colours and vertex information. I wouldn't mind if ByteBuffer manipulations were fast, but they really, really aren't. Another 'wrong'.

The Slow Dance
Despite the various hiccups and a nagging feeling that this wasn't as much fun as it should be, I got all my lovely, complex, multi-layered, articulated sprite code working today. I tapped the screen a couple of times causing Fat Chick's cheery little face to appear on the screen.

By the time the game had 20 sprites on-screen it had slowed to a crawl. If you wiggled the roller-ball on the phone it ran at half of even that glacial framerate. In response I looked around once more to see if there was anything I should be doing (or not doing) that would help speed things up a bit.

After a search, the main advice seemed to be to change all my maths into fixed point. Fixed point? I've not used that since 1995! How retro does your hardware have to be to rely on the veritable 'Stonehenge' of game engineering? Big 'wrong'.

(Jack has now seized the axe and is telling all present that 'Johnny' is in the building.)

The other advice was to rewrite a majority of my code in C and compile it, along with all the android OS in a Ubuntu virtual machine or Cygwin. Yuck. As of two days ago there's better support for openGL in the NDK, but still.

Take a look at this. It's the final, capitalised Wrong to end all 'wrong-kind'. Debugging native (i.e. workably fast code) makes Lost's plot look straightforward.

(We've now seen the man in the bear suit, Jack has chased Danny around the maze, Halloran is dead and the titles have begun their roll. Oh, and Wendy screamed and cried a lot, looking much like a novelty bottle-opener with eyes.)


The Final Straw
I started Fluttermind to have fun and experiment with gameplay and graphics, not sit staring at a screen of hex for a day trying to figure out why a @&%£ing cloud isn't rendering properly.

There's no pithy afterward, I'm afraid. Eclipse/Google/Android and I part company today. It's the supermodel that turns out to be a hose-beast. It's the British Mars-probe that crashes due to a measurement error. It's the 'Avatar' that turns out to be 'Dances-with-Smurfs'.

Farewell Android. As I wander off into the distance I have absolutely no fear that you might follow me. Even at my pace you have no hope of catching up.

Thursday, February 4, 2010

'Flaboo! Lite' Now Available on the App Store

By the time you read this, Flaboo! Lite will be available on the App Store.

For those of you with the full version, this will mean naught. You already have the best version. Stop looking for greener grass on my side of the fence. I have a gun, and there's only grass over here. Move along. Wait a moment - actually, Flaboo! Achievements will be available soon, at which point the grass analogy fails more embarrassingly than a british bobsleigher's gusset.

Arse.

Anyway... for those of you reading this who do not already have Flaboo!... um... well... what can I say?

Um...

Hi.

Welcome to Fluttermind.

Nice to meet you.

You must be lost. Are you? Thought so.

Perhaps you were looking for a humorous 'fart' application, or the well-observed simulation of a pint glass, or - if I may be so risque - you sought a full screen depiction of mammary glands? If it is this last, I must say it seems bafflingly redundant considering you're reading this on the internet. The internet = Pornucopia. But I'm not one to judge. Dear me, no.

All I know for certain about you is that you are visiting the little-read blog of a game developer whose work you dont like enough to spend money on. That's fine. It's your right not to buy as part of a civilised free market economy. Without that, where would we be? Eh? Yes, that's right. Norfolk.

No, you go right ahead and read on. Make yourself comfy. Or better still, go and download Flaboo! Lite. It's free. Yes, that's right. 'Free', just like some of the beer, boobies and farts you were looking for. But better.

Go on. Download it. You know you want to! Quick! Before it's too late! Get it before all the 'Free' leaks out!

Saturday, January 30, 2010

Flaboo! 1.1.0 now available on the App Store

Finally...
So it took a little while longer than expected. The Open Feint libraries were rather cryptically and inaccurately documented in places which meant that code which appeared to work did not in fact work at all. Particular mention must go to Matt Jaques who helped me solve that particularly elusive bastardo bug.

Various other fixes are included, including one an annoying sound bug which meant that drinking too much coffee eventually made you go deaf. Perhaps the gods are trying to tell me something. Perhaps I should drown them out with a nice fresh mocha.

Overall, thanks to the patience of both folks at Aurora and my beta test team, all the problems were eventually fixed, so the new Flaboo! is bigger, tougher, more competitive, and better than ever. Long may this trend continue.

Future Plans
I now have 3 big things on my 'to do' list.

1) Investigate Android as a platform
This fills me with some fear, as it's another API to learn, and then - potentially - a whole bunch of hardware specific issues to fix. Re-writing Flaboo! so that it uses 'virtual coordinates' and thus takes account of any screen size is no trivial task. Additionally, I don't know if accelerometer tilt is standardised between hardware types... etc... etc... I hate this stuff.

2) Flaboo! will soon be part of an Open Feint promotion. Woohoo!

3) Flaboo! LITE version will be out at some point in the near future. It'll effectively be Flaboo! with no Open Feint or leaderboards. The people who have bought Flaboo! already have bought free updates for life, so I hope they'll still feel satisfied.

And in Other News
On the non-Flaboo! front, I have two other games on the drawing board at the moment.

The Clockworks is something I've been thinking of for some time. It's kind of paying a debt to all the magical books I read as a child. The pre-pro screens are looking beautiful, and will be using 3D in a really unique way. The aim is to get across the sense of a massive, evocative, magical landscape on a very small screen, and create a gentle, if elegiac experience. That's all I'm saying about it for now.

incoboto is a complete departure from my usual work; a strange crossbreed between an art-house animation and tactile fun. I'm sure a lot of people will immediately say: "WTF? That's a game?" when they first see it. When they realise how relevant it is to them, personally, that'll hopefully change to 'Cool! Let's see where this goes!'

There's a lot of Fable in it, but not in the ways people might expect. It's also a great candidate for a GDC or IGF talk. If you want a hint, I was listening to a lot of 'Mesh' when the idea came to me. Music's a huge part of visualising a game for me - the right song can define a game from the outset, which is really helpful as the months go on.

As ever, it's still just me doing this stuff, so obviously one idea will take precedence, and existing customers of Flaboo! take precedence over everything.

Regardless, I'll post some screenshots when things are a little further along, and see how people react. It should be interesting.

Tuesday, January 12, 2010

Bayonetta - geddit? Hur hur...

Thumb Candy
Some years ago, an EA executive horrified me by stating that he considered good game-play to be 'thumb candy'. His usage of that term was pejorative; the elusive, golden specter we all chased was demeaned and derided, given no more value than flashy FMV, an eye-catching box, or the prominence of a particular store-shelf on which that box might be perched.

Thumb candy. That's like saying a book's plot and characters are of no more value than the cover.

This sat with me for many years as a psychic rallying-point, something with which I could mentally bash those from publishing and which I could use to distance myself from 'non-creatives'.

Now I'm somewhat at an impasse. I've discovered a game with great game-play and visuals to match, but with such risible, infantile wrapping that it actively detracts from the experience to such an extent that the experience is ruined.

I am, of course, talking of the introverted teen's wet-dream, Bayonetta.

I first came upon the game at the Igromir game show in Moscow. The show is so retro and booth-babe-fixated in nature that Bayonetta's lurid crotch-thrust poster didn't seem out of place. I assumed the game was some Z-lister's ill-conceived limited release and forgot all about it.

Then the hype began. This was a new breed of action hero, soon to wipe the floor with poor gay-icon Dante. This was an experience with game-play so sublime that Gods of war, and Ninjas gaiden quailed and quivered in its presence.












This was THE game to be playing, and to be seen to play.

So, out went the £40, in came the game to end all games. I put the disk in and began to play.

Very soon, I found myself doing a couple of odd things. I was wincing. I was rolling my eyes. After a while I realised that I was finding the whole thing incredibly embarrassing.

I'm no prude - I've had a fair few Giger calendars in my time, and can sit through The Crying Game with my parents, pointing to the screen at key moments, with no trace of a blush upon my cheek. But this was something so clumsily adolescent I swear I could detect the heady scent of PanOxyl Maximum Strength and Bacardi Breezers.

The Good
First of all, I'm genuinely in a quandry. This game's achievements - on paper - look exquisite: more than can be hoped for from a game of this type, and certainly more than is found in 99% of games on the shelves. For example:
  • It looks great: extremely high resolution textures throughout, loads of particle effects, wonderful-looking terrain and a cohesive art style. Most uncommon.
  • The frame-rate is so fast and smooth you expect to have to pour espresso into the console to keep it going.
  • The heroine's move-set is large. Really large. Beat-em-up large. And changes with each weapon you pick up.
  • Enemies are well-designed, very imaginative, and beautifully rendered. The angels are as magnificent as they are gruesome, suffused with a Renaissance filigree that makes them quite identifiable and unique.
  • The game tries not to bore you at any point, giving you time to practice moves during loads; a fantastic idea.
  • You can try moves before you buy them. We tried doing this in Fable 1 and 2, and failed to get it into the game due to time constraints. Newsflash: it really does work.
  • The experience is very varied. Incredibly so. At no point have I ever felt I was grinding my way through any part of the game. I am constantly surprised.
  • Most importantly, the game feels good, solid and tactile. Years of tropes honed in beat-em-up-style games come out to play, and the use of Witch (bullet) time is well considered and better executed. 5 stars.
The Bad
So, what could the problem possibly be? How can you find one thing to moan about after that, you old misery? How does one look this particular gift-horse in the mouth?

Bayonetta herself
Christ in a bucket... where do I start? Many years ago, Freddy Krueger - Wes Craven's nightmare killer - was cool, terrifying and shadowy. Hollywood thought him too iconic, too commercial to remain in the shadows and had him turn into a tap-dancing psychopath with truly awful one-liners.

Bayonetta starts out that way. She is designed to appeal to young men who have never seen women in the real world. Ever. Not even in a supermarket.

She looks like Sarah Palin's porn-star sister, with a wit to match.

She is deeply unlikeable, sharing a vocal style with Batman and Robin's 'Poison Ivy' as played by Uma Thurman. Not a good choice. At no point does she utter anything that isn't a derisive sneer, delivered in a mock-English accent that would shame Dick Van Dyke.

Most of the time, Bayonetta wears a catsuit with pale gloves. Apart from when her clothes fall off. See, her clothes are made of her hair... sort of... sometimes. This could have been a cool idea, but it soon becomes clear it's only there so they can remove all her clothes when she performs certain moves - usually ones involving her spreading her legs and giving the surrounding baddies a lead shower. Unfortunately, they break this rule of 'big attacks use her hair' all over the place, making it far more blatant an attempt at sexual edginess than it needs to be.

She has guns on her feet. No idea how she fires them. On her feet. Um. It means she can kick really hard... and shoot at the same time. Yes, it's as silly as it sounds. I'm not the sort of guy who questions Elmer Fudd's motivations in Bugs Bunny cartoons; they're predicated on the idea of a talking rabbit, so all bets are off. But so many elements of Bayonetta seem the creative equivalent of Alan Partridge's 'Monkey Tennis': invention for the sake of invention or - more accurately in this case - puerile titillation.

The Story
The story of an Umbran witch's attempt to find the gem of whatsit is... shit. Random, visually led, gold and gem-encrusted shit, maybe, but turdy nonetheless.

Imagine a group of men sitting around a table trying to imagine what a teenage boy would think was cool. Random scene follows random scene feebly pulled along by the quest for... um... see, I've forgotten already. Where was I? Oh, yes. Randomness. Like this:

"Hey - how about she shoots a bullet up the willy of Belgium's famous peeing boy?"

I know it's supposed to be audacious, 'cos, you know, she's a WOMAN and she's shooting a bullet into a COCK! Hee hee. See the imagery? See the metaphor? SEE IT? SEE IT, YOU NEANDERTHAL EUNUCH! SEE IT AND APPRECIATE OUR MUSCULAR, THRUSTING TAKE ON FEMINISM!

Her clothes fall off every 5 seconds, guys. Your 'girl power' schtick is somewhat lost in the cleavage and thrusting pudenda.

Oh, there are some other characters in there, too, but I literally couldn't tell you anything about them. I think they said some random things like: "Holy SHIT!" as something exploded nearby, or "What a day!" as their car was thrown through the wall of a... I dunno... Tesco Metro or something. I'm afraid I was so bored I did what I never ever do ever ever ever. I started skipping cinematics. Yup. Every single one. That bad.

Yeah, I know nobody cares about videogame stories. But... Bayonetta is supposed to be a character rather than a cipher, and thus the story is supposed to be there to make us connect with her. Unfortunately, the story and dialogue are so egregious that they'd come a poor second to an episode of Acorn Antiques re-cut by Tarantino.

The Pacing
I like Norwegian Black Metal. Not all of it. Not all of the time. Nor do I like the bands' politics. However, when I'm in a nihilistic mood 'Thorns' is just great. However, I have no desire for Thorns to be the sole musical form I listen to for the remainder of my life. See the analogy? No? Then I'll rant some more.

Bayonetta's pacing seems based on the single precept that something must explode at all times. If something's not exploding, someone will randomly throw something else into the environment that will explode. Are you standing on a bridge? It's going to explode. A Colosseum? Explodeyness awaits. How about a park? I'm afraid something will throw an oil truck into that park, it'll explode, then something bigger will pick up the entire park and explode it some more. Still sound cool?

The first time this sort of thing happens, you go: "Crikey - that's spectacular!" After the 50th time, you hear yourself mutter: "For heaven's sake. Just stop it."

When you strip back the explosions, you'll find strangely restrictive environments. Invisible walls abound and funnel you toward the next explosion at all times. There is no opportunity to explore, no reason not to run forward, and no sense that there was anything more to a level's creation than the developers' desire to blow something up in your face around the next corner.

It. Becomes. Tiresome.

If Bayonetta Were a...
If it were a film it'd be a porn version of Matrix Reloaded directed by Stephen Sommers*.
If it were music, it would be thrash metal produced by Stock, Aitken and Waterman.
If it were a book... nope... there would never be a book of this. It'd be empty and still somehow confusing. Marvel Comics' worst excesses are works of Shakespearean wit and subtlety next to this confusing mess.

Final Moan
Despite its obvious technical merit and the evident ability of the team who created it, I think the game lacks several things which I increasingly value over and above pure twitch game-play - as amazed as I am to say it.

Its characters, story, world and tone are gaudy, superficial and cynical. I know that doesn't count for much in a world where few companies can make a game that feels good to play, but the world has moved on. Surely we - as an industry - are capable of so much more than this?

I find myself wistfully looking back at the relative restraint, beauty and atmosphere of the first 'Devil May Cry' game, when Dante was a brooding, near-mute hero and the environments he roamed cohesive, explorable areas filled with a sense of menace. I long for the occasional moments of true tragedy in the first 'God of War' that made you feel that the guy you were steering around the Elysian fields might have depth, and I warmly remember the sense of achievement I felt when maneuvering the great concentric circles of a dungeon on the back of a striding giant into just the right alignment.

Conclusion
While I'd never agree with the guy who said that gameplay was thumb-candy it seems there's more to great games than RSI. There's heart. This game is a cynical, heartless bitch.

If only Bayonetta herself had that much character definition.

*Not even Michel Bay would touch it, and he's a tit.