Skip to content

1. Framework Architecture

Triangly edited this page May 23, 2026 · 1 revision

Orbinaut Framework is built around a hierarchy of core gameplay objects and several globally managed systems. All gameplay entities inherit from a shared base object and participate in a centralised runtime update flow driven by obj_game

Core Object Hierarchy

obj_game

obj_game exists separately in every room and acts as the local runtime environment for that room. It's not persistent. The object is responsible for most core framework systems, including:

  • game state handling and global gameplay timing
  • input processing
  • audio buses and sound control
  • camera and viewport management
  • rendering surfaces
  • palette and fade systems
  • deformation effects
  • object culling

It also drives the main runtime update flow and dispatches framework hooks to obj_gameobject instances during step processing

The object sets its depth to 16000, so its draw events are processed before the rest of the room and can be used as the framework's earliest rendering layer

obj_gameobject

obj_gameobject is the standard parent for objects in Orbinaut. It provides a common runtime integration layer for objects and includes:

  • optional animator and culler module references
  • debug collision drawing
  • framework hook events for pre/post Begin Step and pre/post End Step
  • update gating through max_allowed_game_state

Each obj_gameobject instance can limit the highest GAME_STATE in which it remains active. This allows the framework to selectively keep some objects running while others are suspended during pauses, transitions, or other global runtime states

All non-controller objects in the framework should inherit from obj_gameobject

Runtime Update Flow

obj_game splits its work across several runtime passes rather than using a single Step event

Begin Step

  • input processing
  • pre-Begin Step hooks for obj_gameobject instances
  • game state and fade handling
  • pause handling
  • object culling / activation control
  • frame counter, animator, and palette updates
  • post-Begin Step hooks for obj_gameobject instances

End Step

  • pre-End Step hooks for obj_gameobject instances
  • audio sync and channel handling
  • camera and surface updates
  • other late runtime work
  • post-End Step hooks for obj_gameobject instances

Pre-Draw

  • prepare frame-wide rendering state

Draw

  • prepare per-view rendering state

Draw End

  • restore the default rendering state

Post Draw

  • compose rendered views onto the application surface

Clone this wiki locally