Oliver Nyholm
AI and Gameplay Programmer

Tom Clancy's The Division 2: Warlords of New York

C++ | AI | AAA | Internship

About the Game

Tom Clancy's The Division 2: Warlords of New York, is my first release in a professional environment (Internship at Massive Entertainment). The game was released the 3rd of March 2020, as an expansion to the existing game, The Division 2.

Tom Clancy's The Division 2 is a shooter RPG with campaign, co-op, and PvP modes that offers more variety in missions and challenges, new progression systems with unique twists and surprises, and fresh innovations that offer new ways to play (Source).

Main contributions

NPC Team

I was part of the NPC team, with main responsibility over the AI characters that the players would play against in the game. During my internship, I worked on multiple things, from features to bugs. Below, I have listed the main tasks that I worked on.

  • Jumping RC Car - I improving how mechanical ground units could jump up and down different elevations, where the cleaner factions jumping RC car was the main focus.
  • Rogue Agents - Rogue agents are new, difficult NPCs that can at random appear in the game when players are doing events. If the player manages to defeat the agents, they are rewarded with great loot. My main task was handling how rouge agents could spawn in missions. That would require modifying existing code to fit them in. It would also involve creating new nodes that would work for other areas where they spawn, but most important making it easy for level designers to implement them in new and existing missions.
  • Scaling - As the game progressed from the main games level 30 (with world tiers upon that) to level 40 in the expansion, I worked on changes to NPC's level scaling.
  • Shoot Patterns - The NPCs had an asset library of different shoot patters which would be used depending on weapon type and distance. It was using an animation sequence-based system that was an overcompilcated system for shoot patterns. I created a new system where all shoot patterns were stored in a text data file, and using a new code based system that was more performance friendly. On top of that, I created a new UI tool where designers could record their own shooting and save the data as a new pattern.