Need for Speed: Unbound


Company: Criterion Games - EA

Platforms: PlayStation 5, Xbox Series S|X, Steam

My Role: Engine Software Engineer

Engine: Frostbite Engine

Team Size: 200+

Shipped: December 2022 (worked on live service for 2023 too)

Game: Click Here

Description

After Dirt 5, this was the second huge AAA game I got envolved with for the majority of its development. It was a great challenge to adapt to this project since it was in a new engine and with a completely different team and company but I was able to and I thoroughly enjoyed my time with NFS.

Need for Speed Unbound is a racing game set in a fictional city called Lakeshore City, which is based on Chicago. It features an open world environment and gameplay similar to that of previous entries in the series, being mainly focused around street racing. The "heat system" from Need for Speed Heat returns in Unbound, where the player attempts to gain notoriety among the police. Additionally, the game features various forms of customization such as installing various body kits, adding a splitter, and even completely removing the front or rear bumpers.

The game features an art style that merges artistic elements like cel-shading and graffiti art with the more realistic art style of other Need for Speed games.

Features I worked on

Improved UI input interactions
The first feature I worked on when brought onto the project was to improve the input behind interacting with UI elements. Previously it was very bugged when spamming controls and I had to improve the system to allow the input to be more streamlined. This utalised the frostbite engine's noodle graph system for scripting and its C++ API.
Improved Input System
The input system used on the game at the time became outdated and I was responsible for updating and maintaining it. We used the input system from Frostbite but with our own small changes thus a new system needed to be integrated that kept all our divergencies.
Bug And Stability Fixes
As part of the engine engineering team for NFS, I was responsible for fixing issues and crashes caused by the engine. This meant a very low level understanding of its inner working was required to be able to debug and fix various issues.
Integration
I cant reveal too much here since some of this is still under NDA but I was responsible for integration for features from somewhere to somewhere else i cant discuss yet. This was a very different task for me up to this point since it required merging code and data from every part of the game within our source control. It has been a great learning experience to do so.