Caaargh Game Development Blog #3 – Complexity from Simplicity

In my last post a few weeks back I was pondering whether to add more complex track segments to the game (Caaargh!) as a way to make more interesting tracks. It must have been a good question, as it’s kept me occupied for the best part of a month.

In the end, I found I was able to generate many more, more-interesting tracks by making the component pieces even smaller and simpler than they were before.

Example of old style track pieces
Example of old style track pieces above
new_style_pieces
New style track pieces are much smaller

As part of this process I updated the scripts that generate these tracks to work with arbitrary directions and angles which also freed me up to use vertical space as well as horizontal in the game. This means tracks can now cross over themselves in interesting ways.

Track's can now vary in height
Track’s can now vary in height

There was a bunch of new modelling work to-do, and I can’t overstate how much I’ve been enjoying using Sketch-up to make these. It’s such a human friendly piece of software given what it can do, and it exports nicely enough to .fbx files to work with in Unity.

sketch_up_deadend
Modelling a deadend segment in SketchUp

The new track modelling work has let me fix up the aesthetic and practical (in game physics) issues that were bugging me with the original track pieces, and at the same time make the track a bit narrower which better suits the single-player game-play.

Here's the car relative to the track
Here’s the size of the car relative to the track

Here’s a quick sample of generating a bunch of random tracks of a specific length.

track_generation

There’s still plenty to tweak in here, but the next design decisions about tracks can’t properly be evaluated until some of the other game mechanics are in place, and what’s here goes through some more play-testing.

Also, banked corners looked fun, but didn’t play well. Sorry banked corners.

banked_corners

Caaargh Game Development Blog #1

I’m making a game called Caaargh, and I thought it would be a good idea to write a bit about the development as I go along. This is the first blog post to get that ball rolling.

Caaargh is inspired by one of my favourite games from my childhood, Micro Machines Turbo Tournament. In particular the experience of playing a four-player race, where the winner drives right up against the leading edge of the screen and gets very limited visibility of the track ahead.

In Micro Machines, the difficulty this limited camera view caused the leader created a beautiful balance mechanic that made multiplayer games so tense and exciting, especially when combined with the crazy tracks with plenty of places to crash if you forgot about an upcoming corner.

If you’re not familiar with Micro Machines, it’s worth watching a recording of a four player race see how this works.

After playing a lot of Micro Machines, you eventually race the tracks by memory. You remember what turn is coming up after the spilled cereal or the red cue ball, and you begin to steer before you even see it so that you can take the corner at full speed.

It is this second implication of the limited camera view that I wanted to play with as the core mechanic for Caaargh.

In Caaargh, the tracks become a series of memory puzzles. A bit like that kids toy game Simon, with the primary colours. But instead of remembering a series of colours, you have to remember a series of corners. And instead of pressing you buttons you have to steer the car.

Playing this way is also a bit like racing a rally car without a co-driver.

I’ve been working on this game on and off for a few months now and I think I’ve tested enough of the concepts to want to push this through to be a real game. So as I do I’ll try and write something on this blog at least every couple of weeks.

The latest news (for those people who’ve seen a bit of this story on Twitter already) is that I’ve decided to target mobile for the initial game release.

In the long-run I’m really interested in making this a co-operative local multiplayer game for PC and console as I think there are some interesting dynamics that will come from the mechanics that I have planned in a co-op setting. But I can also see a much quicker route to completing a nice single player version of the game that would be well suited to mobile. So that’s what I’m working on now.

This week I’ve been getting placeholder screens in places to manage the player flow from title screen, to level select, to level results screen etc. These are not visually interesting to share at this stage, but I feel good seeing the prototype turning into something that feels more like a real product.

That’s it for today.

Also, you should sign-up for my newsletter about my game design projects here.

My Last Week at Mozilla / Moving Out (At Last)

To those I haven’t yet had a chance to speak to one-to-one (there have been a lot of you!), this is my last week as a paid contributor to the Mozilla project. It’s also the week I finished and published a board game I’ve been working on for a year or so, called Moving Out (At Last).

It’s a misleading naming combo for this blog post title, but it made me chuckle, so I’m sticking with it 🙂

Whistler

To say my time at Mozilla has been ‘an experience’ would be an understatement. I will miss climbing mountains with friends and breakfast meetings where all participants are battling with remnants of glitter painted faces and recovering from wonderful conversations that had run on into the early hours of the same morning. Saying goodbye has been hard as this place is full of friends, but I also like change, and am excited about what’s ahead.

homeTo keep doing my job well at Mozilla, I would need to keep travelling, and probably travel even more. And while I miss my colleagues when I’m working remotely, I miss my family and my little kids even more when I’m travelling for work. For me, right now, I want to be in my own locale. In a part of the world I call home, and where I feel totally privileged to be raising my family.

There’s never a ‘good’ time to leave an organization you care about, but this is probably as good as any. The Foundation are gearing up to implement a new strategy that I think will make their work even more impactful and which makes the role of the Foundation within the overall Mozilla project clearer than it’s ever been. It’s been an honour to contribute to that strategy, and I’m excited for the work ahead. The nice thing about stepping out of an open-source org is no-one shuts the door behind you (I hope not anyway!?).

“Have your heart be where your feet are” (h/t to CLAW who shared this article with MoFo colleagues last week). This quote perfectly captures what I’m excited about for the next phase of life.

As of next week, I’m joining the wonderful agency Kyan in my home town of Guildford. I’ve known Kyan for a long time through their work, and their efforts to bring together the local developer community. I’m excited to be working with new colleagues in the same physical location and the same timezone. And excited to be learning some new programming skills while getting to grips with new development projects. I’m endlessly grateful for the things I’ve learnt travelling around the world with Mozilla, but I’m happy to be swapping planes for trains.

Rather than taking time off between roles, I’ve overfilled my upcoming weekend by signing up for Awesome Sports Jam. By this time next week, I may have shipped a bad sports game to compliment that board game. Mostly though, I’m enjoying being a part of this community.

Just as I finished writing this post, this song came on Spotify. I wasn’t looking for a song to include, but it fits. To my friends and Mozilla “thank you for the records”:

Blog posts I haven’t written lately

Last year I joked…

Now, it has come to this.

9 blog posts I’ve not been writing

  • Working on working on the impact of impact
  • Designing Games in my free time
  • Moving Out (the board game)
  • Mozilla Foundation 2016 KPIs
  • Studying Network Science
  • Learning Analytics plans for 2016
  • Daily practice / you are what you do every day
  • Several more A/B tests to write up from the fundraising campaign
  • CRM Progress in 2015

But my most requested blog by far, is an update on the status of my shed / office that I was tagging on to the end my blog posts at this time last year. Many people at Mozfest wanted to know about the shed… so here it is.

This time last year:

Some pictures from this morning:

office1

office2

It’s a pretty nice place to work now and it doubles as useful workshop on the weekends. It needs a few finishing touches, but the law of diminishing returns means those finishing touches are lower priority than work that needs to be done elsewhere in the house and garden. So it’ll stay like this a while longer.

‘As pretty as an airport’ (or a standing desk)

As beautiful as a standing deskIt was a long weekend here in the UK which gave me some time to make some final adjustments to a desk I’ve been building and take a photo. And, here it is.

Many years ago I read Douglas Adams’ Last Chance to See (which on a side note was one of my original motivators for wanting to work at WWF). Though I was maybe fifteen when I read this book, one of several notions that stuck with me was:

“It’s no coincidence that in no known language does the phrase ‘As pretty as an airport’ appear”

In the twenty years following, airports have been upping their game when it comes to design. Standing Desks however are severely lacking in the ‘pretty’ department (even if they’re currently trendy). If you haven’t looked into this yourself, try an image search now for ‘Standing Desk’. Even try a Pinterest search where you limit the results to the things that design conscious human beings think are worth looking at, and you’ll see standing desks are struggling.

There are a few exceptions, including the craftsmanship of MoFo’s own Simon Wex. But mostly, standing desks are not very pretty.

But still, I wanted a standing desk, and one that I’d want to look at for the many many of the hours in my life spent working. And I didn’t feel like spending hundreds of pounds buying an ugly office version, so I challenged myself to build something not-ugly. For relatively little money.

To credit my sources, I basically combined the two desks below into the thing I wanted (and added an extra shelf to stash the laptop):

  1. This lovely desk
  2. The approximate angles and measurements of this standing desk (in particular the negative slope keyboard stand)

Screenshot 2015-04-07 21.53.24 Screenshot 2015-04-07 21.54.29

The three horizontal shelves were IKEA shelves left in our house by the previous owners, so I spent about £25 on the remaining timber and carriage bolts to hold the frame together.

I’ve been using it for a few weeks now, and am thoroughly enjoying it.

Also, making things is fun.

 

 

From 2014 to 2015

I’ve had a couple of weeks off work and it’s been a good time to reflect on the year past, and the one ahead. And before I dive back into things on Friday morning, I wanted to get this post published. It’s a long one, and writing it was more for my benefit than yours 😉

On 2014

Cassie’s post on 2014 has claimed the perfect title already, but I’ll ditto that it was a hell of a year: New job, second baby, two house moves, one house purchase, one trip to Toronto, two to San Francisco, Mozfest in London, Mozlandia in Portland, finally finishing my degree and graduating, and continually adjusting our home-life around the amazing speed at which a two year old and a newborn can change in any 24 hour period.

Some reflections:

My job title might focus on Metrics, but I don’t just work with numbers, I work with people. And that makes me happy because people are the best. While I love finding ways to measure things, what’s infinitely more interesting is the process of connecting that measurement back to decisions other people make. I’m one year into this role and it’s turning out more like I imagined it from the job description than I thought would be possible, but perhaps that’s because I’ve been given the space to make it that way.

On that note, public speaking is still one of the best ways to learn something (though ‘public writing’ may be almost as useful). I’ve learned to not-hate giving presentations but I don’t rush into them either. I gave a talk in September on ‘Working with numbers and People / Human Beings’, which was a useful exercise in reflecting on my own work, and how I go about doing my day job (slides). It forced me to think about many things that will help me plan for 2015.

I’m in many teams, even though I’m in a team of one. I make a conscious effort to understand the culture, process and motivations of all the teams and people I work with, and I take it as a huge compliment when people forget I’m not just on their team, but rather I’m working with all the teams. This cross-team working is something I’ve gravitated to in my roles prior to Mozilla too, but Metrics is a topic that lends itself especially well to this kind of cross-team work.

Being on many teams can be exhausting. Especially if it’s a ‘planning workweek’, in say Portland, and you’re working with all the teams who are doing their 2015 planning and also working in the team who are specifically not planning, because it’s the End of Year fundraising campaign (which could more than fill the week’s working hours on its own). That looked a lot like working from 04:00 to 22:00 for a few days, though I reclaimed my downtime in party at the end of the week. That was a good night.

On that note, I exceeded my working capacity by the end of the year. There will always be more work than can be done, but it takes a while for a new role to settle, and for the organization to know what to ask of and expect from a new role like mine. And by the end of the year, I’d overstretched what I had the capacity to deliver. That’s normal, but I need to build working processes this year that expect more work requests than can be delivered rather than just saying yes to everything like I was able to do for most of 2014.

‘Janky’ solutions were the right thing in 2014 for most of my projects (and I absorbed the word Janky into my vocabulary). This year I built a lot of ‘temporary’ and ‘interim’ things, which were useful at the time and helped various people make decisions quickly but which weren’t designed for long term maintenance. For most of these projects that was the right decision, as so much strategy is changing in 2015. But moving forward, I want to build some more reusable infrastructure around this work.

I had an (almost) clean slate, technology wise. The role was new so I didn’t inherit a bunch of systems to maintain, but I also didn’t build up much infrastructure. As I think about technology solutions in 2015, I need to keep maintenance time for projects to a minimum, because it could quickly eat up my capacity to get new things done. This year I want to shift to longer term solutions though for some of the work that was ‘janky’ in 2014.

I learned (much more) JavaScript. Previously I’d dabbled in front-end JS leaning heavily on jQuery. But working on Webmaker.org projects, and building other apps and services around our contribution metrics projects I learned a fair amount about node.js development and also a chunk of D3, both of which I’ve come to like a lot. I also upped my git skills. So +1 for learning by doing.

I have loved and hated Bugzilla this year. It took me most of the year to get a Bugzilla based work management system in place and use this as my central record for all metrics work, but with a bunch of MoFo dev and planning work shifting to Github for issue management, my work and collaboration process is now in multiple systems. This is a headache for me, but I’ll find a way to make this work.

Working remotely is excellent, given enough face-to-face time. I’m fine with managing my own time at home, having completed my degree this way and having worked as a freelancer too, but keeping the work ‘real’ with video meetings is something I need. And while the face-to-face workweeks throughout the year are tough for taking me away from home and our young family, they are essential for building the relationships with the team. If we didn’t have the workweeks, the remote work would be much harder. And when it all adds up, I think I get more time with my kids than most working parents who never have to travel. This year, I was really happy with the balance.

Working across timezones is hard, sometimes. I love having the morning to tackle complex problems knowing I won’t get a phone call or email as everyone else is still fast asleep, but by the afternoon I hit a point where my calendar is quickly full of calls, and the people waking up are full of questions and I switch from ‘doing’ to ‘answering’ mode. This is usually fine, but it means my calls are back-to-back until 6pm my time when I instantly switch from a bunch of unresolved threads of work conversation in my head to step out of my office and play with son for an hour before he goes to bed. It’s amazing to get that time with my son at this age, but that context switch is really tough and I need a better process of recording those open threads while on the calls, so that I can relax until the following morning knowing things won’t be lost. When we hit busier periods across the org, I know I’ll lose more of my evenings to late video meetings, but I try to keep this in check with the rest of life’s needs.

I need to take more time off throughout the year. Otherwise it all piles up at the end of the year like it did this year (though the time off has been useful for settling in after our recent house move). Taking time off was hard in year one, when I was still finding my place, and working out what’s expected and required in a new role, but it’s important for long term productivity. It’s the time when you have room to breathe and think further ahead, and put the work into the context of personal life and the world we live in. I’m lucky to do work that I am personally interested in and committed to, but that can make switching off hard at times. When your work is online, it’s hard to avoid work without avoiding the internet.

I completed my degree this year, after a six-year-long year-off. I got myself a ‘BSc (Open)’. The ‘Open’ is because it was a ‘choose your own adventure’ type of qualification via the Open University. I’ve written about that story elsewhere, but the final qualification is a little bit of maths, a fair amount of computer science and finished off with some storytelling in a creative writing course. This was a combination which I thought was funny at the time when I registered, but now turns out to be what I do for a living.

In 2015

I want to learn more about learning. I am a compulsive learner but I know that doesn’t apply to everyone, and with Webmaker’s educational mission, I want to better understand how learning works. In part that connects to the metrics angle of my role via the scientific field of Learning Analytics, but also I just want to know more about this for myself.

I might try and write at least some code every day (how’s that for commitment?!). Though I’m not one for New Year’s resolutions, because I generally like to set myself new challenges all year round, on New Year’s Eve I recalled John Resig’s post about writing code every day and told my wife I would do this in 2015. Then on 2nd January I got a vomitting bug and took to bed for the best part of 3 days, failing my goal pretty quickly. Since then however, I have been hacking on Done by When in my evenings and really enjoying it. I’ll see how this goes. Overall I’d like to be coding more regularly, rather than in short intense bursts.

I’ll need to say no to some things. As noted above, I’ve reached capacity so need to think about what does and doesn’t get done throughout the year.

I need to manage myself as though I was a team. I can’t just attack whatever is on top of the todo list and keep letting the list grow. I will adopt some of the heartbeat principles used by Webmaker, and try to be strict with myself about allocating separate time for planning, doing, documenting, and communicating. It can’t all be doing. I’ll write more about my processes as I work them out.

I’ll leave this blog post at that, as it’s grown to quite a length. I’m back to work from tomorrow morning, and this afternoon I need to finishing making the spare room into a suitable working environment.

Catch you online soon.

Remembering maps from memory

Today, I found this awesome post on Uncertain Cartographies (via Flowing Data), and it immediately took me back to something I made when I was in college and studying fine art.

So check out that link first, as this post will make more sense in relation to it, and it’s pretty fascinating anyway.

Then I’ll continue my reminiscence… 🙂

I used to have a framed print of a map I’d drawn on the wall at home, though when I say “print” it was ~10 bits of A4 photo paper I had carefully cut and glued together. It lasted about 6 years on the wall before the ink faded and the paper peeled and I had to take it down. And I hadn’t thought about this map again until today.

Then after reading this paragraph in particular, I really wanted to find my old map:

“Places where I once lived are deeply etched in my mind. Given a blank sheet of paper, and a little lenience, I can draw a respectable map of Murrays Bay, Mount Eden, Kingsland, Longburn, Summer Hill or Mana from memory. Yet most New Zealand localities are at once familiar and largely unknown to me.”

I went searching for my old map.

Amazingly (to me at least) I managed to find a copy of my original Photoshop artwork file on an old archive CD-R that’s followed me from desk to desk, between many house moves and a couple of countries and that I’ve not had any cause to look at until today.

I’ve posted the map below, but first here’s some context:

This was something I created 10 years ago when I was 18 and I’d been driving for less than a year. I didn’t really use maps for directions, but I drove quite a lot to play gigs with my band, and to visit my girlfriend (now wife) who was studying in Exeter. I knew my way around by which junctions led to where, but I’d never had to ‘map’ these places in a proper geographic context in my mind. This is pre-Google Maps/Earth (hence the AA roadmap styling) and it’s interesting now to think how the ability to browse maps so quickly and fluidly online shapes the way we visualize the abstraction of location in our minds. Even more so when you factor in navigation aids.

To create the map, I sat down with a pen and a large piece of paper and drew the roads leading out around me to all the places I had traveled in recent months. I didn’t allow edits or corrections, and there was no advanced sketching of where places were located. I drew the roads and made the links between places in one go. I did this until I ran out of roads I could meaningfully label. Scanned the whole thing in and traced the lines in Photoshop (no fixes allowed). I recall this “giant” file crashing my computer on a regular basis, though looking at it now, it’s only 50mb.

Anyway, that’s getting a bit nostalgic and I don’t mean it to. What I meant to do was post this map as a response to the thought provoking piece I read today.

A little insight into my earlier years
A little insight into my earlier years

 

 

Panda Swap: New year, new job.

Giant Panda 02

Red Panda Pensive

After almost five years working for the black and white panda, I’ll be moving to the red panda in the new year. Well, kind of… and that’s close enough to the truth to justify the cute pictures in this blog post.

As of January, I’ll be working for the Mozilla Foundation as their new Metrics Lead, which is about the most exciting job I could possibly dream up.

I owe the web pretty much everything, so the chance give something back and push something forward is both an honor and a privilege.

Mozilla work in the open, which means this blog will hook up a bit more directly with my day-to-day work in the future and I’ll be able to share some of the successes and challenges I face with you here on a more regular basis.

In other news, my Open University study has me spending my evenings writing a screenplay which is a completely new challenge for me. Though the OU is more open than most, I can’t share any coursework publicly until the course is finished. So that work will not be done in the open.

I’m a person who likes to solve problems, and writing drama is mostly an exercise in creating characters you care about and then making them suffer as much as you plausibly can instead of solving their problems. It’s a strange thing when you think about it, but it’s also fun unpicking what makes a story tick and stick.

My First #Mozfest

Mozfest 2013I have an hour free this morning, so wanted to quickly write up my thoughts on Mozfest before my memory fades too much. This will be a rough, but f*** it, ship it as they say at Mozfest.

I bought a Mozfest ticket in July with next to no expectations and just a little hope that meeting some new people might trigger some new ideas. It’s fair to say that this was a massive under-prediction on my part.

A couple of months later, with about a month to go until Mozfest, my boss (@ade) mentioned some sessions that might be interesting for WWF and my work in fundraising. A couple of introductory emails and a Skype call later and I’d put my name down for a yet-to-be-confirmed session called ‘Pass the App’.

We were going to use a new tool called Appmaker to build a donation app in a three hour session. At this point in time Appmaker didn’t do a lot. It was pre the version that would be called pre-alpha. I looked at Appmaker for a few minutes and worried I’d just agreed to waste the first quarter of Mozfest.

I had some time off and a couple of weeks went by. With two weeks to go, I wanted to get setup with Appmaker in a dev environment before the day so I didn’t waste people’s time with silly questions about configuration when we could be building things. Work was a bit crazier than usual and another week went by before I finally sat down to look at some code.

It was quite astounding how much Appmaker had evolved in those few weeks. The team working on this are incredible. From thinking the morning would be wasted, it now looked like a tool with enough components that with a little imagination you could hook up all sorts of awesome apps. My goal was to add some kind of payment to that.

The components in Appmaker are built with HTML, CSS and JavaScript and looking at a few examples I was happy I could build something by copying and adapting the work that’s already been done. But getting a development environment setup to work with these technologies I know pretty well required diving into a number of technologies that were completely new to me.

The deadline and motivation drove me through some of the initial hurdles and learning, and jumping into the IRC room for Appmaker I received great help and support from the team. I was worried about hassling them for their time while they were busy getting ready for Mozfest, but I was welcomed very warmly. It was a really great experience working with new people.

I guess the lesson here is: If you try and make something new, you cannot help but learn something new. And also that deadlines are amazing, as we’ve discussed before.

There were ten tracks at Mozfest, and at any given time I wanted to be in about eight of them. After the Saturday morning Pass the App session I was planning to alternate between the Open Data and Privacy tracks for lots of interesting things, but it didn’t work out that way. I didn’t actually make it to any other sessions. I got hooked into (and hooked on) making things in our scramble to build a working Pass the App demo, which we did. Here’s a link to the write up. I won’t re-tell that story. I got to work with kind and intelligent people making something valuable and learning a tonne. You can’t ask for more than that from any conference-esque event.

My hour of free time is up now, so I’m going to ship this despite the vast amount of things I was grateful for and wanted to talk about.

And I’ll say a quick hi to the people from the pass the app session,

And the many other lovely people I got to meet for the first time.

2 new designs for your votes: Campfire Stories and Infinite Fun.

I was feeling creative last week  and entered a couple of Threadless competitions as it’s a nice outlet for visual ideas.

The designs are now live, so your (high-scoring) votes would be most welcome:

  1. Minimalism competition: Infinite Fun
  2. Your New Favourite Hoodie competition: Campfire Stories

Infinite Fun:

Infinite Fun Minimalist Design ScalextricInfinite Fun Minimalist Design T-ShirtInfinite Fun Minimalist Design Bag

Campfire Stories:

Campfire Stories Hoodie Campfire Stories Illustration Campfire Stories Illustration