Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Overwatch Gameplay Architecture and Netcode

    GDC Festival of Gaming

    16 HN recommenders · recommended in 13 months, 2019–2025

    YouTube

    1:04:04 · 196K views · Feb 8, 2019

    Blizzard's Timothy Ford explains in this 2017 GDC session how Overwatch uses an Entity Component System architecture for layered gameplay. He also covers its server-authoritative netcode with client-side prediction and how they keep the game responsive and fair.

    HN treats it as the best real-world AAA example of ECS and game netcode, and cites it constantly in discussions of data-oriented design.

    Games & Game DevelopmentGame programming & enginesSoftware architecture & design
    1. 31:00
      Exploring the Tech and Design of NoitaGDC Festival of Gaming288K views • 6 years ago
    2. 1:00:46
      CppCon 2018: Stoyan Nikolov “OOP Is Dead, Long Live Data-oriented Design”CppCon271K views • 8 years ago
    3. 59:47
      Failing to Fail: The Spiderweb Software WayGDC Festival of Gaming570K views • 8 years ago
    4. 42:30
      RustConf 2018 - Closing Keynote - Using Rust For Game Development by Catherine WestRust Programming Language152K views • 8 years ago
    5. 23:06
      Bob Nystrom - Is There More to Game Architecture than ECS?Roguelike Celebration301K views • 8 years ago
    6. 1:05:59
      Data Oriented GUI in Rust by Raph Levien - Bay Area Rust MeetupRust Programming Language83K views • 8 years ago
    7. 1:05:25
      Robocalypse Now: Using Deep Learning to Combat Cheating in Counter-Strike: Global OffensiveGDC Festival of Gaming35K views • 6 years ago
    8. 59:38
      8 Frames in 16ms: Rollback Networking in Mortal Kombat and Injustice 2GDC Festival of Gaming95K views • 7 years ago
    9. 1:01:51
      Rant: Entity systems and the Rust borrow checker ... or something.Jonathan Blow304K views • 8 years ago
    10. 1:49:07
      I Shot You First: Networking the Gameplay of Halo: ReachGDC Festival of Gaming58K views • 8 years ago
    11. 1:55:24
      Ideas about a new programming language for games.Jonathan Blow530K views • 12 years ago
    12. 1:05:33
      GDC 2018: John McDonald (Valve) - Using Deep Learning to Combat Cheating in CSGOmax4warn128K views • 8 years ago
    13. 1:06:37
      Destiny's Multithreaded Rendering ArchitectureGDC Festival of Gaming45K views • 10 years ago
    14. 13:04
      VACNET Anti-cheat3kliksphilip574K views • 8 years ago
    15. 2:27:34
      Casey Muratori – The Big OOPs: Anatomy of a Thirty-five-year Mistake – BSC 2025Better Software Conference929K views • 1 year ago
    16. 26:56
      The Implementation of Rewind in BraidGDC Festival of Gaming141K views • 9 years ago
    17. 44:59
      Google I/O 2011: Kick-Ass Game Programming with Google Web ToolkitGoogle for Developers106K views • 15 years ago
    18. 1:19:52
      CppCon 2016: Jason Turner “Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17”CppCon264K views • 10 years ago
    19. 1:27:46
      CppCon 2014: Mike Acton "Data-Oriented Design and C++"CppCon863K views • 12 years ago
    20. 1:04:33
      CppCon 2014: Jeff Preshing "How Ubisoft Develops Games for Multicore - Before and After C++11"CppCon53K views • 12 years ago

    20 comments from Hacker News

    1. @BekwnnJun 2021· in “Data-oriented design or why you might shoot yourself in the foot with OOP (2009)”

      > The components on the entity define not only it's data but also it's behavior by the set of systems that act on the corresponding components. And you can take these object definitions and inherit them to add additional behavior or change the existing behavior by adding more components to the new definition. This seems to miss what ECS actually is, unless you're just referring to the old-school way of doing entity components and not the data-oriented way. Data-oriented ECS way of doing things is to separate state and behaviour. Entity components essentially become structs where their only behaviour is potentially some getter/setter utilities. Behaviours are then state-less systems (just functions, essentially) which act on a set of components. For example, a PhysicsUpdateBehaviour might take in a RigidBodyComponent and a HealthComponent to perform a physics update and apply physics/fall based damage. The main benefit of ECS (imo) isn't even really performance. It makes code in complicated game projects much easier to manage by clarifying the game loop and by making it much more obvious how and when entity state is being modified. It's the kind of thing that potentially complicates a smaller project, but makes larger more complex projects easier to manage. This Overwatch GDC talk is the best breakdown/example of data-oriented ECS in a AAA game that I know of: this video

      Strongly recommendsView on HN
    2. @DecoPersonSep 2020· in “rg3d: Rust 3D game engine with an FPS demo game and scene editor”

      Entities are a collection of component instances and nothing more. Components in ECS are data-only. Systems in ECS are logic-only. If you follow this strictly, then you cannot support encapsulation or data-hiding. There is no sole definition of OOP, but it is widely accepted that the ability to do encapsulation, including data-hiding, is a key part of OOP. Therefore, ECS is not OOP. QED If you’ve not seen the Overwatch team’s talk in which they discuss ECS, I can highly recommend it as a good resource to learn about ECS: this video There may be models commonly used in those languages you mentioned that are similar to ECS, but you seem to be implying that ECS is a form of OOP; it is not. Even if you implemented OOP using Structs of Arrays, a thread per object, or whatever you like, you cannot strictly conform with ECS’s requirement that “components have no logic” while also strictly conforming with OOP’s requirement that “objects should not know about each others’ internals” (object hierarchy).

      Strongly recommendsView on HN
    3. @DavidVoidMay 2020· in “PC games are fighting a new surge of cheaters and hackers”

      Overwatch allows none of that and seems to have some pretty well-designed netcode. Clients only send their controller inputs and the server has full authority of what actually happens. Blizzard's GDC talk about it is really good if you want an explanation of how to make a game feel responsive and fair without giving clients authority over everything [1]. Ofc this does not eliminate aimbot or wallhacks, but it gets rid of pretty much all other forms of cheating. [1] this video (Netcode talk starts at 22:22)

      Strongly recommendsView on HN
    4. @adampkSep 2021· in “Unity patents ECS”

      this video "In this 2017 GDC session, Blizzard's Timothy Ford explains how Overwatch uses the Entity Component System (ECS) architecture to create a rich variety of layered gameplay." (My favorite resource to explain ECS + NetCode)

      Strongly recommendsView on HN
    5. @bcrosby95Dec 2023· in “I'm open-sourcing my game engine”

      There's an awesome talk by someone in the overwatch team in youtube. It's about ECS but it has a big section on networking that had some useful tips. Edit: here it is - this video

      Strongly recommendsView on HN