Table of Contents

Struct CharacterWaypointData

Namespace
FishMMO.Database.Data
Assembly
FishMMO-DB.dll

One page of a character's discovered waypoints in one scene: a 64-bit mask where bit N is waypoint page * 64 + N.

public struct CharacterWaypointData
Inherited Members

Remarks

Why a mask. A waypoint is a bit — discovered or not — and a scene has tens of them, all read together on login and written together on save. A row per waypoint would spend roughly forty bytes on each bit and have the load path fold them back into the set the game actually wants. The mask stores the set as it is used, exactly as CharacterDialogueChoiceData does for dialogue choices; pages keep it unbounded rather than capped at 64 per scene.

Merge, not replace. Bits are only ever set, so the write is mask | EXCLUDED.mask: idempotent under retries, and two scene servers writing during a transfer converge on the union rather than one discarding the other's discoveries. That is also why there is no version column — there is no stale write to reject.

When scenes change. The bit index is the waypoint's authored index, which is stable by contract (see Waypoint.WaypointIndex). A renamed scene orphans its rows; they cost eight bytes each and are never read. A removed waypoint leaves a bit nothing consults.

Constructors

CharacterWaypointData(long, string, short, ulong)

public CharacterWaypointData(long characterID, string sceneName, short page, ulong mask)

Parameters

characterID long
sceneName string
page short
mask ulong

Fields

CharacterID

Character that discovered the waypoints.

public readonly long CharacterID

Field Value

long

Mask

The discovered bits of that page.

public readonly ulong Mask

Field Value

ulong

Page

Which 64-waypoint page of the scene this row holds.

public readonly short Page

Field Value

short

SceneName

The scene the waypoints stand in.

public readonly string SceneName

Field Value

string