메뉴 건너뛰기

창조도시 기록보관소

※주의: 좀 지루한 하드웨어나 소프트웨어공학에 대한 내용이 있음.


========================================================


오늘 팀 스위니가 미국에 한 대학에서 병렬 프로세서 컴퓨팅에 대한 강좌를 했었는데

거기서 만나뵐 수 있었습니다.



주제가 주제였던 만큼

게임 디자인에 대한 내용은 하나도 없었고, 전부다 하드웨어, 소프트웨어의 병렬 프로세싱에 대한 내용이었습니다.



========================================================

일단 언리얼 엔진은 지금 3개의 코어만을 사용하는 엑박360으로 최적화 되어 있기 때문에 아무리 코어수가 늘어난다고 해도 크게 향상이 없을것이며..

(하나는 게임 플레이, 하나는 랜더링, 하나는 쓰레드 관리하는 마스터 쓰레드)

이 엔진은 코어수가 갈수록 늘어나고 수천개의 코어가 들어갈 때 전혀 힘을 발휘 못한다면서..
언젠가 결국 백지에서 다 다시 짜야 할 것이라고 했습니다.
(그런 의미에서 작년 2008년부터 5년 계획으로 차세대 언리얼 엔진의 R&D를 시작했다고 합니다)
========================================================


그리고 미래에 대한 전망으로

2012~2020년 이내로

CPU와 GPU는 결국 합쳐져 버릴것이고, GPU에 있는 벡터부동소수점들이 결국 CPU로 옮겨지고

언리얼엔진 1의 예를 들면서 모든것이 CPU에서 처리되던 시절로 되돌아 가게 될것이라고 했습니다.

그리고 기존의 DirectX9 이후에 솔직히 DirectX10은 확실히 좋지만 정말로 궁극적인 방향으로 가는것과는 다르고 DirectX만의 제약과 복잡한 파이프라이닝으로 인해

결국은 CPU만을 사용하는 시대가 다시 오게 되면 이런건 전부 다 다시 디자인 되어야 할 것들이라고 했습니다.


(인텔의 라라비나, Nvidia의 최신 칩들이 다 이런 큰 목적을 향한 첫걸음으로 개발되고 있습니다. 즉 2012~2020년 내로 Nvidia에서도 이제 CPU를 팔게 되는 겁니다(GPU라는 말은 없어지고 CPU에 포함되게됨). 실제로 NVidia 내에서도 이미 이제 자기네 프로세서용 C++컴파일러도 제작 중이어서.. 이제 컴퓨터를 살때 Intel이나 AMD가 아닌 Nvidia CPU가 들어있는 시대가 올지도 모릅니다.)



그리고 재미있는 사진을 보여 주셨는데..

이게 바로 미래의 그래픽 카드라면서...

아무 칩도 없고 그냥 마더보드랑 모니터 선을 직접 연결하는 커넥터 같은거 하나를 보여주시더군요 -0-

즉 그래픽 카드라는게 따로 없어진다는 말이심.



========================================================

그리고 멀티 코어로 가게 되면서 지난 수십년간 화두였던 비순차적 명령어 처리는 사라지고

다시 순차처리... 그대신 멀티 코어가 될것이라 했습니다.


========================================================

그리고 결국은 컴파일러가 큰 몫을 하게 되어 각 코어에 전달해야 하는 명령어와 메모리에 대한 부분을 잘 제어, 최적화 해야 한다는 점과 (이런 점에서 Cell을 정말로 활용할만한 컴파일러가 별로 없다는 점에서 아쉬움을 표현했습니다. 현재 Cell은 다른 대칭 구조 코어 시스템에 비해 약 5배는 개발이 어렵다고 말했습니다.)

========================================================

그리고 또 GPU와 CPU사이를 왔다 갔다 했을때의 병목현상을 최소화 하는 방법론..


또한 여러 코어를 가진 CPU의 Memory Coherence문제 (여러 프로세서가 같은 데이터를 서로 사용하려고 쇼할때 싱크가 깨져 버리거나 그런 문제)에 대한 해결법과 앞으로의 진행방향.

그리고 이런 문제를 해결하기 위해 사용되는 Pure Functional 방식이나, 개별 처리 후 충돌부분만 재처리 해주는 방식, 그리고 메모리 트랜젝션 모델 등등 다양한 강좌를 해주었습니다.

(개별 처리 후 충돌 부분만 재처리 해주는 방식에 대해서는 내부적으로도 테스트를 많이 해봤는데 90%의 경우가 개별 처리가 가능하고 충돌부분은 10% 내외라고 하더군요)

========================================================


그래픽에 대한것도 간단히 설명해 주었는데

그중 인상에 남는건 두가지 입니다.

1.


그래픽으로 유명한 헤일로3이나 기어즈를 예로 드시면서

아직도 앨리어싱 (루리웹에서 흔히 말하는 계단)이 너무 심하다고 하셨는데


이를을 없애기 위해 MSAA등등의 편법을 계속해서 써왔고,

이건 너무나 큰 백버퍼를 여러개 만들게 되어 결국 캐쉬 locality를 전혀 활용하지 못하고

낭비가 아주 심한 방법이라 Partial Triangle인가 뭔가 (저는 그래픽쪽을 잘 몰라서 뭔말인지 정확히는 못알아 들음)하는 방식으로 계속 나아갈꺼고 또한

한 픽셀 한 픽셀씩 처리하는 대신 16x16픽셀 정도씩 처리해서 locality를 더 확고히 하는 방법 등등이 미래에 계속해서 연구대상이라고 합니다.


여튼 그러면서 계단을 아주 중요한 해결과제 1번으로 보시더군요.

(앨리어싱은 화면에 있는 모델 전체에 일어나는 현상이지만 보통 외곽선에서 아주 뚜렷하게 나타나기 때문에 루리웹에서 흔히 "계단"이라고 부릅니다)



2. 모델에 대해선.. 텍스쳐 압축이 아닌 기하(Geometry) 압축에 대한것이 앞으로 더욱 활성화 될것이고,

기어워의 경우에는 모델은 2백만 폴리곤인데 실제 게임에선 2만 폴리곤으로 줄였다면서..

앞으로 4~5년 내로 각종 병렬처리를 통해 하이폴인 2백만 폴리곤을 실제로 사용하게 되는게 가능하게 될것 같다고 하시더군요.



========================================================
오후 4시 15분에 시작되었는데, 5시 15분쯤에 끝난 이 강좌는 결국

저랑 3~4명의 사람들이 끝까지 남아서 각종 질문을 하며 6시 10분 정도까지 계속 되었습니다.






========================================================
전 관리코드에 대한 의견을 물었는데,

게임같이 AOTC(Ahead Of Time Compilation)이 가능한 경우엔 JIT(Just In Time. 프로그램을 컴파일 하지 않고, 프로그램을 돌리다가 필요한 부분만 바로바로 컴파일 해 쓰는 방식. 프로그램을 짜자마자 컴파일 없이 바로 돌릴 수 있다는 장점은 있지만, 프로그램의 전체적인것을 파악해서 최적화된 코드를 생성하지는 못한다는 단점이 있음.)는 쓸 필요가 없지만

웹 브라우저의 자바스크립트 등등에서 계속해서 사용될 것이며, 관리코드의 경우 Garbage Collection덕에 앞으로도 계속해서 대새를 탈것이며,

언리얼 엔진에서도 결국 Garbage Collection을 도입하는 덕에 메모리 유출 문제로 고민해야 하는것을 30% 정도 줄일 수 있었고, 결국 개발시간을 단축하게 되었다고 했습니다.




========================================================
또한 수천개의 코어까지 일반화 할 수 있는 수많은 병렬 처리 알고리즘들은

또 그 나름대로의 오버헤드가 존재하는데... 큰 오버헤드가 존재하는 일반화된 알고리즘과...

일단 제품은 주기적으로 내야 하므로... 몇몇 코어를 쓸지 정확하게 정의를 내린 후 그것에 최적화 된 알고리즘이나 모델 등등의 밸런스를 어떻게 맞춰야 하냐는 질문을 드렸더니,

그건 일단 일반화 된것을 만들어 보고 profiling과 아티스트들의 수많은 테스트 후 정말로 이번 시스템에 사용할만 한지 안한지의 의견을 물어 결정하는 방법밖에는 없다고 했습니다.


========================================================


또한 Cuda나 DirectX 11의 테슬레이션에 대한 기술에도 대한 질문도 올라왔었는데

테슬레이션에 대한건 매우 부정적으로 보시더라고요.


========================================================

이외에도 한 3~4개 질문을 더 드렸는데, 하도 이것저것 말한 내용이 많아서 다 기억은 안나네요.







여튼 저도 컴퓨터 아키텍쳐와 소프트웨어 공학을 공부하는 입장에서 많은것을 배울 수 있었습니다.



 


 





참고: 팀 스위니가 누군가요?

존 카멕과 함께 비디오 게임 역사의 2대 프로그래머로 불리는 사람으로

에픽 게임즈라는 회사를 창립했고, 창립 당시의 유일한 프로그램이고,

지금도 계속 수석 프로그래머/전무로 활약하면서 수백개의 게임에 사용된

언리얼 엔진을 개발한 사람입니다.


 


 


 


 


 


 


 


 


 


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


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


 


원문 출처 : 루리웹 http://ruliweb2.nate.com/ruliboard/read.htm?num=44218&table=game_xbox02&main=xbox


 


사실 전 그림만 그릴 뿐이라 이런건 잘 모르겠습니다만... 제법 알고 계시고, 관심있으신 분들도 계신 걸로 알고있어서 올립니다.

번호 제목 글쓴이 날짜 조회 수
9369 액션게임만들기 한글화 [5] 새턴인DAN 2009.05.13 528
9368 VX에서 단차 존재하는 맵 체계 [3] Evangelista 2009.05.13 358
9367 본격 퍼즐겜~을 만글고싶긴한데 [1] 켈군 2009.05.11 231
9366 생각난 아이디어 [7] A. 미스릴 2009.05.10 387
9365 알만툴 쓰는 이유는 제일 다루기 쉽기 때문임 [1] A. 미스릴 2009.05.09 678
9364 게임을 제작하다가. [2] 王코털 2009.05.08 288
9363 드디어 완성 직전... SS최종소개...! [6] Evangelista 2009.05.08 347
9362 대작RPG추천점여 [13] lomolo 2009.05.03 559
9361 아이고 마을 맵배치 드디어 완성했네요 [2] 노을. 2009.05.02 412
9360 액만툴 만져봤는데 [5] 새턴인DAN 2009.05.02 500
9359 액션 게임 만들기 과자 있긴 있군요 [5] 아름다운마을 2009.05.01 480
9358 사람욕심은 끝없다는 것을 느낄 때, [4] 王코털 2009.05.01 274
9357 제가 만든 맵칩으로 맵배치 해봤습니다. [4] 노을. 2009.04.27 471
9356 극악의 자존심. [1] 王코털 2009.04.26 353
9355 단 하나의 맵으로만 만드는 알만툴 게임 [11] 책벌레공상가 2009.04.26 563
9354 블로그 열었어여 [1] A. 미스릴 2009.04.25 334
» [인터뷰] 언리얼 개발자 팀 스위니 [3] 새턴인DAN 2009.04.23 265
9352 마그나카르타2 8월 3일에 출시하는군요 [3] Roam 2009.04.22 326
9351 2009 차세대 게임 개발 공모전 [3] 새턴인DAN 2009.04.21 342
9350 ota [2] A. 미스릴 2009.04.20 361