Nebula2 - 캐릭터 애니메이션 워크 플로우

이전 포스팅에서 엔진 및 미들웨어 별 캐릭터 워크 플로우에 대해서 이야기한 적이 있습니다.

Nebula2에서는 하나의 애니메이션 파일에 캐릭터의 모든 애니메이션들이 포함되어 있어야 하므로 개발시 새로운 애니메이션 등이 추가될 때 번거로운 점이 있다고 언급했는데 최근에 소스 코드를 보다고 이미 그러한 부분에 대한 코드가 있다는 것을 발견했습니다. 코드는 업데이트 되었지만 부실한(?) 문서와 관련 샘플이 없는 관계로 눈치채지 못했던 것이지요.

Nebula2에서는 nSkinAnimator 대신 nCharacter3Animator 를 이용하면 애니메이션 파일들을 순차적으로 로딩하면서 병합하여 사용할 수 있습니다. 즉, 작업은 개별 애니메이션 파일이 수정되거나 추가될 때마다 지정된 폴더 내로 애니메이션 파일만 추가하면 되며, 엔진에서는 실제로 nCharacter3Animator의 애니메이션을 읽어 들일 때, 해당 폴더의 모든 애니메이션들을 차례로 읽어 들이면서 병합해서 새로운 애니메이션 데이터를 생성합니다. 나머지는 기존의 nSkinAnimator 와 동일하며 차이가 없습니다.

실제로 nCharacter3SkinAnimator::LoadResources() 함수를 살펴 보면 nCombinedAnimation 클래스로 메모리의 애니메이션 파일 객체들을 병합하는 코드를 볼 수 있습니다.

그런데 애니메이션 데이터의 용량이 큰 경우에는 아무래도 이런 방법으로는 처리가 힘듭니다. 이 경우에는 좀 더 지능적인 스트리밍이 필요한데, Nebula2에서의 리소스 관리는 스트리밍 부분은 지원이 약하죠. (Nebula3에서는 모든 리소스에 대한 스트리밍 지원이 기본적으로 지원됩니다)

 nCharacter2SkinAnimator 의 경우 현재 3dsmax 플러그인에서는 지원하고 있지 않습니다만 회사 일도 있고 하니 조만간 업데이트가 이루어지리라 생각합니다. ^^


by kimsama | 2009/03/15 15:11 | Nebula Device | 트랙백 | 덧글(0)

Best Fit


John Ratcliff's Best Fit code

John Ratcliff씨가 자신의 블로그에 충돌 볼륨 계산에 유용하게 사용할 수 있는 볼륨 계산 코드를 올려 놓았습니다.

Best Fit이라는 제목에 걸맞는 멋진 사진과 함께 말입니다. ^^



월드 에디터 등에서 게임 asset들을 임포팅할 때 그래픽 데이터를 임포팅한 다후에 충돌 볼륨을 위한 다른 설정이 필요한 경우가 많은데 Best Fit 루틴 등으로 기본적인 충돌 볼륨을 자동으로 계산해서 바로 시뮬레이션할 수 있도록 하면 편리하겠죠.

망갈로도 두 asset들의 설정이 따로 분리가 되어 있는데 사실 프로그래머 입장에서는 꽤나 번거로운 일입니다. 게임의 polishing  단계에서는 최적화된 충돌 볼륨을 따로 사용해야 하겠지만 일반적인 게임 플레이 코드를 작성하는데에는 러프한 충돌 볼륨으로도 충분합니다. 그런데도 이런 장치가 없으면 충돌 볼륨의 설정 등에 시간을 뺏기게 되는데 의외로 많은 그 시간이 만만치 않습니다. 게다가 이런류의 작업은 짜증을 동반한 스트레스도 함께 유발하죠.

ps. 이 분은 포스팅시 반드시 이미지를 하나씩 첨부하는데요, 간간히 포스팅의 이미지를 보면 굉장한 센스쟁이십니다. ㅋ

by kimsama | 2009/03/15 14:20 | Development | 트랙백 | 덧글(0)

Unity vs Shiva


일전에 iPhone 개발 툴과 관련한 포스팅에서 Unity3D를 치켜 세운 적이 있었는데, 최근에 unity 포럼에도 Shiva와 Unity의 비교에 대한 글이 올라왔습니다. 마지막에 Unity의 CTO인 Joachim Ante씨의 답변은 개인적인 견해와도 비슷한데다 참고할만한 중요한 내용도 보입니다.


Going beyond the surface I think there are some fairly obvious and big glaring issues with shiva.

1. No previewing like the iPhone Remote, combined with a complicated publishing process that involves moving files manually and doing several manual steps to upload to the iPhone doesn't seem like a workflow usable in a real production environment

2. Performance wise using an interpreted language like lua is quite frankly suicide on a device like the iPhone. Unity's AOT compiled scripting is around 10-20x faster than an interpreted language like LUA.

3. I doubt that they have the resources to optimize the graphics rendering as much as we did with Unity iPhone. We have 2 engineers working fulltime on optimizing Unity iPhone. Down to writing ASM code for the ARM vector unit to accelerate graphics rendering. Looking at how they are staffed they have zero people who are purely dedicated to optimizing for the iPhone.

4. I think it's easily reflected in that no one has published iPhone games with complex game code using shiva. Or really any kind of high quality content.

There is more than that, but those seem to be the big ticket show stopper items.
_________________
Joachim Ante

이전 포스팅에서 unity에 가장 후한 점수를 준 것은 위의 답변 중에서 1번 항목이 주된 이유였습니다. 저도 unity의 샘플 몇 개를 빌드해서 제 아이팟에 넣어 봤는데 아주 쉽더군요. 제가 Xcode에서 "Hello, Wolrd" 만들어서 넣을 때와 거의 비슷한 수준입니다.

2번의 경우 unity는 커스터마이징한 Mono를 사용하는 것으로 보이는데요, 이 쪽이 루아같은 스크립트 언어와 비교하면 확실히 빠르다는 것은 알고 있었지만 어느 정도 차이가 나는지, 또 그 차이가 핸드헬드 기기에서는 어떤 영향을 미치는지에 대해서는 잘 몰랐습니다만 Ante씨의 이야기는 자살할만한 수준이라는 거군요. ^^
iphone에서의 루아 사용에 대한 이야기는 oolong 엔진 메일링 리스트에도 올라 온 내용인데요, 생각나는 내용은 루아 같은 스크립트 언어를 사용하되 패킹 등을 통해서 내부에 감추어라는 이야기가 나와서 은연 중에 큰 무리 없이 사용할 수 있다로 인식된 것 같습니다만 위의 내용이 사실이라면 고려 대상이 아니겠군요.

3,4번도 사실 상업용 개발에는 매우 중요한 내용입니다. 3번의 경우에는 서포트 측면에서, 4번은 레퍼런스 게임의 측면에서 미들웨어나 툴을 평가할 때 중요한 항목들이죠. 그런데 3번은 어떻게 알았을까요? ^^

by kimsama | 2009/03/15 08:49 | iPhone | 트랙백 | 덧글(2)

Reflection: from Script side to Tool's UI

이번에는 리플렉션과 관련해서 스크립트 코드를 리플렉션을 이용하여 툴의 UI에 반영시키는 예에 관한 이야기입니다.

http://unity3d.com/support/documentation/Manual/Scripting.html


// 스크립트의 변수들은 자동으로 UI에 반영된다.
var speed = 5.0;

function Update () {
transform.Rotate(0, speed*Time.deltaTime, 0);
}

스크립트에서 변수를 발견하면 아래와 같이 툴의 UI에도 자동으로 반영이 됩니다.



위의 스크립트는 JavaScript이지만 단순히 자바스크립트를 엔진과 바인딩해서는 이러한 기능을 얻을 수는 없습니다. JavaScript의 인터프리터쪽을 손을 봤다는 이야기겠지요.

스크립트와 관련한 다른 이야기를 하자면 스크립트쪽은 간단하게 사용해 보니 컴파일 오류의 경우 해당 오류 라인 번호가 어느 객체인지를 매칭시켜서 보여 주므로 오류난 객체를 찾는 것은 어렵지 않습니다만 디버깅 기능이 없는 것은 좀 아쉽군요. (사실 이런 기능이 있는 엔진도 드물긴 합니다. 언리얼 스크립트가 외부 스크립트 IDE를 사용하면 Visual Studio와 유사한 디버깅 툴을 사용할 수 있다고 들었고, 또 Torque 엔진의 경우에도 브레이크 포인트 기능 등을 제공하는 몇 가지 스크립트 에디터가 유료, 무료 버전으로 있습니다. In-house 툴로는 N사의 팀장님-지금은 이사님-이 만든 엔진이 Lua를 엔진 툴에서 콜스택을 볼 수 있도록 만든 것이 기억납니다. 그게 몇년 전이었으니 대단하죠. 아, 선릉에 있는 N사가 아니라 분당에 있는 N사입니다. ㅋ)

아키텍처 관점에서 본 다면 Nebula2의 망갈로 게임 프레임워크가 C++이라면 Unity의 경우 스크립트 기반이라는 것이 차이점인데 기본적인 개념은 이란성 쌍둥이 처럼 서로 닮았습니다. 그래서 개인적으로는 이해가 쉬운 것도 마음에 듭니다.

by kimsama | 2009/02/15 22:58 | Development | 트랙백 | 덧글(0)

GameTech 2009

게임테크 2009 후기

2월 10일 화요일, 학동 건설회관에서 있었던 게임 엔진 및 미들웨어 관련한 컨퍼런스였습니다. 이미 몇 분이 올린 것과 마찬가지로 행사 진행이 상당히 저질스러웠기 때문에 많이들 실망스러운 말씀들을 하셨죠.

우선 광고야 짐작했던 바라서 크게 놀라지(^^;)는 않았습니다.

첫 번째는 QA 시간의 질문 내용입니다. 오신 분들이 또 개인적으로 관심이 많아서 질문들도 많이들 준비해 오셨던 듯 한데, 그런데 강연 직후 개별 기술적인 이슈에 대한 다소 테크니컬한 질문들은 삼가했으면 하는 바램입니다. 특히 크라이엔진 강연 직후 이 부류의 질문들이 많았는데요, 참석자들이 모두 엔지니어들만 오시는 것은 아니기 때문에 가능한 이런 질문들은 휴식 시간이나 개인적으로 질문하시는 것이 좋지요. 즉, 질문의 내용에 따라 질문자도 다른 참석자들과 쉽게 공감하고 어필할 수 있는 질문들을 하는 것이 좋다고 생각합니다. (이 부분은 사실 이어지는 내용에 비하면 애교 수준입니다.) 그런데 말입니다. 이렇게 하려면 적어도 행사 준비 관계자분들이 이런 식의 미팅이 가능하도록 행사를 준비하셔야 하는데 이 점에서는 낙제 수준이었습니다. 중간에 그것도 오후에 고작 티타임이라고 해서 캔 음료 몇개랑 과자 몇개 두고 좁은 장소에서 북적거리며 스탠딩해서 몇분 안되는 시간 동안 (쳐)드시라고 하시면 어디서 어떻게 교류가 이루어지겠습니까.

두 번째는 행사 진행의 미숙함입니다. Umbra 발표때 강연자의 맥북(아마 프로일겁니다. 바로 옆자리라서 ㅋ)이 제대로 작동하지 않아서 중간에 행사가 끊긴 적이 있었는데 이때 행사 요원이 무대에 올라갔지만 중간에 끊질 못해서 서성였던 적이 있습니다. 보기에 좋지 않죠. 앞쪽 요원이 손짓을 해서 잠시 말을 멈춘다던가 사회자가 양해를 구하고 살짝 끼어드는 방법도 있습니다. 아쉬움이 많는 부분이었습니다. 또 행사장은 어떻게 된 일인지 강연 도중에 마이크가 다른 방과 혼선이 되었는지 하나, 둘, 셋이라는 마이크 테스트음이 믹싱(?)되는 웃지 못할 사건도 있었죠. 강연자분의 그 당황스러운 모습, 물론 윤정님의 위치에서는 보기 힘들지 모르겠지만 VIP석 바로 옆에 앉은 저는 낯이 뜨거워서 찜질방이었습니다. 쩝.

그리고 오후에 겜브리오 강연할 때 쯤에는 일부 강연자들은 자리에 없었죠. 뜬거죠. 오후에 다른 행사가 없으니 일어서는게 당연합니다. 행사에 아예 강연자와 참석자들간의 교류를 위한 시간은 고려가 안되어 있다는 사실이 여기서도 드러납니다.

사실 돈 내고 가신 분들은 속 좀 많이 쓰리시겠구나라는 생각이 절로 들게 하는 행사이긴 했습니다. (윤정님 블로그에서 밝힌 바와 같이 점심과 기념품면에서도 빵점입니다)

그냥 괄호처리만 하고 넘어가려고 했는데 기념품 이야기 나왔으니 한번 읊어 보겠습니다. 이런 류의 컨퍼런스에서는 기념품 및 경품 내용을 보면 참가자들을 어떻게 생각하는지 단박에 알 수가 있습니다. 예전 96년의 마이크로 소프트의 컨퍼런스의 경우 그 당시 가격으로 무려 20여만원이나 하는 엄청난 고가의 컨퍼런스가 있었습니다. 장소는 롯데호텔이었습니다. 이제는 없어졌지만 WinHEC이라는 행사였는데요, DirectX가 공식적으로 국내에 소개되는 행사이기도 해서 참석을 했더랍니다. 아침부터 저녁까지 이어지는 장시간의 컨퍼런스였는데요, 롯데 호텔 소공동에서 빛을 차단하고 발 소리라도 들릴까 카펫이 깔린 장소에서 진행이 되었습니다. 점심 시간은 행사장 바로 앞에 스테이크가 준비되었습니다. 이 때 주최측의 행사 진행이 돋보였는데요, 마이크로 소프트에서는 WinHEC 행사를 상당히 중요하게 생각하고 있었기 때문에 NT 개발팀의 상당수가 이 행사에 참석했습니다. 점심 시간에는 이 개발자들이 자기들끼리 식사를 하지 않고 테이블당 한명씩 앉아서 같이 온 참석자들과 식사하면서 오전 세션들에 대해서 이야기할 수 있도록 배려했습니다. 그리고 오후에 발표 중에 DirectX에 대한 소개가 나왔는데 이 때 처음 본 게임이 툼레이더스였습니다. (정확한 게임 이름을 알게 된 것은 그 뒤였습니다. 이 때에만도 개발 초창기였기 때문에 MS에서 데모로 들고 나온 게임이었습니다) 이 게임의 3D 기능을 DX를 이용해서 개발한다는 이야기와 함께 DSound의 돌비 사운드에 대한 소개도 있었는데요, 이를 위해서 롯데 소공동을 빌렸다고 하더군요. 극장 수준의 사운드 데모가 이어졌는데 엔지니어나 게임 관계자가 아니더라도 충분히 감동할만한 쇼였습니다. 행사가 끝난 다음에는 뷔폐로 저녁이 준비되었습니다. 물론 이때도 강연자들이나 다른 참가들과 교류가 이루어질 수 있또록 준비가 된거죠. 아, 기념품 이야기를 안했군요. "Made In Hongkong"의 가방이었습니다. 행사장에서 받은 각종 CD롬과 책자들, 브로셔등을 모두 넣고도 공간이 남는 큼직한 출장용 가방인데요, 디자인도 꽤나 멋진데다 앞면에는 마이크로 소프트라고 프린트되어 있어 긱(Geek)한 것을 좋아하는 개발자들에게 맘껏 자랑할 수 있는 레어아이템이었죠. 그리고 행사장에서 메모할 수 있도록 함께 건네준 볼펜도 있습니다. 문구사에서 쉽게 살 수 있는 볼펜이 아니라 대기업 부장님들이 가지고 다녀도 전혀 쪽(ㅡ.ㅡ)팔리지 않을 돌리는 볼펜이었습니다. 제가 앞에서 기념품을 보면 누굴 타겟으로 하는지 알 수 있다고 했는데요, 그 행사에는 국내 대기업들 관계자분들도 상당수 참가하셨더군요. 당연한 이야기지만 x대가리가 아니면 행사 기획할 때 누굴 부를건지 먼저 정하고 기념품도 기획하는게 맞겠지요. Game Tech 2009는 이런 점에서 상당한 괴리감이 느껴지는 졸속 컨퍼런스였습니다.

그래도 말입니다, 건질 건 건져야죠~ ^^

우선 간만에 뵌 분들이 있어 반가웠습니다. 게임 어스의 배상철 사장님(바로 알아 보지 못해서 쏘리했습니다.^^:), 휴가 중인데 몸소 오신 정팀장님 및 같이 프로젝 하시게 되었다는 여우님 등. 또 새로 인사드린 분도 계시군요. 블로그에서만 보다 인사한 Nettention의 배현직님 그리고 백승지님도 뵙게 되어서 반가웠습니다.

강연 내용으로는 개인적으로는 부분부분 흥미로운 이야기들이 있었습니다.

우선 Havok 세션에서는 다른 물리 엔진과 비교할 때 툴 부분이 상당히 흥미로웠습니다.

스케일폼의 경우 회사에서도 사용하고 있기 때문에 (또 이 기술의 원천 기술이라고 불리는 GameSWF의 Nebula2 포팅은 제가 했었다는 사실은 아시나요? ㅎ) 기술 자체는 궁금한 점이 없었지만 다음 버전에서 플래쉬 내에서 손쉽게 UI를 프로토타이핑할 수 있도록 UI Component를 지원한다는 점은 반가웠습니다.

Umbra는 dPVS 때부터 알고 있던 기술이고 또 작년 연말에 관계사(Umbra는 아닙니다만)에서 회사로 내방해서 한번 시연한 적도 있던지라 강연 때의 데모는 익숙한 데모였지만 GDC 2009에서 발표한다는 Scene Manager는 뜻밖이었습니다. 개인적으로는 기술 내용도 흥미로웠고 또 Umbra의 마켓에서의 포지셔닝도 확실하게 구분되는 부분이라 앞으로 많이 기대되는 내용입니다. 다만 데모 등이 없어 궁금했는데 다과(라고 쓰고 어린이집 간식 시간이라고 해석) 시간에 강연자인 Teppo Soininen에게 물어 봤는데 GDC를 기다리라고만 하더군요. 아무튼 기다려 볼 일입니다. -_-;

그리고 CUDA는 내용은 알고 있었지만 그닥 흥미가 없던 차에 이럴 때 와서 한번 머리 속에 정리하는 거죠. 한국어로 강연할 줄 알았는데 영어로 진행되어서 당황 아닌 당황을 했었는데 나중에 알고 보니 한국어 잘 하시더군요. 본인이 기술 내용은 영어가 더 쉬워서 그렇게 하셨다고 하지만 좀 더 살짝 살짝 끊어서 발표 하셨더라면 더 좋았을 듯 했습니다. 강연자 분들 중에서는 듣기 난이도가 제일 어려우셨어요. ㅋ

게임브리오는 이번에는 프로토타이핑 기능을 강조해서 나오셨더군요. 그런데 망갈로는 프로토타이핑 정도라 아니라 Rapid Dev.를 가능하게 한다니까요. 그것도 아주 스마트한 방법으로 말입니다. 게임브리오, 기술 주제의 방향은 맞는데 구현은 여전히 미숙해 보입니다. 더 이상 렌더러이기만은 포기할 계획일까요. 두고 볼 일입니다. 가격도 눈이 휘둥그래질 정도로 올리셨던데 말이죠.

엔도어즈의 염차장님 강연은 궁금한 점이 많았는데 시간 때문이었을까요. 좀 아쉬움이 많이 남는 끝자락이었습니다. 또 행사 성격이 그래서 어울리지 않는 자리 같기도 했습니다. 시간이 허락한다면 인사도 드리고 궁금한 점도 좀 물어 봤으면 좋을텐데 아쉽습니다.


다음에 또 행사가 진행된다면 제대로된, 얻는 것이 많은 그리고 아쉬움은 없는 행사가 되었으면 하는 바램입니다.

(그래도 이런 행사라도 있으니 바쁘신 분들 행사 핑계 대서라도 서로 얼굴들 보게 되는거겠지요. 많이 많이 반가웠습니다. ^^ 그나저나 행사 욕 너무 해버렸습니다. ㅋ)


by kimsama | 2009/02/12 10:05 | General | 트랙백 | 덧글(5)

Nebula3 포스팅 번역

The Brain Dump에 Nebula3의 최신 릴리즈도 언급되었고 해서 이전에[1] 몇 개 번역해 놓은 포스팅이 있어 올립니다. Nebula3를 이해하기 위한 가장 중요한 포스팅들입니다.
작년 8월에 소스 코드가 릴리즈 되었을 때 올 2월 쯤에 애니메이션을 포함한 새로운 릴리즈가 있을 것이라는 이야기를 한 적이 있었는데(오프라인에서) 거의 그럴듯 합니다.

번역이 되지 않은 부분은 게으름 때문인지라 혹 수고를 마다 않고 덧글로 올려 주시면 감사하겠습니다. 또 번역이 매끄럽지 못한 부분이나 오역은 능력 탓이니 개의치 마시고 질타와 함께 지적해 주시면 (아주!) 감사하겠습니다.



[1] Google Doc의 날짜를 보니 1월 1일이었군요. 신년에 이런 일을 하고 있었군요...저는 -_-;

by kimsama | 2009/02/08 23:14 | Nebula Device | 트랙백 | 덧글(0)

◀ 이전 페이지다음 페이지 ▶