Skip to content

Blog

New Website

MoonCollider is growing, with more people and a wider range of services. And with this, we’re switching over to a new website. You can find us through matthewjack.co.uk or mooncollider.com and check out our new site, if you haven’t already. This older site will remain for a little while longer until we put the finishing touches on the new look.

Consulting in Atlanta

For the last two weeks I’ve been consulting with Xaviant, on-site in Georgia. After working remotely with the team for about 18 months, I was very pleased to be asked to fly over, meet the team and see their development process in action. They’re taking some exciting directions with Lichdom, especially in the AI arena, and they’re doing an expert job of exploiting and adapting CryEngine’s AI system. It’s going to be really exciting to follow development of this title.

Update: In Charles’ own words:

During our multi-year relationship, we have leveraged Matthew’s expertise to transform our engineering team, CryEngine3 and our AI toolset. Our frequent videoconferences have been invaluable as he constantly helps us expose existing functionality in the CryEngine3 AI framework. Additionally, we use Matthew’s on-site visits for detailed problem solving, process optimization, and cross-discipline benchmarking which, among other things, allows us to continuously evaluate ourselves and recently resulted in streamlining our character prototyping pipeline by 50%. As a relatively inexperienced AI team, Matthew provides expert validation for our approach to AI regarding our specific game requirements. He has now become a virtual member of our Engineering team.

Charles Hollingsworth, Engineering Director, Xaviant

Resident Expert at AiGameDev.com

After my presentation at the Game/AI conference in Paris, I headed on over to Vienna where I’ve been lending my experience to a new team at AiGameDev HQ. We’ve been developing new features and demos for their internal AI prototyping environment, the AI Sandbox.

I’m also continuing work with some other clients, including Enodo, a visualisation company based in Nice. More on that to come.

It’s fantastic being at the hub of the games AI community and sharing the experience of veterans such as Alex Champandard and former EA physics expert, Phil Dunstan. I’ll be here until shortly before Christmas.

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.

Contracts, Collaborations, Conferences

2011 has been a busy year so far! I’ve been working on an AI contract for a French company – very interesting work, but still confidential for now – as well as a couple of projects of my own. I’ve also been to Australia and back, visiting old friends and collaborators. Currently I’m looking forward to the Paris AI conference, where I’ll be presenting a new approach to fast iterative games development in pure C++.

Paris Conference Advisory Board

Christmas and the New Year have been an interesting time here, with discussion regarding contracts for most of 2011 and also re getting some extra help on-board, but everything’s now finalised – it’s great to have a whole year planned out!

I’ve been asked to lend a hand with the Paris Games AI Conference, sitting on the advisory board and reviewing submissions. It’s been fascinating – so many good proposals and a reason to sit down and read a whole bunch of research papers.