Summary Intro Data-Oriented All About Data The Problem Domain Data and Statistics Data Changes How is Data Formed Providing a Computational Framework Exist Why use an if Dont use bools Dont use enums Prelude to polymorphism Dynamic runtime polymorphism Event handling Component Components in the wild Away from the Hierarchy Towards Managers There is no Entity Hier Existence from null to infinity Mementos JIT data generation Alternative Axes Condition Building Questions Flip it on its head Logging decisions for debug Branching without branching Fsm Tables as states Implementing transitions Condition tables as triggers Conditions as events Search Indexes A data-oriented lookup Finding lowest or highest is a sorting problem Finding random is a hash/tree issue Sort Do you need to? Maintain by insertion sort or parallel merge sort Sorting for your platfom rDB How does relational data differ? Normalisation Implicit Entities Components imply entities Cosmic Hierarchies Structs of Arrays Stream Processing Beautiful Homogeneity Optim Tables Transforms Spatial sets for collisions Lazy Evaluation for the masses Not getting what you didn’t ask for Varying Length Sets Bit twiddling decision tables Data driven techniques Conc What it means to be thread-safe Inherently concurrent operations Queues as gateways, and “Now” Example Data-manipulation Game entities Maintenance Debugging Reusability Unit Testing Refactoring Patterns Data-Oriented Design Patterns Existing design patterns Locking out anti-patterns Harm The Harm Mapping the problem Internalised state Hierarchical design Divions of labour Reusable generic code Hardware Sequential data Deep Pipes Microcode: virtually function calls. Single Instruction Multiple Data Predictable instructions Future Parallel processing Distributed computing Runtime hardware configuration Data centric development in hardware design Count Learning to count Counting to find out facts Domain Knowledge Discovering facts from counting