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.

Data-Oriented Design: Software Engineering for Limited Resources and Short Schedules PDF

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


Download

Download

Download



Buy From Amazon

Thanks For Visiting Our Website http://www.freepdfbook.com To Support Us, Keep Share On Social Media.