-
Premium MasterclassHow to Avoid Common Performance Pitfalls When Programming Gameplay and AI
Gone are the days of games with small level maps and a handful of NPCs. As games become more complex the requirements placed on the AI systems also grows significantly larger. Furthermore, AI techniques are increasingly being used in many other parts of the game engine, and the high levels of indirection that are common in AI code can be notoriously difficult to optimize.
-
Premium MasterclassChatScript from Pattern Recognition to Natural Language Generation in Suzette
Games such as SCRIBBLENAUTS are known for pushing the boundaries of natural language processing in games, but when it comes to natural language generations many role-playing games (RPG) still primarily rely on scripts and dialog trees. How can we use better AI techniques to improve the quality of NPC dialog when interacting with the player?
-
Premium MasterclassProcedural Music Generation for Games using Statistical Models
Generating music for AAA titles these days takes big budgets, and games with so-called "adaptive scores" require a large number of tracks to be authored — often in the dozens. What are good solutions for indie developers that can't afford to even hire musicians? Can procedural generation techniques help provide diverse and dynamic music based on little input from a composer?
-
Premium MasterclassSynchronizing Clients and Server: Replicating Bots Over the Network in RESISTANCE 2
Synchronizing characters over the network is a difficult challenge. For player avatars, it requires a very responsive approach that . However, this approach isn't very suited to non-player characters as it consumes unnecessary bandwidth and can result in low-quality animation. RESISTANCE 2 in particular uses a different approach to synchronize the AI decisions over a network.
-
Premium MasterclassOh, Behave! AI with Behavior Trees in Unity and C#
The first generation of BT editors resembled built-in tree widgets with their attached property editors. Now much richer widgets are used in practice, making it easier for developers and designers to edit behavior trees.
-
Premium MasterclassAnticipation for Animation and Behavior: Bringing Characters to Life
Character animation has been around for almost a century, with applications ranging from short features to full films. Over the decades, animators have developed significant insights into the process... As an AI programmer, this can help you not only improve the quality of your NPCs behaviors and make your gameplay easier to understand too.
-
Premium MasterclassCinematic Parkour Animation... but Interactive!
It's very common to look at animation from the character's requirements, but when you flip the problem around and see it from the perspective of the environment, things change completely. How do you make sure animations line up perfectly with the world? How do you handle transitions in a responsive yet smooth fashion? How do these environmental animations fit into a traditional animation graph?
-
Premium MasterclassInteractive Behavior Debugging using an AI Flight Recorder
Are you still relying on large .log files that are dumped by your game executable, and searching through them with a text editor to debug your AI? Well, the 1990s called and they want their debugging techniques back! Luckily for you, there's a much better way and it's not that hard to put in place.
-
Premium MasterclassRule-Based Systems and Declarative Representations beyond SIMS 3
The typical decision-making systems used in games these days have many inter-dependencies; even with HFSM or behavior trees it's hard to extend the AI without having to consider the whole set of decisions. Rule-based systems provide a more modular approach to certain problems, which can help build more scalable AI using formal logic.
-
Premium MasterclassHierarchical Pathfinding Tips & Tricks
Understanding the theory of A* or hierarchical search is only half of the battle. How do you build a good navigation system around that? What do you need to watch out for to make sure the pathfinding behavior remains robust? Which are the biggest obstacles to performance and multi-threading?


