Skip to content

Factions

Star Atlas has three factions — ONI, MUD, and Ustur — and a player belongs to one. Faction is a capability-only entry, imported directly.

import { getFaction, maybeGetFactionStanding } from '@aephia/atlas-kit/factions';

It is broader than “which faction is this player in”:

  • identity and configuration — the faction itself
  • economics — its economic state
  • diplomacy — relations between factions
  • standing — a profile’s standing with a faction
  • treasuries and asset ownership — what a faction holds
  • King-system ownership — which faction controls which system
const faction = await getFaction(ctx, factionId);
const relations = await getFactionRelations(ctx);
const standing = await maybeGetFactionStanding(ctx, profileAddress, factionId);

maybeGetFactionStanding returns undefined rather than throwing when a profile has no standing recorded. That is the SDK’s convention throughout: get* asserts existence, maybe* treats absence as a legitimate answer.

Use maybe* when absence is expected, and get* when it would be a bug.

Faction 0 is not a faction. NPC-owned entities decode with faction: 0. Their identity comes from the owning profile, not that field.

Standing is per profile, not per character. It belongs to the wider Star Atlas identity rather than to the SAGE character.

Relations are between factions, not players. Diplomacy describes the factions’ stances toward each other.

  • factions — every export in this entry
  • loyalty — contributing to a faction over an epoch
  • identity — the profile standing attaches to