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

less than 1 minute read

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

Optimizing Large-Scale Updates

nil

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

nil

nil

nil

Bucketed Game Object Updates

nil

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

Game Object State Vectors

nil

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

one frame off bug

nil

nil

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

nil

nil

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

Ways to Achieve Parallelism

nil

nil

nil

nil

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

발표

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