알라딘MGG와이드바


Game Developer Magazine 201203 포스트모템 - Halo, combat evolved anniversary 포스트모템

올해 KGC 에 강연나가게 되어 발표자료를 보강할 겸 이전에 읽었던 Game Developer Magazine 포스트모템 자료들을 하나씩 정리해서 올리려고 합니다. 전체 내용을 다 번역할 시간도 없고, 저작권 문제도 어떻게 될 지 몰라서 간단하게 요약한 버전만 올립니다. 이상한 부분 있으면 지적해 주세요. 감사합니다.

2012.03(March)
[http]Halo, combat evolved anniversary(이하 HALO:CEA)
10년 전에 개발했던 HALO:CE 의 리메이크를 MS/343 Industries 에서 Saber Interactive Inc. 쪽에 요청함. 실시간으로 화면을 10년전 원작으로 언제든지 바꿀 수 있게 만들어 예전 게임의 향수와 함께 HALO:CEA 에서 얼마나 아트가 향상되었는지를 느낄 수 있게 함.

Data Points
퍼블리셔 : MS
개발사 : [http]343 Industries / [http]Saber Interactive Inc. / [http]Certain Affinity Inc.
플랫폼 : Xbox 360

잘 된 점
1. overall engine solution
10주년에 맞춰서 릴리스 해야 했기 때문에 개발 기간이 1년 밖에 없었다. Saber 엔진으로 새로 전부 구현하자니 시간이 부족하고, 이전 PC 판을 만들던 엔진으로 개발하자니 너무 구려보일 거 같았다. 결국 게임 플레이는 기존 엔진으로 돌리고, 렌더링과 Asset 생산만 Saber 엔진을 쓰기로 했다. 두 엔진은 마치 Havok engine 을 쓰는 것처럼 기존 엔진에 게임용 엔티티를 만들고, "필수" 정보(카메라 위치, 애니메이션 데이터, 그 외 특수 이펙트 시작/중지 같은 여러 게임 이벤트들)를 proxy 를 통해서 Saber 엔진으로 전달하는 방식으로 연결했다.

2. online co-op solution
Multiplay 같은 경우 Saber 에서는 dead-reakoning 을 썼지만, 원작 HALO:CE 는 Split-screen 방식으로 co-op 을 지원했기 때문에 결정적(deterministic)으로 sync 를 맞추는 방식이었다. 즉, 이론상으로는 두 콘솔이 같은 게임상태에서 같은 입력이 같은 타이밍에 들어온다면 항상 같은 결과를 낼 수 있다. 개발 기간이 짧기도 해서 343 의 테크 리드인 Greg Hermann 의 의견에 따라 원작에서처럼 두 콘솔의 입력을 동일하게 줘서 동기화를 맞추기로 했다. 어려운 문제였지만 엔진 리드 Roman Lebedev 이 두 콘솔의 게임 상태를 프레임별로 저장해 비트 단위로 비교할 수 있는 툴을 만들어 양쪽 콘솔의 게임 상태가 달라질 때마다 문제의 원인을 찾는 방식으로 동기화 문제를 해결했다.

3. visual targeting/art direction
MS 쪽 AD 인 Ben Cammarano 이 아트 디렉션을 명확하게 잡아줬다. 배경 제작할 때에는 원작 HALO:CE 의 주요 지점에서 스크린샷을 찍은 뒤 그 이미지에 조명이나 텍스처, 날씨 같은 효과를 덧그려서 배경을 어떤 식으로 개선해야 할 지를 보여줬다. 다른 게임 같은 경우 컨셉아트는 정말 컨셉 전달용으로만 사용되고, 실제 레벨은 게임을 디자인하는 동안 변경되기 일수였지만, 이번 게임은 리메이크작이다 보니 레벨이 변경될 일이 없어서 컨셉아트를 통해서 어떻게 아트를 향상시킬 수 있을지를 전달하는 데 집중할 수 있었다. 즉, 먼저 저폴리곤으로 지형을 만든 뒤 스크린샷을 찍어 그 위에 아티스트가 덧칠을 해 고폴리곤 레벨을 제작할 때 배경, 조명 아티스트가 어떻게 만들어야 할지를 전달할 수 있었다.

4. successful vertical slice
기획쪽은 큰 변화가 없었지만 엔진 이어붙이기, 온라인 협동모드, 아트 등 향상되어야 하는 부분을 vertical slice 에서 중점적으로 확인했다. 리메이트작이다 보니 visual 향상에 특히 신경썼다. 초반에 프로토타이핑용으로 'Truth and Reconcilation' 레벨을 만들 때는 하늘을 향상시키기 위해서 행성과 Halo ring 의 위치와 색을 변경하기도 했다. 하지만 개발팀 내부 리뷰 결과 원래 원작에서의 상태를 유지시키는 게 좋겠다고 해서 전부 롤백했다. 이런 식으로 아트를 개선할 수 있었음에도 그대로 둬야 했던 것들이 꽤 있었다. 사실 원작 아트로 플레이할 수 있는 toggle mode 때문에라도 asset 위치는 동일하게 유지해야 했다.

5. listening to the early community feedback
E3, Comic-Con, Gamescom 에서 공개한 동영상을 통해서 여러 피드백을 받을 수 있었다. 임시로 추가한 아트 asset 이 남아있는 걸 유저들이 찾아주기도 했다. 다른 예로 Forerunner 건축물의 바닥 텍스처를 재작업해야 해야할지 말지 고민이었는데 유저 피드백 덕분에 이게 중요하다는 것을 알 수 있었다.

아쉬웠던 점

1. collision issues
충돌 문제가 가장 큰 문제였다. 초반 vertical slice 단계에서 이미 충돌문제가 있다는 걸 알고 있었지만 쉽게 해결할 수 있을 거라 생각해서 미리 챙기지 않았던 것이 문제였다. 원인은 원작을 그대로 두기로 한 결정 때문이었다.
원작 코드를 그대로 쓰기 때문에 모든 게임 객체(AI, 슈팅, 바닥, 탈것, PC 충돌)가 기존 HALO:CE 의 로우폴리 레벨에서 돌아가고 있었다. 그러다보니 새로 만든 레벨과 기존 로우폴리 레벨의 형태가 많이 다를 경우 파묻히는 현상이 발생했다. 이를 위해 각각 다른 방법을 동원해야 했다.
먼저 떨어진 무기가 땅에 파묻히는 현상은 기존 지형이 새로운 지형보다 높이가 낮을 때 발생했다. 이럴 경우에는 이전 지형과 최신 지형 중에서 높은 걸 기준으로 삼기로 했다. 반대로 기존 지형이 새로운 지형메시보다 높을 경우 무기가 공중에 떠 있을 수 있는데 그 높이가 심하지 않으면 그대로 두고 아닐 경우 신규 지형을 수정하기로 했다. 아티스트 작업을 돕기 위해 기존 지형과 새로운 지형과의 높이 차이를 눈으로 비교할 수 있는 옵션을 추가했다.
또 플레이어가 벽에 파묻히거나 안 보이는 벽에 가로막히는 경우가 있었다. 원작 지형을 그대로 쓰자니 절벽같은 경우 너무 로우폴리라 그대로 쓸 수가 없어서 Saber 에서 돌아가는 최신 지형의 충돌값을 쓰기로 했다. 다만, 유저들이 찾아낸 비밀 경로(원래는 못가는 곳을 지형버그를 이용해 가는 경로)가 있는 장소는 그대로 두기로 했다. 로우폴리 지형 때문에 절벽이나 돌이 깎아지른 듯이 어색하게 보이는 문제는 예를 들어 Silent Cartographer 의 거대한 바위 같은 경우 Forerunner 들이 만든 듯한 문양을 바위 위에 추가해서 인위적인 로우폴리 모델이 어색해 보이지 않게 했다.

2. secret area
처음에는 '가기 어려운 숨겨진 장소'를 못 가게 막으면 될 거라고 생각했으나 343 팀이 이게 핵심 콘텐츠라고 하는 바람에 골치아파졌다. 보통 못 가는 비밀 장소는 배경인 경우가 많아 아티스트들은 평소 배경제작하듯 장소를 모델링했다. 예를 들어 Silent Cartographer 의 언덕 꼭대기 같은 경우 멀리서 보면 근사하지만 플레이어가 근처로 가서 보면 큰 덩어리로 보일 뿐이고, 캐릭터는 땅에 파묻히고 시야 제한 처리가 안 되어 있어서 성능문제도 발생했다. 결국 이런 비밀 장소는 충돌과 성능문제만 해결하고 아트적으로는 크게 공들이지 않았다.

3. streaming issues
새로 개발한 texture streaming 기술을 활용했는데 이 기법을 큰 게임에 적용해 보는 것은 처음이었다. texture streaming 같은 기술은 메모리 최적화, 사운드 통합, 엔진 안정화 등의 작업이 끝나야 제대로 테스트해 볼 수 있다보니 프로젝트 막바지에서야 여러 문제를 발견할 수 있었다. 특히 특정 레벨이나 시나마틱 연출을 보여주거나 클래식 모드 <-> 최신 모드로 변경하거나 카메라를 휙휙 돌릴 때 이런 문제가 생겼다. DVD 에서 텍스처를 전부 로딩하는데 평균 5~7초, 최대 25초 정도 걸렸는데 이 동안에는 낮은 해상도의 텍스처를 보여주거나 게임을 잠시 멈춰야 했다. 특별한 해결책이 없었기 때문에 문제가 있을 때마다 적당히 잘 밸런싱하는 수 밖에 없었고 엄청난 크런치를 유발했다.

4. lighting solution
Ben 은 진작부터 조명, 특히 outdoor 조명을 향상시켜야 한다고 했지만, 초반에는 엔진 봉합 문제 때문에, 나중에는 성능 문제 등의 이유로 신경 쓸 시간이 없었다. 하지만 E3 때 공개할 영상을 만들 시기가 되자 Saber 쪽 렌더링 리더가 조명 문제를 해결해야 한다고 강하게 나왔다. Halo 의 레벨은 넓고 indoor, outdoor 가 섞여 있다보니 그 당시 기술로는 조명 문제를 해결할 수 없었기 때문이었다.
여러 local light 를 씬에 배치하는 방식으로는 outdoor 의 Global Illumination 을 해결할 수 없어서 6 개의 방향성 조명을 각각 다른 각도로 설치해 환경광을 시뮬레이션하는 방식을 채택했다. 이 방법은 효과가 좋았으나 너무 늦게 도입되었기 때문에 이미 다 만들어 컨펌까지 받은 기존 레벨의 조명을 전부 새로 고쳐야 하는 문제가 있었다.

5. cinematics
cinematics 를 미리 렌더링한 동영상 대신 실시간 게임 영상을 보여주기로 했다. Saber 에는 특수 이벤트, mocap 데이터를 쉽게 다룰 수 있는 기술이 있었기 때문에 큰 문제가 없을 줄 알았다. 우선 mocap 이 문제였다. 원작 음성데이터를 그대로 쓰기로 했기 때문에 mocap 애니메이션과 facial 연출을 정확하게 원작의 음성과 맞춰야 했다. mocap 스튜디오에서 배우들이 연기를 하는 동안에 원작 음성을 틀어놓아 봤지만 정확하게 싱크 맞추기가 어려워 수작업을 동원해야 했다. 또한 연출이 너무 과한 부분도 있었다. 예를 들어 게임에 등장하는 AI 인 Cortana 의 애니메이션을 여성 배우의 mocap 데이터로 바꿔놓으니 "기계의 인공적인 감정" 이 아닌 너무 자연스러운 애니메이션이 나와서 어색했다. 결국 애니메이터가 mocap 데이터를 기존 key-frame 애니메이션과 조합해야 했다. 좀더 preproduction 단계에서 신경 썼더라면 좋았을 것이다.

정리
초반에 엔진 기술과 아트에 대해서 분명하게 정하고 간 덕분에 리스크를 줄일 수 있어서 짧은 기간에도 게임을 잘 만들 수 있었다. 그리고 전체적인 아트, UI, 그림자맵 재작업 뿐만 아니라 Classic/Remastered 변환, 온라인 협동 모드 등 추가된 부분 덕분에 게임 경험이 훨씬 좋아졌다. 여러 번 "Best of E3" 에 노미네이션되었는데 리메이크 작으로서는 흔치 않은 일이다.

덧글

댓글 입력 영역


Yes24위대한게임의탄생3

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