Table of Contents

Class ClientWorldLabelSettings

Namespace
FishMMO.Client
Assembly
FishMMO.Client.dll

How the world-anchored labels — nameplates, guild lines, damage and healing numbers — are drawn: how large, how far out, how strongly, how many at once, and whether walls hide them. Also which nameplates are up without being targeted: NPCs and other players inside their own ranges, and the player's own.

public static class ClientWorldLabelSettings
Inheritance
ClientWorldLabelSettings
Inherited Members

Remarks

These are the layer's own fields, made editable. UITKWorldLabelLayer already carried every one of them as a serialized field tuned in ClientPreboot.unity. Each default below is the value authored there, so a fresh install draws exactly what it drew before this existed and only a player who moves a control changes anything.

Two of them are performance controls, not taste. The draw distance and the visible-label cap bound the cost of the client's hottest UI loop — one projection, one style diff and one sort entry per label per frame. A machine that struggles in a crowded hub gets a real frame back by dropping either, which is the same reason the minimap's refresh rate is exposed.

Scale multiplies rather than replaces. A label's font size is computed from its world-unit size and its distance from the camera, so a fixed point size would throw away the perspective behaviour that makes a distant nameplate small. The multiplier scales the clamp bounds along with the computed size, or a scale above one would be swallowed by the upper clamp the moment the player walked close enough to hit it.

Fields

DefaultDistance

Draw distance a fresh install uses, in metres.

public const float DefaultDistance = 80

Field Value

float

Remarks

Eighty, matching UITKWorldLabelLayer.MaxVisibleDistance as authored.

DefaultMaxVisible

How many labels a fresh install draws at once.

public const int DefaultMaxVisible = 64

Field Value

int

Remarks

Sixty-four, matching UITKWorldLabelLayer.MaxVisibleLabels as authored.

DefaultNpcNameRange

How close an NPC must be, in metres, for its nameplate to show without being targeted on a fresh install.

public const float DefaultNpcNameRange = 30

Field Value

float

Remarks

Thirty: conversational distance in a town, and well inside the eighty-metre draw distance, so a nameplate that this rule turns on is never immediately culled by the layer's distance cutoff and drawn as nothing.

DefaultOcclude

Whether a fresh install hides labels behind scene geometry.

public const bool DefaultOcclude = false

Field Value

bool

Remarks

Off, as authored. It costs a physics linecast per visible label per frame, so it is a setting a player opts into for the look of it, not one that should be paid for by default.

DefaultOpacity

Label opacity a fresh install uses.

public const float DefaultOpacity = 1

Field Value

float

DefaultPlayerNameRange

How close another player must be, in metres, for their nameplate to show without being targeted on a fresh install.

public const float DefaultPlayerNameRange = 30

Field Value

float

Remarks

The same thirty as NPCs. Other players' names used to be target-only, but only because the player prefabs never referenced their labels — nothing chose that behaviour, and a crowd of anonymous players in a hub reads as a bug rather than as a default.

DefaultScale

Label size multiplier a fresh install uses.

public const float DefaultScale = 1

Field Value

float

DefaultShowOwnName

Whether a fresh install keeps the player's own nameplate up at all times.

public const bool DefaultShowOwnName = true

Field Value

bool

MaximumDistance

Longest draw distance offered, in metres.

public const float MaximumDistance = 200

Field Value

float

MaximumMaxVisible

Most labels offered.

public const int MaximumMaxVisible = 256

Field Value

int

MaximumNpcNameRange

Longest NPC nameplate range offered, in metres. Matches the draw distance ceiling.

public const float MaximumNpcNameRange = 200

Field Value

float

MaximumOpacity

Strongest labels offered.

public const float MaximumOpacity = 1

Field Value

float

MaximumPlayerNameRange

Longest player nameplate range offered, in metres. Matches the draw distance ceiling.

public const float MaximumPlayerNameRange = 200

Field Value

float

MaximumScale

Largest label size multiplier offered.

public const float MaximumScale = 2

Field Value

float

MinimumDistance

Shortest draw distance offered, in metres.

public const float MinimumDistance = 10

Field Value

float

Remarks

Ten rather than zero. Zero is the layer's "no limit" sentinel, so a slider that reached it would turn the cheapest setting into the most expensive one at the exact end of the travel a player drags to when they want less.

MinimumMaxVisible

Fewest labels offered.

public const int MinimumMaxVisible = 16

Field Value

int

Remarks

Sixteen. Below that a player standing in a group loses their own target's nameplate to the budget, which reads as the game failing rather than as a setting doing its job.

MinimumNpcNameRange

Shortest NPC nameplate range offered, in metres.

public const float MinimumNpcNameRange = 0

Field Value

float

Remarks

Zero is a real setting here, not a sentinel: it means NPC nameplates show only on the current target, which is exactly what the client did before the range existed.

MinimumOpacity

Faintest labels offered. Above zero; invisible labels are what the toggles are for.

public const float MinimumOpacity = 0.2

Field Value

float

MinimumPlayerNameRange

Shortest player nameplate range offered, in metres. Zero means target only.

public const float MinimumPlayerNameRange = 0

Field Value

float

MinimumScale

Smallest label size multiplier offered.

public const float MinimumScale = 0.5

Field Value

float

Properties

Distance

The chosen draw distance, in metres.

public static float Distance { get; }

Property Value

float

MaxVisible

The chosen draw budget.

public static int MaxVisible { get; }

Property Value

int

NpcNameRange

How close an NPC must be, in metres, for its nameplate to show untargeted. Zero: target only.

public static float NpcNameRange { get; }

Property Value

float

Occlude

Whether labels behind scene geometry are hidden.

public static bool Occlude { get; }

Property Value

bool

Opacity

The chosen label opacity.

public static float Opacity { get; }

Property Value

float

PlayerNameRange

How close another player must be, in metres, for their nameplate to show untargeted. Zero: target only.

public static float PlayerNameRange { get; }

Property Value

float

Scale

The chosen label size multiplier.

public static float Scale { get; }

Property Value

float

ShowOwnName

Whether the player's own nameplate stays up at all times.

public static bool ShowOwnName { get; }

Property Value

bool

Methods

SetDistance(float)

Writes the draw distance and notifies the layer.

public static void SetDistance(float value)

Parameters

value float

SetMaxVisible(int)

Writes the draw budget and notifies the layer.

public static void SetMaxVisible(int value)

Parameters

value int

SetNpcNameRange(float)

Writes the NPC nameplate range and notifies the nameplate display.

public static void SetNpcNameRange(float value)

Parameters

value float

SetOcclude(bool)

Writes the occlusion setting and notifies the layer.

public static void SetOcclude(bool value)

Parameters

value bool

SetOpacity(float)

Writes the label opacity and notifies the layer.

public static void SetOpacity(float value)

Parameters

value float

SetPlayerNameRange(float)

Writes the player nameplate range and notifies the nameplate display.

public static void SetPlayerNameRange(float value)

Parameters

value float

SetScale(float)

Writes the label size multiplier and notifies the layer.

public static void SetScale(float value)

Parameters

value float

SetShowOwnName(bool)

Writes the own-nameplate setting and notifies the nameplate display.

public static void SetShowOwnName(bool value)

Parameters

value bool

Events

OnChanged

Raised when any world label setting changes.

public static event Action OnChanged

Event Type

Action

Remarks

The layer subscribes and re-reads. It is a scene object that comes and goes with the client scenes, so it reads on enable as well — the event only carries a CHANGE, and a layer that waited for one would start on the authored values rather than the player's. ClientNameplateDisplay subscribes for the two nameplate rules, which it applies to characters rather than to the layer.