오버워치 넷코드 아키텍처: ECS 구조와 서버 중심 설계
Source
Evernote/Inbox/보트를 만들기 힘드니 항공모함을 만들자! 오버워치 넷코드의 비밀 - 인벤 커뮤니케이션즈.md
Summary
본문은 GDC 2017에서 블리자드가 공개한 오버워치 네트워크 코드의 설계 철학을 다룬다. 오버워치는 기존 FPS와 달리 캐릭터와 무기의 상호작용이 매우 복잡하고 다양하여, 레이턴시 마스킹과 버그 관리가 큰 과제였다. 이를 해결하기 위해 블리자드는 ‘보트(단순한 구조)보다 항공모함(복잡하지만 확장성 높은 구조)‘을 만드는 전략을 선택했다. 핵심은 ECS(Entity-Component-System) 아키텍처를 활용하여 게임 로직을 모듈화하고, 서버 중심의 클라이언트-서버 방식을 채택하여 모든 게임 로직 처리를 서버에서 수행하는 것이다. 이는 초기 개발 비용을 높이지만, 장기적으로 다양한 콘텐츠 추가와 버그 추적을 용이하게 한다.
Key Points
- 오버워치는 캐릭터/무기 패턴의 다양성으로 인해 레이턴시 마스킹과 버그 관리가 기존 FPS보다 훨씬 복잡함.
- 블리자드는 확장성과 유지보수성을 위해 ECS(Entity-Component-System) 아키텍처를 채택함.
- ECS 구조: Entity(객체), Component(속성/데이터), System(로직 처리)로 분리하여 모듈화.
- 게임 로직은 System에 집중시키고, 부작용 발생 시 원인을 쉽게 추적할 수 있도록 설계 원칙을 수립함.
- 네트워크 구조는 서버 중심의 클라이언트-서버 방식을 사용하며, 클라이언트는 입력만 전송하고 서버가 모든 로직을 처리함.