wiki

KotOR 1 high-level system layout

This page summarizes the KotOR 1 (PC / Odyssey) runtime layout in a Mermaid-friendly form: the original reference is a single large diagram in KotOR 1 System Layout (PDF) showing how Exo services, string tables, the CSW/CSW* object graph, and Aurora / client–server (NetLayer) fit together. That PDF is mostly a visual / ASCII class map. This diagram is a simplified, readable graph for navigation (not a complete class diagram).

flowchart TB
  subgraph tlk[TLK and string layer]
    CTlk[CTlkTable: up to 7 TLK files, custom tokens, CGameObject ref, language id]
  end

  subgraph exo[Exo core services CExo*]
    AliasList[Exo alias list: path resolution key-value linked list CExoAlias*]
    ExoBaseI[Exo base internal: extension to resource type mapping]
    ExoRes[ExoResMan: BIF, KEY, ERF, RIM, directories, module info, async IO, key table lists]
    ExoSound[ExoSound: Miles or MSS, 3D, EAX, provider list, sound sources, priority groups]
    ExoInput[ExoInput: keyboard and mouse, raw input, tick deltas]
    Gui[CSWGuiManager: panels, modals, mouse, viewport, tooltips, modal stack]
  end

  subgraph rules[Rules and VM]
    Rules1[CSWRules: 2D arrays, feats, classes, races, skills, spells, etc.]
    VM1[VM stack and instructions + NCS helper]
  end

  subgraph cl[Client]
    CApp[Client exo: ClientExoApp, movies, area, Exo app holds module]
    CNet[CNetLayer]
    CObj[GameObjectArray hash, internal and external object buckets, CSWCreature and related object types]
    CScene[Scene and Gob, lights, camera derives from Gob]
    CGui2[CGuiInGame, CSWModule camera and controls, party and journal]
    Aurora1[Aurora, AurInternal, GL, GLRender]
  end

  subgraph sv[Server or MP server path]
    SApp[Server exo: area ref, Exo app]
    SNet[CNetLayer]
    SMod[Module: IFO, VARTABLE, AREAMAP, LIMBO, NCS, linked areas]
    SObj[Object array, server world timers, SWS* object types, AI lists and event queue]
    SSys[Server systems: Faction, globals, EFX, items, server VM commands]
  end

  tlk --> exo
  exo --> rules
  exo --> cl
  exo --> sv
  rules --> cl
  rules --> SSys
  CNet <--> SNet
  Aurora1 --> exo

How to use this

See also