Skip to content

Home

I’m an experienced game developer specialising in AI and big software engineering problems. Currently interested in short on-site contracts, I enjoy visiting other places to do it. You can find out a little about me and what I’m currently up to here.

Recent posts

Runtime-Compiled C++

Just back from the Game/AI Conference in Paris. I enjoyed this year even more than usual, thanks to all the familiar faces – and having the opportunity to show our Runtime-Compiled C++ project to the wider world.

In our presentation, Doug Binks and I talk about the headaches AAA studios find down the line with scripting languages. During the conference, it brought a smile to my face on several occasions to hear other speakers mention that they just used pure C++, or had dropped their scripting language, or in the case of one FPS developer, ask why on earth anyone would use one anyway? This may sound alien to you – hot-reloadable scripts seem like a no-brainer for the rapid iteration they allow. However, the bigger the project, the more headaches they seem to entail – the API maintenance, lack of good debugging tools on a multi-million line project, lack of multithreading support and the performance problems.

In the RCC++ project, we show how you can get that same hot-reloading functionality from pure C++. We don’t use any interpreter. An enabled project can compile as normal to a single DLL, but it watches it’s own source code, and as you make changes to it in Visual Studio, it recompiles itself a file at a time into tiny DLLs. By linking these in at runtime – and making use of serialisation – it can bring in your changes in just a few seconds. All the state of the running game can be preserved, while you bring in whole new features to your live C++ application.

We had a few more things to show. When you can make small rapid changes so easily, it’s important you don’t bring the house down with your first null pointer. In RCC++ we allow you to debug crashes in Visual Studio as normal – but then to catch them and carry on running. Your app keeps on running even if the game objects have to stop, until you fix the code – and it all sets off again.

As you play around with it, you start to realise all the simple tricks you can use this approach for. We show how you can create a C++ interactive console that lets you interact with your C++ objects – without having to add reflection code or a complex API. And how you might not need all those XML parsers or GUI tools any more, if you can just edit the source freely. As an independent developer without a tools department, these bang-for-buck solutions really appeal!

So there’s the summary. But if you’d like to hear more: check out the teaser video below, the Runtime-Compiled C++ blog, or fetch the MIT-licensed source code and play with it yourself.

First Steps from RuntimeCompiledC++ on Vimeo.