Busy month…

It’s been quite a month for me. I’ll start with the ACCU conference in Bristol, April 21st to 25th.

The ACCU is the Association of C and C++ Users, an international body with largely European membership dedicated to professionalism in programming as well as the discussion of C++. Each year the conference collects some of the best names in the field for a five day exposition of what’s new and useful in the field. I went for the first time last year and found it a truly valuable experience. This year I decided to present: I took my colleague Tom Miles (@teknogrebo) with me and we discussed how we ported Total War: Rome 2 to OS X on the Mac. We spent quite a lot of time polishing this beast for a 90 minute slot but we ran out of time during delivery: we still had another 20 minutes of material when the session expired. View it here.

I didn’t attend the first day: this is set aside for tutorials and I didn’t see anything I could justify leaving my work for. In the remaining four days my notes list four keynotes and 11 talks. Here are my top five.

Marshall Clow told us all about hardening your code and introduced a series of sanitisers for Clang which I would like to wind in to the TW continuous integration process. In summary, he repeated the familiar mantra of version control, testing, compiler warnings, static and dynamic analysis and fuzzing. He also mentioned The Game Outcomes Project, which is well worth a read and you can find on Gamasutra. Marshall has posted slides for his talk here.

Olve Maudal didn’t do a C++ pub quiz this year (awwww…) (one day I’ll tell you how I made an utter buffoon of myself with Howard Hinnant, whom I didn’t recognise, on my team) but he did give an excellent talk on the History and Spirit of C and C++, which was a fine piece of industrial archaeology. His slides are here (and an alt is here).

David Sackstein gave a talk on coroutines. This is a hot topic right now, with several proposals making their stately and sedate way through the standardisation process. C# and Python have had this sort of thing for a while now, and it’s about time this paradigm was formally introduced to C++. David crammed a massive amount of content into 90 minutes and I recommend grabbing his powerpoint slides here. I tweeted about the richness of the talk at the time.

Chandler Carruth gave a talk on efficiency and performance through data structures and algorithms, carefully describing the difference between efficiency and performance and looking at power consumption and computation per Watt. The issue of discontiguous data structures being the root of all evil was covered (it’s the cache that kills it). We’ve known this in game dev for ever but it’s good to get it out beyond our little coding ghetto. No slides I’m afraid, but there is a version of this talk available on YouTube.

Dietmahr Kuehl addressed asynchronous operations, providing an interesting contrast to David Sackstein’s talk. He went into some detail about the multiple proposals on the table, N4397, N4398N4402 and N4453; described continuation functions, callbacks, completion tokens, all manner of coroutines; and left me feeling that this is a massive area of progress waiting to be made. Slides here.

Honourable mentions to Kevlin Henney’s many ways to write FizzBuzz, and Jonathan Wakely for an absorbing talk on ABIs.

See you next year!


Three days with Scott Meyers

Part of my role at CA is to develop the programmers on the Total War team.  I was rather delighted to be able to invite Scott Meyers, author of the Effective C++ series, to come and talk to the team at the beginning of December 2014.  This was such a great opportunity that I offered the training to programmers in the CA Console team, makers of Alien:Isolation, and Sports Interactive, our SEGA sister studio in London, makers of Football Manager.

You may have seen talks by Scott from various conference feeds.  He really is an excellent speaker and educator, having spent a long time perfecting his craft.  However, owning him for three days and having him deliver material from his new book, Effective Modern C++, was pretty special.  Since the first print run sold out immediately, he was unable to give us copies of his book, but we got to touch his personal copy.


C++ has undergone some extraordinary changes since the last standard was ratified.  Type deduction is now a rather more complicated affair now that we have auto, decltype, lambdas and rvalue references.  Indeed, the three days was kicked off with an entire morning on type deduction, which was possibly the only time he could have sensibly delivered that part of his syllabus: it was the heftiest of topics to open the training, but so much of modern C++ relies on this, and understanding that is very important.

Scott covered all the headline features of modern C++ and stopped to answer all questions that arose, however simple or advanced: his stride didn’t break and sometimes he was able to postpone answers to a point further on in a topic.  It was extremely valuable for our organisation as a whole.  Of course, now I have to go and review the coding standards to accommodate all this: we have now moved on to Visual Studio 2013 as our primary compiler, and, for example, the efficiency of std::shared_ptr requires scrutiny.  I’ll keep you posted about our observations over the coming months.


About ten months ago, during the summer of 2012, my employers were contacted by The Willow Foundation. A young chap called James was suffering from liver cancer and wanted to visit the creators of the Total War franchise. We were delighted to help and prepared a day for him to remember; you can read about it here.

A couple of months ago we learned that he’d succumbed to the cancer. At the time he visited, he was about to discover whether or not the cancer was inoperable. I have a role in recruitment; on the day, he came to me in my role as coding manager. I talked to him for ten or fifteen minutes about being a coder. He asked me about the best way in to the job, what universities I would recommend, should he do maths or computer science, all the usual questions. I guessed, and I’m sure he suspected, that he wouldn’t make it to the beginning of the degree, let alone the end. However, questions about whether he was showing unicorn optimism, or denial, or love for his carer-brother, all rather flew out of the window as I carefully answered his questions without bursting in to tears, welling up, or showing a flicker of doubt, which was pretty damn hard I can tell you.

I lost my mother to ovarian cancer in April 1999. The day before she died I visited her at home and we chatted away; to be honest, I was so grief stricken that it’s rather a blur. I do remember her talking about visiting the Scillies again and thinking “that’s not going to happen” and admiring her indomitable spirit. I saw that spirit again in James.

I love working in the games industry. The thought that someone, in dire straits, would want to come and watch us at work is quite humbling. If I was working as a developer in a bank, writing front ends for databases, I doubt the same sort of thing would happen. I may earn half as much in games, but the job satisfaction can be out of this world.

The story turned up in a lot of places…

Develop 2012: Am I helping make Bentleys now?

I love living in Brighton and Hove, and many organisations love having conferences here. July 10th through 12th saw the Develop conference roll in to town. This is the annual game developers get-together in the UK, filled with delegates of all disciplines from many companies.

The theme that seemed to run through the whole event was the huge upsurge in indie game companies. I’m not really sure what indie means; I’m guessing it’s a reference to the indie music scene of the 80s: such companies are small, run on a shoestring budget, are not attached to a publisher and are making original games (not shooters or racers). Since they’re small, many of the personnel carry out more than one role; coders may do audio tasks as well, artists may assist with production. However, your mileage may vary. There’s no stated upper limit to the size, but at some point you are no longer indie. I’m not sure where that is: when you have more employees than founders, when you have a regular publishing schedule, when you have a marketing budget, when you have a five-year plan: all of these things accompany a growing company.

What I do know for sure is that I don’t work for an indie game developer. I work for The Creative Assembly developing the Total War franchise for the Windows platform on PC: we have over 200 employees, the founder sold to SEGA a few years ago, we have distant plans, we have an HR department and an operations director and we just dropped a ton of money on an awesome live action trailer for Rome II. We are one of a few big game developers in the UK: conversely, there is a swarm of indie devs. By number of titles, indies dwarf “AAA” (whatever that means) releases. By turnover, it’s probably the other way round. Nonetheless, I am reminded of the luxury car industry. When cars were the preserve of the wealthy, they were hand-made items of excellence. As more and more drivers joined the market, cheaper and cheaper cars were made and the luxury car business served a shrinking market.

PC game devs are familiar with the elderly notion that the PC as a games platform only has a couple of years left. I remember hearing that back in the 90s. The end of AAA games is another canard. We still have luxury cars, and I’m prepared to bet that there will always be demand for AAA games on console and PC. Indie devs will grow and stop being indie, bringing new IP to life and evolving a fun new idea into a AAA title over several releases.

There’s been a lot of speculation about the next console generation being the last. I wonder if there may be more to that: services like OnLive eliminate the need for expensive hardware, and consoles like Ouya highlight the redundancy of expensive hardware when it comes to good games (I hope so anyway: I also hope that you won’t be going “Ouya?” if you read this in two years time, although Android on a TV doesn’t seem at all far-fetched which seems to obviate the need for Ouya altogether). However, services will keep Microsoft, Sony and Nintendo running for a long time to come. Indeed, software-as-a-service seems to be the model for not just indie development: games and consoles become trojans which lure you into a service subscription. A couple of pounds a month is nearly invisible, considerably less visible than 60 pounds. When Samsung decides to sell a compelling yet optional service with its TVs, squaring up against XBoxLive, I think something interesting may happen.

I saw some great talks this year. I’m focusing on education at the moment: I have an eleven-year-old son who is showing nascent interest in programming, and I am also responsible for recruitment and our intern programme. Jon Weinbren’s talk about the games design and development course at the National Film and Television School was inspiring, and I think the indie scene and tools like Unity do finally make it possible to produce good courses. I continue to be excited about the Raspberry Pi; I have one, and my son has looked upon it with curiosity, and David Braben continues to fill me with hope. The runtime recompilation of C++ was intriguing and I look forward to seeing that integrated with LLVM and CLang. I also look forward to trying my hand at developing some tools in HTML5.

I spoke this year on Being The Coding Manager. More on that in future posts. Develop is always a blast: hope to see you next year.

Opening the gates

Hello, and welcome to my garden. At time of writing, I’m the coding manager at The Creative Assembly, focusing on the Total War franchise. I write software for fun and profit, practice and teach Tai Chi, play a variety of keyboard instruments, help raise a son, and live in the glorious city of Brighton and Hove. Hove actually.

Software is the thing I spend most of my time on, so I expect most of my posts will be about that. However, expect a few things from left field.

I hope you enjoy the read and the ride.