구글 태그

2006년 12월 22일 금요일

속이 다 시원하다..

(링크) 한글인터넷주소 서비스 사라진다…KT-넷피아 가처분 신청 기각, 넷피아도 검색모델로 전환

넷피아와 KT간의 법정분쟁에서 KT가 이겼습니다. 이 소송이 의미하는 바가 큰데, 기술적으로 넷피아의 한글인터넷주소 서비스가 고유한 한글인터넷주소가 아닌 검색 서비스라고 법원이 판단했다는 점이죠. 넷피아는 MS의 IE7과 관련해서 유사한 소송을 진행중인데, 이것으로 그 소송도 MS가 이기는 것으로 끝나게 될것 같습니다.

얼마전에 본 중소기업청 광고에서 넷피아를 무슨 독자적인 기술을 가진 기업인양 소개를 하던데, 기술적인 면에서 보면 넷피아의 한글인터넷주소는 엄연히 한글키워드검색 서비스였고, 이걸 가지고 무슨 대단한 기술인양 광고하는 것에 대해 많은 엔지니어들이 터놓고 말해서 역겨워했었죠. 링크된 기사의 댓글에도 나와있지만 속이 다 시원하다는 느낌입니다. 앞으로 구글모델로 전환하겠다고 하는데, 어떻게 될런지 향후 행보가 기대(?)됩니다.

2006년 11월 19일 일요일

Wii가 별로라고 생각하는 이유..

루리웹에 올라온 번역기사 중에 공감가는 글이 있어서 링크를 겁니다.

(링크) Wii가 당신을 열광시키지 못할 5가지 이유

참고로 원문은 다음과 같습니다.

(링크) Opinion: Wii Won't Rock You

역시나 루리웹에서는 쓸데없이 불확실한 정보들을 가지고 말꼬리잡기를 하고 있던데, 본문에서 제시하는 다섯가지 이유 중에 몇가지는 상당히 중요하고 현실적인 이유인데도 애써 무시하는 모습이 정말 답답하더군요. 그래서 이 이유들이 왜 타당한가에 대해서 좀 짚어볼까 합니다. 본문에서 제시한 Wii가 별로인 다섯가지 이유는 다음과 같습니다.

1. 충분하지 않은 게임들

이건 개인의 취향차이도 있으니까 넘어가는게 좋겠습니다. 합리적인 근거를 제시하기엔 모호한 주장이죠. 개인적으로야 GC를 계승한 게임기인만큼 앞으로 Wii 사용자들이 겪게될 현실이라고 생각하지만, 이건 Wii가 상업적으로 성공하지 않아야 일어날 일이니 현재로서는 이를 증명하기는 어려워 보입니다.

2. 그래픽은 정말로 상관있다

거치형 게임기와 휴대용 게임기는 사용자들이 갖는 기대가 다릅니다. 휴대용 게임기에서 성공했다고 해서 NDS에서 성공했던 "허술한 그래픽을 새로운 입력장치로 대치하는 눈속임"을 거치형 게임기에 그대로 적용해서야 먹혀들수가 없습니다.

3. 위모트는 최고의 물건이 아니다

건콘이나 다른 특화된 전용 컨트롤러, 혹은 자이로(gyro)지원 컨트롤러를 써보셨다면, 이러한 컨트롤러를 이용하는 게임이 가끔은 재미있지만 계속 하기엔 피곤하다는걸 기억하고 계실겁니다. 위모트도 다르지 않습니다.

4. 거치용 콘솔 시장은 닌텐도가 장악하고 있지 않다

NDS가 성공한 이유 중에 가장 중요한 요소였던 GBA의 시장장악을 무시하는 이유를 모르겠습니다. 이전 세대에서 시장을 장악해 놓는건 사용자 충성도 면에서 아주 중요하고 현실적인 파괴력을 갖습니다. 이 경우엔 PS3가 갖는 강점이 되죠.

5. 유리한 가격은 오래가지 않는다

소니가 PS1때 얻은 교훈이 하나 있습니다. 외부에서 구매하는 부품이 많으면 하드웨어의 가격을 낮추기가 힘들다는 사실이죠. 그래서 PS2에서는 가장 비싼 CPU와 GPU를 타사와의 공조를 통해 개발해서 직접 생산해서 쓴거구요. PS3에서도 다르지 않습니다. 소니가 가진 강점은 하드웨어의 직접 생산능력에 있습니다. 초기에는 손실이 크지만 직접 설계하고 생산하는 만큼 금방 가격을 낮출 수 있는 능력이 있어요. MS도 Xbox때 하드웨어 가격 인하에 상당한 어려움을 겪어서 360에서는 부품공급업체들과 계약하면서 매입물량에 따른 부품가격인하에 대하여 상당히 복잡한 계약을 체결했다고 합니다만, 직접 생산하면서 설계를 다듬어서 부품을 단순화하고 가격까지 낮추는 소니를 따라잡기는 어렵습니다.

이처럼 하드웨어를 직접 개발하는게 발매초기에는 투자비용이 커지지만 장기적으로는 상당히 유리하게 작용합니다. 일반 게이머들은 소니의 가격인하능력을 전혀 감안하지 않는것 같아요. 북미같은 대형시장에서는 가격이 상당히 중요한데, 이 부분에서는 소니가 3사 중에 발군의 적응력을 갖추고 있습니다. 물론 높은 가격책정으로 인해 초기선점에 어려움을 겪겠지만, 초기의 위기만 잘 넘기면 이후부터는 빠른 속도로 가격을 낮출 수 있습니다.

그리고 이런 초기의 위기를 넘기기 위한 카드로 블루레이가 있죠. 우리나라 게이머들은 다들 거실에서 게임을 못하고 TV수신카드에 연결해서 플레이하는 어린 학생들만 있는지 HDTV의 존재를 싹 무시하는데, 요근래 몇년사이에 TV를 구매했다면 HDTV를 갖고 있는게 당연하지 않습니까. DVD 해상도가 HDTV에 못미치기 때문에 블루레이니 HD-DVD니 하는 매체들이 나오는건데, 현실적으로 필요해서 나온 매체인 이상 수요가 있기 마련입니다. PS3 정도 가격으로 블루레이 플레이어라는건 상당히 매력적인 접근방법이죠.

게임팬들에 대해 제가 정말 황당하게 여기는 것들중 하나가, 현재 개발사 중에 닌텐도만이 게임의 본질을 알고 게임을 만든다는 식의 프로파간다에 놀아나는 게이머들이 꽤 있다는 사실입니다. (소위 닌빠죠) 닌텐도야 그렇게 주장할 수도 있다고 치지만(일종의 캐치프레이즈라고 치고 말이죠) 그걸 받아들이는 사람들이 정말 그렇게 믿는건 너무 순진한거 아닙니까? 닌텐도는 닌텐도 스타일의 게임을 만들뿐 게임의 본질과는 아무 상관이 없습니다. 정말 가볍고 단순하고 아케이드적인 아동취향의 게임을 잘 만들죠. 근데 그게 게임의 본질과 무슨 상관이 있죠? 게임의 본질이라는게 누가 정의하는거죠? 정말로 그런게 있다면, 왜 다수의 게이머들이 닌텐도 게임을 하지 않는걸까요? 게임을 만드는 사람으로서 제가 들어본 얘기중에 가장 황당한 헛소리입니다.

Wii에 대해 늘어놓는 이야기도 마찬가지입니다. Wii는 기존 게이머를 위한 게임기가 아니라 게임의 본질에 접근해서 게이머가 아닌 사람도 즐길 수 있는 게임기랍니다. 그래픽만 치중하는 기존 게이머들은 PS3나 Xbox360이 가져가고, 새로운 사용자층을 끌어들여서 게임의 본질적인 재미를 줄거랍니다. 이 무슨 개풀뜯어먹는 어처구니없는 소리인지. 게이머가 아닌 사람들이 집밖에 나가 영화를 보거나 쇼핑하는 대신 거치형 게임기를 사다 놓고 TV앞에 앉아서 허공에 팔을 휘젖는 미친짓거리를 할거라고 믿는다면 그렇게 믿는 사람이 정상이 아니죠.

아, 말이 점점 거칠어지네요. 제가 닌텐도나 세가의 저 프로파간다(및 저 프로파간다에 속고 있는 사람들)를 좀 싫어하는지라. 하여튼 Wii는 초기에 주목을 받는데는 성공했을지 몰라도 상업적으로는 성공할래야 성공할것 같지가 않습니다.

p.s. 말이 나온 김에 다음에는 세가에 대해서도 한번 적어봐야겠군요.

2006년 11월 14일 화요일

디시인사이드 우회상장..

2006년 11월 12일자 신문기사에 디시인사이드가 100억원의 투자를 유치했다는 내용이 실렸습니다.

(링크) 디시인사이드, 100억원 투자 유치

뒤이어 다음날, 디시인사이드가 코스닥 상장사를 320억원에 인수하여 우회상장의 길을 열었다는 기사가 올라왔습니다.

(링크) 디시인사이드, 320억 들여 IC코퍼 인수

곧이어 대표이사 인터뷰에서 우회상장을 통해 자금력을 키워 새로운 사업에 도전하겠다는 기사가 실렸습니다.

(링크) "내년 우회상장…新UCC 개발주력"…김유식 디시인사이드 대표

IT 업계에 종사하시면서 업계 판도를 쭉 보아오신 분들은 다들 아실겁니다. 저게 어떤 패턴인지를요. 100억원의 투자를 유치하자마자 현금 150억원에 빚 170억원을 들여 상장사를 인수하고, 이를 이용하여 우회상장을 한다는건 정상적으로 회사를 키우려는 오너의 마인드가 아니죠. 머니게임을 전문적으로 하는 이들이 개입하여 회사를 키워서 주식으로 불려보겠다는 의도입니다. 말이 투자지, 그냥 기업을 사고팔아서 남기는 머니게임에 불과하다는거죠. 결국 이 과정에서 몇몇 사람들만 돈을 좀 만질테고, 애꿎은 소액주주들은 디시인사이드를 띄워주는 작전세력에 놀아나서 투자하다가 손해보고, 디시인사이드는 핵심역량을 잃은채 머니게임에 이용되었던 이전의 수많은 한때 우량했던 기업들이 그러했듯 사라지고 말겁니다. 간혹 대표이사가 교체되고 사업분야마저 바꾸며 살아남는 기업도 있습니다만, 그렇게 살아남은 기업이 이전의 그 기업과 같은 기업인지는 좀 생각해보아야 할 문제죠.

기분이 우울한건 아니지만, 이런 일이 한두번 일어나는것도 아니고 그저 답답할 뿐입니다. 디시는 지금 우리나라 인터넷상에서 서브컬쳐의 본산같은 곳인데 좀 아깝기도 하구요. 물론 디시가 없어진다고 같은 역할을 수행할만한 공간이 아예 없어지지는 않겠지만요.

2006년 11월 11일 토요일

일리히트 1.1에서 한글 입출력

요즘엔 틈나는대로 혼자서 일리히트 엔진을 만져보고 있습니다. 이 엔진에 관심을 가지고 보셨던 분들은 다들 아실테지만, 초기 설계부터 개발의 편이성에 목숨을 건 엔진이라 코드는 아주 깨끗해지지만 렌더링 퍼포먼스는 별로 좋지 않은 엔진이죠. 심지어는 코드가 지저분해진다는 이유로 DirectX 렌더러가 정점 정보를 비디오메모리에 올리지 않고 유저 메모리에 올려서 씁니다.(경악!) 이 부분 때문에 좌절하고 오우거 엔진으로 가신 분들도 꽤 계신듯 하고요. 제가 아는 분도 오우거 엔진으로 게임을 개발해서 서비스하고 계신 듯 하니까, 아무래도 공개 엔진 중에서는 오우거가 젤 평가가 좋은듯 한데 저는 왜 일리히트를 만져보고 있느냐.. 혼자 뭔가를 만들때는 퍼포먼스보다 개발 편이성이 훨씬 중요하니까요.. 혼자서 할때는 진전이 없으면 금방 지쳐서 포기하기 쉬운데, 이럴때는 지치지 않도록 스스로에게 개발이 잘 진행되고 있다는 당근을 쥐어주는게 필요합니다.

하튼 이런 이유로 일리히트를 쓰는데, 이게 아직까지 True Type Font도 지원하지 않으니 한글 입출력이 제대로 될리가 없죠.. 그래서 포럼을 훑어보니 몇몇이 TTF 지원 모듈을 만들기는 했던 모양입니다.

(링크) MultiByte Language support pack for Irrlicht 0.9

제목에는 일리히트 0.9용이라고 적혀있지만 링크를 열어보면 일리히트 1.1용으로 업데이트된 내용도 들어있습니다. 적용해보니 잘 돌아는 가는데, 폰트용 텍스쳐를 따로 생성하기 때문에 텍스쳐 해제시 주의해야 합니다. 작업중인 코드에서 오프닝, 메뉴, 게임 등을 구분해서 장면으로 나누어 두었는데, 장면이 바뀔때 리소스 해제시에 텍스쳐 메모리까지 몽땅 날려버렸더니 가차없이 죽는군요.

(링크) HOW to control the IME Window

일리히트에서 IME composition window를 감추는 방법에 대한 내용인데, 적용해보진 않았지만 코드를 보니 잘 작동할것 같습니다.

2006년 10월 12일 목요일

클로버 스튜디오 해산에 즈음하여..

'클로버 스튜디오'라고 하면 어떤 회사인지 아시는 분이 별로 없으실 것 같은데(저도 기사를 보기 전에는 회사 이름까진 기억 못했죠;;), 캡콤에서 바이오하자드 시리즈를 만들던 미카미 신지씨가 나와서 만든 회사입니다. 미카미씨는 바하4를 닌텐도 게임큐브 독점으로 발매했다가 말아드시고-_- 플스2로 이식을 발표할 즈음에 분사 형식으로 캡콤에서 나왔죠..

다음은 분사 당시의 기사입니다.

(링크) [참고] 정통 바이오해저드4 개발팀 캡콤을 떠난다?!

다음은 당시에 hawkwind라는 분이 쓰신 분사의 배경에 대한 추측이랄까..뭐 그런 내용입니다.

(링크) 미카미 신지 이야기

제 생각과 상당부분 일치하는 내용이라 링크를 겁니다. 개발자가 회사에 개발 플랫폼을 우겼다는건 상식적으로 납득하기 힘든 일이죠. 더군다나 특정 플랫폼으로만 내겠다니, 이건 정말 정치적인 판단입니다. 제 경우엔 닌텐도도 닌텐도지만 캡콤의 책임도 무시할만한 수준은 넘어섰다고 생각하고 있습니다. 캡콤이 요즘 실적이 안 좋다고 하는데 세상 모든 일에는 다 이유가 있는 법인가 봅니다. 이렇게 경영상의 판단 미스를 하면서 실적이 좋을리가 없죠. 유저를 배려한다는 감상적인 생각까진 바라지도 않지만, 바하의 유저베이스인 플스 유저들을 놓고 이익이라는 면에서 합리적인 경영상의 판단만 했어도 괜찮았을텐데 오직 정치적인 이유로 판단을 하니 결과가 그 모양이죠..

여하튼 일어난 일은 일어난 일이고 결국 그 사건은 다음과 같이 마무리 됩니다. 그렇게 분사한 클로버 스튜디오의 해산 및 청산.

(링크) [기타] 클로버 스튜디오 해산 및 청산에 관한 소식

미카미씨 정도의 스타개발자야 다른 회사를 차려도 되고 친정인 캡콤으로 복귀할 수도 있을테지만, 바이오하자드처럼 인기있던 시리즈가 공중에 떠버린건 정말 안타까울 뿐입니다.

P.S. 큐브의 경우를 보면, 바이오하자드 정도의 타이틀이 나와도 아동용 게임기의 꼬리표를 뗄 수 없다니 인간의 고정관념이란 참으로 무서워요.. 그런 의미에서 Wii도 별 수 없다에 한 표.

2006년 10월 6일 금요일

Z건담 극장판..

한번에 보려고 미루어뒀던 Z(제타)건담 극장판 3부작을 이번에 다 봤습니다. 공식 홈페이지는 이곳입니다.

아시는 분들은 다 아시겠지만, 원작은 1986년에 도미노 요시유키 감독이 만든 TV판 애니메이션입니다. 방영당시 일본에서는 엄청난 히트작이었지만 나름 진지한 전쟁물인 관계로 국내에는 정식으로 들어오지 않았죠.(선악구분이 분명한 슈퍼로봇물이나 변신소녀물만 정식으로 들어왔었죠..)

자세한 사정은 잘 모르겠지만 이후에 원작자도 이것만한 히트작을 내놓지 못했던 모양이고,(너무 크게 히트한 자신의 작품에 발목을 잡히는 창작자들이 어디 한두사람이겠습니까..) 결국 20주년에 즈음하여 자신에게 묶인 족쇄를 풀고자 리메이크를 하기로 결심한 모양입니다. 그렇지만 TV판 내용을 마구 압축해서 한편짜리 극장판으로 만들면 내용이 엉망이 될건 뻔하고, 적당히 나눠서 3부작으로 만들되 전부 다시 그리면 제작비가 너무 많이 드니 과거 TV판을 일부 재활용하기로 한 모양. 그러니까 보기전의 예상으로 말하자면, 내용은 많이 손상되지 않았을법 하지만 퀄리티는 좀 불안한 3부작 극장판입니다.

실제로 본 감상은 전체적으로 기대 이상입니다. 원작을 직접 본 적이 없으므로 대강의 스토리 정도만 알고 있는 상태에서 본거라 완전히 모르고 보는것과 비슷한 상태에서 본건데, 1편('별을 계승하는 자')을 보고는 다음편이 너무 궁금해서 지체없이 2편('연인들')으로 넘어가게 되더군요. 너무 재미있게 본 1편에 비해 2편은 스토리가 상당히 빠르게 진행되어서 좀 문제가 있다는 느낌이었고, 3편('별의 고동은 사랑')은 비교적 깔끔하게 마무리 지어진 느낌입니다.

이를테면 원작의 스토리를 놓고 3부분으로 분할을 하는데, 먼저 앞부분과 뒷부분으로 나누어 1편과 3편으로 구성하고 나머지 전체를 2편에 집어넣은 느낌이랄까.. 1,3 편은 내적으로 어느정도 기승전결을 갖고 있어서 재미있는데, 2편은 한 편 안에서 내용이 두 부분으로 따로 떨어진 느낌입니다.(내용 설명을 피하기 위해 구체적인 사항은 생략) 4부작 정도로 만들어서 두 부분을 각각 2편과 3편으로 만들었으면 나았으려나 생각도 해봤는데, 그렇게 하면 좀 내용이 모자를듯도 싶고.. 정확히 나눠질수 없는걸 나누느라 어쩔수 없었으려니 싶기도 합니다.

그림의 경우에는 역시나 예전의 작화와 현재의 작화가 차이가 많이 나더군요. 더군다나 예전에는 TV판용 작화였고 현재의 것은 극장용 작화이니 더더욱.. 새로 그린 부분들을 보면 화면에서 빛이 나는 느낌입니다. 전부 다 새로 그렸으면 얼마나 좋았을까 하는 아쉬움이 없는건 아니지만, 내용에 빠져들어서 대강 용서하며 볼 수 있더군요.

2편 후반부와 3편 초반부에 전황에 대한 묘사가 아주 빠르게 진행되는데, 극장판의 묘사만으로는 내용이 머리속에 잘 들어오지 않습니다. 원작에서 대강의 중요 이벤트만 알고 있는 상태에서 본거라 저도 내용파악이 100% 이루어진건 아닌데, 제가 보기엔 그게 감상의 중요 포인트는 아닌것 같습니다. 어차피 전장에서 직접 싸우는 병사는 전황을 100% 이해하지 못해도 상관이 없죠. 저는 그냥 카미유의 시각에서 전쟁을 본다는 느낌으로 당장 목표가 무엇이고 눈앞의 적이 누구인가에만 집중하며 보게 되던데, 그렇게 보니까 전황은 그냥 그러려니 싶고 전장에서 모빌슈츠로 싸우는 느낌에만 집중하게 되더군요. 물론 전황이 정확히 파악되지 않는건 다소 마이너스 요소임에는 분명합니다만..

제가 느끼는 재미면에서는 1>3>2의 순이었지만, 결국 1편을 보면 세편을 다 봐야 할것 같네요. 국내에 DVD로 출시될지는 잘 모르겠지만, 출시된다면 반드시 사고 싶군요.

여기서부터 내용을 언급하겠습니다. 안 보신 분들은 넘어가 주세요.

원작 TV판과 비교해서 달라진 점이 꽤 있는데요.. 극장판 2편에서 포 무라사메의 죽음은 그 타이밍이 전혀 뜻밖이었는데, 등장한지 얼마되지도 않아서 그런 식으로 죽다니 좀 버려지는 캐릭터 느낌이랄까.. 이런 식이면 카미유에게 정신적으로 큰 의미가 없는 인물이 되지 않을까 싶은 느낌이었는데, 그래서 그런지 3편 끝부분에 원작과 달리 카미유가 미치지 않고 화와 맺어지더군요. 2편의 수정으로 말미암아 3편의 결말이 변했다고 하면 좀 오버일지 몰라도, 내용의 흐름으로 보아 수정된 결말쪽이 더 납득이 가더군요.

2006년 10월 2일 월요일

네이버 초딩의 실체..

개인적으로 IT 분야에서 가장 읽을거리가 많다고 생각하는 국내매체인 아이뉴스24에 구글의 이용자 통계에 대한 기사가 올라왔습니다.

(링크) 구글, 25~35세 전문관리직 남성이 주로 이용

요약하면 구글 한국어 페이지의 이용자 대다수가 25~35세 사이의 대졸 이상의 학력을 가진 전문관리직 남성이었다는 내용입니다. 저도 구글을 사용하긴 하지만, 간혹 뉴스 기사를 보기 위해서는 어쩔 수없이 네이버에 들어갑니다. 그럼 그냥 네이버에서 다 해결하지 왜 굳이 구글을 쓰느냐.. 전문지식을 검색할 경우 네이버와는 비교도 안되는 정확도를 보여주기 때문입니다.

특정한 분야(저의 경우 프로그래밍 관련)의 지식을 검색하면 네이버에서는 검색 키워드와 관련된 지식인이나 블로그의 결과물이 나오고,(웹검색도 하지만 결과물도 별로고 화면에 표시되는 순서로 보아 우선순위에서도 밀립니다) 구글에서는 검색 키워드에 대하여 자체적으로 매긴 정확도 순위에 따라 관련 웹페이지가 결과물로 제시됩니다. 결국 검색 결과물의 품질은 네이버가 보유한 지식인이나 블로그의 문서들이 구글이 제시하는 웹페이지에 비하여 얼마나 전문적이냐에 달려있는데, 불행히도 지식인이나 블로그는 그다지 믿을만한 정보원이 아닙니다. 틀린 경우가 아주 많죠. 왜일까요? 답글을 다는 집단 중에 소위 말하는 '네이버 초딩'이 많아서일까요?

기사 본문에도 이용자층의 비교를 위해 국내 포털인 네이버를 언급했는데, 재미있게도 통계를 살펴보면 흔히 말하는 '네이버 초딩'이 실제로 존재함을 알 수 있습니다.

반면 네이버의 9월한달 페이지뷰 구성비를 보면 ...(중략)... 전 연령대별 크게 차이는 나지 않지만 6~14세 비중이 높음을 보여준다.


네이버 내에서 가장 많은 비율을 차지하는 집단은 6~14세랍니다.. 어때요? '네이버 초딩'은 통계적으로도 확인되는 실존하는 집단이었군요.

P.S. 물론 네이버 지식인이나 블로그가 일상적인 지식에 대해서는 상당한 정확도를 보여주기도 하고, 사용자가 제공하는 컨텐츠가 잘못되는게 꼭 초딩들의 잘못은 아닙니다. 이상하게도 우리나라 인터넷에는 출처나 근거를 확인도 안해보고 답글을 다는 문화가 있죠.. 답글을 다는게 일종의 선심이라고 생각하기 때문에 출처나 근거를 확인하는 정도의 노력을 기울일 의무가 없다고 생각하는걸지도 모르지만, 토론이라고 생각하면 이렇게 하면 안될텐데.. 이 문제는 다른 얘기니까 생각나면 다음에 다시..

2006년 9월 29일 금요일

좋은 회사명, 나쁜 회사명..

ZDNet Korea에 올라온 컬럼을 읽다보니 눈에 띠는 내용이 있네요..

(링크) 성공의 첫걸음,「좋은 회사명 짓는 법」

기분 나쁜 이름을 사용하지 말 것.
예를 들면 제노포트(XenoPort), 누버시브(NuVasive), 와이더댄(WiderThan) 등이 있다.


'와이더댄'이 기분 나쁜 이름이었군요.. (뭐 회사 자체는 저도 별로 좋게는 생각하지 않지만..)
역시 한국 사람이 영어로 회사 이름을 잘 짓기란 어려운 일인가 보네요..

2006년 9월 18일 월요일

차세대 게임기 성능 내맘대로 비교

발매되지도 않은 게임기 성능을 정확히 비교하는건 불가능하지만, 스펙을 통해 제가 관심을 갖고 있는 부분만 비교하는건 가능하다는 생각에 한번 정리해 봅니다.. 제 관점에서 구매 여부를 판단하기 위해 정리하는거니까 물론 제 주관도 많이 섞여 있겠습니다..

나름 AV에 관심있는 사람인지라, 가장 먼저 살펴볼 사항은 각 기종이 지원하는 영상출력 포맷입니다.

PS3 : 1080p (수치는 수직 해상도, p는 progressive를 의미)
Xbox360 : 1080i (i는 interlaced를 의미)
Wii : 480p

일단 여기서 화면에 뿌릴 수 있는 최고 해상도는 PS3 >= Xbox360 >>> Wii 순입니다. PS3의 경우에는 블루레이 플레이어 기능때문에라도 1080p를 지원해야 했겠죠. 하지만 1080p나 1080i 급에서는 PS3와 Xbox360 모두 텍스쳐 메모리가 좀 부족하지 않을까 싶기도 합니다.. 그렇다곤 해도 Wii와는 비교불능이죠..

Wii에는 셰이더가 아예 빠져있다는데, 이건 알기 쉽게 DirectX에 비교하자면 DX7 수준입니다. (DX8부터 기초적인 셰이더가 들어갔음) 그래서 렌더링 품질 면에서는 PS3 = Xbox360 (둘다 대략 DX9.5 정도?) >>>넘을 수 없는 셰이더의 벽>>> Wii (DX7) 순입니다.. PS3와 Xbox360은 동일 세대의 그래픽 칩셋이 들어가니까 성능면에서 별 차이가 없을거라고 봅니다.. CPU야 명목상 PS3가 더 좋다고해도 실질적으로는 별 차이 없을테구요..

제가 집에서 사용하는 TV가 1080i까지 지원하므로 여기서 일단 Wii는 탈락입니다. 480p를 무시하냐고 물으신다면 DVD 있는데 VCR로 영화보냐고 묻고 싶네요.. HDTV 보급이 얼마나 진척됐는지는 잘 모르겠지만, HDTV를 갖고 있다면 Wii를 선택하는 사람은 없을거라고 봅니다..

사운드는 세 기종 모두 Dolby Digital 5.1을 지원합니다.. 이전 세대의 기종 중 PS2에서는 실시간으로 5.1ch 사운드를 생성하지 못했는데, PS3에서는 가능해졌습니다. Xbox에서도 가능하던 기능이니 당연한 일이겠구요.. 사운드 면에서는 별 차이가 없을듯.

컨트롤러는 세 기종 모두 무선인데, Xbox360과 Wii에는 진동 기능(force feedback)이 들어가있고 PS3에는 특허 문제로 빠졌습니다. PS3와 Wii는 자이로 기능(gyro)을 지원해서 컨트롤러의 기울임을 인식하고, 특이하게도 Wii는 컨트롤러가 리모컨 형태입니다. Wii의 리모컨 형태 컨트롤러는 특이한 조작감의 게임을 만들려고 넣은 모양이지만, 자이로 기능을 게임의 사용자 입력에 전면적으로 채용하면 처음엔 신기할지 몰라도 나중엔 플레이가 귀찮아집니다. (당장 자이로 기능을 체험해 보고 싶으시면 LG의 GxG용 SV-360폰이나 동일 기종의 Gpang용 KV-3600폰의 데모 게임을 해보세요) 따라서 이 부분은 평범한 스타일에 진동을 지원하는 무선 컨트롤러라는 면에서 기본기에 충실한 Xbox360이 가장 좋다고 봅니다.

뭐 다른게 또 있을까요? 제가 보기엔 PS3와 Xbox360이 확실히 비싼만큼 좋은 게임기이고, Wii는 싼만큼 별로로 보이네요. 싼맛에 샀다가 저해상도와 불편한 조작에 질려서 치울 공산이 크므로 Wii는 일단 배제하고, PS3와 Xbox360중에서 할만한 게임이 많은 기계를 살까 합니다. 근데 블루레이와 HD-DVD의 영화전쟁은 블루레이가 우세인 모양이니, 이것까지 감안하면 결국엔 PS3쪽으로 갈것 같네요.

2006년 9월 15일 금요일

RakNet의 장단점..

회사에서 진행하는 P2P 모델의 프로젝트에 네트워크 라이브러리로 RakNet을 사용했는데, 사용하면서 느낀 점을 정리해볼까 합니다. 프로젝트에 RakNet을 채택할지 여부를 고민하고 계시다면 도움이 될지도 모르겠네요.

우선 장점부터 볼까요? 이 글을 쓰는 시점에서 RakNet은 버전 2.519까지 나와있는데, 핵심 기능이라고 할 수 있는 reliable UDP는 좋다고 말할 수 있습니다. 상당히 안정화가 됐다고 할 수 있죠. 저는 2.4 버전부터 썼는데, 그때까지만해도 약간 문제가 있었습니다.(P2P 모델에서 cross-connection bug 같은건 꽤 문제가 되었죠) 하지만 2.5대로 넘어오면서 상당히 안정화가 됐습니다. 또 확장성도 괜찮은 편입니다. 메시지 기반의 plugin을 작성하며 기능을 확장하는 방식인데, 인터페이스도 간결하고 모듈간에 간섭도 없어서 깔끔하게 기능을 추가할 수 있습니다.

그렇지만 단점이 없는건 아닙니다. 개발자인 Rak'kar가 MMOG 개발에 뜻을 두고 있어서, RakNet의 개발 방향은 점차 UDP 기반의 MMOG 네트워크 엔진이 되어가고 있습니다. C/S에 적합한 기능으로 발전하고 있어서 P2P에 맞는 방향으로는 기능추가가 미진하다는 뜻이죠. 또 NAT 문제에 취약합니다. Plugin 형태로 홀펀칭이 들어있긴 하지만 많이 미흡하고, 위상차가 다른 NAT에 적절히 대응하지 못합니다. 이러한 부분에 대해서는 추가 개발이 필요한데, RakNet이 네트워크 상의 다른 컴퓨터와의 연결을 인식하는 방법상 깔끔하게 처리하기가 어렵습니다.

그렇다면 RakNet은 추천할만한 라이브러리일까요? 제 경우엔 plugin 디자인도 RakNet 샘플이 제공하는 것과 유사하게 구성하면서 전반적으로 RakNet의 디자인 방식을 최대한 따르도록 개발을 했는데, 이러한 방식으로 만들면 개발 속도 면에서 상당한 이득을 얻을 수 있습니다. Reliable UDP를 개발하기가 귀찮다면 그냥 코어부분만 사용해도 괜찮지만, 그렇게 되면 개발 속도면에서는 큰 이점을 갖기가 어렵죠. 이래저래 약간 맘에 안 드는 면도 있지만, 코어가 안정적이라는 점에서 약간의 추가 개발을 감안한다면 쓸만한 라이브러리입니다. 그렇지만 어느정도 추가개발을 하게되면 후속 기능의 추가 방향이 P2P가 아니라는 점에서 답답함을 느끼게 됩니다. 버그 수정에 대한 피드백을 빨리 반영하는 편이므로 안정성면에서는 괜찮지만, 개발방향이 MMOG쪽으로 잡혀있다는건 장래성을 어둡게 하는 요소가 아닐까 싶습니다. 서버 기반 C/S 모델의 MMOG가 TCP를 놔두고 UDP를 써야할 이유가 뭔지 잘 모르겠거든요..

2006년 9월 13일 수요일

프로토타이핑 도구..

이전 게시물에서 빠른 프로토타이핑을 기획팀의 작업에 넣어야 한다고 얘기했었는데, 이게 되려면 프로토타이핑이 그만큼 쉬워져야 합니다. MOD 툴을 이용하자고 하긴 했지만 사실 그게 말처럼 쉬운건 아니죠. 공개된 MOD 툴이 꽤 있긴 하지만 특정 몇 장르(FPS, RPG)에 편중되어 있고, MOD 툴 사용법이 그렇게 간단하지도 않고, 프로토타이핑을 할때마다 새로운 MOD 툴을 익힌다는것도 어려운 일이고요. 대부분의 장르에 두루 적용이 가능한 전문 프로토타이핑 도구가 있어서 그거 하나만 익혀 해결할 수 있다면 가장 좋을것 같다는 생각을 해보던 차에 이런걸 찾았습니다.

(링크) Virtools
(링크) Virtools Korea

Virtools라는 툴셋인데, 스크립트 기반으로 이것저것 3D 환경에서 시뮬레이션을 해보는 도구인 모양입니다. 그런데 나중에 제작사에서 이게 게임쪽의 프로토타이핑에도 유용하다는걸 깨닫고 게임쪽으로 기능을 대폭 보강한 모양. 홈피만 봐서 잘 모르시겠다면 사용자 가이드를 한번 읽어보세요. 한국에서도 판매하기 때문인지 가이드가 한글화되어 있네요.

(링크) Virtools 사용자 가이드(한글, PDF)

완전 거저먹기는 아니더라도 C++로 프로토타이핑을 하는것에 비하면 꽤 간편해 보입니다. 한국에서도 판매하는걸 보면 그럭저럭 팔리는 모양인데, 평가판으로 프로토타이핑에 사용하면 괜찮지 않을까 싶네요. 전에 이런 도구를 직접 만들어볼까 하는 생각도 했었는데, 역시 내가 생각할 수 있는건 다른 사람도 생각할 수 있는 법이군요.

2006년 9월 7일 목요일

예측할 수 없는 인생의 항로

이전에 다니던 회사에서 신입으로 들어와 같이 일하던 프로그래머가 회사를 관두고 소방관이 되려고 준비하고 있답니다..



........................



아니 저는 그닥 일을 많이 시키거나 갈구거나 하지 않았거든요? 제가 오래 앉아있지 못하는 편이라 남한테도 그렇게 시키지 않거든요? 진짜라구요.. ㅠ_ㅠ

근데 프로그래머가 그렇게 싫었나.. 소방관이라니 너무나 극과극의 직업인듯..

2006년 9월 4일 월요일

게임 개발자의 로망..

데브캣의 김용하 팀장이 결혼했다고 합니다.. 개인적으로는 모르는 분이지만 여튼 축하의 말씀을..

(링크) 하루 님의 결혼을 축하합니다!

기사는 여성분쪽에 중점을 두고 다루고 있지만, 평소 코스프레에 관심이 없는 저로서는 저 여성분이 유명한 코스플레이어인것 같다는 인상만 받았고.. 저에겐 업계에서 꽤 유명한 김용하 팀장이 유명해 보이는 코스플레이어랑 결혼했다는 정도로 받아들여집니다..

앞에서도 밝혔듯이 개인적으로 모르는 분의 결혼이니 그 자체로 큰 감흥이 있는건 아니지만, 결혼상대자가 코스플레이어라는건 좀 재미있는 부분이 아닌가 합니다. 과연 남성 게임개발자들의 로망은 코스플레이어랑 결혼인건가 싶기도 하고.. 생각해보면 피규어를 모으거나 사진을 찍는 남성 개발자들이 꽤 많은데, 이런 분들은 코스플레이어랑 결혼하면 금상첨화가 아닐런지.. 취미도 딱 맞고.. 물론 취미와 연애는 별개인 분들도 많겠지만, 같이 가도 좋을것 같기도 합니다..

2006년 9월 3일 일요일

기획자 없는 게임 개발은 가능할까?

다음 링크는 한동안 일부 게임 개발 관련 커뮤니티에 광풍을 불고왔던 토론 게시물입니다..

(링크) 기획자 없는 게임 개발은 가능할까?

만약 아직 안 읽어보셨다면 굳이 링크를 클릭하실 필요는 없습니다. 제 관점에선 약간 삐뚤어진 발제에서 시작해서 서로간에 가시돋힌 공방을 주고 받다가 흐지부지 끝난 토론이라고 생각하니까요. 윗 글에서 다루어진 논의들은 대부분 엇갈려 있어서 별 의미가 없는 것들입니다. 결국 기획, 프로그램, 그래픽 중에 어느 한 파트라도 허술한 결과물을 내놓는다면 제대로 된 게임이 나올수가 없으니까요. 다만 제가 보기에 업계가 지향해야 할 방향과 관련해서 한가지만 짚어볼까 합니다.

기획자, 프로그래머, 디자이너가 작업을 하고 있습니다. 여기서 문제. 누구의 작업이 잘못된 채로 진행됐을때 가장 큰 복구 비용이 발생할까요?

정답은, 시기적으로 먼저 작업하는 사람의 결과물이 잘못될수록, 이후의 작업이 크게 의존하는 작업물이 잘못될수록 복구 비용이 커지게 됩니다. 윗 글의 문제는 여기에 있습니다. 누가 하는 작업인가가 아니라 언제 하는 작업인가에 초점을 맞춰야 합니다. 앞에서 하는 작업은 나중에 하는 작업에 영향을 미치게 되고, 특히 프로젝트의 가장 초기에 하는 작업들은 전체 프로젝트의 방향을 결정하는 작업이 되므로 더 크게 의존하는 작업이 됩니다. 기획자가 성토의 대상이 된것은 기획자가 싫어서가 아니라 기획자가 가장 먼저 작업하는 사람이기 때문입니다. 비슷한 경우를 다른 포지션에서도 찾아볼 수 있습니다. 다른 프로그래머들이 모두 의존하는 핵심 공통 모듈을 만드는 프로그래머나 다른 디자이너들이 모두 의존하는 원화를 디자인하는 디자이너도 비슷한 정도의 책임을 지게 됩니다. 그렇지만 게임 개발의 전체 프로세스를 감안하면 기획자의 책임이 가장 큰 것임은 부인할 수가 없습니다.

한국 영화 산업이 지금과 같이 발전하게 된 계기가 무엇이라고 생각하십니까? 어떤 인터뷰 기사에서 읽은건데, "대본이 나오면 그대로 찍을 수 있게 되면서" 라고 하더군요. 그 이전에는 감독이 느낌대로 찍으니 예산을 정확히 세울수가 없었는데, 90년대가 되면서 대본이 나오면 대본대로 예산을 잡아서 찍고, 실제로 예산을 집행해보면 처음에 세웠던 예산에서 몇% 범위의 오차 안에서 제작이 되면서 산업이라고 불릴만한 수준까지 올라갔다고 합니다. (이 인터뷰 원문이 어딨는지 모르겠는데, 나중에 찾으면 추가하겠습니다) 감독이 느낌대로 찍느라 예산이 고무줄처럼 늘어났다니, 어디서 들어본 얘기같지 않습니까? 결국 게임도 산업이 되려면 대본이 나오면 그대로 결과물이 나오는 수준까지 가야한다고 봅니다. 처음에 예산을 세우면 그 예산의 몇% 범위의 오차 안에서 제작이 완료되어야 산업이라고 부를만한 수준이 되는겁니다. 물론 이렇게 되면 더더욱 자본에 종속될지도 모릅니다. 하지만 이렇게 가지 않으면 모험 자본이 아닌 정상적인 자본은 게임업게에 들어오지 않게 되고, 마찬가지로 보수적인 속성을 지닌 대형 자본들도 게임업계에 들어오지 않게 됩니다. 결국엔 한탕을 노리는 자본들만 들어오는 뜨내기판 야바위 시장에 머무를 수 밖에 없습니다.

이렇게 가려면 기획이 더 단단해지는 수밖에 없다는게 제 생각입니다. 프로그램이나 그래픽은 정량적인 작업입니다. 프로그램은 매니지먼트 방법론도 있고 디자인은 작업량을 측정할 수도 있습니다. 하지만 기획은 그렇지가 않습니다. 영화 한편 찍으려면 아무런 결과물 없이 대본 하나만 2년을 쓴다고 하는데, 기획 파트에서도 이런 정도의 사전 작업 방식이 도입되어야 합니다. 기획 하나 받으면 다른 파트에서 아무 생각없이 무비판적으로 그냥 그대로 만들기만 하면 개발이 완료되는 수준의 기획이 나와야 이걸로 정확한 예산을 세울 수 있고 게임이 산업으로 자리잡을 수 있다고 봅니다.

현재 대다수의 개발사들에서 프로토타입을 만들어 플레이해보고 재미없다 싶으면 버리고 다시 만들기를 반복하는 trial & error 방식으로 게임을 개발하고 있고, 이러한 개발 방식에 맞추어진 현재의 기획 기법으로는 산업화가 가능한 수준의 기획이 나올수가 없습니다. 하지만 기획을 하시는 분들의 목표는 영화 대본처럼 정밀한 수준의 기획이 되어야 하고, 이를 위한 방법론을 개발하지 않는다면 기획자들은 계속 불신을 받을 수 밖에 없을테고, 게임 산업도 야바위판을 벗어날 수가 없을겁니다. 좋든싫든 원했든 원하지않았든, 현재 게임 업계가 한단계 도약할 수 있는 동력은 기획기법의 발전에 달려있다고 봅니다.

그렇다면 기획기법이 어떻게 발전해야 할까요? 재미는 불분명한 요소이므로 아예 프로토타이핑을 하지 않고 기획할수는 없지만, 프로토타입을 여러사람이 달라붙어서 여러번 만든다는건 비용과 시간, 개발팀의 사기 면에서 큰 문제가 있습니다. '조엘 온 소프트웨어'를 보면 넷스케잎이 시장에서 밀려나게 된 원인으로 소스 코드를 갈아엎은점을 꼽고 있는데, 프로토타입을 직접 만들고 그 소스를 갈아엎는 일을 반복하는 것은 기획팀에게는 개발 과정의 진전일지라도 프로그램팀에게는 치명적인 타격이 됩니다. 따라서 프로토타입을 만들때는 가능한한 프로토타입을 프로그램팀이 직접 개발하지 않는 방식으로 가야 합니다.

요즘엔 많은 게임들이 MOD 툴을 공개하고 있는데, 이러한 툴들을 이용해서 스크립트를 작성하여 룰을 검증하는 형식으로 기획요소를 점검해야 합니다. 그러므로 프로토타입을 만들때는 쉽게 만들고 확실히 버린다는 생각을 갖고 만들어야 합니다. 이러한 개발 방식에 가장 적합한 것이 MOD입니다. 그러므로 기획팀 안에 원활한 프로토타이핑을 위해 몇가지 MOD툴을 다룰 줄 아는 스크립터가 한명은 포함되어야 하고, 기획팀이 자체적으로 프로토타이핑을 상당부분 해결하는 방식으로 가야한다고 봅니다. 즉, 초기 기획이 고정되지 않은 상태에서의 프로토타이핑 자체도 기획의 일부라는 것입니다.

그럼 프로그램팀과 디자인팀은 그 시간에 무엇을 하느냐. 기획의 틀이 잡히기 전에는 해당 프로젝트에 속하는 프로그램팀과 디자인팀을 아예 구성하지 않는 것(!)이 제가 생각하는 가장 바람직한 모델입니다. 기획팀이 스크립트를 이용한 프로토타이핑을 통해 기획을 고정한 후에 개발팀을 확충해 나가는 방식으로 팀의 인원수를 적정하게 유지하고 추후의 개발 과정을 단축시킬 수 있습니다.

이 모델이 현실적으로 가능할까요? 제 생각엔 가능할것 같은데, 혹시 이미 이렇게 하고 있는 회사가 있다면 알려주시기 바랍니다.

블로그를 다시 시작합니다..

처음 블로그를 만들때는 블로깅을 하겠다는 생각보다는 힘들게 작성해서 게이머즈에 기고했던 두 편의 글을 웹상에 띄워놓아야 겠다는 생각이 더 컸습니다. 역시나 그런 안일한 생각 때문이었겠지만, 그 이후에 글이 뚝~ 끊어졌죠. -_-

그리고 시간이 꽤 흘렀고, 이제 다시 블로깅을 해볼까 합니다. 블로그스팟이 좀 무거운 사이트라 다른곳으로 옮길까도 싶었지만, 새로 다른 사이트에 가입하는 것도 번거로운 일이고, 다른 사이트라고 뭐 딱히 나을게 있겠나 싶기도 하고..

블로그의 방향은 아무래도 제가 현재 업으로 삼고 있는 게임 개발이 되겠죠.. 하지만 그 외에도 아무거나 생각나는데로 적어볼까 합니다. 어차피 방문자도 없을테니 좀 과격하게 맘대로 적어도 되지 않을까 싶은데, 그래도 사람 맘이라는게 자기검열이 완전히 없어질수는 없으니.. 좀 약하다 싶으면 "아, 얘가 지레 겁먹고 자제했구나~" 하고 생각하셔도 되지 않을런지.

그리고, 이왕 개인블로그로 활용하기로 마음먹은 이상, 퇴고는 별로 하지 않을 생각입니다. 정도의 차이는 있겠지만, 누구나 남에게 보여지는 이미지에 민감한 법이고, 저도 마찬가지 이유로 글을 쓸때는 상당히 퇴고를 많이 하는 편인데, 블로깅을 하면서까지 그렇게 퇴고를 많이 거치면 저 스스로 힘이 빠져서 글을 올릴수가 없을것 같네요.. 뭐 이런 이유로 좀 이상하거나 덜 마무리된 글이 올라올수도 있을텐데, 그렇다고 거기에 대해 태클이 들어오면 제가 안 삐진다는 뜻은 아닙니다. 소심한 B형이라. -_-

2006년 3월 15일 수요일

물리 엔진

다음 글은 월간 게이머즈 2005년 9월호에 실렸던 내용입니다..

8월호에 들어간 Shader에 대한 내용은 자료도 많은데다 이미 알고 있던 내용을 알아보기 쉽도록 정리하는 수준이라 별 어려움이 없었지만, 물리엔진은 직접 써본 일도 없고 해서 꽤 난감했습니다.. 결국 공개 물리 엔진인 ODE와 상용인 NovodeX의 평가판을 받아다 돌려보고서야 대충 원고의 틀을 잡을 수 있었습니다.. 나름대로 꽤 노력해서 쓴 글인데, 개발자 대상의 잡지가 아니어서인지 아무런 피드백이 없더군요.. 그리고 이 글을 끝으로 '미래시대' 코너 자체가 없어졌습니다;; -_-;;

미래시대 (월간 게이머즈 2005년 9월호 수록 내용)
글 / 토끼털 두른 셋쇼마루님

Physics Engine
[물리 엔진]

게임 내의 오브젝트를 대상으로, 질량ㆍ속도ㆍ마찰ㆍ공기 저항 등의 수치를 이용하여 뉴턴 역학 모델을 시뮬레이트하는 프로그램을 통칭한다.

물리 엔진이란 무엇인가
최근의 게임계 기술에 관심이 있는 사람이라면, 근래에 들어 각광받기 시작한 '물리 엔진'이라는 고유명사를 들어본 일이 있을 것이다. 『하프라이프 2』나 『헤일로 2』에 현실적인 물리 연산을 위해 하복(Havok) 물리 엔진이 사용되었다더라는 등의 얘기를 들으며, 한번쯤은 물리 엔진이 과연 게임 내에서 어떤 기능을 하는 프로그램인지 궁금하게 여긴 사람도 있을지 모른다. 만약 이러한 궁금증을 느낀 적이 있다면, 이번 회에서 해답을 찾을 수 있을 것이다.

'물리 엔진(physics engine)'이라는 명칭을 바탕으로 생각해보면, 게임에 있어 물리 엔진이란 곧 '자연계의 물리 현상을 게임 내에서 흉내 내는(simulate) 프로그램'일 것이다. 그렇다면, 물리 엔진을 이용하여 어떤 종류의 물리 현상을 시뮬레이트하는 것일까?

CPU의 연산 능력에는 한계가 있으므로, 모든 물리 현상을 게임 내에서 완벽하게 구현하거나 범지구적인 거대한 자연계의 현상까지 시뮬레이트하는 것은 물론 불가능하다. 앞서 정의한대로, 물리 엔진은 다양한 변수에 기초하여 게임 내의 오브젝트의 운동에 뉴턴 역학(Newtonian mechanics; 주 1)을 적용하여 시뮬레이트하는 프로그램이다. 즉, 현재의 물리 엔진은 실시간으로 '게임 내'라는 국지적인 범위 안에서 뉴턴 역학 모델을 시뮬레이트하는 것이 주목적이다. 물리학의 발전에 따라 뉴턴 역학과 상대성 역학은 '고전 역학'이 되었고, 현재의 물리학에서는 양자역학(quantum mechanics)에 따라 복잡한 물리 현상을 설명하고 있지만, 우리 눈에 보이고 우리 주변의 생활 속에 있는 사물들의 운동은 일반적인 뉴턴 역학으로도 충분히 설명할 수 있다. 물리 엔진은 이러한 뉴턴 역학을 실시간으로 계산하여, 게임 내에서 다양한 오브젝트에 가해지는 힘과 운동 상태와의 관계를 계산하는 프로그램인 것이다.

하나의 게임 내에는 게임 논리, 렌더링 엔진(rendering engine), 네트워킹, 물리 엔진, 사용자 입력 처리 등의 수많은 프로그램이 결합되어 있다. 물리 엔진은 이중 게임 내부에 논리적으로 뉴턴 역학 공간을 구성하고, 이 공간 안에서 일어나는 물리 현상을 시뮬레이트하는 일을 하게 된다. 즉 물리 엔진은 논리적으로만 공간을 구성하기 때문에 물리 엔진이 연산한 움직임을 화면에 그려주는 작업은 다른 부분에서 맡아서 하게 되는데, 이 부분이 우리가 흔히 그래픽 엔진이라고 부르는 렌더링 엔진이 된다.

물리 엔진이 제공하는 기능
최근의 물리 엔진이 내세우는 가장 핵심적인 기능은 강체(剛體 rigid body)의 동역학(dynamics)과 충돌 검출(collision detection)이다. 이외에 부수적으로 입자(particle)나 파동(wave), 옷감(cloth), 래그돌(ragdoll) 등의 시뮬레이션을 지원하기도 한다. 이제부터 이들 각각에 대하여 알아보자.

강체의 동역학은 물리 엔진의 근간을 이루는 가장 중요한 학문이다. 강체란 외부에서 어떠한 힘을 가해도 모양과 크기가 절대로 변하지 않는 물체를 이르는 말로, 현실에서는 존재하지 않는 이상적인 물체이지만 물리 엔진 상의 시뮬레이션에서는 연산의 편이를 위해 각종 탈것이나 인체 등의 오브젝트를 모두 강체로 가정한다. 동역학이란 힘과 운동 상태와의 관계를 다루는 역학으로, 이를 응용하여 게임 내에서 등장하는 물체에 힘이 가해지는 현상이나 충돌 등을 시뮬레이트하여 다시 게임 내의 물체들의 상태에 반영하게 된다(주 2).

강체의 동역학을 시뮬레이트하기 위해, 물리 엔진은 강체ㆍ조인트ㆍ충돌ㆍ마찰 등을 구현하여 게임 제작자들이 사용하기 쉬운 형태로 제공한다. 게임 제작자는 물리 엔진이 지원하는 이러한 기능을 이용하여 흔들리는 다리, 밧줄, 로봇 팔, 탈것들, 인체 등의 다양한 오브젝트가 가진 물리적인 특성을 게임 내에서 효과적으로 구현할 수 있는 것이다.


그림 1 - 물리 엔진을 이용한 시뮬레이션

충돌 검출은 모든 게임이 필요로 하는 기본적인 기능이다. 물리 엔진이 논리적으로 공간을 구성하고 그 공간 안에서 일어나는 현상을 시뮬레이트하는 역할을 담당하기 때문에, 충돌 검출은 물리 엔진에서 도맡게 된다. 예를 들어 레이싱 게임에서 게이머의 차량이 경쟁자의 차량을 들이받아 차량이 파손되거나, 비행 시뮬레이션 게임에서 게이머의 기체가 지면에 추락하는 등의 상황에서는 강체의 기본적인 충돌 외에 다른 종류의 시뮬레이션이 필요하다. 이런 경우에 적절한 처리를 하기 위해 충돌 검출이 필요하게 된다.

입자ㆍ파동ㆍ옷감ㆍ래그돌 등은 모두 강체가 아닌 탓에 이들의 시뮬레이션은 강체의 동역학이라는 물리 엔진의 기본적인 개념에서는 벗어나 있다고 볼 수 있지만, 게임 상에서 현실감 있(어 보이)는 물리 현상을 표현하기 위해 물리 엔진에서 부수적으로 지원하는 기능들이다. 예를 들어, 입자는 눈이나 비, 불꽃, 화산재 등이 흩뿌려지는 현상을 나타내는데 사용되고, 파동은 물결, 옷감은 말 그대로 바람에 옷이나 깃발이 날리는 움직임 등을 나타내는데 필요하다.

래그돌(꼭두각시) 시뮬레이션은 최근의 FPS(First-person Shooter; 1인칭 슈팅) 장르에서 많이 사용되는 기능이다. 예를 들어 캐릭터가 총탄에 맞아 쓰러지는 경우, 넘어지는 동작을 모션 캡처 등의 전통적인 방법으로 제작할 경우 동작이 몇 가지로 한정될 수밖에 없어 게임을 장시간 플레이하는 게이머에게 어색한 느낌을 주게 된다. 이때 물리 엔진의 래그돌 시뮬레이션을 이용하면 게임 내의 상황과 조건에 따라 수많은 종류의 쓰러지는 동작을 실시간으로 연산하여 표현하게 되므로, 총탄에 맞아 쓰러질 때마다 다른 동작을 연출하는 캐릭터를 만들어낼 수 있는 것이다.


그림 2 - 래그돌 시뮬레이션의 예

물리 엔진의 작동 과정
예를 들어, 레이싱 게임을 만든다고 가정해 보자. 레이싱 게임 내에는 주행 과정에 영향을 미치는 요소로서 자동차ㆍ트랙ㆍ벽면ㆍ바람 등이 있고, 이외에 주행 과정에 크게 영향을 미치지는 않지만 현실적인 시각 표현을 위해 빠질 수 없는 요소인 배경 묘사가 있다. 이 모든 요소는 게임의 현실감을 위해 최대한도로 구현되어야 하지만, 자동차와 트랙 바닥, 벽면, 바람은 주행 과정에서 물리적으로 영향을 미치는 물체이므로 물리 엔진 상에서 구현되어야 하고, 렌더링 엔진은 물리 엔진 상에 구현된 요소 중 눈에 보이지 않으므로 그릴 필요가 없는 바람을 제외한 자동차ㆍ트랙 바닥ㆍ벽면과 (물리 엔진 상에는 구현되지 않았지만 시각적으로 필요한) 배경을 그리는 식으로 역할을 분담하게 된다. 게임 내에서 논리적으로 이 모든 것을 구현하면서 이와 같이 역할을 구분하여, 물리 연산이 필요한 물체는 물리 엔진을 활용하고 시각적인 표현이 요구되는 부분은 렌더링 엔진을 이용하도록 구성하면 레이싱 게임의 기본적인 뼈대가 이루어진다.

물리 엔진은 타임 스탬프를 통해 PC의 성능과는 관계없이 동일한 게임 플레이를 제공한다. 게임의 논리 부분에서는 물리 엔진에서 제공하는 인터페이스를 이용하여 논리적으로 물리 공간(역학 시스템)을 구성하고, 이 공간 안에서는 임의의 주기에 따라 타임 스탬프를 받는다. 타임 스탬프는 이전의 상태에서 얼마나 시간이 흘렀는지를 나타내 주는 데이터로, 이 데이터를 받은 물리 엔진은 시간이 경과한 만큼의 시뮬레이션을 통해 역학 시스템에 오브젝트의 다음 상태 변화를 전달한다. 예를 들어 레이싱 게임에서 차량이 벽면에 부딪히는 경우, 성능이 좋은 PC에서는 0.01초마다 물리 엔진에 타임 스탬프가 넘어가게 되어 0.01초가 지난 다음의 상태로 갱신되고, 성능이 떨어지는 PC에서는 0.1초마다 타임 스탬프가 넘어가 0.1초 이후의 상태로 바로 반영되어 갱신되는 식이 된다. 이런 방식을 통해 PC의 성능에 관계없이 게임 내에서 동일한 물리 효과를 반영할 수 있는 것이다.


그림 3 - 물리 엔진이 실제 게임에서 동작하는 흐름

종전에는 게임 개발사에서 게임 논리 외에 렌더링 기능과 물리 연산 기능 등의 여러 가지 구성 요소를 모두 직접 구현해야 했지만, 이러한 구성 요소들이 전문 개발사에 의해 독립적으로 개발되면서 렌더링 엔진과 물리 엔진 등이 이와 같이 각각의 전문적인 엔진으로 대체되어, 게임 개발사에서는 게임 개발시 게임 논리의 구현에만 개발력을 집중할 수 있게 되었다. 물론 이러한 변화의 근간에는 게임의 논리 자체가 점점 더 복잡해지면서, 다른 요소는 차치하고라도 게임의 논리만을 구현하는 일조차 어려워지고 있는 개발 현장에서의 현실적인 요인이 깔려있을 것이다.

지금까지 물리 엔진의 정의와 기능, 동작 방법을 알아보았다. 앞으로 물리 엔진은 PC 및 게임 콘솔의 성능이 발전함에 따라 더욱 정교해질 것이고, 아직까지 지원되지 않는 다양한 물리 모델이 지원되어 이제껏 체험해 보지 못한 풍부한 게임 플레이를 제공해 줄 것이다(주 3).



그림 4 - 지난 7월 22일 일본 도쿄에서 있었던 '플레이스테이션 미팅 2005' 행사에서 공개된 PS3의 테크니컬 데모의 한 장면. PS3가 표현할 수 있는 물리 시뮬레이션의 예시로서, 기본적인 강체 시뮬레이션이나 충돌 검출, 오브젝트 간의 상호작용 등은 물론 포탄의 탄도, 직물, 물보라, 수면의 움직임 등 다양한 물리 계산이 한꺼번에 구현될 수 있음을 보여주고 있다

(주 1) J. C. 맥스웰의 전자기론과 함께 고전물리학의 기초를 이룬다. 뉴턴은 만유인력과 몇 가지 운동법칙을 바탕으로 수학적인 방법을 사용하여 지구를 비롯한 여러 천체의 운동을 성공적으로 기술했다. 19세기 말까지는 그 근본원리가 모든 역학현상에 적용되는 것으로 여겨졌지만, 아인슈타인이 상대성이론을 확립하면서 뉴턴 역학에서 제시된 시간공간의 절대성 개념에 근본적인 변혁을 초래하였다. 또 원자분자의 현상이 분명해짐에 따라 그 적용범위도 제한되어, 오늘날 물체의 속도가 빛의 속도에 가까울 경우에는 상대성이론을, 미시적 세계에서는 양자역학을 각각 대신 적용하고 있다. 현재는 상대성역학에 상대되는 개념으로서 뉴턴의 법칙에 기초한 역학을 뉴턴 역학이라 하고, 상대성역학ㆍ뉴턴 역학 등 양자역학 이전의 역학을 고전역학이라 하기도 한다. (출처 : 네이버 백과사전)

(주 2) 물체의 운동의 시간적 변화는 물체에 작용하는 힘의 방향으로 일어나며 힘의 크기에 비례한다는 법칙을 '운동의 제 2법칙'이라 한다. 운동의 변화를 힘과 가속도로 나타내면, 'F(힘) = ma(질량 가속도)'가 된다. 즉, 물체에 힘이 작용할 때 물체는 그 힘에 비례하여 가속도를 받는다. 이때 비례상수를 질량이라 하며, 이 식을 '뉴턴의 운동방정식'이라 한다(출처 : 네이버 백과사전). 물리 엔진에서 시뮬레이션에 사용하는 각종 수식은 대부분 이 법칙에 근간을 두고 있다.

(주 3) 게임 엔진 시장에서 에픽 게임즈의 언리얼 엔진, 이드 소프트웨어의 퀘이크 엔진 등이 널리 알려져 있는 것처럼, 물리 엔진계에서는 하복 사의 하복 엔진과 AGEIA 사의 PhysX 엔진(일명 NovodeX) 등이 널리 채택되어 쓰이고 있다. 최근 SCE가 이 양대 물리엔진 제작사와 계약을 체결하고 PS3의 개발툴에 이들 엔진 라이브러리를 포함시킨다고 발표한 것은, 앞으로의 게임 제작에 있어 물리엔진의 역할과 비중이 더욱 늘어날 것임을 시사한다고 봐야 할 터이다.

2006년 3월 9일 목요일

Shader

다음 글은 월간 게이머즈 2005년 8월호에 실렸던 내용입니다..

우연찮게 게이머즈의 기술관련 컬럼에 외부 필자가 필요하다고 해서 하게 되었는데요.. 이전부터 잡지사의 원고료가 짜다는 말은 많이 들었지만, 실제로 겪어보니 정말 짜더군요;; 페이지 수로 따지니까 그런것도 있겠지만, 이런 류의 원고는 원고 작성에 필요한 참고서적 값도 안 나올듯 합니다.. 어찌됐든 기술에 문외한 일반인을 대상으로 한 컬럼이니 감안하시고, 제가 썼던 초고가 아니라 잡지사 기자분이 약간 다듬어 주신 내용이니까 읽기에 편할겁니다.. 라곤 하지만 단 2회 쓰고 잘린걸 보면 이 내용도 일반인 대상으로는 좀 어려웠을지도 모르겠네요.. ^^;;

미래시대 (월간 게이머즈 2005년 8월호 수록 내용)
글 / 토끼털 두른 셋쇼마루님 (마감날짜에 쫓겨 급조한 필자명입니다.. ㅠ_ㅠ)

Shader
[셰이더]
기존의 경직된 3차원 그래픽 파이프라인(주 1)에 유연성을 주기 위하여 만들어진, 그래픽 파이프라인 상의 프로그래밍 가능한 구성요소를 통칭한다.

3차원 그래픽 파이프라인
PC용으로 등장하는 최신 게임을 즐기려 할 때면 어김없이 등장하여 게이머의 머릿속을 어지럽히는 단어가 있으니, 그 이름 ‘셰이더’. 오늘은 이 셰이더의 정체를 파헤쳐보고, 앞으로의 발전 방향도 짚어보도록 하자.

앞서 정의한 내용에 따르면, 셰이더란 ‘기존의 경직된 3차원 그래픽 파이프라인’에 ‘유연성’을 주기 위해 만든 것이라고 했다. 그렇다면 기존의 경직된 3차원 그래픽 파이프라인이 무엇인지, 왜 경직되었다고 말하는지를 알아야 이야기를 풀어갈 수 있을 것이다.

우선, 일반적으로 3차원 그래픽 가속 하드웨어(즉 3D 그래픽 카드)에서 3차원 그래픽을 어떻게 지원하는지 살펴보자. 이 글에서는 우리가 흔히 접하는 DirectX를 기준으로 설명하도록 하겠다. 다음은 마이크로소프트에서 제공하는 DirectX 개발도구에서 발췌한 Direct3D의 그래픽 파이프라인의 개략도이다.

그림 1 - Direct3D의 그래픽 파이프라인

뭔가 알 수 없는 단어들이 잔뜩 나오는데, 우리가 이걸로 당장 3차원 게임을 개발할 것도 아니니 자세히 알 필요는 없다. 대강 이게 뭘 하는 것인가만 살펴보자.

맨 처음에 정점(vertex) 데이터와 원시(primitive) 데이터가 들어간다. 여기서 들어가는 정점 데이터와 원시 데이터가 바로 우리들이 소위 말하는 폴리곤이다. 3차원 화면 안에 들어갈 폴리곤 덩어리가 데이터로 입력되는 것이다.

그림 2 - 폴리곤은 이와 같이 점과 선으로만 구성되어 있다

테셀레이션(tessellation)이란 ‘공간분할’이라고도 하는데, 필요에 따라 다각형의 폴리곤을 삼각형으로 쪼개는 등의 작업을 한다. 이건 우리의 관심사 밖이니 그냥 넘어가도록 하겠다.

그 다음 작업은 정점 처리(vertex processing)이다. 이것은 정점의 좌표를 필요에 따라 변환하고 정점 단위의 재질 속성을 준 다음, 정점 단위의 안개를 주고 정점 단위의 광원을 처리하는 작업이다. 여기서 재질 속성과 안개와 광원은 DirectX에서 미리 지정한 몇 가지 방식을 결합하여 사용한다.

정점 처리가 끝난 폴리곤은 기하 처리를 거치게 된다. 기하 처리란 폴리곤 데이터를 화면에 표시할 수 있는 데이터로 바꾸고, 화면에 그릴 필요가 없는 부분을 빼는 등의 작업을 말한다.

이 다음에 등장하는 픽셀 처리에 앞서 텍스처 평면이 입력되는데, 화면에 입체감 입게 보이는 텍스처도 실제로는 평면이기 때문에 ‘텍스처 평면’이라고 부른다. 텍스처 샘플러는 이 텍스처를 읽어 들여 적당한 해상도로 변환하는 역할을 한다.


그림 3 - 폴리곤에 입히는 텍스처는 이와 같이 평면 이미지이다

그 다음 단계는 픽셀(주 2) 처리로서, 폴리곤과 텍스처를 결합하여 화면에 찍을 점 하나하나를 생성하는 단계라고 할 수 있다. 여기서 폴리곤과 텍스처를 결합하는 방식은 DirectX에서 미리 지정한 몇 가지 방식을 혼합하여 사용한다.

마지막에는 화면에 대한 후처리를 거쳐 생성된 그림을 화면에 뿌려주는 픽셀 렌더링을 수행하게 된다. 이 단계에서는 투명도, 깊이, 안개 등을 처리하여 최종적으로 그림을 생성하고 이를 화면에 뿌려준다.

그림 4 - 셰이더를 적용하지 않고 기존의 그래픽 파이프라인을 거쳐서 폴리곤과 텍스쳐를 결합하면 이와 같이 단정한(?) 결과를 얻을 수 있다

왜 셰이더인가
이와 같이, 기존 방식대로의 고정 그래픽 파이프라인을 사용하게 되면 결과적으로 모든 게임이 비슷비슷한 화면을 보여줄 수밖에 없게 된다. GPU의 성능이 발전함에 따라 한 화면에 그려줄 수 있는 폴리곤의 수와 텍스처의 양은 늘어만 가는데, 이러한 게임들이 화면에 보여주는 물체의 재질이나 광원은 모두 비슷비슷한 탓에 모든 게임이 비슷한 외형을 지니게 되자, 이는 표현상의 한계로 작용하게 된다. 따라서 개발자들이 고정 그래픽 파이프라인의 일부를 개발자가 만든 프로그램으로 대체할 수 있는 기능을 요구하게 되었는데, 이것이 구현된 형태가 바로 셰이더이다(주 3).

DirectX에서는 프로그래밍 가능한 정점 셰이더(programmable vertex shader)와 프로그래밍 가능한 픽셀 셰이더(programmable pixel shader)가 3차원 그래픽 파이프라인에서 개발자가 직접 개발한 코드로 대체할 수 있는 부분이 된다.

여기서 다시 3차원 그래픽 파이프라인으로 돌아가 보자. 파이프라인에 셰이더가 적용되면, 다음 그림과 같이 정점 셰이더와 픽셀 셰이더가 기존의 정점 처리와 픽셀 처리를 대신하게 된다. 실제로는 픽셀 처리 작업의 경우 2단계로 이루어져 있고, 픽셀 셰이더는 그 중에 1단계 부분만을 대체한다.

그림 5 - 셰이더가 적용된 3차원 그래픽 파이프라인

앞에서 정점 셰이더는 ‘정점의 좌표를 필요에 따라 변환하고, 정점 단위의 재질 속성을 주고, 정점 단위의 안개를 준 후, 정점 단위의 광원을 처리한다’고 말한 바 있다. 이 내용을 떠올려보면, 이 부분을 개발자가 만든 고유한 프로그램으로 대치했을 때 어떤 효과가 얻어질지 미루어 짐작할 수 있을 것이다.

예를 들면, 폴리곤으로 만들어진 사람의 모델에서 정점의 좌표를 변환하는 부분을 고쳐 관절의 꺾이는 부분을 부드럽게 해준다든가(정점 스키닝), 재질과 광원을 설정하는 부분을 고쳐 특별한 재질과 광원을 만들어 독특한 질감을 나타내는 등의 표현이 가능해지는 것이다.

고정 그래픽 파이프라인의 픽셀 처리 단계에서는 폴리곤과 텍스처를 그래픽 하드웨어가 제공하는 몇 가지 방식으로 결합하여 화면에 찍을 픽셀의 색상을 결정하게 된다. 이 단계에서 고유한 기능을 프로그램으로 구현하면, 폴리곤에 텍스처를 입히는 과정에서 그래픽 하드웨어가 제공하는 방식을 벗어난 독자적인 표현 방식을 표현해낼 수 있다. 예를 들어 평면 텍스처를 입혔는데도 텍스처가 울퉁불퉁해 보이도록 만든다던가(흔히 말하는 범프 매핑 등), 배경 이미지를 텍스처에 섞어 반사 효과를 준다던가(픽셀별 환경 매핑) 하는 기능들이 모두 픽셀 셰이더를 이용하여 구현되는 것이다.

그림 6 - 셰이더를 이용하여 엣지 글로우(edge glow) 효과를 적용한 예

그럼 왜 하필 다른 부분이 아닌 정점 처리와 픽셀 처리에만 셰이더를 적용하는 것일까? 이유는 간단하다. 다른 부분은 작업 자체가 정형화되어 있기 때문에, 프로그래머가 고유한 기능을 구현할 필요가 그다지 많지 않기 때문이다. 정점 처리와 픽셀 처리 부분을 고유한 프로그래밍으로 구현하면 화면에 나타나는 결과가 크게 달라지지만, 다른 부분에서는 그 효과가 미미하기 때문에 큰 의미가 없는 것이다.

현재의 셰이더는 용량상의 제약이 있고 명령어의 기능도 미약해서 구현하기 여간 까다롭지 않다. 하지만, PS3나 Xbox 360 등 차세대 게임기의 스펙에 의하면 화면 전체를 다양한 효과로 메우고도 남을 정도로 강력한 성능의 셰이더를 지원하고 있다. 현재의 게임에서 추구하는 그래픽은 실사와 같은 그래픽과 애니메이션풍의 그래픽, 이 두 가지 방향으로 나뉜다고 할 수 있다. 앞으로는 발전된 그래픽 하드웨어의 능력에 힘입어 이러한 두 방향의 그래픽이 더욱 향상됨은 물론이고, 우리가 예상하지 못했던 새로운 표현 기법들이 생겨날 것이다. PS3나 Xbox 360과 같은 앞으로의 하드웨어에서는, (실제 게임에 활용될지는 미지수이지만) 유화나 수채화 같은 그래픽의 실시간 구동도 가능한 수준에 이르렀다. 셰이더를 통해 앞으로 게임의 그래픽 표현이 어느 정도까지 발전할지를 지켜보는 것도 흥미로운 일이 될 것이다(주 4).

(주 1) 3차원 그래픽 가속 하드웨어에서 데이터를 처리하는 흐름을 나타내는 그림이 마치 수도관의 모습과 비슷하다 하여 붙여진 명칭.

(주 2) pixel. 화면을 구성하는 하나하나의 점을 의미하는 단어로, ‘화면 구성요소(picture element)’의 약자이다. 화소(畵素)라고도 한다.

(주 3) 최초로 셰이더를 탑재한 DirectX는 2000년 11월에 발표된 버전 8.0이지만, 그보다 훨씬 이전인 1999년 3월 출시된 SCE의 PS2에는 이미 CPU인 이모션 엔진 내에서 마이크로 코드(micro code) 프로그래밍을 통해 셰이더와 동일한 개념을 하드웨어적으로 지원하고 있었다. 이는 PS2가 당시로서는 개념적으로 한 세대 앞선 획기적인 하드웨어였음을 입증하는 대목이다.

(주 4) 스펙 상으로 보아, PS3에 포함되는 GPU인 RSX(Reality Synthesizer)는 엔비디아의 차세대 GPU인 G70을 90nm 공정으로 생산하고 성능을 향상시킨 제품으로 추정된다. 이는 PS2 당시 이모션 엔진을 통해 PC용 그래픽 하드웨어보다 한발 앞서 셰이더 개념을 도입했던 것과는 달리, PS3의 경우 적어도 그래픽 분야에서는 새로운 개념보다는 PC와 동시대의 GPU를 사용하는 식의 타협을 택했음을 의미하기도 한다. PS3와 Xbox 360의 GPU 성능은, 하드웨어 구조가 달라 정확히 비교할 수 없겠지만 성능상의 차이가 크지는 않다는 것이 일반적인 견해이므로, 차세대기들이 출시되는 시점에서는 이미 최신의 고급 그래픽 카드를 사용하는 PC와 그래픽으로 큰 격차가 나지 않는 상황이 될 것으로 보인다. 차세대기에서는 순수하게 게임 그 자체로 승부해야 하는 상황이 오게 된다는 뜻일지도……