// Philip Dunstan // // @phildunstan, // (c) 2017 int main() { Player philDunstan; philDunstan.partner = Player("Katherine Thomson"); philDunstan.location = Location("Malmö, Sweden"); philDunstan.recent_job_history.add("Jul 2016 - present", "Massive Entertainment", "AI Team Lead", "Tom Clancy's The Division") .add("Jan 2014 - present", "Massive Entertainment", "Senior AI Programmer", "Tom Clancy's The Division") .add("Jul 2011 - Dec 2013", "", "Senior AI R&D Engineer") .add("Sep 2004 - Jun 2011", "Electronic Arts", "Software Engineer - Physics and Core Systems"); philDunstan.bibliography .add(Game, "Tom Clancy's The Division", "AI Systems") .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, "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") .add(AiGameDev_Interview, "Distributed Automatic Testing of AI and Animation in CRYSIS 2", "interviewing Wil Wilson") .add(AiGameDev_Interview, "Procedural World Generation and Simulation in DWARF FORTRESS", "interviewing Tarn Adams") .add(AiGameDev_Interview, "High-Level Character Authoring & Utility AI in STORYBRICKS", "interviewing Stéphane Bura") .add(AiGameDev_Interview, "Planning for the FALL OF CYBERTRON: AI in TRANSFORMERS", "interviewing Troy Humphreys") .add(AiGameDev_Interview, "Galactic Domination in ENDLESS SPACE", "interviewing Florian Brulhart and Adrien Allard"); Game life; life.addPlayer(philDunstan); while (!life.isGameOver()) { life.update(); life.render(); } return 0; }