Data Oriented Design in Games

Data Oriented Design in Games

Strictly Confidential. Copyright © 2017 Electronic Arts DATA ORIENTED DESIGN IN GAMES Christian Dahlberg, Gameplay Engineer Strictly Confidential. Copyright © 2017 Electronic Arts GHOST GAMES > EA studio based in Gothenburg > Ghost made the three Last Need for Speed games > Worked on Far Cry 3, NFS and NFS Payback > Worked as a teacher at The Game Assembly Strictly Confidential. Copyright © 2017 Electronic Arts OBJECT ORIENTED DESIGN PROBLEMS > Started simple > Years has taught us the issues > Not scalable > Grows in complexity exponentially Rendering Physics IO Animations Objects Art Logic Game Scene Gameplay Strictly Confidential. Copyright © 2017 Electronic Arts REAL LIFE IS A BAD EXAMPLE > What are we taught in schools? > Create objects based on reality > Everything in an object in all functions of that object > To share functionality use inheritance > Interdependency between objects is synchronous > This is bad for games Strictly Confidential. Copyright © 2017 Electronic Arts DATA ORIENTED DESIGN > Create objects based on the data access of your systems > This stops the data complexity problem from growing as fast > Mike Acton – The purpose of all programs, and all parts of those programs, is to transform data from one form to another. > If you don’t understand the data you don’t understand the problem > The more data you have the more complex your problem is Strictly Confidential. Copyright © 2017 Electronic Arts ALL DATA AVAILABLE ALWAYS > When all data is available you can solve any problem in any function or object > This will scale poorly with team size Rendering Rendering Physics IO Physics IO Animations Objects System process Animations Objects Scene Gameplay Scene Gameplay Strictly Confidential. Copyright © 2017 Electronic Arts RACE CONDITIONS > When complexity is high you create race condition by accident all the time > Thread issues are hard to reproduce > Knowing the dependecy between threads is really difficult > Race conditions are very hard to find > We shipped with a lot of them(we can implement them in scripts) Strictly Confidential. Copyright © 2017 Electronic Arts REAL LIFE OBJECTS IN DATA ORIENTATION > All objects consist of of components > Every component is a class > The real life object only exists in data and not in your code Strictly Confidential. Copyright © 2017 Electronic Arts COMPONENT SYSTEMS IN GAMES > Components are sub-objects attached to Entities > Dependencies between components in the same game object is the tricky part > Memory traversal is harder to solve > Linear memory traversal Communication across coponents? Code objects aka classes Physics component Mesh Component Referenced by Id, Component to entity Entity Strictly Confidential. Copyright © 2017 Electronic Arts DOD NOT OOD > Start thinking about the data that is your first problem not what objects > Think about the following things: > What data do you need for your system to work? > What data do you want to be shared between systems? > How many objects are you operating on? > Is there any interdependency between objects? Strictly Confidential. Copyright © 2017 Electronic Arts SCRIPTING LANGUAGES > Be scared! in many scripting languages! > Creates race conditions if run on mutliple threads or across network Strictly Confidential. Copyright © 2017 Electronic Arts WHAT IS THE GAME INDUSTRY DOING? > Components as objects > Real world objects are only a data construct > Create scripts that can run in parallel Strictly Confidential. Copyright © 2017 Electronic Arts SMALL BESPOKE SYSTEMS > Small bespoke makes it flexible > Clearer interface > More effective > What can be done is more well defined > Dependencies are what a game have to implement > Ideally only data will be different between games > Keeps divergence with the base systems low Strictly Confidential. Copyright © 2017 Electronic Arts CONCLUSION > Don’t base your system on real life > What data is shared and which is not > How does your system traverse memory Strictly Confidential. Copyright © 2017 Electronic Arts WANT TO LEARN MORE? > https://www.youtube.com/watch?v=rX0ItVEVjHc - CppCon 2014: Mike Acton "Data-Oriented Design and C++“ > https://www.youtube.com/watch?v=p65Yt20pw0g - Unity at GDC - A Data Oriented Approach to Using Component Systems > https://www.youtube.com/watch?v=fHNmRkzxHWs CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures" > https://www.youtube.com/watch?v=ZHqFrNyLlpA Hands on example from Jonathan Blow > http://www.dice.se/wp-content/uploads/2014/12/Introduction_to_Data- Oriented_Design.pdf Strictly Confidential. Copyright © 2017 Electronic Arts THANK YOU!.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    16 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us