Book notes – Data-oriented design

Data-oriented design: software engineering for limited resources and short schedules (Goodreads)

  • The author didn’t know of any big AAA game project fully built using DoD, but it is already vastly used in performance critical areas like particles and big simulations;
  • Employee turnover would probably be one of the biggest problems of not “documenting” the problem domain using OOP, since the original design is not easily inferable from inspecting the code in DoD, external documentation is required;
  • After profiling and identifying where most execution time is being spent in a project it is worth remembering that memory access (specially cache misses) are one of the most expensive things that a processor can do (another are mutexes);
  • Decoupling the data from the processing and keeping the data in low complexity arrays (of structs if the data is always used together, primitive types if not) allows already a much cheaper usage of memory timewise;
  • Separating hot data (frequently accessed or updated) and cold (mostly constant) is alsovery beneficial for memory reads;
  • Instead of conditions/branching (which potentially wastes processing and memory reading with prediction) the author proposes to use presence in arrays as an indication that you need a specific processing done (existential processing, reminds a lot of job systems);
  • Enums and polymorphism can be treated in a similar way;
  • Instead of following barely predictable invocation trees from objects, you loop over your arrays in a defined order in the time you reserve for your main update;
  • To get the best results data transforms should be idempotent (always the same output for the same inputs) and write the outputs to a different place to the inputs;
  • Knowing what data is going to be produced and what is going to be read at each step allows the code to be massively parallelized without locks (and/or by using SIMD);
  • Idempotent transforms make understanding and testing a specific part of the code much more straightforward;
  • The author separates data transforms in maps (one input, one or more outputs), generators (no inputs, one or more outputs) or reduce/filters (multiple inputs, the same amount or less of outputs);
  • Database normalization is a great way of organizing the data so there is no redundancy, and also making data relationships flat;
  • Column-oriented DBMS and structs of arrays are good references about how to implement these ideas;
  • Related talk: CppCon 2014: Mike Acton “Data-Oriented Design and C++”.
Gallery

Overwatch 2

Overwatch 2 is a free-to-play, team-based action game set in the optimistic future, where every match is the ultimate 5v5 battlefield brawl. Play as a time-jumping freedom fighter, a beat-dropping battlefield DJ, or one of over 30 other unique heroes as you battle it out around the globe.

Company: Blizzard/The Multiplayer Group (MPG)
Since Jun 2022

  • Leading a remote team embedded in the Overwatch 2 team at Blizzard since before the second game release;
  • Some of the published work we did so far:
    • Map lighting/time of day switching;
    • Moderation and costumer support improvements;
    • Business intelligence support;
    • Features for events like Battle for Olympus, Starwatch and the Flashpoint game mode;
    • Bug fixes and improvements.

Overwatch 2 (Blizzard)

Gallery

GRID Legends

GRID Legends delivers thrilling wheel-to-wheel motorsport action. Create dream race events, hop into live races, experience a dramatic virtual production story, and embrace the sensation of spectacular racing.

Company: Codemasters – EA
Jun 2020 – Dec 2021

  •  Focused on network programming for the upcoming GRID Legends;
  • Reimplemented the network transport layer and voice chat on the existing C++ engine to support cross play on PC, PS4 [Pro], PS5, Xbox One [X/S] and Xbox series X/S using PlayFab Party;
  • Integrated platform specific features like PS5 leaderboards, Xbox friends list and leaderboards;
  • Coordinated the migration of the server side to Azure and the implementation of the remaining networking features with other programmers.

GRID Legends (Codemasters – EA)

GRID-LEGENDS-Art

Gallery

World War AI

  • Released World War AI, a 4 player co-op FPS with a roguelite upgrade loop released on Bossa Presents for PC;
  • Created a network library that isolates game code from network transport, matchmaking and topology, used in 2 released games and 5 game jam projects and supporting GameKit, LiteNetLib and Photon Realtime as transports;
  • Fast tracked 2 other programmers to network the existing local multiplayer game in about 2 months.

World War AI (Bossa Studios)

Gallery

Hogwash

Pitching one against three in a race against the clock, this colour-soaked rasher of chaos is the ultimate team-based, feel-good game.

Company: Bossa Studios
Feb 2019 – Oct 2019

  • Released Hogwash, a synchronous third person multiplayer game released on Apple Arcade for iOS, tvOS and macOS;
  • Created a network library that isolates game code from network transport, matchmaking and topology, used in 2 released games and 5 game jam projects and supporting GameKit, LiteNetLib and Photon Realtime as transports;
  • Worked with other programmers to implement game features.

Hogwash for Apple Arcade (Bossa Studios)

Gallery

Cancelled pet mobile game

In order to centralize my professional stuff a bit more I will use this space instead of Behance to showcase the projects I was part of.

Company: Elm Interactive
Nov 2017 – May 2018

  • Working on a cancelled mobile game for a famous cartoon pet IP;
  • Activities included UI implementation and polish, new features and bug fixes;
  • Implemented 2.5D character pathfinding, reviewed the game camera;
  • Developed parts of a multiplayer server to complement Playfab.

Video

Beartopia

Start a new life in a cozy island village full of adorable bears! Beartopia is a multiplayer game where you can chat with friends, shear sheep, harvest fruit, and ultimately build a beautiful, bustling community. Meet the quirky villagers–they seriously need your help. Train your family of bears to earn money while you are away. Cooperate with other players to rebuild the old lighthouse and other village landmarks.

Company: Spry Fox
Sep 2016 – Oct 2017

  • Released Beartopia for the Google Daydream VR platform, an MMO with idle game features and cute 3D bears, using Unity for the client and C#/Mono for the server;
  • Main activities included porting the single player prototype to a multiplayer game, server and client features, polishing and preparing the game for release;
  • Also made efforts to unit test the server code and wrote Python and Bash scripts to help localizing the game and other server tasks.

Beartopia for Google Daydream (Spry Fox)

Beartopia.0