It certainly looks like Naughty Dog is set to pull another number one release out of its hat with the recently announced Last of Us 2, the sequel just announced to one of the most popular games of 2013, which has in turn led to the release of a remaster on PS4 and now of course the much anticipated sequel featuring it’s main protagonists from the previous game, Ellie and Joel – however this article is not here to discuss the characters or indeed the game itself particually, instead focusing on the game engine itself.
The game engine used for The Last of Us and its upcoming sequel is the engine originally designed for Uncharted and revised many times over many releases. Initially during the transition from PS2 to PS3 Naughty Dog had decided to port over their existing engine and upgrade as new features were needed, however porting an engine to a completely new architecture – even one as powerful as the PS3 was at the time – was not an easy transition with constant changes and upgrades needed.
If you look at some of the innovations in the game engine as it has developed we can look to some excellent examples by jumping back to Uncharted 3 where you are riding a horse and shooting enemies while riding on a sprawling desert landscape trail which was being generated procedurally so that you rode as long as this battle took without having the sense of looping constantly. Streaming levels are a common method now for loading up parts of a level before a player gets to them while unloading parts unlikely to be visited however combining that with a procedural system that prebuilt the sections to place into the streaming level on the fly while you are shooting and riding a horse and not letting the player see behind the wizards curtain was a stroke of genius.
Now game engines offer streaming level functionality and procedural systems (for those brave enough to look at more complex features) however on top of this we should look at other innovations; In fauna filled sections using the Naughty Dog game engine you can see, especially in Madagascar, that the mixture of particle effects and careful use of textures that everything is damn, rained on, wet. As the players go further up in the level the warm feel is replaced with a damper and colder feel with clouds moving in and again this is handled procedurally.
Characters in the game get messy and dirty and get injured. An example is that Drake from the Uncharted series may get covered in dirt and mud however swimming in water or even walking under a waterfall will clean him of this – the same system was put into effect in Last of Us which, combined with its winning visuals and overgrown cityscapes led to a whole new way of throwing detail at the player to make them completely immersed in this world.
Initially the ps3 engine was a single threaded engine working at 30hz with the game logic running first followed by the command buffer setup and render logic however the engine was unable to manage to break a process to yield to a new process, there was no memory management for the user and there was no easy to use API for the gameplay programmers. Everything about the changeover was set to focus on the API with the tweaking to make the engine run faster to come later once the evolution of the code to manage more complex decision making was in place.
You can find a lot more about this over HERE at this link about how Naughty Dog Parralelized the game engine using something called Fibers – its a good watch and one that probably needs a coffee and an hour with a notepad however it is well worth checking out.
Share this Post