This is me flapping around as a flying eyeball with the drill equipped.
This is me slithering around as a leech, drilling and shooting the dual barrel rifle:
This is me as a flying eyeball creature, wielding the pillar of death, while driving a truck:
The significance here, aside from looking cool, is that they took virtually no effort to implement because of a new framework recently created: The entity system. What you are seeing is a glimpse into the possibilities that have been opened up, in that it enables us to leverage our previous code in ways we didn't think was possible in the past. How does it work? I'm glad you asked – but first allow me to explain the underlying philosophy behind it. You may activate the Morgan Freeman narration now:
Anything that exists can be imagined as an arrangement of smaller parts, which carry on about their simpler roles, oblivious to the big picture they are a part of. For example: Your muscles can contract to generate movement, your nervous system invokes those contractions, your lungs and digestive system gather the chemical elements required, and your heart delivers them throughout the body.
However, it is natural for us to imagine things as the whole they become when they are connected and working together. If we were to understand each other as an arrangement of specialized tissue structures, important context would be lost that would allow us to make sense of ourselves and each other as people. In this sense, the whole that is “you” is greater than the sum of all the parts you are made of.
When developing features like players, enemies, vehicles, and so on, typically you'll break it down into simpler components and work on them individually: Movement controllers, health modules, various AI modules, colliders, animation, mesh renderers, and so on.
However, just as in the above example, being limited to this fragmented perspective makes it difficult to develop with the big picture in mind. Eventually everything just starts to look like component soup, uncertainties become numerous, bugs pop up out of nowhere, and things which should be trivial become difficult.
Thus, the entity system was introduced. It is a framework which allows us to tie together a bunch of parts and create something new as a result – a singular, indivisible whole with distinct boundaries and a well-defined role in the big picture. Many possibilities were opened up, such as those shown in the screenshots, alongside many other gameplay, technical, workflow and optimization opportunities. The list below is by no means complete:
It enables us to focus on broader interactions between entities, like characters entering vehicles or networking events without needing to care about details like what parts those vehicles or character entities are made of.
It helps us organize complex behaviors like AI, avatars, camera systems, inventory systems, etc. into a collection of functionally isolated, simpler parts that are largely independent of one another. The entity system enables these parts to plug into each other to become something entirely new, with minimal effort.
Abstracts away the technical details of component organization and management so we can focus more easily on creating new gameplay, rather than implementing the same procedures over and over.
Condensing these procedures into a central framework allows optimization and debugging architecture that wasn't possible before.
Centralization also allows us to focus our efforts to optimize, maintain, and fix within a single body of code, whereas normally such efforts would be diluted across the entire code base.
In conclusion, (tl;dr,) the main motivating factors behind designing the entity system was the desire to create a sort of "gameplay engine" that manages a lot of the grunt work that we'd normally have to do ourselves. It is built out of our ongoing desire for things to “just work”, so we can focus on delivering stable, optimized content quickly to players. I foresee these efforts leading to a bright future of community-driven content as well, and this is one of the many first steps we will take in that direction.
Thanks for reading,
- Stephen "Hatchling" Smolley