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
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