- summary: How to draw an entity: its skeleton, layered art, colour overrides, scale and attached sub-entities.
- area: Game.Common
How to draw an entity: its skeleton, layered art, colour overrides, scale and attached sub-entities.
Kind struct · Area Game.Common
The appearance record, shared by Character, ActorPositionInformation and
every other message that shows an entity.
MOST SCRIPTS DO NOT NEED TO DECODE THIS. It is rendering data. What it IS good
for is telling entities apart cheaply - bones_id distinguishes a monster
species from a player without resolving anything.
indexed_colors IS PACKED, NOT A PLAIN COLOUR LIST. Each entry is
(index << 24) | rgb: the high byte selects which colour slot is being
overridden and the low three bytes are the colour. Reading it as a flat RGB list
produces nonsense. The client carries these as unsigned values even though the
wire type is signed, so a large positive index arrives as a negative int32 -
mask, do not compare.
scales is a percentage pair; a single entry means uniform scaling.
idle_id (from 3.5) picks the idle animation the entity plays when standing
still: an id into the game's idle data. 0 means the default idle. The client
reads it for nothing else.
sub_entities MAKES THE STRUCTURE RECURSIVE. A mount carries its rider as a
sub-entity, whose look can itself carry a pet. Bound your traversal - do not
assume one level.
EVERY FIELD NUMBER MOVED between the reference build and this one. Read by name.
Not sent on its own — it hangs off a character, an actor or a sub-entity and is never sent alone. proven
Used by
ActorInformationChangeLookCharacterInformationContextRefreshEntityLookEventIndexedEntityLookMonsterInGroupInformationPartyGuestSubEntityInformationSummonContextInformation
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 1 | bones_id | int32 | Which skeleton animates this entity. (bones id) The cheapest way to tell one kind of entity from another. | never |
| 2 | sub_entities | repeated SubEntityInformation | Attached looks - a mount and its rider, a pet, a carried entity - each with its binding point. Element type SubEntityInformation, which nests another EntityLook. The structure is recursive. | never |
| 3 | skins | repeated int32 | The art assets layered to draw the entity. (skin ids) The client holds these as 16-bit values. | never |
| 4 | idle_id | int32 | The idle animation the entity plays when standing still, as an idle id; 0 means the default idle. (idle id (data-center Idles)) The client looks it up in its idle data (IdleData) and plays that entry's animation; a value of 0 or less keeps the default idle. Not in the beta protocol; sent from 3.3 on (absent or never copied on 3.2.7.15). | never |
| 5 | indexed_colors | repeated int32 | Colour overrides, each packed as (slot index << 24) | rgb. NOT a plain colour list - the high byte is the slot being overridden. Unsigned in the client, signed on the wire: mask rather than compare. | never |
| 6 | scales | repeated int32 | Entity scale as a percentage pair; a single entry means uniform. (percent) | never |