Avatar System

From Resonite Wiki

Resonite by itself doesn't have a concept of a user avatar and its associated behaviors, however it comes with a set of components that provide a conventional (but highly flexible) avatar system that will cover most situations. However as with anything else in Resonite, you can build entirely your own to suit your needs or omit it completely, if you don't need avatars at all.

This page describes the ideas and concepts behind building avatar systems for Resonite and how the various behaviors (such as voice and movement) are handled.

Basic concepts

All worlds in Resonite are composed from a hierarchy of objects (slots) with components attached to them. Any avatar system is part of this same hierarchy, with no solid distinction between the user's avatar and other objects in the scene. This is what gives the system its great flexibility.

Resonite World's provide a User Joined and User Left events, which are called whenever a new user joins or leaves the session, including the local user (who joins implicitly on starting the session). User joining a session doesn't do anything on itself. There is no avatar spawned, no voice, no controls. The joined user has no way to interact with the world.

To provide such behaviors, you need to add a component to the world that listens to these events, such as the SimpleUserSpawn paired with a CommonAvatarBuilder. These components will create new objects in the world hierarchy for newly joined users, attach appropriate components that will read the user's inputs and microphone samples and apply it to the objects in the scene and attach components that provide visuals, such as 3D models or particle systems.

All parts of this process are completely up to you and your needs. Whatever you construct, Resonite will automatically replicate to all joined clients (and clients who will join in the future). It's also up to you whether you do the construction on the host or the client who joined (or some other client in the world, like on a Headless client) - for example clients can construct their own avatars locally, using their locally accessible data.

Common Avatar System

Because avatars are crucial for most applications, Resonite comes with a powerful avatar subsystem that you can use (and that's automatically utilized in its own official worlds), called the "Common Avatar System" or just "Common Avatar". This system automatically constructs typical avatars with tools and allows to load user's currently active avatar object from the cloud.

It also comes with a set of components to easily construct new avatars from arbitrary objects right within the system, allowing users to make new avatars from imported models, drawings and shapes made using tools found in Resonite and add behaviors using ProtoFlux.