Update:Blog - Game Engine: Game Engine Improvements

From Darkan
Jump to navigation Jump to search
This official Developers' Blog is copyrighted by Jagex. It is a direct quote from the RuneScape website.
This blog was written by Andrew Gower and dates to 11 June 2009.
Game Engine Improvements

You may have noticed this week’s updates have caused some unusual behaviour changes in the game, and a few bugs. These are fixed now, but this post is to explain what's been going on.

I expect some of you are wondering "The game was working fine before, why do you keep fiddling with it? How is it that things that were working fine for years can suddenly temporarily break?" To answer this question I need to explain a bit about what we have been doing to the game-engine and why.

The current version of the RuneScape engine which sits behind the scenes and runs the game, has been in continual development for about 6 years now. Over the last 6 years we have been continually bolting bits onto our existing engine to add new features and support new content we want to add to the game.

You can think of it as similar to building a tower. Luckily the tower was built with very solid foundations in the first place, but after 6 years of adding new floors to the tower we really need to go back and reinforce the foundations a bit more to support the next 6 years of additions.

What this means in programming terms is that we have been replacing some of our earliest engine code, and integrating some of the later improvements more neatly. The code had become a bit of a mess of many different systems which were all written at different times by different people, all working in slightly different ways with slightly different rules. We have therefore been working hard on unifying everything internally, to be simpler and more consistent so it doesn't become terminally confusing to work on. This is a process called "Refactoring".

It's something which is only worth doing because we take a very long term view with RuneScape and fully expect to be improving the RuneScape engine for many years to come. We therefore really need to make sure we have a good foundation to work with. It's a question of short term pain and a bit of instability to ensure the long term stability of the engine.

With this week’s engine update we launched completely overhauled route finding and action systems, which are very core systems to the game. Ideally this wouldn't have changed anything at all, but the system had grown very complicated over the years as more and more rules were added on, resulting in a complex system, with lots of obscure behaviour which nobody fully understood. Developing a much simpler replacement which still supports all of the features of the old one, and still broadly behaves the same way as the old complex one has been a big challenge!

After a lot of testing we finally declared the new version to be a good replacement for the old one. The new version was a lot simpler and easier to understand and work on, and in all the cases we tested, it still gave the same result as the old complicated one. However there are thousands and thousands of things you can do in RuneScape and short of spending years testing (not practical obviously!) there is no way we could possibly test EVERY permutation.

So we launched our new version, and after a couple of hours of launching the new version with over 100,000 simultaneous players, the amount of play from that many players at once equates to about 20 years of testing in just 2 hours! As you can imagine 20 years of testing DID try a lot more permutations and a few things which didn't quite work the same after all were discovered.

We quickly jumped to tweak the behaviour of our new system to fix those unintentional changes. However it turned out that in doing so we introduced OTHER changes which broke other things instead, which in turn needed fixing themselves.

One very obvious example of the above, was that we inadvertently made it so that you couldn't eat food and walk at the same time anymore. The engine generally doesn't let you do 2 things at once, and whilst we were simplifying and unifying things we missed one of the rare cases where the old system was inconsistent and DID let you do 2 things at once. Everyone still wanted that behaviour so we reintroduced that slightly asymmetrical behaviour in our new version, and made it so you could eat and walk at the same time (not recommended in real life unless you want indigestion!).

However we did that very quickly with less testing than normal as we were rushing to fix a live bug. When we made the change it turns out we went to far in the opposite direction and made it so there were many other places in the game were you could also do 2 things at once. At first we thought 'Well this is probably actually an improvement, it was always annoying that you couldn't do those things'. However more and more reports have been coming in, of players doing 2 things at once that weren't previously possible. We've realised that the change was more far reaching than we initially thought. A lot of the careful balancing of the game was being thrown off.

Therefore we've updated yet again to still allow eating+walking, but NOT allow the other '2 things at once' actions. Some of them may be reintroduced again in the future, but in a more controlled way and only after testing and considering the implications of each one.

The upshot of this is the behaviour really should be back to what it was before we started now, but we've got a much better engine running the game to build on for further improvements. Certainly it's been a stressful few days and I expect a few more tweaks will still be needed. However no real harm was done, nobody was banned, and it's definitely worth it to ensure we have the best possible platform to be building on for years to come.