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

Data-Oriented Architecture
Eyas's Blog

Unidirectional Dataflow

The Elm Architecture · An Introduction to Elm
In-Depth Overview | Flux
Cycle.js

Event-Driven (& Event-Sourcing, CQRS)

A Brief Intro to Clean Architecture, Clean DDD, and CQRS
CQRS + Event Sourcing – Step by Step | Learn CQRS and Event
Learn CQRS and Event Sourcing
GitHub - kgrzybek/modular-monolith-with-ddd: Full Modular Monolith application with Domain-Driven Design approach.
GitHub