Massive Crowds of Assassin’s Creed: Unity | How Games Work

Articles 0 Comments

Assassin’s Creed has always had an ambition
to create environments with massive amounts of people on screen. However, the first games couldn’t have huge
systemic crowds due to the limit of total 100 NPCs in vicinity. This is because every character is an AI that
has to compute and deduce what they should be doing based on what is going on, and that’s
a very costly endeavour, hence the limit. Assassin’s Creed III has experimented with
what the team called a Bulk system – meshes with animation but no AI. It allowed to create really large crowds,
but the situations had to be controlled as you couldn’t interact with them. Assassin’s Creed: Unity uses that system as
a foundation for massive, interactive crowds of Paris, and at GDC 2015, Francois Cournoyer
told how the team has achieved that. The general logic behind everything is to
have a Level of Detail system not just for models, but for AI itself. Unity has a limit of 60 real NPCs around you,
meaning characters with absolutely full-fledged reactions, logic, animations, and direct gameplay
impact – like guards, or civilians engaging in complex behavior. Everybody else is what the developers call
a Bulk, of which there are three tiers. One is a Low Resolution Bulk – somebody who
is farther than 40 meters away, has a very basic model, only 11 bones with very simple
animations and a rudimentary logic and reaction system. On the other end of the spectrum is the Autonomous
Bulk, seen at distances closer than 12 meters. This Bulk looks like a real person, has 300
bones with proper animations, and a more advanced logic to the point that they’re very similar
to NPCs, although they aren’t. There can be a maximum of 40 autonomous bulks
around the player. The third type of Bulk is sort of a transitional
one. Called a Puppet Bulk, it has a high resolution
model and textures, but the logic of a low resolution Bulk. It appears, naturally, between 12 and 40 meters
away from the player. At appropriate limits the game converts the
Bulks from one type to another. Even though the change between Low Resolution
and Puppet Bulk is quite drastic, you can’t really see it from 40 meters away. And the change between Puppet Bulk and Autonomous
one affects behavior and animations more so than the model. For example here you can see how the transition
makes the character start using hands, get a facial expression, his fingers are not spread
out, and so on. This is not that noticeable from a distance,
which is why it works. To save on computation power, these bulks
do not work on their own. Entities known as Shepherds host the Bulks
within themselves and control them. And a separate Shepherd type sets up pathways
for Bulks to move around the city. Bulks are still polygons though, so for optimizing
purposes there’s a culling system that renders only those who are in our field of view, though
those who are outside still have their reactions calculated to know what to render later. Sometimes a Bulk has to be replaced with an
NPC for some complex behavior to take place. This is a full replacement when an NPC is
created from scratch, with the same looks and state as the Bulk, to be put in its place. For example, here the civilian you see is
a Bulk, until you shoot the guard nearby at which point the character gets replaced by
a technically absolutely new NPC so they could do the appropriate reaction. This action though can be pretty costly for
performance, given the 60 NPC limit, so the team tried to make sure it doesn’t happen
too often. And this is how the Assassin’s Creed: Unity
team managed to put an insane amount of people on screen all at once, all available for interaction
with the player. Be sure to check out the GDC talk if you’re
interested in more information, like how the memory budget for Bulks is allocated and what
is happening from the networking side to synchronize Bulks across players. The link is in the description. Thank you all for watching. A special thank you goes to my patrons supporting
the channel, and if you enjoy my content please consider joining them at Regardless, don’t forget to like and subscribe!

Leave a Reply

Your email address will not be published. Required fields are marked *