The New Avatar System: Player Parts
The new avatar system is well underway! But what are player parts in Brickadia, and how do they work?
In Alpha 5, the avatar system will be completely rebuilt from the ground up to support swapping out any of your player's body parts. The new player parts system is designed to enable you to pick, choose and change every aspect of your player avatar.
The new system lets you change your legs, hands, arms, torso, and even head! Additionally, we've added some additional sockets (which are places you can attach player parts to) such as sockets for hats, hair, shoulder pads, masks, belts, backpacks and capes.
Each part, rather than being made specifically for one player type, is modeled to be attached to a compatible socket on the player's avatar. This flexibility means that parts can be reused on any player type, of any size and shape. As long as a compatible socket exists, a part of that type can go there too.
Here is a functional prototype of the avatar editor. As you can see, each separate piece can be swapped out, and new ones can be attached.
To allow for that functionality, each socket and part have corresponding connection tags; these basically tell the system where a part can attach. Parts carry a set of part tags, and are allowed to connect to the matching connection tags. Parts can also define their own connection tags, if a part is only allowed to work with a certain set of parts for example. This will help prevent a collection of incompatible parts that in practice don't work, either because of clipping issues or just looking weird.
Soon, parts will be able to attach functional components. This means parts can add cloth physics or special effects, like emitting flames from a jet-pack when flying!
On the technical side, the parts system utilizes Unreal Engine's auto-instancing feature and some fancy tricks on our side to keep them running as fast as possible. Different colorable sections are determined by vertex colors. Painting them uses primitive data, which essentially is a series of floats that can be used on auto-instanced static meshes to change any kind of scalar property you can think of.
In this case, we pack the color of each section into their own floats. The material can then unpack and use the colors. As a result, each instance can hold unique colors and materials with little downside.
Additionally, to display decals and even animated faces on the player, we use mesh decals. The same kind of decals may also be used for the future Stickers feature.
As a sneak peak, here are some new parts that we've made: sleeveless arms, a pirate hook, and hair! (which you may have spotted on the main website)
That's all for now, thank you for reading. If you have a suggestion for a cool part you'd like to see, then let us know via Discord, Twitter, or e-mail!
We hope to see you in the next blog post! Stay tuned.