#gfg10 Multiprocessor Game Loops: Lessons from Uncharted 2: Among Thieves

게임루프에 주요 이슈를 잘 정리. bucket 개념을 추가한 게 좋았고 bucket update 사이에 broadphase AABBs를 업데이트하는 게 신선했다.

Optimizing Large-Scale Updates

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-00.jpg

  • 비효율적이다
  • 중복 계산
  • 리소스 재할당
  • 캐시 일관성(cache coherence) 유지가 힘들다.
  • 병렬처리에 안 좋다.

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-01.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-02.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-03.jpg

Bucketed Game Object Updates

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-04.jpg

  • dependency tree의 level을 bucket으로 개념화.
  • bucket 사이에는 종속성이 있지만 bucket 안에서는 없다.

Game Object State Vectors

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-05.jpg

  • 이렇게 패러매터로 시간을 입력받는 vector로 추상화할 수 있다.
  • 접근 좋네.

one frame off bug

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-06.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-07.jpg

  • 이전 프레임 오브젝트 상태를 참조할 수 있기 때문에 이전 bucket에 있는 오브젝트만 참조할 수 있게 제한
    • bucket 순서대로 업데이트되고 ...., b-1, b, b+1, .... 순으로 업데이트

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-08.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-09.jpg

  • 충돌 검출이 골치아픈 문제인데, bucket 사이에 broadphase AABBs를 업데이트해서 해결

Ways to Achieve Parallelism

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-10.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-11.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-12.jpg

/pnotes/assets/2017-02-26-gfg10-multiprocessor-game-loops-lessons-from-uncharted-2-among-thieves-13.jpg

  • broadphase는 lock이 꼭 필요한데, 비동기로 업데이트하고 최대한 query를 늦추는 방향으로 디자인

발표

  • Game Forum Germany 2010
  • 발표자: Jason Gregory / Naughty Dog
  • 발표자료: pdf
  • 발표자료: slideshare

크리에이티브 커먼즈 라이선스
Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com
|