Book Name: | Data-Oriented Design |
Category: | Software Engineering |
Free Download: | Available |
Data-Oriented Design: Software Engineering for Limited Resources and Short Schedules
Projects tackled by the software development industry have grown in scope and complexity. The cost increases with the number of developers. Electricity bills for distributed projects have literally reached the point of optimization of paying dividends. In the past 10 years, a software development movement has taken root, a movement founded on game development. The limited resources and complexity of the software and hardware needed to deliver modern titles necessitated a different approach. Data-driven design is inspired by high-performance computing techniques, database design, and functional programming values. It provides a practical method of reducing complexity while improving the performance of your product and development teams. Understand goals, understand data, understand hardware, develop solutions. This book presents the foundations and principles for a deeper understanding of data-driven design. It provides guidance on the thought processes involved when considering data as a key detail of any project.
Description of the book
The thinking behind data-driven design is very similar to how you would think about relational databases. Relational database optimization is also possible through more efficient use of cache, even if in this case the CPU cache is not the cache of cached pages in memory. A good database designer would probably separate infrequently accessed data into a separate table rather than creating a multi-column table where only a few columns are used.
This book is a practical guide for serious game developers. It’s aimed at game developers working to make triple-A titles across multiple platforms, indie developers trying to get the most out of their chosen target hardware, in fact. Practically anyone develops advanced software in limited documentation.
This is a book on how to code. It’s a book written to educate game developers about a coding model that’s right for the future, unlike the coding style we’re all too familiar with. This is a book based on C++, the language of choice for game developers over the past decade, and provides practical advice on how to get around without throwing away code and years of accumulated experience. . This book explains how you can transform your growth.
Book Contents
Data-Oriented Design
It’s all about the data
Data is not the problem domain
Data and statistics
Data can change
How is data formed?
The framework
Conclusions and takeaways
Relational Databases
Complex state
The framework
Normalising your data
Normalisation
Primary keys
1st Normal Form
2nd Normal Form
3rd Normal Form
Boyce-Codd Normal Form
Domain Key / Knowledge
Reflections
Operations
Summing up
Stream Processing
Why does database technology matter?
Existential Processing
Complexity
Debugging
Why use an if
Types of processing
Don’t use booleans
Don’t use enums quite as much
Prelude to polymorphism
Dynamic runtime polymorphism
Event handling
Component Based Objects
Components in the wild
Away from the hierarchy
Towards managers
There is no entity
Hierarchical Level of Detail
Existence
Mementos
JIT mementos
Alternative axes
The true measure
Beyond space
Collective LOD
Searching
Indexes
Data-oriented Lookup
Finding low and high
Finding random
Sorting
Do you need to?
Maintaining
Sorting for your platform
Optimisations
When should we optimise?
Feedback
Know your limits
A strategy
Define the problem
Measure
Analyse
Implement
Confirm
Summary
Tables
Transforms
Spatial sets
Lazy evaluation
Necessity
Varying length sets
Joins as intersections
Data-driven techniques
SIMD
Structs of arrays
Helping the compiler
Reducing order dependence
Reducing memory dependency
Write buffer awareness
Aliasing
Return value optimisation
Cache line utilisation
False sharing
Speculative execution awareness
Branch prediction
Don’t get evicted
Auto vectorisation
Maintenance and reuse
Cosmic hierarchies
Debugging
Lifetimes
Avoiding pointers
Bad State
Reusability
Reusable functions
Unit testing
Refactoring
What’s wrong?
The harm
Mapping the problem
Internalised state
Instance oriented development
Hierarchical design vs change
Divisions of labour
Reusable generic code
Data-oriented design: software engineering for limited resources and short schedules
Author(s): Richard Fabian
Publisher: Richard Fabian, Year: 2018
ISBN: 9781916478701
Data-Oriented Design Richard Fabian PDF