// Philip Dunstan // // @phildunstan, // (c) 2020 int main() { Player philDunstan; philDunstan.partner = Player("Katherine Thomson"); philDunstan.location = Location("Malmö, Sweden"); philDunstan.recent_job_history.add("2017 - present", "Massive Entertainment", "Lead AI Programmer", "Tom Clancy's The Division 2") .add("2016 - 2017", "Massive Entertainment", "Lead AI Programmer", "Tom Clancy's The Division") .add("2014 - 2016", "Massive Entertainment", "Senior AI Programmer", "Tom Clancy's The Division") .add("2011 - 2013", "", "Senior AI R&D Engineer") .add("2004 - 2011", "Electronic Arts", "Software Engineer - Physics and Core Systems"); philDunstan.bibliography .add(Expansion, "Tom Clancy's The Division 2 - Warlords of New York", "Lead AI Programmer") .add(Game, "Tom Clancy's The Division 2", "Lead AI Programmer") .add(Game, "Tom Clancy's The Division", "AI systems and features") .add(Game, "NHL 11", "Physically Driven Characters") .add(Game, "FIFA 09", "Physically Driven Characters") .add(Game, "Fight Night 4", "Physically Driven Characters") .add(Game, "Need for Speed: The Run", "Conversion from Havok to EA Physics", "Physics features and performance") .add(Game, "Battlefield Bad Company 2", "Conversion from Havok to EA Physics", "Physics features and performance") .add(Game, "Harry Potter", "Conversion from Havok to EA Physics", "Physics features and performance", "Core Technologies") .add(Game, "Skate", "Physics features and performance") .add(Game, "Burnout Paradise", "Physics features and performance") .add(Game, "Nerf N-Strike", "Physics features", "Core Technologies") .add(Game, "Littlest Pet Shop", "Physics features", "Core Technologies") .add(Software, "AI Sandbox CTF Competition", "Competition organization, software core systems, gameplay and networking") .add(Software, "The AI Sandbox", "Core systems, sensory and perception systems, physics driven animation, technology samples") .add(Software, "Behavior Tree Starter Kit", "Behavior Tree implementations") .add(Software, "Clang C++ Modernizer Tool", "Source code transformations to apply the C++11 'override' keyword") .add(Presentation, "Fighting Sequelitis: Creating Combat NPCs for 'Tom Clancy's The Division 2'", "GDC 2019", "AI Summit") .add(Presentation, "Blending Autonomy and Control: Creating NPCs for 'Tom Clancy's The Division'", "GDC 2016", "AI Summit") .add(Presentation, "How TOM CLANCY'S THE DIVISION Simulates Manhattan for Millions of Players", "nuclai16") .add(Presentation, "Believable Tactics for Squad AI", "GDC 2012", "AI Summit") .add(Presentation, "Active Skeletons and Physics Simulation", "Vienna Game AI Conf 2012", "Animation Workshop") .add(Presentation, "Behavior Tree Implementation", "Vienna Game AI Conf 2012", "Behavior Tree Workshop") .add(Book_Chapter, "Behavior Tree Starter Kit", "Game AI Pro: Collected Wisdom of Game AI Professionals") .add(AiGameDev_Masterclass, "How to Build Chase & Evade Behaviors with Emergent Gameplay", "copresenting with Alex Champandard") .add(AiGameDev_Masterclass, "Bug Hunting: Understanding AI Architecture with Epic Failures", "copresenting with Alex Champandard") .add(AiGameDev_Masterclass, "How to Avoid Common Performance Pitfalls When Programming Gameplay and AI", "copresenting with Matthew Jack") .add(AiGameDev_Masterclass, "Writing Hardware-Optimized Gameplay Code on Xbox 360 & PS3", "copresenting with Matthew Jack"); Game life; life.addPlayer(philDunstan); while (!life.isGameOver()) { life.update(); life.render(); } return 0; }