Who remembers the first time you hopped on a bicycle, when you were just little children? At first, it seemed so unrealistic to actually being able to balance yourself on those two thin wheels and keep going.
At a certain moment, though, you felt that “click”, and you knew how to go on a bike. You didn’t know or perceived it, but your brain worked to build new connections between neurons. And ta-daa, you learned a new thing.
Well, this same thing happens with Neural Networks, it’s the same concept. Just not biologically, but mathematically. The new Neural AI in MotoGP 19 is based on this technology, applied to racing video games. But how did we realize this exactly? We explain it in-depth in the video below.
As you see, in the video we stay a lot on the “hows”, but not so much on the “whys”. Why venture in an unexplored field? Why adopt a technology that has almost never been used in racing video games? Even though the reason is simple, finding it was not that easy.
With the previous games, our designers spent entire months trying to foresee all the different situations the AI might face, providing it with all the necessary instructions on how to react to those situations.
But despite all the work, the AI we built was never challenging enough for our community. We needed to find a solution to recreate the competition, the thrills and the challenge of the real MotoGP, even for the most hardcore of our players.
In fact, one does not simply sit down and create a game like MotoGP. What you, as a developer, really must keep in mind is the community that keeps the game strong and alive. And it’s a community of passionate players and racers who are demanding, competitive and stubborn.
The only way to give this amazing community the AI they deserved, was by stop trying to create an AI, but letting it build by itself. So, the A.N.N.A project came alive. An AI that learns by its own mistakes, by trial and error, by building a Neural Network similar in every way to part of our brain. Just like we did when we first learned how to use a bicycle.
A.N.N.A. stands for Artificial Neural Network Agent: an AI that does not rely on predefined commands, written by a designer, but on rewards. Each action she makes – yes, some of us likes to address our AI as a “she” – can have a positive or negative outcome, and depending on this, she may receive or lose points.
This triggers a learning process that allows A.N.N.A to remember which actions are good (for example when to brake at the right time) and which are bad (like, well, going against a wall, or against another rider). It was real fun seeing A.N.N.A in its early stage, its infancy let’s say, when in the middle of a race it suddenly stopped and decided to go backward, just to see what would happen.
Starting from an AI that stopped mid-race to go backwards, we now have a complex, incredibly smart AI that is capable to challenge and beat even the most skilled of our devs acting as a real pro rider – but no worries, its difficulty is scalable, so all players of all skill level will enjoy the game!
In fact, we ended with a super-tough AI and an even tougher problem: how to make it enjoyable also for the average players, without losing all the awesome work we did on it? We knew the priority was to preserve the complex behaviour it had developed, and to do so we had to work on some interesting techniques.
Meaning that we had to slow it down without making it look clumsy or unbalanced. We achieved this by controlling where and how much it needs to slow down. It’s still the neural AI in control, consciously not cranking up to 100%. Everyone here in Milestone is so excited to see how our Community will react to this new level of realism, of speed and fairness toward other riders.
You guys will finally see if you stand a chance against A.N.N.A. on the 6th June on your Playstation 4 and Playstation 4 Pro.
*All liveries shown to be updated to 2019.
Subscribe to our mailing list
Get the latest game reviews, news, features, and more straight to your inbox
Thank you for subscribing to Brash Games.
Something went wrong.