Skip to Content
What I Do

Let’s Meet A Runescape Developer Who Worked On Everything From Billing To Engines To HTML5

'I gave RuneScape 32-bit sound'

Welcome to the latest instalment of our feature series 'What I Do', where individuals in and around the video game industry tell us what, exactly, they do for a living.

The purpose of this feature is two-fold. First, as we saw with Pokémon's former chief lawyer, individuals have interesting stories to tell! And secondly, it's my hope that by showing this business is made up of specific people with specific (and often wildly different) jobs, it can help dispel the idea that everyone is just a "dev". Video games are more complicated (and interesting) than that!

Today's interview is with Chris Knowles. Chris has done a lot of stuff over the last 17 years, but we're going to be devoting a lot of this feature to his time at Jagex, where he worked as an engine and backend developer on games like Runescape.

Luke Plunkett: Chris, hello, thanks for stopping by! Would you mind telling Aftermath's readers a little bit about yourself?

Chris Knowles: I'm Chris, I'm from the UK, and these days I'm an indie game developer. I'm mostly solo, but I've hired freelancers here and there so that I'm not limited to stickmen for art and out-of-tune humming for audio. I ended up in the games industry by a roundabout route - after graduating with an engineering degree I worked for my church for a year, but full-time Christian ministry wasn't for me so I started looking for software jobs. Jagex hired me, but not for games. I spent about 18 months working on things like billing software before I landed an internal move into a games job.
 
Right now I've almost finished Hexahedra, which will be my first indie release, and it's out now! That's exhilarating but also a bit scary. It's an open-ended puzzle game set in a cube factory. You're not looking for the single right answer to each puzzle, instead the game hands you loads of tools and lets you tackle the problem however you want. You need to turn THIS into THAT, and you need to build and program the factory to produce the correct cubes. You then get to see how your solution compares with others across the world. If you're lamenting the closure of Zachtronics, I think Hexahedra will scratch that itch for you. 

It also features a tiny octopus called Octavius who's having a nightmare family visit and needs your help. My wife crocheted him and he sits on my desk and keeps me company during the day and occasionally appears on stream (I stream my dev work to help keep me focused), and over time she's made him a variety of hats to wear. He's so cute I decided to get him into the game in digital form.

LP: Neat! By the way, you can check out Hexahedra here. Going back to Jagex though, can you tell us about your time there? What were the actual job titles you held while you were there, and what did an average day look like?

CK:  I started out there in 2007 on the team that was responsible for all the software that wasn't a game. Stuff like account creation, custom software for the player support team, and lots of billing stuff, which is where I ended up spending most of my time. After about 18 months I applied to join FunOrb, which was a web-based minigames portal Jagex had built. It was a bit like Miniclip, but with in-house titles. I worked on a big update to a Risk-in-space game called Shattered Plans. This felt quite like being an indie does now - I was responsible for all areas of the game, though I could call on artists and the audio team for support. Oh, and I actually had someone else to do QA! Testing your own stuff is hard!

After that I worked on a game called 8Realms, which launched but wasn't successful at all and shut down pretty quickly. I survived a round of redundancies and at that point I got to work on RuneScape itself. I spent about 7 years working on the RS engine in various forms. The work was really all about supporting the Content teams to make fun things for the players to do - players aren't actually paying for all the cool features in the engine, they're paying for the content that's been built with that engine.

What I actually worked on, though, varied a lot. You've got the game's client and servers, which need to talk to each other, with the server being the final authority on what happens. There are the login servers that hold everyone's save data, which gets transmitted to a game server when you log in (RS is an unusual MMO because your account isn't locked to a particular game world). The Grand Exchange is a cross-world auction house. There's also a whole raft of support systems that need to be integrated. The billing system lets you tell if someone is a member or a free player, and how much in-game currency they have. The offence system controls whether players are muted or banned. Lots of these systems are managed by other teams, but maintaining the link between them takes work on both sides.

The game client we got off the backup...was almost all in one file called client.java that was 12,143 lines long.

LP: Is there anything specific that you worked on that you can tell us about?

CK: I did a few bigger projects on the game client. I gave RuneScape 32-bit sound (vital once voice acting arrived), I implemented a new camera system that helped with things like cutscenes, I got the world map rendering on the GPU instead of the CPU. With any software, but particularly something with as many moving parts as RuneScape, the challenge isn't just to add a new feature, but also to insert it into the existing system without breaking anything else. In a well-designed, modular system this is fairly straightforward, and the newer versions of RuneScape have improved a lot, but when Old School RuneScape came along, which was a reboot of the game from a 2007 backup tape, we were using an old codebase without all the fixes and improvements. The game client we got off the backup, apart from code in libraries shared with the server, was almost all in one file called client.java that was 12,143 lines long. It was tightly-coupled and hard to modify. There was a really good reason for it, because that was what it took to get a software-rendered 3D game running in Java in a browser in the days when JVMs were very slow, but it did make development tough until we'd modernized it a bit.
 
When a request for a new feature came in from the Content teams, the first thing we would do would be a bit of research to work out how long it would take. This would depend on the size of the feature itself (which doesn't necessarily bear much resemblance to how long it takes to describe what you want!), and how complicated it would be to integrate it into the existing game. Once we'd got an estimate, it was down to the Content folks to decide on its priority. If they wanted us to get someone to spend three months working on a feature, we could do that, but they might well decide they'd rather have a few quicker things that would be more valuable overall. We'd also suggest things we thought would be valuable (at one point they were trying to implement random dungeon generation using RuneScape's scripting language, but we could do it much more easily and efficiently in the engine itself), and there'd be the odd bit of maintenance work we'd have to do, like working with the sysadmins when it came to upgrading physical servers and moving game worlds around.
 
Actually making a change means first getting up to speed on how the current system works. You can then plan out how you want to introduce changes without breaking anything. You'd create a branch of the engine code in Git, and if necessary your own content stream in Perforce, so you have your own stable codebase to work on, and start making changes. We were able to run the bare minimum set of systems on our own PCs so we could test changes locally - an RS game server, the client, a fake login server that bypassed the account creation process. This meant we could test our changes locally before sending them off to QA. There was a specialized build system and world rental manager for that. You'd submit your code and run a build, which would create a version of the engine (client and server) available for anyone to use. QA would boot up a world that used that version of the engine, and a specific Perforce stream if they needed a particular bit of test content to go with it. If they found any problems they'd report them, you'd fix them, and then you'd go round the loop again. Once the feature passed QA, it would be logged in the project management software as being ready for launch, and the next time we made a new engine build for release your branch would be integrated into the main version and would go live.
 
RuneScape gets updated weekly, but unless there are engine changes the Content teams manage that themselves. With an engine update we'd need to prepare that for them, both a new server version and a new client version, and get it passed through a final round of testing (all those updates might work fine individually, but bringing them all together might cause issues). They could then deploy the new engine alongside the content update.
 
Once it was clear that the model of running a game in a browser Java applet was on the way out, I helped to reimplement the entire client in JavaScript and HTML5. I don't recommend writing games in JavaScript. I don't recommend writing ANYTHING in JavaScript. Still, it was probably the most varied time I had at Jagex. I wrote shaders for the first time, I wrote networking code, I had to wrestle with RuneScape's very non-standard animation system, which resulted in spiders body-popping their way through the world at one point. The HTML5 client worked, but the performance wasn't great (did I mention we used JavaScript?), so instead a team was set up to write a native C++ client, but I didn't work on that.

I don't recommend writing games in JavaScript. I don't recommend writing ANYTHING in JavaScript.

For me, though, the absolute highlight of my time at Jagex was working on Chronicle: RuneScape Legends, which was a 1v1 digital CCG. Whenever you say that people assume it was a Hearthstone knock-off, but it was very much its own thing. You'd place cards to create an adventure for your character - perhaps fighting a small monster to gain gold, spending that on a big sword, and then using the sword to take on a bigger monster for bigger rewards. You'd lock in four cards at once, and your opponent would do the same. But you'd each resolve one card in turn, so you could interfere with your opponent's plans. If your opponent stole your gold before you could buy the sword, or sabotaged the sword just after you'd bought it, you'd be beaten to a pulp as you tried to fight the bigger monster bare-handed. There was lots of planning, and trying to get into your opponent's head. This game also wasn't commercially successful and shut down, but with Jagex's blessing it lives on as a fan remake, which is phenomenal to see. Not every game company would allow that.
 
When I came onto the project, it had just been greenlit from a prototype, and I was essentially given the brief of "we would like one (1) game backend, please". Flattering though that was, my line manager and I did eventually convince the powers that be that this wasn't a one-man job, but as the first backend developer on the game I did plan out the shape of the entire backend structure - game servers, profile systems, databases, matchmaking, client-server communication. Over the next two years we built it. We launched it, it worked, and seeing what I'd designed on paper up and running was absolute peak job satisfaction. Something I was doing more and more at this point was also mentoring junior developers. So my days weren't just coding, but also sitting down with other devs to discuss approaches to implementing different features that they would then tackle, doing a LOT of code reviews, and dodging requests to become a lead developer because I didn't fancy becoming a manager.
 
Once Chronicle was struggling and we were moved off it I ended up back on RuneScape. That was the beginning of the end for me. I worked on porting Old School RuneScape to mobile, which was absolutely the right thing for Jagex to do, but I discovered I didn't much enjoy the extra faff of mobile development, and I'd already reimplemented a RuneScape client once with HTML5. So I was definitely getting the itch to do something else. I went part-time for a while when I was starting out as an indie, but eventually I left completely.

LP: You've left Jagex and have been working on your game, but tell me about this other thing you're doing at the moment, a government-funded apprenticeship scheme?

CK: At the start of last year the UK government approved a Game Programmer apprenticeship. Apprentices get at least a year of on-the-job training, with the government subsidising the cost of employing them. I have a very part-time job working on the end-point assessment stage. I sign off on a 12-week project proposal, and after that they come back and do a couple of assessments, one on the project and one that checks their knowledge of game development more broadly. All being well they end up with the equivalent of a master's degree and a rock-solid start to their career. I've already assessed quite a few and they're a wonderfully talented bunch. I get genuinely excited by a lot of the projects, but unfortunately I can't tell you about any of them because I'm NDA'd up to the eyeballs.

The industry isn't going to stumble across the next generation of game developers by accident, we need to be actively training them up. With my solo indie hat on I can't do much - I'm doing all the code and design myself because it's cheaper (and fun!), and I don't have the skills to mentor and train a junior artist or composer. But this is a real chance to help, and the fact that it's paid also helps with the financials of being a sustainable indie!

I'd also love to see the games industry become a more diverse place, we'd get richer games. The low point at Jagex was the HTML5 client, at one point we were a team of three straight white men all called Chris. If you ask companies why they're not more diverse they'll often cite "the pipeline", which results in a not-very-diverse pool of potential employees. And they're not wrong. I remember at Jagex talking to a manager trying to hire for a role in one of the RuneScape content teams. I can't remember exactly how many applications she'd had come through, I think it was 83 (LOTS of people want to work on RuneScape!), but I do remember that exactly one of them was from a woman. If we want to fix this, we need to increase the diversity of the people entering the industry.

And the apprentices are a diverse bunch! I'm at the end of the assessment process so I can't claim credit for that, but I can be part of making the system work. The proportion of women isn't quite 50%, but it's a lot higher than the proportion of women doing games programming that we tend to see in the workplace. The ethnic breakdown is also closer to the demographics of the UK.

LP: Thanks for your time Chris! Have a good one!

Already a user?Log in

Thanks for reading Aftermath!

Please register to read more free articles

See all subscription options

Enjoyed this article? Consider sharing it! New visitors get a few free articles before hitting the paywall, and your shares help more people discover Aftermath.

Stay in touch

Sign up for our free newsletter