Large scale refactoring (Math 3D programmer)
Scientific 3D programmer project in video game industry (math 3D programming).
Major upgrade (High performance math3D library) to allow the deprecation of obsolete 3D Math library still supported in the Core Engine System (convert math type from one Math API to another one). The mathematical library is the heart of video games and is used by all components of the game (Animation, rendering, physics, camera, etc.).
The project consist of cleaning up existing code, rewriting certain algorithms, mathematical types and merging several versions (3 versions of the library were used by the different groups).
This project require solid math skills – don’t need to be an expert but need to know the math data structure (linear algebra). Also, good programming skills dealing with modern C++ techniques and math 3D programming.
Since these are high performance math libraries, there is quite a bit of advanced template trickery and some quite involved type conversion required in the script. Converting, say, the Frostbite animation systems from one Math API to another is non-trivial.
Due to the large amount of code to be parsed, refactoring would be impossible with a traditional find-and-replace regexp.
A two step process: the first phase consists of running scripts (Clang tool AST: Abstract Syntax Tree) replacing old types with new ones (renames types, function signature …). The second step is the difficult part, what was left out by the script. This task required digging into the code, finding bugs, and fixing them, also failures due to missing dependencies that are generated, validating result make sure nothing was broken and, finally test for different platforms (XBox, PS5, PC, …).
Frostbite is EA’s state-of-the-art, multi-platform game development engine. Frostbite powers some of the most stunning games in the industry along with deep player experiences.
Jean Belanger (Senior Physics and Scientific Programmer)
Jean Belanger is a scientific programmer who act as a contractor and consultant in the IT industry for the last 25 years. He is also responsible for the development of the DamBreak++, a programming environment aimed to understand physics via modern modeling techniques and using new software development paradigms.