아이온 기술적 소감

… 뭐 일단 그래픽 기술적인 측면에서도 기대가 많았던 작품입니다.

처음으로 크라이 엔진을 사용했다던가..
좋은 커스터마이징…
그 외에도 기대되는 각종 기술들…

뭐 많이 해 본건 아닙니다만 일단 아이온의 첫인상으로 알아낸것 + 체크 포인트는 다음과 같습니다.
아래 내용은 아무래도 슬쩍 본 것이기 때문에 완전히 정확하다라고 말하는 것은 무리가 있습니다.
혹시 틀린 부분이 있으면 공유 부탁드립니다.

  1. 초기 공개 그래픽의 중요성.
    실제 접속해 보았을 때, 아이온의 캐릭터의 퀄리티에 약간 실망하게 되었습니다.
    실망했다는 것은 그래픽이 나쁘다는 것이 아니라, 예상했던 만큼이 아니었다라는 것이지요.

얼굴에는 미들 폴리곤 이상 쓰는 것이 요즘 추세라, 예상할 수 있는 정도의 폴리곤 밀도를 보였습니다.
하지만 몸의 폴리곤 밀도는 현재의  AT보다 살짝 높은 정도더군요.

제작 일정은 캐릭터 하나당 일반적으로 2주~3주, (노말맵 작업 포함. 참고로 프리우스는 이보다 더 빠르다고 합니다.)
모델링 후 스컬핑 작업은 하루나 이틀에 끝내는게 일반적이고, 그 후 그림자맵 ( 아 이름 잊었다 OTL ) 를 뽑아서
그 위에 맵핑을 하는 과정을 거친다고 합니다.

폴리곤은 NPC의 경우 4천~5천 (생각보다 적다). 그래서 그런지 캐릭터의 얼굴 부위를 제외하고는 생각보다 폴리곤을 적게 사용한 것을 볼 수 있었습니다.

제가 실망했다는 것은, 초기에 공개한 이미지와의 괴리 때문이었지요.
초기에 공개한 이미지는 사실 하이 폴리곤급 이미지를 공개했던지라, 저 이미지만 보고 유저들은 소리높여 그래픽을 찬양하였고,
그 후 모든 매체의 기사에서도 이 이미지가 사용되어서, 이 게임의 그래픽은 대단하다 라는 첫인상을 박히게 하기 충분하였습니다.
그래서 사실 게임 내의 그래픽이 그 이미지보다 살짝 낮아도, 이러한 ‘Halo Effect’ 때문에 여전히 이 게임의 그래픽은 좋다 라고 생각하게 된다는 것입니다.

그 반대로 AT를 생각해보면, 초반에 완성되지 않았던 이미지가 공개되어서
현재 그래픽이 굉장히 좋아졌음에도 불구하고 여전히 시대에 뒤떨어지는 그래픽이라는 평을 받게 된다는 거지요.
초반 공개용 그래픽이 얼마나 중요한지를 (그동안도 늘 생각하고 있었지만) 다시한번 뼈저리게 느꼈습니다.

  1. Shader, 물리 효과들

기본적으로 지글본과 같은 기본적인 물리 효과는 들어가 있습니다. 이것은 구현도 그렇게 어려운 편이 아닌 물리 효과이므로,
적용하는 것은 어렵지 않습니다만 ‘실제로 적용했다’ 라는데 의미가 있을 것입니다. 이미 지글본은 사용하고 있는 곳이 많으니까요. (바운딩 박스를 통한 컬루젼을 사용하고 있을지도 모릅니다만, 그렇게는 안했거나 최소화 시켰을 겁니다.)
일단 크라이1에 포함된 물리 엔진은 상용 물리 엔진보다 기능이 한참 떨어지므로 그정도만 적용시킨 것으로 보입니다. 사실상 크게 필요하지도 않구요.

또한, 기울어진 면에 섰을 때에는 한쪽 다리를 구부리는 IK 기능도 들어가 있습니다.
우리 게임도 다음 버전엔 넣어 달라고 제가 조르는 기능이지요 ㅎ

쉐이더는 역시나 너무나도 유명해서 더 말할 필요가 없는 역광 쉐이더.
이것은 버텍스나 픽셀의 노말이 카메라와 직각을 이루는 것을 검출하여, 거기에 다시 빛 각도가 카메라 각도가 얼마나 180도에 가까우냐에 따라 계산되는 쉐이더 방식을 사용한 것이지요. 그래픽 팀에서는 각 재질당 이 역광 쉐이더의 강도를 조절하는 옵션을 적용했다고 합니다. 그 팀에서 불리는 용어로는 ‘일루미네이션’.  정확한 표현이라고는 하기 좀 어려울듯.
공식 자체는 매우 간단한 편이라서, 우리 게임에도 (사실은) 표현되어 있습니다. 사용하지만 않을 뿐.

물은 워3 에서도 사용했던 해변 철썩 방식보다 조금 더 발전된 방법입니다만, 개념이나 구조는 상당히 비슷합니다.
물 plan 에서, 아주 약간 위에 해변 물결 plan을 3개쯤 추가해서 scale / alpha 애니메이션을 시키는 것이지요.
이 방식은 물과 지형이 만나는 지점을 검출하여 plan을 생성하는 것이 핵심기술일 것입니다.
그리고 물에는 역시 물에 들어가야 한다고 되어 있는 교과서적인 기술이 모두 들어가 있다는 것이 인상적입니다.
‘뭔가 새로운 기술’ 이 아닌 ‘이미 알고 있는 기술’ 을 전부다 집어 넣었달까요.
그 기술들은 다음가 같습니다. 
    - 플레넬 효과 :반사에 주로 쓰이는데, 시선과 90도가 가까울수록 반사도를 줄이고, 시선과 평행할수록 반사도를 늘여 물을 그럴듯 하게 하는 효과입니다. 
    - 물 속 fog : 물 속에 카메라가 들어가면 순간적으로 fog 수치를 대단히 높여버리는데, 그 방법을 사용했네요. 뭐 당연. 
    - 양면 굴절 : 보통 물 밖에서 안을 볼 때는 사용하지만, 굳이 안에서 밖을 볼 때까지는… 이라고 생각할 수도 있습니다만, 여기서는 그것까지 구현했습니다. 명품의 값어치를 지키기 위한 것이겠지요. 

가장 인상깊은 쉐이더는 일단 이 두 개가 보이는군요. 

  1. 커스터마이징

커스터마이징은 자유롭다고는 하나 완전히 자유스러운 것은 아닙니다. 적용하는 정도가 한계가 있고, 스포어처럼 신기술을 사용한 것도 아닙니다. 일단 지금 이것만 봐서는 bone을 이용한 커스터마이징인지 Morph를 이용한 커스터마이징인지는 좀 더 알아봐야겠지만 둘 중에 하나로 보입니다. 계속 알아보는 중입니다.

  1. 최적화

최적화는 이펙트 최적화가 눈에 띕니다. 일정 거리 이상의 캐릭터는 이펙트가 보이지 않는군요.
또한 우리도 사용하고 있는 (주인공에 한해서지만) Bone LOD, 쉐이더LOD, 지오메트리 LOD도 보입니다.
보통 FPS로 제작된 엔진을 MMO로 바꾸면서 이런 기능을 제어하기 힘들었을텐데, 뜻밖에 프레임도 안정적인 편이고
퀄리티도 좋습니다. 기술적으로 보이는 것은 이미 알고 있거나 유명한 것들을 사용했는데, 속 안이 어떻게 되어 있는지는 모르겠습니다. 괜히 인터뷰때 오베 직전까지 렉을 잡는데 주력했다고 한게 아니었습니다.
세부 테스트는 해보지 않았습니다만 저사양에서도 아틀란티카와 거의 비슷한 느낌으로 돌아갑니다.

  1. 지형

지형의 타일링에 관심이 생겼습니다. 일단 타일링은 기존처럼 14개 연결타일 방식의 타일이 아니고, 마스크맵 실시간 생성을 맵에디터에서 하는 식으로, 세부 퀄리티보다는 큼지막한 퀄리티에 중점을 두는 방식으로 제작되었습니다.
특히 각 타일별 해상도가 다르게 적용된 것은 재미있는 아이디어입니다. 이것을 이용하여 산의 텍스쳐는 크게, 길의 텍스쳐는 작게 타일링 하였습니다. 마스킹을 통한 텍스쳐 스플레팅 기법을 이용한 것이고, 이것은 크라이엔진의 기본적인 맵 에디터의 기능과 동일한 것입니다.  지형 표현은 덕분에 매우 독특한 이미지가 나오게 되었습니다. 우리도 저 방식의 구현을 고려해 봐야 겠군요.

  1. 라이트 / 그림자
    일단 스페큘러 생성을 봤을 때
    엠비언트 큐브는 사용하지 않았지 않았을까 라고 예상합니다. 만약 사용했다면 너무 안보이는군요.
    캐릭터 라이팅이나 쉐이딩 기술은 아무래도 마비노기 영웅전쪽이 훨씬 진보한 기술입니다.

지형에 사용한 라이트는 스테틱 라이트가 대부분입니다. 아마도 리니지2처럼 전투 마법 이펙트에만 다이나믹 라이트를 사용할 것으로 보이는군요.
그림자는 전형적인 Bake 그림자 맵입니다. 들리는 소문에 의하면 이 bake 맵을 뽑아 내기 위해 일주일간 렌더링을 했었어야 한다는군요. 한 월드 자체가 너무 넓은지라…. 그렇지만 아쉽게도 그만큼의 시간을 들일만한 퀄리티는 아닌 듯 하고, 덕분에 매우 비효율적이라는 소식을 들었습니다. 이것을 TOOL에서 지원해서, 보다 간단한 로직으로 뽑아내면 더 효율적이었지 않을까 싶습니다만 아마도 그래픽 디자이너쪽에서는 MAX의 baking을 더 신용했었지 않을까 생각합니다.

  1. 적용하지 않은 것/기타

일단 당연하게도 크라이1 엔진이기 때문에 크라이 2 엔진에 있던 실시간 생성 구름은 사용하지 않았네요. 소프트 파티클도 사용하지 않았구요. 오클루젼도 사용하지 않았고 다이나믹 라이트도 최소화했습니다. 또한 물리 엔진으로 반응하는 나무 기능도 죽여 놓았네요.
MMORPG이므로 어쩔 수 없었다고 생각합니다만, 앞으로 나올 게임은 셀프 쉐도우 기능까지도 추가해서 기능을 더욱 확장하겠지요. 아직 사용하지 않은 기능들도 무궁무진한지라…

어쨌거나 일단 크라이 엔진은 렌더링 부분과 네트웍 부분이 통합되어 MMORPG로 만들때 굉장히 힘들다고 합니다.
아래의 경험담이 그런 얘기를 뒷받침하고 있지요.
어쨌거나 이걸 거의 뜯어서 사용하다시피한 NC 대단합니다. 역시 ‘그’ 프로그래머 분을 부른 이유가 있었군요.

  • 크라이 엔진 2의 초기데모로서 ATi 테크데모로 공개된 The Project라는 머시니마 데모가 있다. 인터넷에서 다운로드 받아서 돌려볼 수 있다. 초기버전이라서 완성된 크라이 엔진 2와는 차이가 많지만 기본적인 엔진의 표현능력은 살펴볼 수 있다. 차세대 엔진인만큼 초기버전도 사양이 매우 높다. 이 데모는 오로지 ATi용 카드에서만 돌아가며 셰이더 모델 2를 요구한다. 크라이 엔진 2의 기본적인 렌더링 성능을 볼 수 있는 데모이다. 이 데모는 파 크라이의 오프닝 동영상을 실시간으로 돌리는 씬이다. — 나그네

  • 엔진 도입을 고려해서 툴 및 엔진 런타임과 로직작성을 현재 최신 버전 (2007년 6월)으로 돌려본 결과론 아직 미완성된 엔진이란 느낌이 강합니다. 실제로 돌아가는 화면을 다이렉트로 보면 그동안 게이머 커뮤니티에 공개된 영상들처럼 실사의 느낌은 거의없습니다. 그것보다 문제는 퍼포먼스가 심각하게 안나오는데에 있습니다. 아직 렌더러부분의 최적화 작업을 많이 거쳐야될 것으로 보입니다. 툴은 언리얼 엔진 3의 UnrealEd와 거의 대등한 수준을 자랑하지만 UnrealEd만큼 디자이너에게 친화적인 스타일 아니고 기능면에서도 좀 부족한 감은 있는 듯합니다. 툴도 아직 버그 투성이에 세부적인 기능들도 제대로 구현되지 않아 있습니다.그리고 로직작성은 대략 난감합니다. 거의 엔진을 수정하기가 힘든 구조입니다. 가격대도 언리얼 엔진 3와 비슷하게 부르므로 이 엔진보다는 언리얼 엔진 3를 라이센스하는 방향이 훨씬 나을거라고 생각합니다. 앞으로의 행보를 어떻게 할지에 따라서 이 엔진의 운명이 결정될거라고 생각됩니다. — 2007년 6월 22일, 이 엔진을 도입하려 했었던 한 게임 회사의 프로그램팀장

  • 크라이 엔진 시리즈의 가장 큰 문제점은 엔진의 각각을 이루는 코드들이 분리하거나 수정하는 작업이 힘든 커플링이 심하다는 점이다. 기본적으로 게임 엔진으로서의 설계를 가진 코드로 설계된게 아닌 테크 데모로부터 시작된 코드에 코드를 얹고 또 얹어가면서 툴을 덧붙이며 게임 코드로 변형되어간 코드의 형태며 거기에 더해 LUA가 엔진에 심하게 얽혀져있고 엔진과 게임의 분리가 거의 이루어지지 않아 개발중 게임에 엔진 인터페이스가 노출되거나 게임에 들어가야 할 코드가 엔진에 얽혀 들어가는 일이 잦으며 엔진의 각 부분 역시 렌더링, 물리, AI, 네트웍, 심지어 사운드까지 모든 코드가 얽혀있어 각 부분을 적출하고 새로운 코드를 쓰거나 기존의 것을 수정하는데에는 많은 애로사항이 존재한다. 라이센스 되기 시작한 초기부터 최종 버전업이 있기까지 많은 변화가 있었지만 계속 이런식으로만 코드의 덩치가 불었으며 아예 무에서부터 완전히 새로운 엔진을 작성하지 않는 이상엔 이 엔진의 새로운 버전 업데이트도 계속 이런식으로 코드의 덩치만 불어갈 수 밖에 없는 상황으로 치닫았다. 크라이 엔진 1의 후속 버전인 크라이시스 엔진 (크라이 엔진 2)도 이런 상황을 벗어나지 못하고 더 복잡해지고 그 상태에서 더 복잡해지고 코드의 양이 더 불어나서 오히려 이전 버전보다 더 다루기 힘든 문제에 직면했다. 이 엔진 시리즈를 원하는대로 수정하고 변형해서 다루기 위해선 많은 시간과 노력이 필요할 것이다. — 크라이 엔진 사용 경험있는 프로그래머

  • 최근에 지인중에 크라이 엔진 2를 도입하려고 알아봤던 분이 계시는데 도입을 위해서 가장 최신 버전의 엔진 (2007년 9월 버전)을 받아서 평가를 해 봤는데 생각보다 낮은 퀄리티의 그래픽과 그에 비례해서도 엄청나게 좋지않은 퍼포먼스, 조잡하고 너저분한 툴, 그리고 수정하기에 매우 안좋은 코드의 퀄리티 (전반적인 코드 설계가 코드의 확장성을 거의 고려하지 못한 아키텍처, 지저분한 함수 정리, 배열의 조악함, 주석의 조악함, 각 코드들의 커플링현상 심함 등등) 등의 문제로 엔진 도입을 포기한 사례가 있습니다. — 2007년 9월 22일, 한 프로그래머

Hugo로 만듦
JimmyStack 테마 사용 중