꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by 알 수 없는 사용자
테크니컬 아티스트(Technical Artist)는 간단히 줄여서 TA라고 합니다. TA라는 명칭은 2009년정도만 해도 국내 게임 업계에서 생소한 명칭이였지만 이제는 업계에서 모르는 사람이 없는 단어가 되었고 TA를 하겠다고 지원하는 신입 개발자도 많아졌습니다.

그런데 TA에 대해 잘못 알고 있는 사람들도 종종 보게 되고 명함에 TA라고 써있으나 제대로 된 역할을 하고 있지 못하는 경우도 있어서 TA를 바라보는 개인적인 생각을 좀 적어보려고 합니다.

하지만 TA에 대해 애정남이 정해준 것도 아니고 브리태니커 백과사전에 써있는 것도 아니므로 저의 개인적인 주관이 반영된 내용입니다. 또한 게임 개발 업계는 가장 다이나믹하게 구조가 변화하는 곳들 중 하나이기 때문에 1년 뒤에는 상황이 달라져 있을 수도 있습니다. 그리고 늘 그렇듯이 직책이나 직급의 명칭은 회사마다 의미가 다르기 때문에 절대적인 것은 아닙니다.

저도 유행 따라 짤방 하나 투척...


TA는 프로그래머인가?

넥슨 컨퍼런스에서 TA에 관한 패널 토크에 패널로 참여를 준비하기 위해서 그래픽 아티스트들이 TA에 대해 어떻게 생각하는지 간단히 조사했던 적이 있었습니다. 당시 조사 자료는 회사 하드 어딘가에 있어서 지금은 기억나지 않지만 가장 인상적이였던 대답은 '프로그래머' 라는 대답이였습니다.

그런데 프로그래머에게 똑같은 질문을 하면 어떤 대답이 나올까요? 아직 설문 조사를 해보진 않았지만 정말 다양한 대답이 나올 것으로 예상됩니다. 하지만 '프로그래머다' 라는 대답은 나오기 힘들 것으로 생각됩니다.

여담이지만 프로그래머들 사이에서도 '프로그래머' 라는 호칭이 붙기 위한 기준이 참 다양하더군요. 경험상 프로그램을 잘 하는 사람일 수록 '프로그래머' 에 대한 기준이 엄격했던 기억이 납니다.

저는 TA가 아티스트라고 생각합니다. 단어에서 이미 답이 나와 있거든요. 테크니컬한 아티스트라는 뜻입니다. (Technical) Artist 라는거죠. 어쨋든 아티스트인데 테크니컬하다는 단어입니다.

비슷한 경우가 또 있는데요, 비주얼 프로그래머라는 역할이 있더군요. 이 사람은 프로그래머입니다. 시각적인 효과에 관련된 프로그래밍을 해서 비주얼 프로그래머라고 부르는 것으로 생각됩니다. 액션 영화에서 무술을 담당하는 무술 연기자는 무술가일까요 연기자일까요? 시작을 무술로 했더도 저는 연기자라고 생각합니다.

그런데 '문법상 TA는 아티스트다' 라는 말을 하려는건 아닙니다. TA가 하는 역할을 자세히 살펴보면 프로그래머는 아니라는 사실을 알 수 있습니다.

TA의 역할 분류
  • 엔지니어링(Engineering) - 뭔가를 만들어내는 작업
    • 쉐이더 개발에 참여
    • 맥스 스크립트 혹은 MEL 스크립트 등을 이용한 툴로 아티스트 생산성 향상
    • 최적화 되고 진보된 캐릭터 리깅을 제공함으로써 애니메이터 생산성 향상
    • 프로그램 팀에 샘플 데이터 신속히 제공
  • 문서화(Documentation) - 뭔가를 알려주는 작업
    • 엔진 분석 및 아티스트용 작업 지침서 제작
    • 아티스트용 개발 규약(Convention) 설정 및 배포
    • 새로운 툴 도입 및 전파 - 예를 들면 CAT이나 모션 빌더 등. 포토샵의 신기능 소개라던가.
  • 조율(Coordination) - 원활한 커뮤니케이션
    • 프로그래머의 작업 대비 시각적인 개선 효과를 아티스트 관점에서 판단하여 작업 우선 순위를 결정할 때 의견 제시
    • 오브젝트 배치 툴 등 인하우스 툴을 개발할 때 가장 적은 비용으로 효과적인 기능을 수행할 수 있도록 의견 제시하고 오버 엔지니어링이 되지 않도록 함
    • 각종 회의 상황에서 프로그래머와 아티스트간 동시 통역
이 중에서 프로그래머라고 볼 수 있는 항목은 쉐이더와 스크립트 툴 정도입니다. 전반적인 TA의 역할은 프로그래머 이외의 것들이 더 많죠.

하지만 쉐이더와 스크립트 역시 프로그래머라고 보기에는 무리가 있다는 생각입니다. 게임에서 쉐이더는 최적화라던가 게임의 그래픽 옵션 연동이라던가 저사양 그래픽카드 지원 등 꽤나 하드코어적인 이슈들이 많아서 프로그래밍만으로 오랫동안 고생해온 사람들에게도 쉽지 않은 일입니다.

스크립트 역시 그래픽 아티스트의 단순 반복 작업을 개선해주는 간단하고 귀여운 것들이라면 상관 없지만 오브젝트를 배치하는 등 게임의 핵심적인 기능을 스크립트 툴로 구현하려고 하는 시도는 좋지 않습니다. 예를 들어 툴을 개발한 스크립터가 퇴사한 뒤에 게임의 핵심적인 기능을 수행하는 툴을 수정하거나 업그레이드 해야할 일이 생기면 곤란해집니다. 아마 대부분의 프로그래머들이 맥스 스크립트 자체를 들여다보는 것을 꺼려할테고 들여다보더라도 조악한 수준의 스파게티 코드를 보면 기겁을 할테니까요. 혹시나 천재적인 스크립터가 아름다운 구조로 툴을 만들었을 수도 있겠지만 그런 사람이라면 맥스 스크립트로 툴을 만들지 않았을거란 생각입니다.

마야의 MEL 스크립트는 그나마 나은듯 하지만 게임 개발 환경에서 핵심적인 기능을  맥스 스크립트에 의존하게 될 경우 치명적인 단점이 또 있습니다. 맥스 자체가 버그 덩어리라는 점입니다. 오브젝트 20개에서 잘 되던 툴이 200개가 되면 메모리 오류가 나면서 맥스가 뻗어버리는 일들이 정말 많거든요. 이런 일이 생기면 오토데스크에 건의해서 맥스를 고쳐달라고 해야할까요?

사실 프로그래머로서 재능이 있는 TA들이 종종 있습니다. 또한 프로그래머 못지 않은 쉐이더 코드를 만들 수 있는 사람들도 있구요. 하지만 예외적인 경우 말고 일반적으로는 TA가 만드는 쉐이더 코드는 프로그래머와 대화하기 위한 도구로 사용하는 것이 가장 바람직하다고 생각합니다.


전부 다 해야 하는건가?

역할 분류를 보면 참 다양한 일을 하는게 TA입니다. 그렇다면 이 모든 것들을 다 해야 할까요? 그렇지 않습니다. 대부분의 경우 현재 팀원의 능력에 맞게 본능적으로 역할을 분배하게 됩니다.

사실 TA라는 명칭이 생기기 전부터 TA의 역할은 누군가에 의해 수행되어 오고 있었습니다. 대부분 경험 많은 그래픽 팀장이나 아트 디랙터에 의해서 작업 효율 향상이라던가 작업 프로세스의 문서화라던가 프로그래머와의 커뮤니케이션이 이루어져 왔습니다.

앞서 적었던 TA의 역할 분류에서 문서화라던가 조율에 관한 부분들은 수 많은 실전 경험 없이는 수행하기 어려운 역할이며 'TA가 교육될 수 있는 것인가' 하는 질문에서 가장 어려운 부분이기도 합니다. 반면에 엔지니어링에 관한 부분은 프로젝트를 수행해본 경험이 별로 없어도 가능하고 교육도 가능합니다.


TA의 성장 트리


요즘 기준에서 TA가 되려면 어떻게 해야하는지를 생각 해보면 두 가지 정도 방법이 있는 것 같습니다.
  1. 쉐이더나 스크립트를 배워서 엔지니어로 입사한 뒤 개발 경험을 쌓으면서 점차 문서화 및 조율의 역할로 확장해 나가는 길
  2. 기존 아티스트 역할을 하면서 자신이 테크니컬에 관심이 많은 경우 자연스럽게 엔진 분석을 하고 문서화를 하며 프로그래머와 기술적인 조율을 많이 하게 되고 쉐이더나 스크립트에도 관심을 가지게 되면서 자연스럽게 TA로 전직하는 길

그런데 여기서는 프로그래머가 TA로 성장하는 것에 대해서는 배제했죠. 그 이유는 TA가 일단 아티스트이기 때문입니다. 과거에는 프로그래머였지만 현재는 아티스트다 라는 경우가 있을 수 있습니다. 그래도 그 사람은 어쨋든 아티스트입니다. TA를 하려면 아티스트에 대한 이해가 더 우선되어야 한다고 생각합니다. 왜냐하면 어쨋든 아티스트이니까요.

아티스트가 아닌 사람이 TA 역할을 하는 것에 대해서는 개인적으로 부정적인 생각입니다. 아티스트가 가려운 곳을 긁어주진 않고 오버 엔지니어링을 하기 쉽거든요.


팀 내 커뮤니케이션

TA는 이처럼 생각보다 넓은 영역의 역할을 수행할 수 있고 그래야 합니다. 하지만 현실은 그렇지 못한 경우가 많습니다. 간단한 예를 한가지 들어보겠습니다.

어떤 개발 팀에 유명한 원화가로 이름을 날리던 사람이 아트 디랙터 역할을 하고 있습니다. 그런데 이 사람은 기술적인 부분이 취약한데다 요즘 개발팀에 TA는 다들 있는거라고 해서 스크립트와 쉐이더를 작업할 TA를 뽑습니다. 신입 TA는 열심히 시키는 대로 툴을 만들고 게임용 쉐이더를 만들지만 게임의 프레임은 안나오고 아티스트들은 버그 많다고 툴은 안씁니다. 또한 파트장 회의라고 해서 기획팀장과 프로그램 팀장과 아트디랙터와 프로듀서가 참여하는 회의체에서 아트디랙터는 기술적인 부분을 몰라서 비 효율적인 진행이 됩니다. 그래서 앞으로 모든 회의마다 TA를 참여시켜야겠다고 생각하지만 비슷한 취지로 추가되어야 할 인원이 갑자기 너무 많아집니다.

쓰고 보니 간단한 예는 아니군요.

기술적인 기반이 없는 사람은 아트 디랙터로 적합하지 않다고 쓴 예는 아닙니다. 저는 오히려 아트 디랙터라면 기술적인 기반보다 아트의 비젼을 제시할 수 있는 능력이 더 중요하다고 생각합니다.

어떤 사람이라도 아트의 감각과 기술적인 능력을 동시에 충분히 가지기란 쉽지 않습니다. 하지만 게임 개발의 아트 팀에서는 이 두 가지 능력이 동시에 필요하기 때문에 해당 팀원들의 스펙에 맞게 유연하게 역할을 조율해야 하고 대부분 그러고 있습니다.

그렇다면 TA가 굳이 아트 디랙터나 그래픽 팀장이 아니더라도 TA의 전체 역할이 잘 수행되려면 어떻게 해야할까요? 전문적인 TA이면서 모든 역할을 하려면 어떻게 해야할까요?

이 질문에 대한 답은 아직까지 확실히 결론이 나지 않았지만 팀내 개발 커뮤니케이션을 개선해서 해결해야 한다고 생각합니다. 개발에 관한 중요한 결정을 몇몇이 결정하고 나머지 사람들은 그저 시키는 일만 군소리 없이 해야하는 폐쇄적인 커뮤니케이션에서는 TA 뿐만 아니라 다른 모든 역할도 제 기능을 못할 것입니다.

반대로 만들려는 게임의 청사진과 의사 결정의 과정이 투명하게 공유되고 활발하게 의견이 오고가는 팀에서라면 말단 신입 TA라도 충분히 조율할 수 있는 여지가 있으며 TA로서 빠르게 성장할 수 있다고 생각합니다.

결국 TA의 역할이 제대로 되기 위해서는 팀내 커뮤니케이션이 중요하다 라는 말인데요, 팀내 커뮤니케이션이 잘 되면 TA만 행복한건 아니겠죠. ^^

ps. 대마왕님 엄청 멋지고 길고 재미있는 글 쓰시는데 저는 언제나 짧고 간단하게 날로 먹습니다.
반응형
,
Posted by ozlael
개인 블로그에 오렸던 글을 포프님의 건의로 팀 블로그에 올립니다. 원래 오늘은 제가 글을 올리는 날이 아니지만, 스톰님의 거만함을 본받았어요 :-)
 

게임 등급 심의 업무 이양

모두들 아시다시피 작년 말 게임물심의등급위원회(이하 게등위)의 재정 지원을 올 해를 마지막으로 하기로 결정이 내려졌습니다. 모두의 염원대로 게등위가 이제 시한부의 길을 걷게된것입니다. 게등위에서 하던 등급 심의 업무는 문화체육관광부(이하 문화부)에서 지정하는 민간 단체로 이양하기로 되어 있습니다. 문화부는 이 업무를 한국게임산업협회(이하 게임협)에 맡기고자 하는의지를 보이고 있고, 게임협은 심의 기관 설립을 추진중입니다. 별 탈만 없다면 그리 나빠보이지 않는 행보입니다.
사실, 원래는 게등위가 점차적으로 민간 기관으로의 업무 이양을 준비해왔어야 했으나 그러질 않았습니다. 그렇기에 몇 차레의 경고 끝에 재정 지원을 차단하게 된 것이지요. 게임협 역시 마찬가지로 넋놓고 가만히 있었기에 제대로 된 준비가 되어 있지 않은 상태입니다. 때문에 업무의 이양이 탈 없이 이루어 질 지가 걱정이였습니다. 



여성가족부의 개입

하지만, 별 탈이 생기려는 움직임이 일어나고 있습니다. 역시나 여성가족부(이하 여가부)에서 이에 제동을 걸고 있는것입니다. 여성가족위원장 최영희(셧다운 제도의 핵심 인물) 의원이 보도자료를 통해 심의 업무를 게임협에 이양하는 것에 대하여 반대 성명을 냈습니다. 참으로 치졸하기 짝이 없는 언론 플레이가 아닐 수 없습니다. 겉으로는 게임협으로의 심의 업무 이양을 반대하고 있지만, 사실상으로는 심의 업무를 여가부에서 가져가겠다는 의지를 표명하고 있음을 알 수 있습니다.


이 성명은 게임을 학교 폭력의 원인으로 치부하며 시작을 합니다. 또한 이 때문에 민간 기관 심의가 국민의 반대에 부딪혀 왔고 게임 업계가 국민의 신용을 잃었다는 여론 선동을 시도합니다. 

보도자료 중

아동․청소년의 게임중독 문제는 심각한 상황이다. 최근 대구의 한 중학생의 목숨을 안타깝게 잃게 만든 학교폭력에서도 볼 수 있다시피, ‘학교폭력’의 근본적인 원인이라 말할 수는 없지만 매우 중요한 한 원인 중 하나가 바로 ‘게임’이다. 

... 중략 ...

그동안 꾸준히 게임업계가 ‘민간자율심의’를 요구해왔으나 이를 우려하는 국민들의 반대에 부딪혔던 것은 그동안 사회문제가 된 게임중독의 폐혜에 대해 게임업계가 보여온  무책임성과 청소년 보호에 대한 의지가 국민들 사이에 신뢰를 잃었기 때문이다.

그리고는 가이드 라인을 제시하며 여가부에서 기회를 노리고 있음을 드러내고 있습니다.

보도 자료 중

첫째, 게임산업협회에 위탁할 경우 민간등급위원회 구성에 직접적 이해관계가 있는 게임회사 관계자들이 참여할 가능성이 있어 민간등급위원회가 유명무실화 될 가능성이 있다. 따라서 중립적인 제3의 민간기관에 위탁하는 것이 필요하다.
-> 뜻 : 여가부가 설립한 기관에 위탁하라

둘째, 현행 게임물등급위원회가 아동․청소년이 게임을 이용할 때 아이템 구입비 등으로 월(月) 7만원까지만 사용하도록 한도액을 정하고 있는데, 민간위탁으로 인해 상한선이 없어져 아동․청소년들이 아무런 제한없이 과도한 금액을 게임 아이템 구입에 쏟을 뿐 아니라, 이것이 학교폭력에도 악용될 가능성에 대해 깊은 우려를 표명한다. 최소한 미성년자인 아동․청소년의 지불상한선에 대해 정부차원에서 가이드라인을 정해야 할 것이다.
-> 뜻 : 가이드라인은 여가부에서 정해주겠다

셋째, 민간에서 심의할 경우 보다 많은 이윤을 위해 중독성과 사행성이 가미된 게임이 확산되어 아동․청소년 게임중독이 더욱 늘어날 가능성에 대한 대비책을 만들어야 한다.
-> 뜻 : 그러니까 여가부에서 하겠다


여성가족부의 본심

 사실 여가부에서 그동안 꾸준히 게임으로 마수을 뻗어왔던 것은 다들 아시는 사실입니다. 그렇기에 이런 보도 자료를 낸 것은 그다지 새로울 것도 없습니다. 셧다운 제도를 주도적으로 발의하고, 문화부와의 힘싸움에서 이겨서 시행하는데 성공을 했습니다. 하지만 여가부에서는 이에 그치지 않고 게임 산업에 대한 제어권을 통채로 가져가고자 하는 의지를 항상 보여왔습니다. 
 역시나 그 최종 목적은 돈이겠지요. 사실 그럴수 밖에 없는 것이, 꽤 오래전 부터 여가부에 대한 존폐 논란은 항상 있어왔습니다. (여가부의 폐지 당위성은 이 글에서는 논외로 합니다.) 현 대통령의 공약 중 하나가 "여성부 폐지"였을 정도로 그 위상은 땅에 떨어져있었지요. 현 정부가 시작되면서 여가부가 폐지되지는 않았지만 예산은 95%가 삭감될 정도로 찬밥 신세였습니다. 그렇기에 여가부는 항상 재정적으로 시달려 왔었고, 돈 나올 구멍이 항상 필요했었지요. 그러면서 자연스레 게임을 사냥 목표로 삼게됩니다. 
 게임이야 항시 학부모들의 눈에 가시같은 존재였고 이를 이용하여 청소년을 보호한다는 명분으로 돈을 뜯어내기 위한 작업을 시작합니다. 하지만 반대 여론도 만만치 않기에 나름대로 힘들게 어찌 어찌 셧다운 제도를 발효시킵니다. 적용 범위도 항상 문화부와 싸워와야 했고, 뜻하지 않은 배틀넷의 패기도 만나며 힘든 싸움을 하고 있었습니다. 
 근데 적절한 시기에 대구 중학생 자살 사건이 터집니다. 모든 화살은 게임을 향해 날아오고 있고 여가부 역시 이 여론을 등에 업고 칼날을 더욱 적극적으로 들이 대고 있습니다.


마녀사냥

아시다시피 현재 여가부에 의해 강제적 셧다운( 12시부터 6시 사이에 무조건 청소년의 접속 차단)이 시행되고 있습니다. 이제는 거기다가 문화체육관광방송통신위원회(이하 방통위)에 의해 추가적으로 선택적 셧다운(부모의 요구에 의해 접속 시간 차단)의 시행을 앞두고 있습니다. 이제는 교육과학기술부(이하 교과부)에서 연령별 셧다운(연령대별 총 이용 시간 제한)이 추진 준비중에 있습니다. 
 여가부와 방통위의 완력 다툼으로 규제의 칼날을 이중으로 내밀었고, 이제는 교과부에서도 그 칼날을 보태고 있는 것입니다. 책임감 없는 정부 기관들이 근본적인 시스템 수정은 생각하지 않고, 모든 책임을 게임에게 씌우며 마녀 사냥을 본격적으로 시작하고 있는 것입니다.


마치며

 정말로 게임이 청소년에게 근본적인 해가 되는 것일까요? 게임을 하지 않으면 청소년들이 행복해 지는 것일까요? 정부 기관들이 꼼수가 아닌 정말 깊게 생각하고 제도를 시행하는 것일까요? 정말로 그러하다면 게임 업계는 이러한 규제들을 충분히 감내하고 읍참마속하는 심정으로 청소년들의 접속을 차단 할 것입니다. 하지만 누가 봐도 전혀 그런 순수한 의도가 아님을 알 수 있습니다. K-POP보다 4배 이상 외화를 벌어들이는 황금알을 낳는 거위의 배를 가를 속셈이 뻔이 보입니다. 교내 폭력을 바로잡지 못하는 무능한 교육 기관이 책임을 떠 넘기려는 속셈이 뻔히 보입니다. 여론의 뭇매를 피하고 표심을 얻기 위해 마녀 사냥을 하려는 속셈이 뻔히 보입니다. 정부가 진정으로 청소년들을 위하는 정책을 펴고자 한다면 이 어설픈 마녀사냥을 중단하고 제대로 된 정책을 강구해야 마땅 할 것입니다. 



기타 고리들 


 
반응형
,

영감과 표절 사이

기타 2012. 1. 27. 16:37
Posted by 알 수 없는 사용자

예정에 없던 일이지만, 기술적인 딱딱한 이야기를 하기에는 너무 재미가 없을 것 같아서, 같이 이야기를 해보면 재미있을 것 같은 내용을 하나 보태보겠습니다.

다들 트위터나 블로그등을 통해서 보셨겠지만, 님블빗이 만들어서 히트를 쳤던Tiny Tower와 징가의 신작 드림 하이츠와 표절 시비가 있었습니다.

님블빗은 "dear Zynga"라는 편지(?)를 날렸죠~ ㅎㅎ 


퇴근하는 길에, #AltDevBlogADay라는 사이트를 보다가 보니까, "What happened to innovation games?" 관련된 내용이 올라왔더군요.

이 글에 내용처럼 사실 게임들은 서로가 서로에게 영향을 주면서 발전을 했습니다. 물론, 어떻게 보면 표절이라고 말할 수 있을 정도로 게임들이 이전 게임들의 내용들을 계승발전(?) 시켜 왔습니다. 정말 "nothing is original"일지도 모르겠습니다. 

모바일 시장으로 들어오면서, 참신한 게임들도 많아졌지만, 초창기에는 이전의 게임들을 빠르게 복제하여 먼저 시장에 내놓는 것을 돈을 버는 길(?) 여기기도 했었죠. 물론, PC 온라인 시장도 성공한 게임들의 영향을 많이 받았지만, 유저들이 보기에는 "베꼈네!" 라는 말에서 자유로울 수는 없었던 것들도 많았습니다.

마지막으로 저 아티클의 마지막 질문을 인용하고 마치겠습니다.
I want to hear your thoughts: Should game companies be encouraged or punished for taking the best ideas from other games? Where do you draw the line between inspiration and duplication? Sound off in the comments.
(나는 여러분의 생각을 듣고 싶다. 게임 회사들이 다른 게임들로부터 best 아이디어들을 가지고 오는 것에 대해서, 어떻게 생각하느냐? 복제와 영감을 받았다는 것에 대해서 선을 그을 수 있겠는가?)  
 여러분의 생각은 어떠신가요??
반응형
,
Posted by 알 수 없는 사용자

원래 오늘(27일) 기획 포스팅을 할 예정이었으나 회계 포스팅에 삘이 제대로 꽂혀서 포프님의 눈초리에도 불구하고 그냥 배째고(!) 회계 포스팅을 써봅니다.

지난 회에서는 계정과목에 대한 기초와 더불어 게임개발사 프로젝트의 예산 가운데 가장 큰 비중을 차지하는 급여와 복리후생비에 대해서 살짝 알아봤습니다. 그러면 이번에는 인건비 이외에 또 어떤 비용이 필요한지에 대해서 살펴보도록 하죠.


인건비, 그거 말고 또 뭐가 필요해?

일단 사람을 뽑아서 독립된 개발팀을 운영하려면 일단 업무할 공간이 필요하겠죠. 뭐 소규모 개발팀이 자체 건물을 보유하고 있을리는 만무할 터이니(하지만 창업자가 재벌 아들이라면...?) 당연히 사무실을 임대해야 겠죠. 그러면 월세(임대료)와 관리비가 들어갑니다. 뭐 초기에는 보증금도 필요하지만, 보증금은 나중에 돌려받는 돈이기 때문에 회계상으로는 비용이 아닙니다. '자산'으로 분류되죠.

월세와 관리비는 사무실의 지리적 위치, 규모 등에 따라 좌우되는데요. 다들 아시다시피 강남의 노른자위에 큰 평수를 구하려면 월 천만원씩은 그냥 날아갑니다. 명색이 회사인데 월 천만원 뭐 그정도야... 할 수 있겠지만 천만원이면 하루에 33만원입니다. 아무것도 안해도 그냥 매일 PS3 한 대씩 건물 옥상에서 던진다고 생각하시면 '아 이거 장난이 아니구나'라고 확 와닿을 겁니다. - 만약 옥션 최저가로 구매한다면 금요일 퇴근할 때 한대 더 던질 수 있습니다.

그래서 보통 소규모 신생 개발사들이 구로나 가산 디지털단지로 빠지거나 아니면 지역자치단체 등이 저렴하게 제공하는 건물로 들어갑니다. 이런 곳을 잘 구하면 강남 테헤란로와 비교해서 절반 이하로 비용을 절감할 수 있죠. 물론 그 대신에 명함의 회사주소에서 뿜어져 나오는 '강남간지'는 사라지지만, 그 간지 살리는데 드는 막대한 비용을 생각하면 그냥 돈벌기 전까지는 꾹 참는 것이 좋습니다. 돈도 못벌면서 곧 죽어도 강남에 있어야 한다고 테헤란로에 소규모 개발사 세팅했다가 잘 된 회사는 못 본 것 같군요.

뭐 이런 월세나 관리비는 거의 고정비이기 때문에 예산에 반영하는 건 아주 쉽습니다. 따로 설명할 필요가 없겠죠. 다만 경험에서 우러나오는 팁을 좀 알려드리자면 에어컨을 가동하는 여름철 전기세가 많이 나오기 때문에 다른 때 관리비의 2배 이상 나올 수 있다는 점을 감안하셔야 하고, 전기세, 전화료 등 각종 이용요금은 실제 사용한 달의 다음 달 말일에 납부한다는 점을 감안해서 예산 계획을 짜야 합니다. (전문용어?! 로 M+1월 정산이라고 하죠) 그러니까 예를 들어, 9월 예산 짤 때 "아~ 이 달은 에어컨 별로 안 틀 테니 관리비 적게 나오겠지" 라고 생각하면 오산이라는 뜻입니다. 9월에 날아오는 요금고지서는 8월에 사용한 비용이 청구되는 거니까요.

뭐 이 밖에도 사무실에 들여놓을 PC, 책상, 사무기기 등등이 있지만 뭐 이런건 다들 잘 아실테니 굳이 따로 설명하진 않겠습니다. 다만 경험상 Windows라든지 MS Office 등 소프트웨어는 당장 싸게 산다고 DSP 에디션(한번 설치하면 설치된 시스템에 종속되어 다른 PC에 옮겨서 설치하거나 버전 업그레이드가 불가한 라이선스)으로 구매하는 건 비추입니다. 이런 라이선스는 처음 설치한 PC가 고장나거나 하면 소프트웨어도 무용지물이 되어버리거든요. 그러니까 가급적 영구 라이선스+약간의 추가비용으로 업그레이드가 가능한 라이선스로 구매하시기를 권합니다.


퍼블리셔 못구하면 그냥 자체 서비스 하면 안돼?

소규모 개발사에서 일해보신 분들은 잘 아시겠지만, 게임을 잘 만들어놓아도 퍼블리셔 구하기 정말 힘들죠? 사장님, 개발이사, 사업팀에서 발에 불이 나도록 뛰어다녀도 퍼블리싱 계약 하기가 정말 어렵습니다. 그렇게 몇 개월이 지나면 개발만 열심히 해온 개발자분들은 회의 때 막 이런 이야기를 합니다.
 



자체 서비스... 말은 참 쉽습니다. 하지만 온라인 게임을 직접 론칭해본 분이나, 게임 회사에서 좀 전체적인 관리 업무를 해본 분이라면 온라인 게임을 개발사에서 자체 서비스한다는 게 얼마나 힘세고 강한 일인지 잘 알 겁니다. 이것은 마치 열 한개의 사슬 편지를 입고 힘센 이끼를 잡으러 드라군의 음식물 속으로 들어가는 것에 비유할 수 있죠. (이 개그코드가 뭔지 잘 모르는 분은 '왈도체'를 검색하세요) 그러면, 신생 개발사가 온라인 게임을 자체적으로 서비스하기 위해서 무엇이 필요한지 한 번 짚어볼까요?

  1. 엔진 라이선스 구매 비용
    (게임브리오 같은 상용엔진인 경우)
  2. 서비스 인프라 구축 비용
    (서버 장비 확보, IDC 입주, CDN 계약 등)
  3. 마케팅 비용
    (광고비, 홍보비)
  4. 콘텐츠 양산 및 서비스를 위한 인력충원
    (개발팀 인력충원, 운영인력 충원)
  5. 상기 1~4을 실행하기 위한 자금 마련


▣ 엔진 라이선스 구매비용

요즘 클라이언스/서버 기반의 온라인 게임이 상용 엔진 안쓰고 자체 엔진으로 개발하는 사례는 거의 없죠. 대형 프로젝트에서 쓰는 언리얼이나 크라이는 수십억을 호가하고, 국민 엔진(!) 겜브리오도 대략 2~3억 정도는 있어야 사용할 수 있습니다. 뭐 국산 엔진을 쓰면 더 싸긴 한데 선호도가 그렇게 높지는 않은 것 같더군요. 요즘은 Unity3D 엔진이 뜨고 있기는 한데  C/S 기반의 온라인 게임에서 얼마나 대세가 될지는 아직 모르겠군요. (뭐 제가 있는 회사에서도 Unity3D 엔진으로 C/S 기반의 캐주얼 MMO를 만들고 있기는 합니다만...)

어쨌거나 개발 초기에는 정식 엔진 라이선스 없이 그냥 평가판이나 혹은 어둠의 경로로 구해서 개발을 했다손 치더라도, 최소한 CBT나 OBT 쯤 되면 정식 라이선스를 구매해야만 합니다. 만약 게임브리오 엔진을 쓰고 있었다면 라이선스비로만 대략 3억의 자금이 필요한 거죠. (단, Unity3D 엔진은 라이선스 구매 방식이 좀 독특합니다)


▣ 서비스 인프라 구축비용

C/S 기반의 온라인 게임이라고 해도 소규모 개발팀의 경우라면 프로토타입까지는 서버 접속 없이 클라이언트 상에서 구동되는 스탠드 얼론 방식으로 개발하고, 알파 버전까지는 서버를 붙이더라도 사무실에 PC 몇 대 두고 간소하게 돌리는 것이 일반적입니다. 하지만 CBT, OBT 단계가 되면 불특정 다수로부터 회원 가입도 받아야 하고 동시접속자도 처리해야 하기 때문에 성능 좋은 서버 장비를 구해서 IDC에 입주해야 하고 CDN 서비스도 구축해야 합니다.

IDC: Internet Data Center 인터넷 데이터 센터
기업의 전산시설을 위탁 관리하는 곳으로 대규모 서버 장비 및 통신장비의 운영과 관리를 대행하며 네트워크 회선 등을 제공한다. KT에서는 ICC (Internet Computing Center) 라고도 한다. 보통 IDC에 입주하면서 코로케이션(Co-Location) 서비스를 동시에 이용하게 되는데, 이는 IDC에 입주한 서버가 해당 통신사의 고속 인터넷 백본망에 직접 접속하는 네트워크 서비스를 뜻한다.

CDN: Contents Delivery Network 콘텐츠 전송 네트워크
이용자들에게 대용량의 콘텐츠를 빠르고 안정적으로 전달(다운로드)하기 위한 서비스이다. 온라인 게임에서는 보통 클라이언트 프로그램과 패치 다운로드 서비스를 제공하기 위해서 CDN을 이용한다. 클라이언트와 패치 용량이 크고 이용자수가 많은 게임이라면 매월 수 천만원 이상의 CDN 이용료가 발생할 수도 있다.

일단 서버 장비 구매비용은 서버의 사양과 장비의 숫자, 구매 방식 등에 따라 달라집니다. case by case라서 딱 얼마다라고 말할 순 없지만 서버 운영체제 등을 포함하면 대략 1억원 정도는 있어야 왠만한 동접을 버티는 정식 서비스가 가능합니다. 구매방식은 일시불로 하거나 리스(Lease) 가운데에서 선택할 수 있는데, 리스는 구매 대금을 장기간 나누어서 납부할 수 있어서 일시불처럼 목돈이 없어도 된다는 장점이 있지만, 문제는 신생 개발사는 기업 신용도가 전혀 없기 때문에 담보나 보증을 두지 않는 한 거의 어렵다는 게 문제입니다. 그러니까 일시불 구매를 할 수 밖에 없겠죠.

IDC의 경우는 보통 코로케이션 이용료와 함께 통신요금 납부하듯이 월납으로 납부합니다. 납부할 요금의 종류로는 인터넷 백본 접속료, 랙 사용료, 전력 추가 사용료 등등이 있는데, 이 중에서 백본 접속료가 가장 큰 비중을 차지합니다. KT를 기준으로 백본 접속료는 1Gbps의 경우 2700만원이며, 100Mbps는 370만원, 50Mbps는 274만원입니다. 가장 저렴한 10Mbps 급으로 한다고 해도 기타 필수적인 부가 서비스 요금까지 합치면 매월 300만원 이상은 들어갈 겁니다.

CDN이용료의 경우는 이용량에 따라 요금이 증가하기 때문에 보통 CBT, OBT 초기 또는 대규모 프로모션을 통해 신규 유저들이 많이 유입되는 시기에 요금이 많이 발생합니다. 어떤 서비스를 어떤 요금제로 선택하고 또 유저가 얼마나 많이 다운로드를 받느냐에 따라 요금이 천차만별인데, 시to the망 게임이 아니라면 그래도 월 200~400만원 이상은 발생하며, 신규 유저가 많이 몰리는 시기에는 수천만원까지도 나올 수 있습니다.


▣ 마케팅 비용

게임을 서비스할 때 가장 부담스러운 비용이 바로 마케팅 비용이죠. 퍼블리싱사에서 온라인 게임 마케팅을 해본 분은 알고 있겠지만, 요즘 마케팅 비용 몇 억 써봐야 별로 티도 안납니다. 한 론칭 초기에만 5억 이상은 써야 "아 뭐 그 게임 광고배너 본 것 같아!" 정도의 반응이 나오죠. 네이버 메인에 띄우는 배너의 경우 게재 시간대에 따라 1천만원~2천만원 정도가 드는데, 평균 1500만원으로 잡아도 5억을 다 네이버 메인 페이지 배너에 써봐야 30시간 남짓입니다. 하루 2시간씩 게재한다고 하면 2주 정도 띄우는 거죠. 그런데 현실적으로 광고를 네이버만 할 수도 없고 게임 웹진, PC방 초기화면 광고, 바이럴 마케팅, 론칭 이벤트 경품비, 기타 등등 다 커버하려면 5억이라고 해봐야 얼마 하지도 못합니다.


▣ 콘텐츠 양산 및 서비스를 위한 인력충원

보통 소규모 개발사의 경우 퍼블리싱 계약에 체결되어야 초기 계약금 받은 것을 밑천삼아 인력을 대거 충원해서 정식 서비스를 위한 콘텐츠 양산 체제에 들어가죠. 하지만 자체 서비스를 하겠다면, 이 충원 인력도 자체 비용으로 감당해야 합니다. 게다가 직접 서비스를 하려면 운영팀도 세팅해야 하는데 보통 10명 이상의 GM이 있어야 주말과 심야 시간대에도 최소 1명이 모니터링을 할 수 있죠. 10명이면 평균 급여액을 150만원 정도로만 책정해도 매달 1500만원이 소요되고 이들의 업무용 장비와 복리후생비 등의 부대 비용이 더 소요됩니다.


▣ 자체 서비스, 그럼 얼마나 드는 거지?

그럼 이제 계산을 해 봅시다. 평균 급여액 230만원인 15명의 인력으로 개발기간 2년 동안 CBT 버전까지 개발하는 기본 비용은 대략 이렇게 됩니다.

  • 급여: 230만원 x 15명 x 24개월 = 4억 1400만원
  • 복리후생비: 급여액의 30% 추정 = 1억 2420만원
  • 사무실 임대료 등 유지비용 x 24개월 = 1억 2천만원
  • PC 등 각종 장비 및 비품 구매 (추정) = 6천만원
  • 필수 정품 소프트웨어 (최소한 추정) = 3천만원

    = 합계: 약 7억 4천만원 (월평균 약 3100만원)

필수적인 비용만 대력 7억 4천만원이 나오는군요. 금액이 생각보다 좀 적은 이유는 인원이 15명으로 제한되어 있고 부대비용도 낮은 수준으로 잡았기 때문입니다. 실제로는 여기에 그래픽이나 사운드 등 각종 외주 제작비와 추가 인력이 필요한 경우가 많으므로 10억 이상을 쓰게 마련이죠.

그러면 이제 게임의 자체 서비스 단계가 되면 얼마나 비용이 증가하는지 알아봅시다.

3100만원이면 되던 월 비용이 7175만원으로 2배 이상 증가했죠. 게다가 이건 운영팀 인력 10명만 추가한 것으로 가정했을 때입니다. 만약 콘텐츠 양산을 위해 개발팀 인력을 추가한다면 그 인력의 월급+복리후생비 이상의 추가 자금이 필요합니다. 즉 개발팀 규모가 조금만 더 커지면 월 소요 비용 1억이 넘어갈 수 있다는 뜻입니다. 아껴쓰면 2년동안 7억 4천으로도 버틸 수 있었는데, 서비스 단계가 되니까 7억으로는 겨우 반년 남짓 밖에 못버티게 되는 거죠.

게다가 여기에는 아직 엔진 라이선스비와 마케팅비가 반영되지 않았습니다. 반약 엔진 라이선스비가 3억이고 상용화까지 마케팅비를 5억 정도 쓴다고 하면 계산이 어떻게 될까요?

□ 초기 2년 개발 단계 소요비용: 7~10억
□ CBT ~ 상용화 단계 소요비용: 7~10억 (월 7175만원씩 10~12개월)
□ 엔진 라이선스비, 마케팅비: 8억
■ 합계: 22억 ~ 28억 (CBT 단계에서 개발인력 충원시 25~30억)

자, 이렇게 대충 계산기를 두드려봐도, 자체 서비스를 하려면 2년 동안 개발을 위해 투입했던 비용의 두 세배가 넘는 추가 자금을 불과 1년도 안되는 기간 동안 지출해야 합니다. 게다가 이건 어디까지나 비교적 소형 프로젝트의 경우이고 게임 사이즈가 좀 커지면 이보다 훨씬 예산이 크고 아름다워집니다. 뭐 그래도 기필코 자체 서비스를 강행하겠다구요? 뭐 정 퍼블리셔를 구할 수 없다면 시도할 수 밖에 없겠죠. 하지만 그러기 위해서는 최소한 기초적인 회계 감각을 바탕으로 한 예산 관리능력과 자금조달 능력이 뒷받침 되어야만 합니다. 아니 사실 개발팀을 꾸릴 때부터 이러한 능력이 중요하죠.

자, 이제 대충 게임 개발팀 하나를 꾸려나가는데 어느 정도의 자금이 어떻게 소요되고 자체 서비스까지 생각한다면 얼마나 많은 비용이 들어가는지 대충 감이 잡히실 겁니다. 물론 요즘 유행하는 앱 개발이나 웹 게임 개발로 생각하시면 비용이 좀 적게 들어가겠죠. 앞으로 이어질 포스팅에서는 실제 사용 가능한 예산관리 문서양식(엑셀)을 통해서 예산을 계획하고 관리하는 방법에 대해서 포스팅 할 예정입니다.

 

반응형
,
Posted by 알 수 없는 사용자
안녕하세요. 매월 12, 27일에 글을 올리는 cagetu입니다.
늦었지면, 새해 복 많이 받으시고, 다들 대박 나는 한 해가 되시길 기도할게요. ^^
(저도 기도 좀... ㅎㅎ)

오늘은 Vertex Texture Fetch(
VTF)에 대해서 이야기 해볼까 합니다.
이름은 많이들 들어보셨겠죠?! 기술 자체가 새로운 것은 아닙니다. 하지만, 구현을 한 사례가 많이 알려지지도 않았고, 의외로 자료를 찾아보면, 많이 없습니다. 헐~
그래서, 제가 해보면서 수집한 자료와 다른 것들을 보면서 사용되는 부분들에 대해서 눈여겨 봤던 부분들을 묶어서, 그냥 정리나 해볼까 합니다.


먼저 Texture Fetch라는 용어를 먼저 정의하는 것이 좋을 듯 합니다. 흔히 우리가 텍스쳐를 읽어온다라는 표현의 정식 명칭(?)입니다. 즉, tex2D(sampler, uv);를 Texture Fetch라고 말합니다.

그러니, Vertex Texture Fetch라는 것은 말그대로 Vertex 에서 텍스쳐를 읽어온다는 의미로 받아들이시면 됩니다. 더 직관적으로 말하면, "Vertex Shader에서 텍스처를 읽어오는 기능"입니다. 
 
(셰이더를 기준으로 이야기 하도록 하겠습니다. 고정파이프라인에서의 설정은 참고자료의 링크를 참고하세요~

[출처 : R2VB 발표자료(amd)]

버텍스 연산에서 어떻게 보면 예외적(?)으로 사용하는 기능입니다. 따라서, 규제가 좀 심한 편입니다. 조건은 다음과 같습니다. 

- nvidia기준 6 시리즈 이상만 사용 가능
- 텍스쳐 포멧은 A32R32G32B32F 혹은 R32G32F만 사용가능. (최근 다른 포멧도 지원한다고는 하기는 합니다.)
- Bilinear 혹은 Trilinear Filtering을 지원하지 않음. (필요하면 직접 구현해야 합니다)
 
- 밉맵은 단계를 자동으로 계산할 수 없음. 밉맵 단계를 명시해주어야 함. (tex2Dlod 만 사용가능)

VTF를 사용하는 목적은 버텍스 셰이더에서 텍스쳐의 정보를 이용하여, 버텍스의 정보를 조작할 수 있기 때문입니다. 


가장 일반적으로는 
스킨드 인스턴싱(Skinned Instancing)이나, 오브젝트 모션블러(Object Motion Blur) 처리 등에 사용됩니다.
셰이더의 변수 레지스터의 개수 제한 때문에, 장면의 스키닝 되는 오브젝트에 대해서, 모든 뼈대의 정보를 셰이더로 전달할 수 없을 때, 텍스쳐에 뼈대의 변환 정보를 기록해 두었다가, 셰이더에서 처리를 하는 방식으로 보통 많이 사용됩니다. 
 

[Lost Planet 모션블러 예]

[Skinned Instancing]

사실 VTF를 이용하는 구현 방법은 크게 어렵지는 않습니다. 간단하게 설명하면, 텍스쳐에 원하는 정보를 기록하고, 셰이더에서 텍스쳐에서 정보를 읽어오기만 하면 됩니다. (단, tex2Dlod 명령어를 이용합니다.) 

NVIDIA의 Skinned Instancing Sampling Code에서 구현된 VTF에 뼈대의 변환 정보를 저장해 두었다가, 읽어오는 방법을 살펴보도록 하지요.
(
http://developer.download.nvidia.com/SDK/10.5/direct3d/samples.html)

텍스쳐에 저장하기 

먼저, 텍스쳐에 뼈대 정보를 기록합니다. 1개의 텍셀이 32-bit float 4개를 기록할 수 있으므로, matrix 1개를 기록하기 위해서는 4개의 
텍셀 을 이용할 수 있습니다.
즉, A32R32G32B32F 포멧으로 텍스쳐를 만들어서, 4개의 텍셀에 1개의 매트릭스를 저장한다는 의미입니다.
물론, 4x4 matrix라고 하더라도, 4x3개의 matrix만을 이용해서, 매트릭스를 처리할 수 있기 때문에 3개의 텍셀을 이용해서 처리를 할 수 있지만, 2D 텍스쳐의 경우, 2의 배수로 만들어지기 때문에, 4개의 
텍셀 단위로 매트릭스를 얻어오기 편하도록 편의상 4x4 matrix를 저장합니다. (마지막은 padding). 이렇게 되면, 4의 배수로 인덱스를 얻어 올 수 있기 때문에, 작업에 편리함이 있습니다. 

하지만, 1D 텍스쳐를 사용한다면, 언리얼의 모션블러에서 VTF를 사용하는 사례에서 처럼, 4096 크기의 1D 텍스쳐에 하나의 본을 3개의 텍셀을 저장하여 사용할 수 있습니다. (http://udn.epicgames.com/Three/MotionBlurSkinningKR.html)

텍스쳐에서 읽어오기 
Vertex Shader 에서는 다음과 같이, Vertex 정보가 기록된 텍스쳐에서 Vertex 정보를 읽어옵니다. 아래의 샘플 코드는 DX10의 예입니다만, DX9의 경우에는 tex2Dlod(uv, 0, mipmaplevel) 명령어를 사용하여 텍스쳐 정보를 읽어옵니다. 
// Read a matrix(3 texture reads) from a texture containing animation data
float4x4 loadBoneMatrix(uint3 animationData,float bone)
{
   float4x4 rval = g_Identity;
   // if this texture were 1D, what would be the offset?
   uint baseIndex = animationData.x + animationData.y;
   // 4*bone is since each bone is 4 texels to form a float4x4
   baseIndex += (4 * bone);
   // Now turn that into 2D coords
   uint baseU = baseIndex % g_InstanceMatricesWidth;
   uint baseV = baseIndex / g_InstanceMatricesWidth;
   // Note that we assume the width of the texture
   // is an even multiple of the # of texels per bone,
   // otherwise we'd have to recalculate the V component per lookup.
   float4 mat1 = g_txAnimations.Load( uint3(baseU,baseV,0));
   float4 mat2 = g_txAnimations.Load( uint3(baseU+1,baseV,0));
   float4 mat3 = g_txAnimations.Load( uint3(baseU+2,baseV,0));
   // only load 3 of the 4 values, and deocde the matrix from them.
   rval = decodeMatrix(float3x4(mat1,mat2,mat3));
   return rval;
}
bone의 인덱스를 가지고, Vertex Texture 내에서의 저장된 텍셀 좌표를 구하여, 4개의 텍셀을 읽어와 1개의 매트릭스로 만들어서 버텍스 셰이더에서 스키닝 계산에 사용하면 됩니다.

위와 같은 처리를 좀 더 극대화 시켜서 처리시킨 NDC10에서 소개된 "마비노기2 캐릭터 렌더링 기술"(
http://www.slideshare.net/henjeon/ndc2010-2)입니다. VTF를 이용하여 스키닝을 한다고 하더라도, 여러 패스를 렌더링(스키닝, 모션블러 등)에서 동일한 처리를 해주어야 합니다. (물론, MRT를 사용하면 한번에 할 수 있습니다.) 따라서, 기본 아이디어는 완전 스키닝까지 완료한 버텍스 정보를 Vertex Texture에 기록해놓고, 그냥 정점 정보 자체를 뽑아서 사용한다는 것입니다. 굉장히 재밌는 아이디어죠?! 마치 그냥 Cache 메모리 처럼 텍스쳐를 사용하는데, 멋집니다. ㅎㅎ. 
 

Terrain의 경우, 점점 더 넓은 처리가 요구가 되고, 절차적 지형에 대한 관심이 많아지고 있기 때문에, 최근 BattleField, Unreal등의 엔진과 같이 대규모의 지형처리를 하는 경우에는 버텍스 셰이더에서 절차적 높이맵 정보를 읽어와서 버텍스를 처리합니다. 
UDK - Landscape
Terrain Rendering in Frostbite using Procedural Shader
 
- GPU Gems2 : Terrain Rendering Using GPU-Based Geometry Clipmaps

이 처럼, VTF를 이용하면, 셰이더에서 다양한 처리를 할 수 있도록 도와주기 때문에, 효율적인 렌더링 처리를 할 수 있도록 많은 가능성을 열어줍니다.
 
하지만, 불행하게도 VTF를 사용하기에는 커다란 단점이 있습니다. 바로 
속도 입니다. Vertex Texture Fetch의 속도는 굉장히 느립니다. 따라서, VTF를 사용할 때에는 최대한 텍스쳐를 읽어오는 부분을 줄이는 방향을 고민해야 합니다.
(언리얼 모션블러의 경우, texture fetch를 버텍스당 12번씩 하는 필요로 하기 때문에, VTF를 사용한 오브젝트 모션블러의 경우, 사용하지 않은 카메라(rigid) 모션블러와 비교하여, 60%의 성능 차이가 있을 수 있다고 하는군요. 모든 오브젝트가 움직여서, 렌더링을 생략할 수 없을 경우에...)

알려진 바로는 DirectX10이상에서는 VTF의 속도가 안심하고 쓸 수 있을 정도라고 하고, DirectX11을 많이 사용하면서는 조금 더 다양하게 사용하는 것 같다는 느낌도 있기는 있습니다. 
저는 DirectX9 기반으로만 사용을 해봐서, 그 차이가 어느 정도 인지는 모르겠구요. 혹시 테스트 데이터가 있으신 분들은 공유해주시면 좋겠네요. ^^

실제로 구현해보면, 텍스쳐에 기록하고 셰이더에서 읽어오는 부분 이외의 최적화 부분이 가장 중요한데요. 이 부분은 다른 게임이나 엔진에서 처리된 내용을 토대로 지속적으로 연구를 해서, 적절한 범위로 사용을 할 필요가 있을 듯 합니다.

Vertex Texture Fetch라는 기술에 대해서 간략하게 정리를 해보았습니다. 이 정리가 조금이나마 VTF에 대한 이해와 VTF를 이용하여 처리되는 작업들에 대한 이해를 하는데 도움이 되었으면 좋겠네요. ㅎㅎㅎ. 

참고자료 
http://duckii.egloos.com/692042
http://developer.download.nvidia.com/SDK/10/direct3d/Source/SkinnedInstancing/doc/SkinnedInstancingWhitePaper.pdf
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter18.html 
http://developer.amd.com/media/gpu_assets/R2VB_programming.pdf  
-
http://www.scribd.com/doc/16937461/54/Vertex-Texture-Fetch
반응형
,
Posted by 월하

밸런싱을 하다보면 처음부터 공식을 만들어야 하는 경우도 있고

테이블을 공식화 해야 하는 경우도 있고 

리뉴얼 작업을 위해 기존 데이터를 공식으로 뽑아야 하는 경우도 있습니다.

물론 후자들의 경우 착실하게 주석을 달거나 하는 경우 별 문제가 없지만....

주석이 안달려 있다면 정말 이전 담당자를 찾아 심도깊은 대화를 나누고 싶어 집니다.

이럴때 쓸 수 있는 엑셀의 기능 중 하나가 바로 추세선 입니다.
 

 
추세선....  

음... 뭐 주식 하시는 분들은 아실거 같은 용어이지만

중요한건  "변동을 그린 직선 또는 곡선을 말한다." 이죠.

자... 그럼 일단 데이터를 살펴 봅시다.



가장 단순한 테이블인 레벨 - 경험치 테이블 입니다.

저 테이블만 보고 레벨당 경험치 공식을 뽑으라면 난감합니다.
[물론 수학적 감각이 뛰어나신분은 별거 아니겠지만 저같은 비루한 사람에겐 넘사벽이죠]

이 때 필요한게 추세선 입니다.

일단 해당 데이터를 그래프로 만들어 줍니다.

 



레벨에 따른 경험치 그래프가 나왔습니다.

이제 이 중 아무 데이터나 하나를 잡아 우클릭을 하여 추세선 추가를  실행합니다.

 


위와같은 창이 뜨는데 대충 다항식에 차수는 2차(혹은 3차)에다가

수식을 차트에 표시와 R-제곱 값을 차트에 표시를 체크 합니다.[각주:1] 

그럼....

 

이렇게 출력이 됩니다!

수식을 좀 크게 확대 하면...

y = x2 - 2E-13x + 100

이라는 아름다운 공식이 나옵니다.

그럼 저 공식이 맞는지 한번 확인해 보겠습니다.



음.... 깔끔하게 roundup으로 처리를 하면....



같은 값을 출력 하여 줍니다.

이렇게 추세선을 이용하면 간단한 테이블은 쉽게 공식화 처리 할 수 있습니다.


-=


원래 쓰려고 한 건 이게 아닌데 신나게 쓴걸 부산에 놓고 와서 어쩔 수 없이 
간단하면서 실용적인 기능을 소개 하였습니다.

이것도 의외로 모르시는 분들이 많더라고요.

다음에는 굉장히 실용적인.....

엑셀 초보분들을 위한, 엑셀 함수로 만드는 캐릭터 시뮬레이터! 를 쓰도록 하겠습니다.
vba따위...... 훗  
아마 다양한 엑셀 함수를 사용 할 거 같습니다. 

  1. R-제곱 값을 차트에 표시는 사실 할 필요가 없습니다. -.- [본문으로]
반응형
,