Moments of Inertia by Rachel Crawford

About     Archive     Categories     Tags     Feed     Projects     Magewinds    

My 2016

Me on Arthur's Seat on New Year's Day

2016 was a pretty positive year for me, even though the world at large seemed determined to produce bad news. Here’s some of the big things that happened in my life this year.

I finished university

I may have graduated in November, but I was done with my time at Abertay after handing in my final project at the end of June. This was about two months after everyone else had handed in theirs. Final year is pretty hard at the best of times, and recovering from a bereavement certainly doesn’t help. At a few points I was ready to give up, but fortunately the staff at Abertay understood and allowed me to delay the final deadline so that I could focus on other stuff, like the maths exam. It simply would not have worked out any other way – I was pushing myself to the breaking point trying to do everything at once.

I made it, and I’m glad I did. The graduation ceremony, while being nothing more than a ceremony, turned out to be a nice way to bookend my time at Abertay. I’m very grateful to my teachers and the other staff, such as the university counsellors, who helped me get there.

I got a job

During my final push to complete university I continued applying to jobs as I had been throughout the year. This was quite depressing, with most applications ignored completely by overburdened hiring departments, but when all of your friends are going through the same process there’s an air of solidarity that helps to keep you going.

Eventually I applied for a junior programming role at Rockstar North, not expecting much, but found myself being offered a job less than a month later. I have not stopped feeling surprised.

I started in August and my first few months have been great. I am very lucky.

I moved back to Edinburgh

It has been very sad to leave Dundee behind. At points I’ve felt very homesick for it. I don’t expect the feeling to go away, but I’m feeling more settled in Edinburgh now that I’ve moved into a flat on the other side of town.

Living at my mum’s for three months was alright – she and I get along pretty well – but I’m glad to have ‘escaped’. There was something uncomfortable about going to work along the same route I used to take to school, or sleeping in the same bed seven year-old me used to sleep in. Now I have my own place in a different part of town and I have something like the feeling of independence I had while I was in Dundee.

My friends were awesome

And I am certain they will continue to be awesome!

It sounds a bit sappy, but it’s true. They have picked me up and put me back on my feet when I’ve been down and brought me many laughs and smiles. They all deserve the very best for 2017.

If you’re reading this, you’re probably one of my friends. If not, maybe you will be one day. Either way: you rock, and I wish you a happy new year!

(And I’m sure David would too.)

2016 in Gaming

This post is about what I played in 2016 which, as I see it, was a pretty amazing year for games.

On the tabletop front I enjoyed some fantastic games. The main one that I can think of is, oddly enough, Condottiere. I’ve owned Condottiere for years but in 2016 I spent a few long evenings playing it over and over with the same people and gained a lot of appreciation for it. It’s a tightly-designed blend of strategy, hidden information and bluffing, with nice theming and artwork to boot. It’s also very obviously the main inspiration for Gwent. I’ve a few misgivings about Condottiere – random luck can win the day sometimes and there’s a bit of a snowball effect – but despite any criticisms I have this is one of those games that’s physically small and cheap enough that I think every board gamer ought to have a copy.

This year also introduced me to Codenames. I must have played it more than fifty times so far, and it’s yet to disappoint as a quick, easy way to engage people around a table.

The Witcher III - Hearts of Stone

Meanwhile in videogame land The Witcher III continued to amaze me. The Hearts of Stone expansion demonstrated more storytelling finesse on its own than most full games with a refreshingly Witcher-y take on Faust. I’ve yet to play Blood and Wine, the second expansion, but I’m really looking forward to it.

Devil Daggers: a super-intense FPS with a super-intense aesthetic in which the only goal is to see how long you can survive against enormous swarms of enemies. Playing it in front of a crowd at Games Are For Everyone, in a cavernous old wine cellar beneath South Bridge in Edinburgh, with thick red candles strewn about, isn’t something I’ll forget in a hurry. Hopefully in 2017 I’ll live for longer than 150 seconds.

Lieve Oma

Lieve Oma was also featured at Games Are For Everyone. It’s about going for a walk with your grandmother in the woods. I found it very touching. I won’t say anymore. I hope you check it out.

This year I’ve not had much time to spend on big long games, which has given shorter-form games like Devil Daggers and Lieve Oma a chance to shine while mainstream triple-A releases have fallen to the wayside. I’m currently halfway through a replay of Dishonored, including its excellent DLC, which I want to complete before I get the sequel. As I write this I’m sitting watching Natalie play the new Doom. A lot of demons are exploding. It seems to really capture some of the design spirit of the original Doom games while confidently doing its own thing – a bit like Devil Daggers, I suppose. Also, Oblivion turned 10 this year. Wild.

There’s much more to write about here, other games I’ve played and enjoyed, but there could never be enough time to cover everything, or even remember it all. If 2017 has half as rich a crop of good games I want to play I’ll never be able to catch up. And that’s okay.

Easy Arguments

We’ve all been there. We learn about a new-ish C++ feature, we consider using it, we weigh our optimism against our wariness of falling into the “use all the features!” trap. We remember the sad times when we or others were a little too eager and back away nervously. Maybe another time, we say, retreating into the darkness – it may be dark, but it’s darkness you’re familiar with.

The argument to adopt new-ish C++ features can be quite difficult, and for good reason. Sometimes the argument practically wins itself, though, in one simple, concise example. This post is about my current favourite.

Read more...

CppCon 2016

Lots of good talks came out of CppCon 2016. Like my Steam Dev Days post, this is a roundup of some videos I think are worth watching.

Warning: C++ enthusiasts ahead. Obviously.

Jason Turner (the guy behind ChaiScript, C++ Weekly, and one half of CppCast) produced two interesting talks this year. The first is Practical Performance Practices, which is full of good advice for navigating the labyrinth of gotchas that is modern C++, where there are at least 5 ways to do every little thing, and 3 of them are okay, and 4 of them are bad. The second talk is Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17, in which he shows off some pretty neat stuff.

Here is Herb Sutter talking about dynamic memory management in a talk entitled Leak-Freedom in C++… By Default, going into examples of when and where to use the standard library’s smart pointers. He actually brings up a multithreading-ready version of the weak_ptr/shared_ptr-based resource bank class I showed off in a recent post.

Want fast C++? Know your hardware! is about, well, knowing your hardware. This is one of those annoying harsh realities. You want to not have to think about the metal. The whole point of high-level programming languages like C++ is to get away from worrying about the hardware. Worrying about the hardware is the hardware developer’s job, right? Well, no. At least until languages catch up with the fact that the performance bottleneck in computing is no longer CPU speed but memory speed1, data-oriented code is going to be the way forward for high-performance applications2.

I enjoyed this talk on “Colonies, performance and why you should care”. Basically, a ‘colony’ is a container written for fast insertion, erasure and iteration; the kind of thing you want to put your GameObjects in. This is one of the many nice things coming out of SG14, the ISO-C++ study group focusing on low-latency, real-time applications like games.

That’s all I have time for, but I recommend having a browse around the selection of videos. There are significantly more than there were for Steam Dev Days, and some of them are very focused, so there was no way I could have watched and judged them all. Hopefully the ones I’ve linked here are a good starting point for your own meandering through the archives.

  1. If you know of any languages or features of any language which abstractify data-oriented programming practices, please tell me about them. 

  2. Fun fact: Data on CDs/DVDs for games which use streaming for most or all of their assets (so basically any seamless open-world game since GTA 3) have optimized data layouts on disk, with data commonly accessed at around the same time placed physically near each other to minimize the amount of movement needed to move from one asset to the next. 

Steam Dev Days 2016

The second ever Steam Dev Days was held in October and, by all accounts, was a pretty rad event. Fortunately for us shmucks who didn’t go Valve have kindly put recordings of all the talks and panels on YouTube. The full playlist is here, but I’ve watched most of all of them and can guide you towards what I think are the best ones.

Each heading should be a link to its corresponding YouTube video. Please let me know if I missed one or messed one up!

Welcome

This is basically just a mission statement for what Steam Dev Days is aiming to be: not an expo, more of a conference, but more intimate than Game Developers Conference.

Steam Business Update

It’s really cool to look back and reflect on how Steam has evolved over the years. I’ve been there for almost all of that time, installing it because of Dark Messiah of Might and Magic (the best game ever) in 2006 and gradually becoming more of a regular user until The Orange Box exploded my brain with SHEER GAMING VALUE FOR MONEY and transformed me into a lifelong Valve fan and enormous1 Steam library-haver. I can remember Steam’s first crappy iteration and all the ways it’s changed on the path to becoming the terrifying juggernaut it is today. It’s interesting to get the perspective of someone at Valve on that history, and learn about where they think they’re taking the platform next.

Steam Controller

Input programming is usually pretty horrible, for all the reasons Lars Doucet (developer on Defenders Quest) talks about. His enthusiasm for the Steam Controller and its API is infectious – I wasn’t interested in owning one before this talk, but now I want to get one just so that I can play with it as a programmer.

Sound Advice from Successful Developers

Does what it says on the tin, unless you interpreted “sound” as “audio”. Businessy, in the good way.

UGC and Workshop in ARK: Survival Evolved

I haven’t played ARK. I don’t think I ever will - it’s not really my thing - but I find it fascinating to watch its history unfold. I remember being quite excited to watch DayZ develop from a shonky, obscure ArmA II mod to PC gaming household name. Of the many games following in its footsteps, ARK definitely seems to be taking the most confident strides, overtaking its inspiration in almost every way.

Early Access

Worthy discussion of the pros and cons of Early Access from developers working on the frontline. Each panellist has a different perspective and approach, but no one positions themselves as the developer who got it ‘right’. Having said that, there’s a bit of ego-grooming, but it’s not bad.

Anti-Cheat for Multiplayer Games

I don’t cheat in games. Consequently, I know nothing about how cheating is done, and therefore less than nothing about how to prevent it. I like the presenter’s examples of simple game design changes that can discourage cheating. It’s also useful to have an overview of Steam’s anti-cheat and game moderation features.

Healthy Publisher Relationships

Put together, these panellists probably have enough industry experience to make me look like a newborn. They have a lot of really well-articulated advice to share on when and when not to get a publisher, and how to do it properly.

Vulkan Graphics

A panel of graphics programmers talk about Vulkan, the new open-source low-level graphics API on the block. They seem pretty pleased and I’m now even more eager to learn it.

VR Developer Panel

I don’t have one of these newfangled ‘VRs’, but even my neo-skeptic mind can tell there’s a lot of interesting stuff to talk about with regards to making VR games. In this panel the developers of Fantastic Contraption, Hover Junkers, Space Pirate Trainer and Audioshield share the insights they’ve gained from working on the frontline. The YouTube video’s thumbnail image is rather good, too.

That’s all of them, assuming I haven’t missed one somewhere. Even if you only watch a couple of them, I think you’ll have an edifying old time.

Is there one you think I missed? Or one talk in particular that really grabbed your attention? Let me know what you think!

  1. I’m too ashamed to count how many unplayed games there are in it, my friends. Too ashamed.