Something on a Sunday #8: Menus

June 12, 2011

iTween is rather awesome, isn’t it?

Unity is impressive tech, but I’ve been infinitely more impressed with the community surrounding it. Any obscure question can be answered with a glance at their forums, any problem has most likely got a user created tutorial, example code and even tools designed to help it get sorted out even quicker. An amazing learning environment.

iTween is a great example of such a tool. Trying to work out how to move items, I wasn’t at all shocked to find a fantastic resource which makes the task a breeze. It seemed like a good excuse to get a pass of the main menu done. And here it is..

(no sound – I and others are working on that ;P)

I’m happy with the result, it’s created entirely at runtime, from inspector edited arrays containing the text strings and icons. This makes it massively scalable. The placement, size and even colours are also all variables, so this can be used to make a pretty broad range of menus.

It seems only fair to put this back into the community. I’ll be doing so after release.

Right.. now I need to get to the important and far less pretty task of cleaning up the script written so far. It’s become messy and I plan to spend the rest of the day cleaning up a little.

Something on a Sunday #7: Story lockdown

June 5, 2011

The game scripting continues to move forward, target rectangles are in and working, and I’ve begun work on the front end menu. I’m going to keep playing with this, should have something to show in the next couple of weeks.

Story, and specifically mood, is the focus for today. I’m a game designer, a game designer with a nerdy dedication to play, learning and level/puzzle design. This means I can occasionally forget to give story and aesthetic the attention they deserve. Fortunately, I have friends whose skills far outstrip my own. As I begin to turn to those people for advice on everything from colour, to effects, to music, I need to solidify the story and characters. With that in mind, I’ve created a final story treatment spec which can be referred to as I move forward.

Some readers may notice content from previous blog posts. I’ve tweaked and fixed elements to tidy up. This should be pretty close to the final implementation so, you know, spoilers!

in which the designer pretends to be a writer for a little while

Still working out how the music is going to happen. It’s going to be a pretty big job. In my head it’s minimalist, moody and with a little chiptune for flavour. Like Clint Mansell found an N64. That’s going to require a pretty fantastic composer.

A big ask.

I’ll find someone crazy enough to help me out 🙂 (if anyone out there wants to volunteer, get in touch on twitter @mikebithell).

Something on a Sunday #6: Lots done

May 29, 2011

Oh, hello there.

So. Life got in the way again. Friends’ wedding, a visit to Aardman* and an increasingly hectic schedule in London all conspired to keep me off the blog and out of the editor.

Even though this is my first weekend with access to my computer in a few weeks, I’ve managed to catch the odd couple of hours of evening scripting along the way, and actually have quite a few new features. The video below shows the key ones. Please note: the character abilities, shapes, jump strengths etc are placeholder, I’m adding stuff as I go.

Also, that rain effect is getting dull.. need to begin working out where I’m going to source some music…

Text

The text used in the video is being rendered in game. The original prototype did at one point feature static text on each level, telling the story and a few jokes. Ultimately, I removed all but the opening and closing text for that release; it was written in about half an hour, and it showed :). With this version I wanted to incorporate text again.

The suggestion to do script triggered text that updates mid level as you progress came from friend and colleague Imre Jele. It’s a cool idea, and this implementation is a fun first step. I want to clean up the transitions, but it’s cool to see them animating in. This uses the built in unity GUI btw, I just created a new label skin, and a really simple transition manager to make things a little prettier.

Anti Grav

I wanted an anti gravity character from the start. Unity, by default, uses a global gravity value. The best way to achieve consistency seemed to be to turn off the default gravity, and run everything off my own gravity script, which can be flipped on a per character basis.

There was an issue where gravity strength was frame-rate dependent, but I just needed to read up on how Unity handles updates, and it was quickly sorted (thanks to those on twitter who jumped in with help and suggestions)

Double Jump

Again, really straightforward. Just needed to loosen the limits on the jump. As with antigrav, it’s now a simple tick box on my character preset

Water

Water was a lot of fun to get working. In the original prototype water has no collision, it’s just a death trigger. I wanted my water to allow buoyancy and feel like liquid. I came up with a vastly simplified water physics system (greater the downward force and depth, greater the upwards competing force) which makes for reasonably realistic animation. It’s a bit bouncy, I’m working on that :). Water also has a current variable, so it can wash characters in a certain direction.

I realized midway through that swimming characters were fun, so one will be added. Non swimmers like Fred in the video above are non buoyant and sink, with a little resistance provided by the viscosity of the liquid.

Visually, a few simple elements combine to make for a satisfying visual that fits with the game’s minimalist aesthetic.

  • Sine bounce: Really simple position bouncing on a sine wave so it eases in and out a bit. Different water can have different bounces, so I can do turbulence or steadiness. Considering adding turbulence at each character impact, could look cool.
  • Gradient texture: Simple PNG gives a basic depth to the liquid, which looks great when it sine bounces.
  • Surface ripple: Kinda subtle, might not show in youtube video. A variable thickness line of black is drawn at the surface of the water. This effect is achieved by horizontally stretched particles, resizing and varying in opacity while moving randomly from side to side. This creates the illusion of surface rippling which I wanted, and really sells the water.
BONUS: Wall jumping
Not present in the video, it’s a work in progress. The idea was to have one character with walljumping abilities. Ultimately, I’m not sure it fits with the rest of the game, I’ll keep fiddling, but as cool as walljumping is – I’m not sure it works.

Right, a nice big update done, thanks for reading. Fingers crossed the blog can update more regularly going forward.

*which was awesome, those guys are incredible.

Something on a Sunday #5: Friends

May 8, 2011

Another brief one today. The game’s come along well in the hours I’ve been able to give over to it this week. I’ve implemented multiple characters (of different sizes, movement capabilities etc), and enhanced the rain splashes with a bit of glow and velocity stretching.

Baby steps.. but it means the foundation is now there. Next will be special ability characters (reversed gravity, double jumpers etc etc) and death and win states. Once again, apologies for the framerate and compression fun of my screen capture + youtube :). I assure you it runs very nicely.

Oh, and yeah, did I mention how in love I am with Unity 🙂

Something on a Sunday #4: Rain and better jumping

May 1, 2011

Just a quick post today.. it’s late 🙂

I spent a big chunk of the royalwedding break away from home, so haven’t been able to get a massive amount done. Ripped apart my optimistic but deeply crap code from last week, and rebuilt it all to work a lot smoother. The controls are significantly better, still a bit floaty, but there’s time to work on that.

Rewarded myself by having a play with the unity particle system and UV scrolling. Very cool, and got this neat rain effect working in a very short amount of time. UV scrolling as an approach for cheap rain owes a great debt to Quickfingers, while I totally ripped off the MGS2 shoulder splashes on the character and ground (youtube compression sort of messes that up though ;D)

Continuing to fall madly and deeply in love with Unity, such a great environment to make games in. Next week: I grow up and actually get some game logic / character switching in.

Something on a sunday #3: Structuring a story

April 24, 2011

A bit late. But still Sunday. I think we’re OK.

Today’s Thomas Was Alone dev post was a challenging one to come up with. In between Portal 2 and various holiday commitments, not an enormous amount has got done on the game. I’m also now away from the dev computer, so no chance of any further prototyping or art assets.

What I can do is give some thought to the structure of the game’s story.

I’m not trying to redefine game narratives here, neither am I attempting to take a really simple game and spoil it with branching conversations, epic cutscenes and metaphorical ponderings from a diverse cast of deep characters. That said, I’m asking players to sit and play this game for an hour or two, so there should be some kind of progression to the world and characters.

What went before

The narrative of the Flash prototype is simple. Thomas was alone, Thomas met some other characters and learned about friendship and cooperation, Thomas was no longer alone. That was fine, and for a short Flash game, absolutely adequate. It also left enough room for players to emote with the characters and scenario. I got loads of messages claiming the game was built as a training tool for project management, one guy was convinced it was a attempt to make a game based on Seinfeld (a show, I’m ashamed to say, I’ve never seen).

Adding an arc for Thomas

The problem with no friends > lots of friends is that it’s dull. There’s no drama there. The most common arc is ‘character is missing something > character overcomes obstacles to get it > character nearly loses it > character gets what they need in the end’

So applying that to Thomas, it becomes ‘Thomas was alone, Thomas began to make some friends, Thomas lost his friends, but won them back in the end and made even more.’

That’s better, and applies a slightly more interesting structure to events.

Context?

So why is Thomas alone? Why are other characters around, and why does he have trouble keeping them once he’s befriended them? At the same time, the minimalist art style means everything needs a story and context which fits.

So, avoiding a Science Lab presided over by a rouge robot, an alien invasion or a vengeful cop with nothing to lose, here are a couple of context ideas…

  • Maybe it’s a wizard of oz / alice in wonderland style ‘lost in a magic world’ story. Thomas wakes up in a strange place, and must befriend the locals in an attempt to get home. Meanwhile, a dangerous nemesis is chasing him down, kidnapping anyone who befriends him. In a final showdown, Thomas rescues his kidnapped friends from the big meanie.
  • Thomas is an AI, a minor program in a virtual world, who just achieved sentience via a coding aberration. He’s lonely, and begins to seek other programs in a similar state. An anti-virus system kicks in, turning his friends into enemies, but he manages to turn them back to his side and spread sentience across the network.

I really like the latter – it allows me to enjoy the abstract qualities of the aesthetic. I like the idea of representing the workings of a computer program as more akin to an infographic than a tron style glowing interface. It’s also a fun way to tell a story, with visual and text information appearing around the characters to explain their feelings and communicate gameplay concepts to the player.

The part about characters being ‘won back’ by the system while the player is effectively a virus trying to convert AIs to his side really appeals to me. A temporarily ‘evil’ ally can start acting on its ‘original programming’ following a predefined path or action. Could be fun.

Character reveals

The characters of the game (much like in the original prototype) are essentially mechanic reveals. The logical approach, therefore, is to space them out reasonably equally in the game, so there are frequent new abilities to mess around with.

This is muddied up a bit by the narrative (which calls for a period about 3/4 into the game where Tom isn’t making any new friends). At the same time, I want to be pulling characters out frequently – playing with more than three or four characters at a time would likely be overkill. Combinations of characters therefore encourage mechanics in and of themselves, meaning that new challenges can be frequently given to the player. The order of character introductions and pacing can be worked out during the challenge brainstorming stage.

Character stories

Each character will have a starting state, along with an end state. These simple stories of reversing fortunes wouldn’t be enough for the main character, but should layer up nicely on the ensemble. I already gave these some thought (see the character image in an earlier post) but will continue to fiddle to make them fit, and maybe inter-relate a bit more.

And so…

The following is the story treatment I think I’ll be going with. This may well change as I go forward, but it’s what’s in my head for now. Spoilers. 🙂

30 years ago, an experimental programmer created a computer environment, populated by self replicating, evolving AI lifeforms. Thomas was the first to achieve sentience. Alone in the computer, he seeks out other evolved AIs to relieve his loneliness. As negative aspects of the code begin to manifest in dark AIs actively seeking to destroy any sign of life, Thomas and his friends must race to the program’s core to unleash sentience and bring the world to flourishing, beautiful life!

Right, that feels like a decent chunk of thinking done. Back to the chocolate 🙂

Something on a Sunday #2: Thomas goes to Unity

April 17, 2011

It was a beautiful evening 6 years ago.

I had just finished my first year of Uni. I was studying for a game design degree, but had yet to actually make a game. I looked at my options, and decided to try and make flash games.

My first few efforts weren’t great, although one made it onto Joystiq. I was hooked, Flash allowed me to make a game with my limited programming knowledge, then unleash it online.

Since then, a Flash game got me my first job four years ago, and Thomas Was Alone got me enough word of mouth that I could attempt to reach a larger audience with this indie game. This week, I’ve been investigating ways to improve Thomas in Flash, incorporating physics to handle the more complex gameplay I want to achieve. And it was going so well, until I went to a Unity event on Friday.

It was this one, and I strongly suggest any Londoners who fancy getting into Unity attend the next meetup. Quickfingers was there showing Boom Bugs (and kindly handed me a helpful 2D mesh afterwards). I got talking to a couple of chaps from Unity, who suggested I give their platform a chance…

4 hours later, I seem to have a working character jumping around in a world. I’m converted. This software is amazingly easy to pick up. Don’t get me wrong, my current build sucks (the physics are all over the place and the controls are rubbish) but I find it incredible that a novice using Unity can get anything running this fast. Looking forward to continuing to learn, and to making Thomas Was Alone as awesome as I hope it’ll be 🙂

Something on a Sunday #1: Meet the characters

April 10, 2011

Time to start putting work up. I’m going to start small, with the a character mechanics and description image.

The idea was to define a small cast which expanded on the skills available in the original. Each character has a small, defined set of abilities. The fun and puzzles of the game flow from the opportunities and limits of each character, and the possibilities afforded by their combination.

Possibly more characters to come based on the first levels I begin designing. For now, here are the first 7.

(now back to getting my head around an improved physics / collision system)

Source Code (a game design)

April 2, 2011

You know when an idea gets inside your head, and you have no choice but to put it down on the page just to free your brain up?

No?

Just me?

I was lucky enough to catch an early screening of Source Code last Wednesday, and haven’t been able to get rid of the nagging feeling that it’d make an awesome premise for a game. Well, I’ve spent some time today thinking through my ideas and getting them down. The following image is the culmination of that process. Feel free to post elsewhere if you think it’s interesting enough 🙂

Hopefully now I’ve written it all down I can get my head back to the game. I’m progressing well with the paper design, and will post up some stuff on it in the coming week.

Why I just quit my console development job to try making social games

February 9, 2011

Hands down, best blog post title yet.

So. This is a big one. It also has absolutely nothing to do with Thomas Was Alone. Readers uninterested by subjects not involving rectangles should probably skip to the final paragraph.

Still here? Good. Right. Today was my final day in the conventional console games industry. I’ve worked for nearly 4 years designing levels and mechanics for a range of games on all modern consoles (I even got one out on the dusty old PS2!). For the last year I’ve worked with an amazing team coming up with ideas and producing pitch materials for a few games which have already made their way into development. It’s been awesome, and my (now) previous employer gave me an incredible number of opportunities to make fun stuff and be creative. I’ve thoroughly enjoyed every moment.

So why, today, do I leave to step into a lead designer role at a new London based social games studio? Time for a big list 😀

My favourite game of last year was a social game

Minecraft was a profound experience for me. It showed me what could be achieved by a small team of incredibly talented people, and that those people could, you know, afford their rent while doing so. More importantly, it was a hardcore social game. The debates I’ve seen online generally go ‘hahaha minecraft is just farmville for nerds, har har, you’re as bad as a farmville player’. It’s a dumb argument, designed to troll and wind up hardcore players who despise Zynga style social games. The point is that Minecraft is undoubtedly a social game, about engaging in activity with the ultimate goal of being creative and sharing that creativity with others. It’s also a better game than Farmville :).

Social games are where the innovative design is going to be done in the next few years

Incidentally, my favourite console game was Assassin’s Creed: Brotherhood – a game which featured a Mafia Wars esque questing mechanic. Sure these social mechanics are inspired by mechanics as old as games themselves, but the field is ready for innovation, ready for games which put fun innovative experiences at their core. This is starting. I want to be part of that wave. Compare that to the current state of console games, where the genres are very well defined, and outside of some awesome indie studios, it’s about small tweaks rather than genuinely massive new ideas.

Small games made by small teams with low risks

Console game budgets have gotten ridiculous. Publishers plow so much money in that less and less risks can be taken, and inevitably that means less interesting work for designers who want to do something different. This is compounded by the fact that fewer of these AAA games are actually making their money back than ever before.

Compare that to the social games industry. Small teams gather around risky new ideas to make new experiences. Just like the early console and arcade days, cloning is rife – but just like those times, innovation isn’t just an aspiration, for many companies it’s a business model. Working as part of a small team, the pressure will be on me to create engaging new ways to play – and follow those ideas through

Iteration past the point of delivery

This is the big one for me. Social games don’t have a ship date. Design for console games is guesswork, you’re constantly trying to work out what a player will like. That’s helped by play testing and focus testing – but every game developer who’s waited with bated breath for their latest release to hit metacritic knows how much of a leap of faith every game is.

Social games aren’t released in the same way. They start small, building an audience. You can update and change the game around the players, producing an experience they want around them. I had a very small taste of this with Thomas Was Alone. I got a lot of messages in the first hour of its release telling me about a sucky challenge in an early level. I could dip in, make a jump more forgiving, and watch as people enjoyed my work more. I liked it. Social game development hinges on this kind of ongoing problem solving and reactive design.

I can’t wait!

I’m not entirely done with consoles

I’m not ruling out a return to console dev. I know some awesome guys I’d love to work with in the future. The time felt right to try this new exciting industry on for size. I expect there to be an increasing amount of overlap between the two fields as time goes on – especially as games move more into digital distribution, the cloud, and so on.

So those are the big five reasons. I’ll no doubt think of more the second I post this. I’d like to take the opportunity to say thanks and goodbye to my amazing colleagues at Blitz, the studio where I learned everything I know about game development.

The cool news is, none of this affects Thomas. The game will continue to be developed in my spare time. The amount of spare time I have has obviously been constricted by all the big changes – I’m moving to a new city, new job etc etc all in one go. But I aim to ramp up this blog with more content, as I begin to solve some design issues in the game, and come up with some cool mechanics.

Cheers for reading – time to go update all my social networking sites 🙂