Monday, 7 April 2014

Gamedev crash-course for beginners @ Stockport Creative Festival

The next Stockport Creative Festival is happening over the 17th and 18th May, and as part of it I'll be running a couple of games development crash-course sessions for beginners, at the Central Library in Stockport on the Saturday (17th).

I'm currently writing a full course to be run over a weekend at Madlab, so this will be a sort of bite-size taster of what to expect. I think it'll be a really fun day, and it'll give me a chance to see how much people are into the idea before I take the plunge and do something bigger and more challenging.

Exact content TBC, but expect chunky colourful arcade loveliness:

The course will be aimed at anyone and everyone who's interested in making fun videogames, and is for absolute beginners - no experience necessary.

The exact plan is still under wraps, but we'll be making something fun and exciting as a group using the free Stencyl software (it'll probably look something like the images above though!) - hopefully this taster will lead attendees on to bigger and cooler things.

If you're interested, tickets will be going up shortly - keep an eye on twitter for updates!

Sunday, 26 January 2014

Snow In Tokyo - go!

I promised I'd write more about what I'm up to, so:

At the moment I'm working on a really fun little project for my partner in crime, DEADBEAR (although I assume his mum calls him Nick). He makes lovely bleeps, and I offered to add some visuals to the mix.

It definitely took us a while to really figure out what we wanted to do (as is always the way with self-directed "let's make something cool" vanity projects), and after a mild lull in activity while I finished some other stuff, my brain has fully whirred into action now. My recent interest in live-coding has spilled out into this project, which for me is no bad thing at all - Nick gets a sweet video, and I get to noodle with something that really interests me enormously. I'm also using this to start being more active in open source projects, at the moment I'm using Cyril, a live coding environment built on OpenFrameworks. It's very new and completely open source, so hopefully I can contribute there too.

The plan at the moment is to produce a live-coded music video for the new single, Snow In Tokyo - I'm going to be visually exploring a snowflake form, deconstructing it over time and completely glitching out the components into a massive cacophony of visual weirdness, before re-constructing it as the song ends. It'll be built from ideally hundreds of rapidly coded segments, each sharing the common snowflake form but with enormous variance based on the music. Every part of the animation will be powered entirely by the music too (remember Rez?) - beat detection and things like FFT/frequency isolation work great already.

To give an indication of how quick and exciting the process is, the sequence below represents about thirty minutes of experimentation once I had the basic snowflake drawn. This is a whole new way of working for me, and feels as close to a jam session with code as I think it's possible to get:

This doesn't sound like live coding, and on the surface I suppose it isn't strictly - I'm using the techniques as a tool to create hundreds of visual treatments, rather that performing it live. I also like the idea of algorithmically putting the video together too, perhaps writing something that judges the craziness of each component and puts it at the right section of the video or something. That's a way off though, baby steps...

I've built a couple of prototypes already just to make sure I can pick out the right parts from the music. In this one, the first three boxes sample three low/high/mid frequencies, and the other two boxes sample hihat and kicks:

This other one simply demonstrates the 32 channel breakdown, any one of which could be used to power the video. It's really simple to do, but will let me do things like create backgrounds to sections that use the low bassy wobble and the upper-end to do finer little animations.

This project has also lead me to say an emphatic "yeah!" to an offer from the Manchester Girl Geeks in July, they're doing some sort of music generation/experimentation event, and I'm going to be live-coding some visuals for it. Most excitingly, some of the audio is built from sources like the Large Hadron Collider and something in deep space too. Should be ace.

Tons more to come on this.

Monday, 30 December 2013

Obligatory New Year's Post.

Disclaimer: I don't normally do this, and in fact my intention for this blog wasn't for it to be a personal rambling outlet really... but of course things change, and so I'm going to use this space for a little more waffling from time to time. If you came here looking for games, code and geekery then that'll still be present and correct, promise. Even more so if I stick to my resolutions below.

So, it's almost the end of the year, and it's been a crazy one. 2013 was my first full year at the BBC, and was a reasonably big turning point for me - I joined the children's Games Stream, and gained enough XP points to make senior developer. Ding! It's been a fun year, completely insane-o-busy sometimes but I wouldn't have it any other way. Really excited about diving into new things next year at work, definitely, and I feel pretty lucky that I genuinely enjoy my work at the moment.

Outside of work I've also had some good success with the game jam and other ventures. The jam is doing really well (more on that in a minute), and I've also had the chance to level up my public speaking too: I was recently a headline speaker at the first Manchester Tech Nights event, and have been invited to go and do the same talk at Birmingham Uni in January. Pow:

Event-wise I also kicked off a brand new Unity usergroup in Manchester, with the aid of Joe Robins from Unity. We've only had one meeting so far, but it was a total sell-out straight away, which was great to see. We have a whole bunch of amazing speakers lined up for the new year, I can't wait to see what comes out of it. (I've also been firming up my Unity skills at work too, hopefully one of my personal projects this year will use it - best way to learn, right?)

The other big thing on horizon is that I've also been asked to devise and run a gamedev crash-course for the Omniversity at Madlab, which I'm really excited about - much more to come on this when I get stuck into making it happen.

But, of course, the main event of 2013 was the arrival of Hurricane Isaac on April Fool's Day (you couldn't make it up):

For such a small human he's had a terrifyingly large impact on me, my wife, and almost every facet of our existence. It's taken me months and months to re-adjust my life around being a dad, and while I've bitched and moaned a lot about it all this year, I think I'm finally getting my head around the fact that I'm having re-address the balance a little bit in terms of where my priorities lie (clue - the most important project I have on now is cute and poops a lot).

Before the boy arrived, I was one of the busiest guys I know - I really throw myself into my work, various projects, running events, and whatever other opportunities present themselves. Of course now that I have a giant shouty responsibility to take care of I've definitely had to scale back on a lot of my commitments. This was where most of my frustration came from over the last few months, but I'm getting the hang of saying "no" now. It's even more pronounced now that I've switched my hours at work - I now don't work Mondays and do four long days instead. This means I now get a proper daddy-day with him every week, and I've enjoyed the time so much, especially now he's getting a bit older and he's able to cackle like a pirate at the stupid faces I pull. He looks like this now, and enjoys trying to put power cables and the cat's tail in his mouth:

My resolutions for 2014 are pretty straightforward in my mind then, and they look like this:

Keep the boy at the top of my to-do list.
This one is self explanatory. I've demonstrated to myself this year that trying to juggle baby and work (sometimes literally, he's a climber...) results in me basically sucking at both things. I won't be cancelling everything totally, but I'm definitely scaling back what I take on outside of work. The big one is the game jam: I'm passing it over to some of our most trusted and awesome jammers - it's in safe hands.

Write more.
What I actually mean by this is 'make more', but most of the things I want to do are things like keeping my blog going properly, and writing the course for Madlab that I mentioned. My blog in particular will probably turn slightly away from the tech and slightly more personal, which I think probably reflects how my priorities have changed a bit. Happens to the best of us!

Talk more. 
I did a little more public speaking this year, and I really really enjoyed it - I find it's a great way of focusing my thoughts when I know I have to deliver those thoughts to a bunch of people, and the feedback has been positive (either that or everyone's been really polite). I'm already booked in to talk again at Birmingham Uni in a few weeks, and hopefully I'll have more chances to waffle at groups of people in 2014.

Finish stuff.
2013 saw me take on quite a few projects that I simply couldn't finish, and also one or two that went pretty well. Without fail, the modest projects were the ones I saw through to the end, and they were also the ones I enjoyed the most. If I take anything on this year, it'll need to be something I know I can see through to the end without violating my first resolution of course! I have one or two bits in the pipeline, and they're all definitely do-able, and I want to make sure I don't bite off more than I can chew this year.

Happy new year!

Saturday, 23 November 2013

Disregard rulebook! Make videogames!

Last week I was invited to be a headline speaker at the first meeting of Manchester Tech Nights - I'd initially offered to do a lightning talk and ended up doing a solo headline slot. Argh. 

It was a little nerve-wracking - this was easily my biggest public speaking event so far, to a sold-out room: it was standing room only at the back (I missed the free pizza due to being at the wrong end of the room after I finished my talk, pfft!). To make matters scarier, the other headline speaker had to pull out at the last minute, which wobbled me a little. All in all though, I was really happy with how it went, and I'd definitely do it again - in fact, I am doing at Birmingham University in January. Neat.

Anyway, the talk itself was called Disregard Rulebook! Make Videogames!, and was a bit of a love-letter to using programming as a tool for rapid creative experimentation and prototyping. The first part was a ramble about my attitude to coding, with a few projects to back it up (namely the Tate Gallery project from a few years back, and the more recent HOME project). I then went on to talk about the gamejam and show off some of the ludicrously fantastic games that our jammers have put out over the last year and a bit. Apologies to any neckbeard enterprise coders that I offended along the way!

The talk was supposed to be something like 15-20 minutes, and when I test-drove a version of it at Salford Uni a few days before it was the right length... On the night I ended up speaking for 45 mins (sorry, organisers) mainly as a result of adding a few bits and also really making a conscious effort to slow my pace down to actual talking speed.

Massive thanks to the Manchester Tech Nights guys and TechHub for putting on a great night, it was an honour to be part of the first meeting and I'm really looking forward to seeing where it goes from here.

Oh, and for the people asking for the slides (no idea why, it's all pictures...), they can be found here.

Photo credits: @rachael_burns and @zoeisthinking 

Saturday, 5 October 2013

MCRGameJam - September 2013

Thought I'd post some pictures of our last game jam, it was by far our most successful one-day event. We had a great turnout, and tons of ludicrously amazing games came out of it. This time around we went with five themes instead of one: CLIMBING, INVERSION, ROBOTS, STEALING & HATS.

Giant thanks to everyone for turning up and making it a great day, I had a blast even though I was feeling rubbish from a chest infection battle the week before.

Also a huge congratulations to Mark for winning the developer vote for best game, his hat-snatching multiplayer entry was absolutely amazing.

The next jam is tentatively scheduled for the 3rd November, will confirm when it's all nailed down.

Anyway, photos after the cut!

Monday, 16 September 2013

GTA V review comments via Gamespot

A sample of the feedback on Carolyn Petit's review of Grand Theft Auto V for Gamespot, presented without comment.

Tuesday, 2 July 2013

Generative visuals @ HOME

Back in November last year Nick and I took part in the Manchester Hackathon, creating a rapid prototype visualisation piece using some of the data provided by Cornerhouse. A while later, Cornerhouse invited us (‘us’ being myself, Nick, and Amanda) in to discuss more ideas, and generally hear our thoughts on what can be done with their open data, and generally new uses for creative coding as a whole. While this was happening, they also mentioned they were looking for something interesting to feature on the new HOME website, based on a range of related data and visuals. No real firm brief, and not a lot of time: just how we like it! Of course we jumped at the chance.

The data was comprised of architectural plans for the new HOME building, structural specification documents, lots of written research feedback material, videos of projected footfall, branding guidelines, and CGI imagery. Our initial plan was to do something as data-driven as the hackathon project, but it quickly grew into a much more visual idea.

Our initial concept was to try and visually represent the ‘anatomy’ of HOME; the stuff that makes it tick, represented graphically. This took the form of an exploration into generating new physical forms from the data, comprised mainly of typographical elements and components from the architectural building plans. This generative output could then be framed with more traditional typographic or visual elements to create finished pieces.

We started by manually creating a few test images, using randomised elements from the plans to form some rough typographic experiments, just to see how things looked:

The next stage was to put together a quick Flash prototype that generated these visuals for us, with configurable parameters. The code simply took a starting shape (a letterform for example), and iterated over shape placement until it had filled the space as much as possible. Below are a few sample images (ignore the item repetition, this was mainly a proof of concept):

We also started exploring them as animated forms too:

At this stage I wasn’t super happy with the final imagery: it was interesting, but not as visually impactful as I was hoping for. However, I realised that actually the part I was really happy about wasn’t the final product at all: it was the process. The code is generating these images, not me, and I quickly realised that actually without showing the process to the viewer they were missing the point entirely.

So, we evolved the idea slightly, focusing much more on the generative aspects. We loved the typography and images, and wanted to create the same interesting forms, but we wanted to do it while still showing the generative steps to the viewer. Inspired by the work of Roger Alsing, I started experimenting with my own interpretation of genetic algorithms to create more visuals. 

The idea is pretty simple:
  1. Give the program a target image (i.e. the one we’re trying to create)
  2. Create a blank ‘working’ image
  3. Draw a completely random shape onto the current working image
  4. Decide if the new working image is closer to the target than it was before we added the shape
  5. If it’s closer, save the image and go to step 3
  6. If not closer, discard the new shape and go to step 3
What this gave us was a program that over time would generate images that got closer and closer to the target image. There was no limit to how many times the program would run, it would just get closer and closer until I decided to stop it (or my laptop exploded). More importantly, this also allowed us to capture snapshots of the working image at regular intervals, allowing us to not just have a final image, but also an idea of steps that the program took to get there.

We then produced a series of experimental letterforms, and spent a while quickly running them through the algorithm's first few thousand cycles to find out which were most visually interesting when processed:

As we expected, the most effective ones had lots of color and contrast, so we went in that direction and produced four distinct typographical forms built on HOME imagery:

Once we had our final imagery, we needed to run them fully through the genetic algorithm code. First, we took our base image, which is then used as the target for the generative process to aim for:

The code was then left running until it had reached an interesting approximation of the image, capturing ‘in progress’ images at user-defined intervals. The final generated image in this instance was comprised of about sixty random overlapping shapes, had made around 40,000 cycles of generation, and took about ten minutes or so to create:

From here, we were able to produce ‘filmstrips’ of the process images for each letterform, both in a web-friendly resolution and also in ridiculously high res (this would allow them to be printed, or even just downloaded for a closer look):

We also put together a video showing the initial typographical images, along with animated versions of the letterforms quickly constructing and deconstructing. This really gives you a nice sense of what the program is doing in terms of it’s process, you can really see the shape emerging from what looks like randomness. 

(big thanks to David Fenn for providing the music, check his work out here)

A note on the technical implementation: Roger Alsing’s experiments and open-sourced code formed the basic idea, which I then simplified greatly and re-built using C++ via OpenFL. We'll be open-sourcing the whole thing shortly so others can build on it too. 

Wednesday, 10 April 2013

Quick and dirty jam build: Unstoppable

I took part in last month's Manchester Game Jam, this time opting to do it from home due to my scarily pregnant wife (baby Isaac is here now, but that's a different blog post entirely!).

Anyway, in about a day or so (including a bit of pre-jam cheating, fight me) I put together a quick little arcade tunnel shooter sort of thing. It looks like this:

It uses Away3D/stage3d to create wireframe graphics a la Battlezone, ditching textures entirely and creating everything from smoothed wireframe polys at runtime. It ended up being reasonably simplistic, but I was really happy with the feeeeel of it: the physics on the ship turned out really nicely, and after adding some simple directional tilting you really get the sense of a floaty ship. The ship control physics are just 2D easing so it's nice and snappy: it doesn't actually move down the Z axis: the scenery and enemies scroll backwards instead and keep respawning when they drop off behind the camera. Collision detection was awkward until I realised AS3's Point3D contains a distance checker, which saved me a bit of effort.

Below are some images I snapped while I was working through it, as you can see I almost ditched the stark wireframe in favour of coloured flat shading (like the final stage in Rez) but reverted back in the end.

I also put the whole thing on Github if anyone wants to poke around, I built it with IntelliJ Idea and I've included the whole project as it's pretty tiny. The code is absolute filth, but you can see how easy it is to get some sweet retro effects in Away3D.

Oh, and try it out here.

Tons of pics after the cut!

Saturday, 23 March 2013

Match Battalion - devlog #1

I finally got around to putting a decent amount of thought into what I'm calling the 'actual' build of our Fuck This Jam game. I promised myself I'd try and cover what I'm doing, if for no other reason than it's a good incentive to keep myself going. As you can tell by the title, we've tentatively chosen to call it 'Match Battalion'.

There's already a rough playable version that we made during the jam, so this post kinda sums up where we want it to go. We changed a few things, and made a few things! This will be a new build though, as of course we were up and against an insane-o-deadline last time around.

This project is what I'd definitely call a slow-burner anyway, the Fuck This Jam contest was absolutely ages ago. I'm fully expecting to drop in and out of this build, especially given that at the time of writing my wife is three days overdue with our first child... small windows of opportunity will be the way to go, I think. I don't want to mothball it entirely though: I always like having a side project on the go, and this one isn't for anyone (or for any money) so I'm happy to take it easy. Disclaimer: eagle-eyed readers will see this is the second project-kick-off post I've put up - the other game got stuck on hiatus for a while but will exist one day, honest.

The idea for the game itself is pretty nailed-down at this point, it's basically a match-three puzzler crossed with a turn-based strategy game. The basic premise is that two armies fill the board (these are just sketches, it'll look nice in the end):

Players get a set number of moves per turn (as opposed to taking it in turns with each move). Movement is performed like a puzzler, and trying to move onto a square occupied by the enemy makes them fight. Obviously certain units are better against certain others, and the terrain the units are on will affect the outcome too. If the enemy unit is defeated, the winning unit moves in, followed by all the units behind them:

You'll also have units in reserve, off the board, so a big part of the strategy will be making sure you introduce units onto the play field correctly:

Units that are adjacent are classed as squads, and will be a bit more powerful, so it'll be advantageous to keep units together and think ahead a little. Similarly, breaking up enemy units so that you can fight the weaker individual units separately will be a solid strategy.

To win, either eradicate the other team, or take out their powerful commander unit.

There are no other mechanics really, we want this to be pretty streamlined and easy to figure out.

Just to mention briefly, I made the decision to ditch Flash Builder entirely, at least for my personal work, meaning that this game build will be the test bed for my switch the IntelliJ Idea. I hate so much about Eclipse-based IDE's, but the pricetag of 'free' usually stops me whining too much. However, FlashBuilder has taken a free IDE, made it more bloated and crashy, and stuck a giant pricetag on it. Sorry Adobe, I love your products, but I'm out.

Enter the new contender, IntelliJ Idea. I picked up a copy during JetBrain's End Of The World sale for about £35, and so far it's looking really, really good. It's taken me about an hour to get up and running with a test project compiling how I like it, and it seems very intuitive. I've not had to look anything up yet, which is a good sign. Once I'm into the build I might do a deeper comparison, but early signs are good.

My partner in crime Kieran finished up on tile and unit animations, and they're looking amazing as always. I'm using Starling to render, and was so impressed with TexturePacker's swf-to-spritesheet awesomeness I dropped money on a license. It's a fantastic little bit of software, the free version is pretty good on it's own too if you're interested. Here's our infantryman in spritesheet form (obviously there's an XML file that goes along with it, that TexturePacker takes care of nicely):

I put together a rough test with Starling just to gauge mobile performance, and I'm hugely impressed: I had a full map and 48 animated sprites running on my phone, 60fps with no issues (and my phone isn't that new either). The artwork stays crisp when it scales too, which I'm quite happy about.

I'm actually stopping work on the rendering/graphics now I know it works, as I'm more interested at the moment in getting something playable up and running as soon as possible: mechanics first, eye-candy second.

Next steps: I'm hoping I can get something playable up and running pretty quickly, using the old prototype code and sexifying it a bit. This is a personal project, but I'm determined not to let it get all horrible and messy if I can help it. Although, I've said that before....

Saturday, 2 March 2013

Manchester Game Jam, Feb 2013 - in photos!

Another month, another quick-fire game jam in Manchester!

This time we were jamming around the theme of TRAPS, and as usual everyone really pulled it out of the bag and made some amazing games.

We made, among other things: banana controllers, trapped treasure chests, magnet tanks, play-doh buttons, puns, monks, text adventures with Bruce Willis, Makey Makey hacks, laser typing challenges, and a game that got Chris running around Madlab (again).

This was my last chance to jam for a while due to the imminent baby arrival, so a giant personal thanks to everyone for making it a good 'un! (The jam will carry on running without me, in the capable hands of some of our regulars, including hopefully the full Ludum Dare weekend in April. Keep an eye on Twitter for updates!)

Full photo set after the cut!