알라딘MGG와이드바


GameTech 2010 : Game Development in the Teraflop Era : Tim Sweeny 개발 이야기

팀 스위니의 강연.
작년 중국GDC 에서 했던 내용과 유사한 듯 하지만, 발표자료를 못 찾겠군요.
간단하게 정리했는데, 제가 모르는 게 많아서 틀린 내용이 많을지 모르니 주의해 주세요.

 * Unreal Engine 3
  * Multithreading (6 threads) 이군요.
  * 적용 게임에 Blade and Soul(NCsoft), Mass Effect(BioWare), Tera(Bluehole Studio) 와 함께 서비스 중단 중(?) 인 M Star(Nurien).
 * Hardware 를 보면, Intel Larrabee 나 NVidia Fermi 의 발전 방향이 점점 수렴하고 있다.
 * 일반 코드 = Scalar code, 병렬 처리 가능한 코드 = Vector code(like GPU shaders or SSE/Altivec)

 * Multithread(64 cores) 에서 프로그래밍하기 쉽게 하려면?
  * "Task Parallelism" (UE3 에서 사용)
   * thread 별로 Gameplay(ai, script), Rendering, Physics, Animation 을 맡기기.
    * core 가 4개일 때는 좋아도, 64 개일 때는 별로...
  * "Shared State Concurrency" (C++/Java 의 일반적인 방식)
   * 공유 데이터에 lock 을 걸어서 데이터를 여러 thread 에서 접근 -> 구현, 디버깅 어렵다.
  * "Message Passing"
   * 여러 thread 에서 객체 업데이트 요청하되, 실제 업데이트는 객체가 스스로 하도록 메시징을 이용
   * 문제점 : 메시지 프로토콜이 많아지고, sync 는 여전히 필요
  * "Software Transactional Memory"
   * 코드가 transaction block 에서 실행된 후에, 메모리의 global 상태와 conflict 가 생기면 롤백 후 다시 실행
   * PEAA 의 Optimistic Offline Lock 나, Lock Free 알고리즘과 비슷하다고 보면 될 듯
   * 문제점 : 객체 업데이트에 부작용이 없어야 함. C++ built-in 지원이 없고, cost 가 30% 증가.
   * 그래도 이게 유일한 해답이라고 생각함(conflict rate 도 1-5% 정도밖에 안 된다는 연구 결과가 있다고)
  * "Pure Functional Programming"
   * 결과를 리턴만 할 뿐 공유 메모리 업데이트나 I/O 를 하지 않는 no side effect 알고리즘(erlang 을 생각하면 편할 듯).
   * 적용 예 : 충돌체크, pixel shading
  * Vectorization
   * 옛날 방식 : SIMD (Intel SSE, Motorola Altivec)
   * 새 방식 : ATI, NVIDIA GeForce 8, Intel Larrabee
    * Mandelbrot set (만델브로트 집합) 코드를 잠시 언급
 * Layer : Vector Subset < Purely functional core < Software Transaction Memory < Sequential Execution
 * UE1 : 16 operations per pixel at 320 * 200, 30Hz
 * UE3  : 16000 operations per pixel at 1920 * 1080, 60Hz
 * REYES Rendering Model (실사 영상물 제작을 위한 렌더링 기술 동향 참고)
  * 현재 : 4백만 poly 로 하이폴리 캐릭터를 만든 뒤, normal map 을 뽑아내고, 게임에서 랜더링 할 때는 2만 poly 로 그린다.
  * 2012 : 천만 poly 로 만들어서 바로 게임에서 렌더링 할 거다.

 * Future Graphics
  * Volumetric Rendering
  * Direct Voxel Rendering
  * Tesselated Volume Rendering
  * Signal-Space Volume Rendering

----------------------------------------------------------------------------------------

* Q/A(를 경영학 전공하신 분이 통역해 주셨는데, 고생은 하셨지만 듣는 입장에서는 오히려 헤갈리더군요. T_T)
 * Q : 심리즈 지원 계획은?
  * A : 내부적으로는 background 에서 돌아가는 메커니즘이 이미 있고, 앞으로 심리스 월드도 지원하려고 한다. I/O 속도가 문제인데, flash memory 가 많이 사용되는 날이 오면 좋겠다.
 * Q : UDK 를 공개한 까닭은?
  * A : 앱스토어에 영향받았다. 학생이나 인디게임 개발자가 적은 비용으로 UDK 를 가지고 게임을 만들 수 있게 해 주고 싶었다.
 * Q : Multithread 에 적합하게 unreal script 를 변경해야 하지 않을까?
  * A : 여러 가지를 survey 하고 있다. Unreal Script 를 함수형 언어와 비슷한 형태로 확 바꿀수도 있지만, 결국에는 mainstream 언어와 너무 동떨어진 형태는 아닐 것이다. 5년 후에 Haskell 같은 함수형 언어가 mainstream 언어가 되어 있어도 좋겠다.

링크
팀 스위니, 언리얼 엔진으로 PC부터 아이폰까지 한번에 게임 개발한다

덧글

댓글 입력 영역


Yes24위대한게임의탄생3

위대한 게임의 탄생 3
예스24 | 애드온2