February 23–26, 2020

Entity component systems and you: They're not just for game developers

Mars Geldard (University of Tasmania), Tim Nugent (Lonely Coffee), Paris Buttfield-Addison (Secret Lab)
1:15pm2:05pm Tuesday, February 25, 2020
Location: Beekman Parlor
Secondary topics:  Case Study, Theoretical
Average rating: ***..
(3.80, 5 ratings)

Who is this presentation for?

  • Software architects, programmers, and the curious

Level

Beginner

Description

The hot “new” (ECS debuted in 1998) thing in software architecture for games is ECS. While the rest of the software architecture world is admiring their shiny containers, edge computing, and cloud native architecture, game developers are off in the corner creating new ECS-based architectures and pushing the boundaries of architecture with this runtime-flexible, highly compatible, safe, and easily composable approach to software.

Paris Buttfield-Addison, Mars Geldard, and Tim Nugent explain why this architecture isn’t just for games. You’ll learn how to apply the lessons from decades of ECS use in game development to the wider software development and software architecture world and see how ECS is related to existing similar architectures. (ECS is kind of microservices, combined with functional programming, on some levels, but isn’t quite the same.)

An entity component system involves three components: an entity (a general purpose object), a component (the parameters for one facet of the object), and the system (something that runs continuously and performs actions on every entity that has a component of the same facet the system manages). ECS makes for the safe management of dependencies; the system can check entities for the components and perform logic as needed. Nothing is dependent on anything else in a strongly coupled way.

ECS also makes for easily “composable” software. There’s no complex inheritance tree, since every entity has little more than an ID and a list of the components—its facets. Any object necessary can be created by composing an entity with the needed facets. Features from one type of entity can be added to another by including the necessary components.

In game design, the use is obvious: a physics engine in a game can iterate through all the physics simulation components present, performing any necessary calculations without caring how the entity is drawn. Or health point components can be attached to a play entity but not to other entities in the game world, and the health management system would know how to deduct health from entities that have health point components when a collision that would cause a loss of health occurs.

Intersystem and intercomponent communication can be a problem in this architecture, but there are a number of solutions, including use of the observer pattern.

ECS isn’t for every software architecture problem, but you can learn a lot from it even if you don’t use it.

Prerequisite knowledge

  • A basic understanding of programming or software architecture

What you'll learn

  • Learn what an ECS is and how it's related to existing similar architectures
  • Understand why ECS is important even if you're not a game developer
Photo of  Mars Geldard

Mars Geldard

University of Tasmania

Marina (Mars) Rose Geldard is a researcher from Down Under in Tasmania. Entering the world of technology relatively late as a mature-age student, she’s found her place in the world: an industry where she can apply her lifelong love of mathematics and optimization. When she’s not busy being the most annoyingly eager researcher ever, she compulsively volunteers at industry events, dabbles in research, and serves on the executive committee for her state’s branch of the Australian Computer Society (ACS). She’s currently writing Practical Artificial Intelligence with Swift for O’Reilly.

Photo of Tim Nugent

Tim Nugent

Lonely Coffee

Tim Nugent pretends to be a mobile app developer, game designer, tools builder, researcher, and tech author. When he isn’t busy avoiding being found out as a fraud, Tim spends most of his time designing and creating little apps and games he won’t let anyone see. He also spent a disproportionately long time writing his tiny little bio, most of which was taken up trying to stick a witty sci-fi reference in…before he simply gave up. He’s writing Practical Artificial Intelligence with Swift for O’Reilly and building a game for a power transmission company about a naughty quoll. (A quoll is an Australian animal.)

Photo of Paris Buttfield-Addison

Paris Buttfield-Addison

Secret Lab

Paris Buttfield-Addison is a cofounder of Secret Lab, a game development studio based in beautiful Hobart, Australia. Secret Lab builds games and game development tools, including the multi-award-winning ABC Play School iPad games, the BAFTA- and IGF-winning Night in the Woods, the Qantas airlines Joey Playbox games, and the Yarn Spinner narrative game framework. Previously, Paris was a mobile product manager for Meebo (acquired by Google). Paris particularly enjoys game design, statistics, blockchain, machine learning, and human-centered technology. He researches and writes technical books on mobile and game development (more than 20 so far) for O’Reilly; he recently finished writing Practical AI with Swift and is currently working on Head First Swift. He holds a degree in medieval history and a PhD in computing. Paris loves to bring machine learning into the world of practical and useful. You can find him on Twitter as @parisba.

Contact us

confreg@oreilly.com

For conference registration information and customer service

partners@oreilly.com

For more information on community discounts and trade opportunities with O’Reilly conferences

Become a sponsor

For information on exhibiting or sponsoring a conference

pr@oreilly.com

For media/analyst press inquires