Decision Guide

“I need to…” → Use this pattern

Need

Pattern

Remappable / undoable input

Command

Thousands of identical-looking objects

Flyweight

Decouple systems with events

Observer

Spawn many pre-configured objects cheaply

Prototype

One instance of a manager

Singleton

Entity with mutually exclusive modes

State

Entity spanning multiple domains (physics, render, audio)

Component

Buffer or coalesce events across frames

Event Queue

Swap service implementations

Service Locator

Add enemy types without new subclasses

Type Object

Many ability subclasses with safe, consistent cleanup

Subclass Sandbox

Designer-editable behavior without recompile

Bytecode

Frame-rate-independent updates

Game Loop

Self-contained per-entity per-frame logic

Update Method

Read and write same state in one frame

Double Buffer

Cache-friendly bulk data updates

Data Locality

Avoid recomputing unchanged derived values

Dirty Flag

High-frequency spawn/destroy without allocation cost

Object Pool

Fast proximity / range queries

Spatial Partition

Patterns That Map Directly to Built-in Acron Systems

These patterns are already implemented in the engine — reach for the built-in before writing your own.

Pattern

Built-in Acron system

Observer

messenger + DirectObject.accept()

State

direct.fsm.FSM.FSM

Game Loop

ShowBase.run() + taskMgr

Command (sequences)

Sequence + FunctionInterval

Flyweight

ModelPool + NodePath.instanceTo()

Object Pool (particles)

ParticleEffect

Service Locator

base, taskMgr, messenger, loader

Double Buffer (rendering)

Acron renderer (automatic)