For the complete documentation index, see llms.txt. This page is also available as Markdown.

Software Architecture

Resources for my thinking on UI Programming, Distributed Systems Design and Video Game Architecture. Spoilers: it's the same patterns everywhere.

  • Event-Driven communication

    • Limit direct interaction between components of a system

  • Data-Oriented

    • Events -> Components -> Data Updates

    • Data Updates -> Components -> Events

    • Requests -> Components -> Data Queries -> Response

  • Unidirectional, immutable, pure, side-effects at boundaries

  • Domain-Driven-Design

    • Carefully architect code around core business concepts

My take on video-game architecture

When considering game architecture specifically a few extra elements become relevant:

  • Zero-allocation event dispatch

    • Object pooling

  • Minimal-allocation state update

    • Clever immutable data structures

  • Minimal-allocation projection update

    • Infrequent projection changes can allocate

    • Frequent projection changes should be computed with no allocation

  • Minimal-runtime-instantiation of game entities

    • Object pooling

  • Object lifecycle handling, no dangling subscriptions

Data-Oriented Architecture

https://engineering.fb.com/data-infrastructure/messenger/

Unidirectional Dataflow

Event-Driven (& Event-Sourcing, CQRS)

Last updated