분류없음2009/05/09 22:50
For my Wonderful Life2009/04/12 18:23
갑자기 작년 졸업작품의 후기를 써논것이 없구나 하는 생각이 들었다.
사실 갑자기는 아니고 요즘 편하게 읽는 책으로 "포기하지 않으면 불가능은 없다.(고승덕변호사)"를 읽고 있는데, 책의 주된 내용이 지난날 어떤식으로 공부했고, 행동하였는가? 이라는 것을 파악 하고서 부터 나도 이런식으로 하나 해보고 싶은 생각이 들었다.
인터넷으로 못하는 것이 없는 아주 편한시대에 살고 있기에, 책으로 낼 필요없이(낼수도 없고-_-;) 작업일지를 참고하면서 블로그에 적어보기로 했다.
- 07년 말
-> 07년 광복절에 전역하여, 상병 때부터 계획하고 실천해오고 있었던 편입공부를 본격적으로 시작했다. 하지만 너무나 프로그래밍이 하고 싶었다. 편입공부할 시간도 없어 죽겠는데, 프로그래밍까지 한다는 건 말도 안되는 일이었다. 그래서 프로그래밍 과목의 과제를 정말 엄청 열심히 했다.
단순하게 "좀 좋은 학교에서 공부하고 싶다."라는 생각만 가지고 편입공부를 지속하기 어려웠다. 편입에 성공하게 되면 여러가지 좋은 점이 생기는 건 확실히 알고 있었는데, 그런것을 다 버릴 수 있을 만큼 프로그래밍이 하고 싶었다. 프로그래밍을 잘해서 편입해서 얻는 것들을 얻을 수 있다고 생각했다.
편입을 그만두자고 생각한 후로부터 프로그래밍에만 매달렸다. 뭐부터 공부해야될지도 몰라서 일단 학교수업을 기준으로 공부해나갔고, 동아리 형이 흘려서 하는 말을 듣고서 그걸 만들어보기로 했다. 그러면서 공부해나갔다.
그러다가 같은 나이 4학년이 되는 친구가 같이 졸작을 하자고 제안을 해왔다. 나보다 잘하는 사람들도 꽤나 있는데 왜 나한테 하는지 이해가 되지 않았지만, 굉장한 공부가 될 것 같았다. 수락했다.
- 08년 겨울합숙
-> 방학이 시작되고 바로 제주도로 혼자서 여행을 갔다왔다. 군전역하고서 계획했던 일중에 하나였다. 겨울에 오토바이 타고 달리자니 추워 죽을 것 같았지만 그래도 정말 재미있었다.
후배들 겨울합숙 하는 장소에서 작업을 시작하였다. 이 때부터 일지를 써나갔는데 그게 2일부터다.
일단 겨울방학동안 만들어낼 것들을 정하였다. 그렇게 정한 것이 프레임워크 구축(프레임워크라는 단어의 뜻조차 제대로 모르고 쓰고 있었다.)과 캐릭터 애니메이션이었다.
캐릭터 애니메이션 때문에 많은 고민을 했었는데, 익스포터 부터 해서 파서까지 다 만들 것인지, 있는 것을 쓸 것인지 하는 것이었다. 지금 생각해보면 참 말도 안되는 고민이었는데, 그 만큼 아무것도 몰랐다는 말이다.
결국 조금 공부해보고, 다 만들면 시간이 엄청 소요될 것 같다는 판단이 들어 예가 잘 나와있는 XML을 선택해서 사용하기로 했다.(일명 해골책, 3D 게임프로그래밍)
개학을 2월 25일인가 했을 텐데(3월 첫주에서 바로 전주), 작업일지를 보니 계획했던 것들을 어느정도 달성했던 것 같다. 나름 생각해서 애니메이션의 정보만 추출하는 익스포터를 따로 제작하였고, 모션블렌딩을 시작했으니.
- 기숙사괴성
-> 기획자는 자기 자취방에, 그래퍼는 집에서, 나는 기숙사에서 다 떨어져서 작업하였다. 네이트 온으로 대부분의 의사소통을 하였는데 불편한 것이 이만저만이 아니였다. 기숙사에서 처음 살아보는 것이라서 재미있는 것도 있었지만, 작업하기에는 정말 너무 불편했다.
아직도 기억나는 것이, 이 때쯤에 모션블렌딩을 한참 고민하고 있었다. 만들고자 하는 게임이 캐릭터의 모션이 워낙 중요한 게임이라서 캐릭터의 모션이 변경되는 것에 대해서 정말 많이 생각하고 고민했었는데 나중에 알고보니 "모션블렌딩"이라는 기술이었다.
정말 참고할 만한 것이 하나도 없었다. 있는데 못찾았는지 모르지만 키프레임애니메이션을 이제 이해한 완전 초짜에게, 모션블렌딩이라는 기술을 구현하는데 필요한 한글로 된 방법은 내가 찾기로는 없었다. 정말 답답해 미쳐버리는 지 알았다.
하는 수 없이 혼자서 생각해야 했는데, 이거다! 라는 생각이 드는 방법을 생각해냈다. 바로 해봤는데, 거짓말 처럼 잘 되었다. 환호성을 질렀다.
하지만 그것도 잠시. 다음날 휘파람을 불면서 작업을 시작하다가 무언가 이상한 것을 발견하고, 확인해보았다. 블렌딩이 되는 것처럼 보였던 것이다. 다른 모델로 테스트해보니 되기는 커녕 아예 모델이 없어졌다.
후배들, 그것도 08 신입생들이 같은방에 있었는데, 있거나 말거나 미친듯이 소리를 질러댔다. 이불에 얼굴을 파묻고 미친놈 처럼 소리를 질러댔다. 되는 지 알았는데, 됬다고 생각했는데, 착각이었다는 것이 밝혀지자 미쳐버릴 것 같았다. 그냥 소리만 질러댔다. 아마 후배들이 성격파탄자인로 생각했을 거다.
그래퍼도 답답했는지 얼마 안되서 기획자의 방으로 이사했다. 나는 1학기만 참아보자고 생각했는데, 그놈의 학교 채플 때문에 도저히 못참겠어서,그래퍼가 옮긴지 얼마 되지 않아서 나도 이사했다.
이사하기 전에 미팅을 할 기회가 있었는데, 잘 되어가는 지 알았다가 그냥 차였다. 이사를 해버린 것도 그 영향이 아예 없던 것도 아닐꺼다. 차이고나서 "올해는 다 포기하자"라는 생각이 굳어졌으니까.
- 사람 미치게 하는 무더위.
-> 지금까지 살아오면서 더워서 미쳐버릴 뻔한 적이 없었다. 그냥 아 더워~!~ 하는 정도였는데, 08년 여름은 정말 미쳐버릴 뻔했다.
좁은 자취방에 컴이 3대, 모니터가 6대였다. 선풍기는 2대만 가동되고 있었고, 3층이라서 천장의 열이 그대로 전해져왔다. 바로 앞집에 중국인이 살고 있었는데, 서로 보던지 말던지 그냥 문 다 열어놓고 살았다.
도저히 낮에는 작업을 할 수가 없어서 밤낮을 바꾸었다. 밤에 작업하고, 낮에는 후배들 여름합숙하는 강의실에 이불을 가지고 가서 잤다. 에어컨바람이 그렇게 시원할 수가 없었다.
작업일지상으로 이 때쯤에 모션블렌딩에 관한 부분이 완전히 끝났다. 지금이야 parametic motion blending이니, IK니 하는 이론들을 알지만, 그 때는 '모션 블렌딩'하나만 가지고 캐릭터의 모션 모션을 커버하려고 했었고, 그러다보니 수식을 최적화했다. 많은 실험이 있었고, 마침내 합의점을 찾아내서 완성했다.
걸으면서 모션이 변경되는 것 때문에 상, 하체를 따로 나누어서 블렌딩하는 것도 추가하였다. 이건 구현하는데 그다지 어렵지 않았다.
- 또다시 괴성을 지르다.
-> 기획된 게임은 굉장히 사실적인 분위기를 필요로 했다. 사실적인 분위기를 살리려면 광원을 사용해야 했고, 그러면서 가능해지는 여러가지 렌더링 테크닉을 사용해야 했다.
나는 사실적인 분위기를 살리는데 기본은 '노말맵핑(범프)' 이라고 생각했다. 그래서 프로젝트를 시작하기 전에 기획자에게 노말맵핑 넣자고 이야기 하였고, 그래퍼에게 기술익혀놔야 한다고 말해두었다.
기획자는 일단 시스템부터 만들어 놓고 시간되면 넣자고 말했다. 그래퍼는 쓰면 자기는 좋다면서 흔쾌히 수락하였다.
가장 중요한 시스템이었던 '노트시스템'과 기본충돌체크, 카메라워킹이 완성되었다. 개선사항은 좀 있었지만 일단 진행하면서 수정하기로 하였다.
나는 기획자에게 노말맵 시작해도 되냐고 물어보았고, 기획자는 일주일잡고 하자고 하였다. 자신있었기 때문에 진행한다고 하였다.
쉐이더도 제대로 모르는 상태였다. 당연히 구현은 해본적 없고, 주위에서 제대로 할 줄 아는 사람도 없었다. 그런데 자신 있었던 이유는 프로젝트를 진행하면서 관련된 문서, 아티클등을 모아둔 것이 있었고, 책에도 어느정도 나와있었다. 게다가 잠깐잠깐 공부해본 바로는 구현이 엄청나게 어려운 것 같지는 않았다. 일주일도 넉넉하다고 생각했다.
7월 24~5일동안 쉐이더에 대해서 공부하였다. 7월 26일 저녁에 익스포터가 노말맵의 파일명을 추출하지 못해서 수정하고, 밤부터 시작하였다.
27일 낮쯤에 구현성공하였다. 뛸듯이 기뻤고, 팀원들도 퀄리티 확 올라갔다면서 매우 좋아하였다. 정말 기분좋았다.
그런데 문제가 발생했다. 그래퍼가 좀 이상하다고 이야기 하였고, 그래서 같이 잘 살펴보니 모션블렌딩때 처럼 되는 것처럼 보인 것이었다. 정확하게는 맵이 잘려진 부근에서 광원의 방향이 완전히 틀리게 들어가서 굉장히 어색하게 적용되고 있었다.
별로 티도 나는 것 같지 않았다. 그래서 은근히 그냥 넘어가자고 말했는데, 저러면 자신이 모델링, 맵핑 한거랑 틀리게 나오기 때문에 안된다고 하였다. 부끄럽고 미안했다. 그래서 일단 해보자 하고 키보드를 잡았는데 도대체 공식이 이해가 가지를 않았다.
움직이는 캐릭터였으므로 tangent space로 맵을 사용해야 했었고, 그래서 vertex마다의 normal, binormal, tangent vector를 계산해내야 하는 상황이었는데, 책에서 제시하는 공식부분이 도대체 이해가 되질 않았다. 그래서 일단 생각해낸 것이 binormal을 고정하고 계산해내는 방법이었고, 해보니 대충 되는 것 같았다. 지금 생각해보면 당연히 제대로 안되는게 맞는데, 그 때는 일단 되는 것처럼 보였기 때문에 넘어가고 싶었던 것 같다.
또 안경 집어 던지고 침대에 엎드려서 한참을 소리질렀다. 소스를 쳐다 보기도 싫었다. 그런데 슬슬 오기가 발동했다. 그래서 다시 세수한번 하고, 키보드를 잡았다. 루틴을 하나하나 점검해가면서, 공식을 이해하기 위해서 노력했다.
7월 29일 오후 쯤에 완전히 구현했다. 공식을 완전히 구현해내서 정확하게 나왔다. 덤으로 specular map까지 적용시켰다. 이겼다는 생각에 굉장히 기분 좋았다. 그래서 잠도 안자고 계속 작업했던 걸로 기억한다.
- 키보드 부시다.
-> 확실히 경험이 쌓고 있는 것이 피부로 느껴졌다. 작업은 굉장히 재미있었고, 그래서 밥먹는 시간이 아까울 정도였다.
월말발표날 일거다. 정확히 기억이 안난다;;
발표때 가지고 갈 시연버젼을 컴파일 할 때였다. debug모드로 작업하고 있었기 때문에 한번 최종테스트 해보고, release로 빌드를 해야하는 상황이었다.
"이거 release로 빌드하면 또 뻑나는거 아냐??"
전에 한번 그런 경험이 있어서 장난삼아 말하면서 release로 모드를 맞추고 빌드를 시작했다.
한번 겪은 뒤로 계속 기능을 추가할 때마다 release로 테스트 하였기 때문에 자신 있었다. 그래서 그런 농담도 했었던 걸테다.
하지만 일은 또다시 터지고야 말았다.
빌드는 정상적으로 되었는데, 테스트를 하려 실행하니 프레임이 급격하게 안나왔다. 컴을 오래켜놔서 그런가? 하고 재부팅하고 해보아도 마찬가지 였다. 설상가상으로 설정파일과 리소스를 실제로 쓰일 버젼으로 갈아끼니 완전히 게임이 맛이 갔다.
머리가 혼란스러웠다. 팀원들 모두 패닉에 빠져가고 있었다.
나는 이전거는 괜찮겠지 하고서 이전버젼에 사용할 설정파일과 리소스를 넣고 테스트하였는데 마찬가지였다. 오래전부터 어딘가부터 곪고 있었던 거다.
시간이 몇분남지 않았었는데 고쳐보겠다고 소스를 보고 있었는데 보이지 않았다.
나는 이정도 였던 건가.
한다고 했는데 왜안되는거지.
테스트도 다 해보면서 넘어왔는데 갑자기 왜이러는 거지?
이거 컴이 맛이 간거 아냐?
VC가 맛이 갔나?
별별 생각이 다들었다.
결국 이성을 잃었다. 키보드가 하늘로 날라갔고, 나는 미친놈처럼 소리를 질러댔다. 그 다음부터는 정확하게 기억이 안난다.
발표에 팀원들만 갔다왔다. 집 분위기는 개판이었고, 나는 완전히 멍한 상태였다. 소스를 보고는 있었는데 머리는 멍했다.
원인을 찾고 고쳤는지 기억이 안나는데, 그 후로는 그런적이 없다. 고친건가?? -_-;
- 공모전 특별상 수상, 지스타 전시, 프로젝트 종료.
-> 우리학교와 공주대가 주관하는 게임제작공모전이 시작됬다. 공모전에 출품할 정도로 완성되지 않았는데, 일단 내라고 해서 개발 중인 버젼에 잡다 메세지만 빼고 냈다. 수상은 기대도 안했다. 그런데 특별상을 주었다. 받고도 좀 어이없었다. 스피커를 받았는데 결국 그래퍼가 사용하게 되었다. 기획자와 나는 소유권-_-; 을 포기했다;;
시간이 지나 지스타에 참가할 팀을 정했다. 같은 동아리에 속해있던 다른 팀들 모두와 우리팀, 그리고 다른 몇개팀이 선택됬다. 참가비를 좀 내라해서 불만이었지만 일단은 내고 참가하기로 했다.
지스타부스는 역시나 마음에 안들었다. 도대체 어디에 돈을 쓴건지 모를 정도였다. 가지고 간 컴도 상태가 안좋았다.
일단 플레이는 시켜놓았는데, 어이없게 디버깅 메세지를 삭제하지 않았다. 원격으로 집컴에 접속해서 어떻게든 해보려고 했으나 집컴을 켜줄 사람이 없어서 할 수 없이 첫날은 그대로 시연했다.
팀원들이 자취방에 가서 컴을 들고왔다. 지스타동안 집에 있겠다고 했는데 그럼 가지고 가서 작업하라해서 알았다고 가지고 오라고 했기 때문이다. 정상버젼을 그래퍼 컴으로 시연시켰다. 해본사람들 하나같이 어렵다고 했다. 시스템을 이해못하는 것 같았다.
IGF가 시작됬다. 출품을 해야했는데 그 때까지 완성본이 나오지 않았다. 어쩔 수 없이 최대한 완성판과 비슷하게 해서 출품했다. 역시나 수상은 못했지만 IGF사이트에 스샷과 설명이 추가되었다. 그것만으로도 재미있었다.
목표인 인디게임공모전이 시작되었다. 5회차였는데, 이미 다른 팀들은 4회차에 내고 프로젝트를 종료한 팀들도 있었다. 우리는 처음부터 목표가 인디게임이었기 때문에 4회차에 완성이 되지 않아서 5회차로 미루었다.
결국 완성되어 인디게임에 출품하였으나 수상은 하지 못하였다.
나이트에서 서브로 도와주었던 친구들, 후배와 함께 쫑파티를 하고 공식적으로 완전히 프로젝트는 종료되었다.
- 330일간의 첫 완성프로젝트. 첫 3D프로젝트.
-> 1월 2일부터 11월 26일까지 약 330일정도 된다.
아무것도 모르는 상태에서 시작한 프로젝트 였고, 해낼 수 있을 까 하는 의심도 들었지만 너무 완성하고 싶었고, 그래서 잠도 안자가며 모든 걸 포기하고 매달렸다.
1학년 프로젝트를 완성하지 못한 한이 있었고, 첫 3D게임이라는 도전이 있었다.
프로그래머란에 내 이름 석자가 들어간 게임을 만들어 내고 싶었고, 완성한 게임을 가지고 싶었다.
좋은 팀원들을 만나서 결국 해내었고, 그러면서 얻은 것들이 정말 많다.
프로그래밍 자체에 대한 좀 더 이해가 생겼다고 생각하고, 어떻게 공부해야 할 지 감을 잡았다.
내가 얻은 경험을 후배들, 이제 졸작시작하는 동기들에게 알려주고 싶었다. 그래서 세미나도 해주었고,
조언을 구하는 사람에게는 꺼리낌없이 아는 모든 것을 알려주었다.
참고라도 되라는 심정에서 자랑할 것 하나 없는 부끄러운 소스지만 모두 공개했고, 작업일지, 그동안 생산되었던 모든 문서 공개했다. 이렇게 하면서 좀 더 기분이 좋아졌다.
앞으로 계속 이렇게 무언가를 해내고, 그걸 다른사람들에게 전해주며 살고 싶다.
나는 행복하다.
사실 갑자기는 아니고 요즘 편하게 읽는 책으로 "포기하지 않으면 불가능은 없다.(고승덕변호사)"를 읽고 있는데, 책의 주된 내용이 지난날 어떤식으로 공부했고, 행동하였는가? 이라는 것을 파악 하고서 부터 나도 이런식으로 하나 해보고 싶은 생각이 들었다.
인터넷으로 못하는 것이 없는 아주 편한시대에 살고 있기에, 책으로 낼 필요없이(낼수도 없고-_-;) 작업일지를 참고하면서 블로그에 적어보기로 했다.
- 07년 말
-> 07년 광복절에 전역하여, 상병 때부터 계획하고 실천해오고 있었던 편입공부를 본격적으로 시작했다. 하지만 너무나 프로그래밍이 하고 싶었다. 편입공부할 시간도 없어 죽겠는데, 프로그래밍까지 한다는 건 말도 안되는 일이었다. 그래서 프로그래밍 과목의 과제를 정말 엄청 열심히 했다.
단순하게 "좀 좋은 학교에서 공부하고 싶다."라는 생각만 가지고 편입공부를 지속하기 어려웠다. 편입에 성공하게 되면 여러가지 좋은 점이 생기는 건 확실히 알고 있었는데, 그런것을 다 버릴 수 있을 만큼 프로그래밍이 하고 싶었다. 프로그래밍을 잘해서 편입해서 얻는 것들을 얻을 수 있다고 생각했다.
편입을 그만두자고 생각한 후로부터 프로그래밍에만 매달렸다. 뭐부터 공부해야될지도 몰라서 일단 학교수업을 기준으로 공부해나갔고, 동아리 형이 흘려서 하는 말을 듣고서 그걸 만들어보기로 했다. 그러면서 공부해나갔다.
그러다가 같은 나이 4학년이 되는 친구가 같이 졸작을 하자고 제안을 해왔다. 나보다 잘하는 사람들도 꽤나 있는데 왜 나한테 하는지 이해가 되지 않았지만, 굉장한 공부가 될 것 같았다. 수락했다.
- 08년 겨울합숙
-> 방학이 시작되고 바로 제주도로 혼자서 여행을 갔다왔다. 군전역하고서 계획했던 일중에 하나였다. 겨울에 오토바이 타고 달리자니 추워 죽을 것 같았지만 그래도 정말 재미있었다.
후배들 겨울합숙 하는 장소에서 작업을 시작하였다. 이 때부터 일지를 써나갔는데 그게 2일부터다.
일단 겨울방학동안 만들어낼 것들을 정하였다. 그렇게 정한 것이 프레임워크 구축(프레임워크라는 단어의 뜻조차 제대로 모르고 쓰고 있었다.)과 캐릭터 애니메이션이었다.
캐릭터 애니메이션 때문에 많은 고민을 했었는데, 익스포터 부터 해서 파서까지 다 만들 것인지, 있는 것을 쓸 것인지 하는 것이었다. 지금 생각해보면 참 말도 안되는 고민이었는데, 그 만큼 아무것도 몰랐다는 말이다.
결국 조금 공부해보고, 다 만들면 시간이 엄청 소요될 것 같다는 판단이 들어 예가 잘 나와있는 XML을 선택해서 사용하기로 했다.(일명 해골책, 3D 게임프로그래밍)
개학을 2월 25일인가 했을 텐데(3월 첫주에서 바로 전주), 작업일지를 보니 계획했던 것들을 어느정도 달성했던 것 같다. 나름 생각해서 애니메이션의 정보만 추출하는 익스포터를 따로 제작하였고, 모션블렌딩을 시작했으니.
- 기숙사괴성
-> 기획자는 자기 자취방에, 그래퍼는 집에서, 나는 기숙사에서 다 떨어져서 작업하였다. 네이트 온으로 대부분의 의사소통을 하였는데 불편한 것이 이만저만이 아니였다. 기숙사에서 처음 살아보는 것이라서 재미있는 것도 있었지만, 작업하기에는 정말 너무 불편했다.
아직도 기억나는 것이, 이 때쯤에 모션블렌딩을 한참 고민하고 있었다. 만들고자 하는 게임이 캐릭터의 모션이 워낙 중요한 게임이라서 캐릭터의 모션이 변경되는 것에 대해서 정말 많이 생각하고 고민했었는데 나중에 알고보니 "모션블렌딩"이라는 기술이었다.
정말 참고할 만한 것이 하나도 없었다. 있는데 못찾았는지 모르지만 키프레임애니메이션을 이제 이해한 완전 초짜에게, 모션블렌딩이라는 기술을 구현하는데 필요한 한글로 된 방법은 내가 찾기로는 없었다. 정말 답답해 미쳐버리는 지 알았다.
하는 수 없이 혼자서 생각해야 했는데, 이거다! 라는 생각이 드는 방법을 생각해냈다. 바로 해봤는데, 거짓말 처럼 잘 되었다. 환호성을 질렀다.
하지만 그것도 잠시. 다음날 휘파람을 불면서 작업을 시작하다가 무언가 이상한 것을 발견하고, 확인해보았다. 블렌딩이 되는 것처럼 보였던 것이다. 다른 모델로 테스트해보니 되기는 커녕 아예 모델이 없어졌다.
후배들, 그것도 08 신입생들이 같은방에 있었는데, 있거나 말거나 미친듯이 소리를 질러댔다. 이불에 얼굴을 파묻고 미친놈 처럼 소리를 질러댔다. 되는 지 알았는데, 됬다고 생각했는데, 착각이었다는 것이 밝혀지자 미쳐버릴 것 같았다. 그냥 소리만 질러댔다. 아마 후배들이 성격파탄자인로 생각했을 거다.
그래퍼도 답답했는지 얼마 안되서 기획자의 방으로 이사했다. 나는 1학기만 참아보자고 생각했는데, 그놈의 학교 채플 때문에 도저히 못참겠어서,그래퍼가 옮긴지 얼마 되지 않아서 나도 이사했다.
이사하기 전에 미팅을 할 기회가 있었는데, 잘 되어가는 지 알았다가 그냥 차였다. 이사를 해버린 것도 그 영향이 아예 없던 것도 아닐꺼다. 차이고나서 "올해는 다 포기하자"라는 생각이 굳어졌으니까.
- 사람 미치게 하는 무더위.
-> 지금까지 살아오면서 더워서 미쳐버릴 뻔한 적이 없었다. 그냥 아 더워~!~ 하는 정도였는데, 08년 여름은 정말 미쳐버릴 뻔했다.
좁은 자취방에 컴이 3대, 모니터가 6대였다. 선풍기는 2대만 가동되고 있었고, 3층이라서 천장의 열이 그대로 전해져왔다. 바로 앞집에 중국인이 살고 있었는데, 서로 보던지 말던지 그냥 문 다 열어놓고 살았다.
도저히 낮에는 작업을 할 수가 없어서 밤낮을 바꾸었다. 밤에 작업하고, 낮에는 후배들 여름합숙하는 강의실에 이불을 가지고 가서 잤다. 에어컨바람이 그렇게 시원할 수가 없었다.
작업일지상으로 이 때쯤에 모션블렌딩에 관한 부분이 완전히 끝났다. 지금이야 parametic motion blending이니, IK니 하는 이론들을 알지만, 그 때는 '모션 블렌딩'하나만 가지고 캐릭터의 모션 모션을 커버하려고 했었고, 그러다보니 수식을 최적화했다. 많은 실험이 있었고, 마침내 합의점을 찾아내서 완성했다.
걸으면서 모션이 변경되는 것 때문에 상, 하체를 따로 나누어서 블렌딩하는 것도 추가하였다. 이건 구현하는데 그다지 어렵지 않았다.
- 또다시 괴성을 지르다.
-> 기획된 게임은 굉장히 사실적인 분위기를 필요로 했다. 사실적인 분위기를 살리려면 광원을 사용해야 했고, 그러면서 가능해지는 여러가지 렌더링 테크닉을 사용해야 했다.
나는 사실적인 분위기를 살리는데 기본은 '노말맵핑(범프)' 이라고 생각했다. 그래서 프로젝트를 시작하기 전에 기획자에게 노말맵핑 넣자고 이야기 하였고, 그래퍼에게 기술익혀놔야 한다고 말해두었다.
기획자는 일단 시스템부터 만들어 놓고 시간되면 넣자고 말했다. 그래퍼는 쓰면 자기는 좋다면서 흔쾌히 수락하였다.
가장 중요한 시스템이었던 '노트시스템'과 기본충돌체크, 카메라워킹이 완성되었다. 개선사항은 좀 있었지만 일단 진행하면서 수정하기로 하였다.
나는 기획자에게 노말맵 시작해도 되냐고 물어보았고, 기획자는 일주일잡고 하자고 하였다. 자신있었기 때문에 진행한다고 하였다.
쉐이더도 제대로 모르는 상태였다. 당연히 구현은 해본적 없고, 주위에서 제대로 할 줄 아는 사람도 없었다. 그런데 자신 있었던 이유는 프로젝트를 진행하면서 관련된 문서, 아티클등을 모아둔 것이 있었고, 책에도 어느정도 나와있었다. 게다가 잠깐잠깐 공부해본 바로는 구현이 엄청나게 어려운 것 같지는 않았다. 일주일도 넉넉하다고 생각했다.
7월 24~5일동안 쉐이더에 대해서 공부하였다. 7월 26일 저녁에 익스포터가 노말맵의 파일명을 추출하지 못해서 수정하고, 밤부터 시작하였다.
27일 낮쯤에 구현성공하였다. 뛸듯이 기뻤고, 팀원들도 퀄리티 확 올라갔다면서 매우 좋아하였다. 정말 기분좋았다.
그런데 문제가 발생했다. 그래퍼가 좀 이상하다고 이야기 하였고, 그래서 같이 잘 살펴보니 모션블렌딩때 처럼 되는 것처럼 보인 것이었다. 정확하게는 맵이 잘려진 부근에서 광원의 방향이 완전히 틀리게 들어가서 굉장히 어색하게 적용되고 있었다.
별로 티도 나는 것 같지 않았다. 그래서 은근히 그냥 넘어가자고 말했는데, 저러면 자신이 모델링, 맵핑 한거랑 틀리게 나오기 때문에 안된다고 하였다. 부끄럽고 미안했다. 그래서 일단 해보자 하고 키보드를 잡았는데 도대체 공식이 이해가 가지를 않았다.
움직이는 캐릭터였으므로 tangent space로 맵을 사용해야 했었고, 그래서 vertex마다의 normal, binormal, tangent vector를 계산해내야 하는 상황이었는데, 책에서 제시하는 공식부분이 도대체 이해가 되질 않았다. 그래서 일단 생각해낸 것이 binormal을 고정하고 계산해내는 방법이었고, 해보니 대충 되는 것 같았다. 지금 생각해보면 당연히 제대로 안되는게 맞는데, 그 때는 일단 되는 것처럼 보였기 때문에 넘어가고 싶었던 것 같다.
또 안경 집어 던지고 침대에 엎드려서 한참을 소리질렀다. 소스를 쳐다 보기도 싫었다. 그런데 슬슬 오기가 발동했다. 그래서 다시 세수한번 하고, 키보드를 잡았다. 루틴을 하나하나 점검해가면서, 공식을 이해하기 위해서 노력했다.
7월 29일 오후 쯤에 완전히 구현했다. 공식을 완전히 구현해내서 정확하게 나왔다. 덤으로 specular map까지 적용시켰다. 이겼다는 생각에 굉장히 기분 좋았다. 그래서 잠도 안자고 계속 작업했던 걸로 기억한다.
- 키보드 부시다.
-> 확실히 경험이 쌓고 있는 것이 피부로 느껴졌다. 작업은 굉장히 재미있었고, 그래서 밥먹는 시간이 아까울 정도였다.
월말발표날 일거다. 정확히 기억이 안난다;;
발표때 가지고 갈 시연버젼을 컴파일 할 때였다. debug모드로 작업하고 있었기 때문에 한번 최종테스트 해보고, release로 빌드를 해야하는 상황이었다.
"이거 release로 빌드하면 또 뻑나는거 아냐??"
전에 한번 그런 경험이 있어서 장난삼아 말하면서 release로 모드를 맞추고 빌드를 시작했다.
한번 겪은 뒤로 계속 기능을 추가할 때마다 release로 테스트 하였기 때문에 자신 있었다. 그래서 그런 농담도 했었던 걸테다.
하지만 일은 또다시 터지고야 말았다.
빌드는 정상적으로 되었는데, 테스트를 하려 실행하니 프레임이 급격하게 안나왔다. 컴을 오래켜놔서 그런가? 하고 재부팅하고 해보아도 마찬가지 였다. 설상가상으로 설정파일과 리소스를 실제로 쓰일 버젼으로 갈아끼니 완전히 게임이 맛이 갔다.
머리가 혼란스러웠다. 팀원들 모두 패닉에 빠져가고 있었다.
나는 이전거는 괜찮겠지 하고서 이전버젼에 사용할 설정파일과 리소스를 넣고 테스트하였는데 마찬가지였다. 오래전부터 어딘가부터 곪고 있었던 거다.
시간이 몇분남지 않았었는데 고쳐보겠다고 소스를 보고 있었는데 보이지 않았다.
나는 이정도 였던 건가.
한다고 했는데 왜안되는거지.
테스트도 다 해보면서 넘어왔는데 갑자기 왜이러는 거지?
이거 컴이 맛이 간거 아냐?
VC가 맛이 갔나?
별별 생각이 다들었다.
결국 이성을 잃었다. 키보드가 하늘로 날라갔고, 나는 미친놈처럼 소리를 질러댔다. 그 다음부터는 정확하게 기억이 안난다.
발표에 팀원들만 갔다왔다. 집 분위기는 개판이었고, 나는 완전히 멍한 상태였다. 소스를 보고는 있었는데 머리는 멍했다.
원인을 찾고 고쳤는지 기억이 안나는데, 그 후로는 그런적이 없다. 고친건가?? -_-;
- 공모전 특별상 수상, 지스타 전시, 프로젝트 종료.
-> 우리학교와 공주대가 주관하는 게임제작공모전이 시작됬다. 공모전에 출품할 정도로 완성되지 않았는데, 일단 내라고 해서 개발 중인 버젼에 잡다 메세지만 빼고 냈다. 수상은 기대도 안했다. 그런데 특별상을 주었다. 받고도 좀 어이없었다. 스피커를 받았는데 결국 그래퍼가 사용하게 되었다. 기획자와 나는 소유권-_-; 을 포기했다;;
시간이 지나 지스타에 참가할 팀을 정했다. 같은 동아리에 속해있던 다른 팀들 모두와 우리팀, 그리고 다른 몇개팀이 선택됬다. 참가비를 좀 내라해서 불만이었지만 일단은 내고 참가하기로 했다.
지스타부스는 역시나 마음에 안들었다. 도대체 어디에 돈을 쓴건지 모를 정도였다. 가지고 간 컴도 상태가 안좋았다.
일단 플레이는 시켜놓았는데, 어이없게 디버깅 메세지를 삭제하지 않았다. 원격으로 집컴에 접속해서 어떻게든 해보려고 했으나 집컴을 켜줄 사람이 없어서 할 수 없이 첫날은 그대로 시연했다.
팀원들이 자취방에 가서 컴을 들고왔다. 지스타동안 집에 있겠다고 했는데 그럼 가지고 가서 작업하라해서 알았다고 가지고 오라고 했기 때문이다. 정상버젼을 그래퍼 컴으로 시연시켰다. 해본사람들 하나같이 어렵다고 했다. 시스템을 이해못하는 것 같았다.
IGF가 시작됬다. 출품을 해야했는데 그 때까지 완성본이 나오지 않았다. 어쩔 수 없이 최대한 완성판과 비슷하게 해서 출품했다. 역시나 수상은 못했지만 IGF사이트에 스샷과 설명이 추가되었다. 그것만으로도 재미있었다.
목표인 인디게임공모전이 시작되었다. 5회차였는데, 이미 다른 팀들은 4회차에 내고 프로젝트를 종료한 팀들도 있었다. 우리는 처음부터 목표가 인디게임이었기 때문에 4회차에 완성이 되지 않아서 5회차로 미루었다.
결국 완성되어 인디게임에 출품하였으나 수상은 하지 못하였다.
나이트에서 서브로 도와주었던 친구들, 후배와 함께 쫑파티를 하고 공식적으로 완전히 프로젝트는 종료되었다.
- 330일간의 첫 완성프로젝트. 첫 3D프로젝트.
-> 1월 2일부터 11월 26일까지 약 330일정도 된다.
아무것도 모르는 상태에서 시작한 프로젝트 였고, 해낼 수 있을 까 하는 의심도 들었지만 너무 완성하고 싶었고, 그래서 잠도 안자가며 모든 걸 포기하고 매달렸다.
1학년 프로젝트를 완성하지 못한 한이 있었고, 첫 3D게임이라는 도전이 있었다.
프로그래머란에 내 이름 석자가 들어간 게임을 만들어 내고 싶었고, 완성한 게임을 가지고 싶었다.
좋은 팀원들을 만나서 결국 해내었고, 그러면서 얻은 것들이 정말 많다.
프로그래밍 자체에 대한 좀 더 이해가 생겼다고 생각하고, 어떻게 공부해야 할 지 감을 잡았다.
내가 얻은 경험을 후배들, 이제 졸작시작하는 동기들에게 알려주고 싶었다. 그래서 세미나도 해주었고,
조언을 구하는 사람에게는 꺼리낌없이 아는 모든 것을 알려주었다.
참고라도 되라는 심정에서 자랑할 것 하나 없는 부끄러운 소스지만 모두 공개했고, 작업일지, 그동안 생산되었던 모든 문서 공개했다. 이렇게 하면서 좀 더 기분이 좋아졌다.
앞으로 계속 이렇게 무언가를 해내고, 그걸 다른사람들에게 전해주며 살고 싶다.
나는 행복하다.
'For my Wonderful Life' 카테고리의 다른 글
| 늦었지만 작년 졸업작품 프로젝트 후기. (0) | 2009/04/12 |
|---|---|
| 지스타 출품용 포스터. (2) | 2008/12/21 |
| KSGC 공모전 출품버젼 플레이 영상. (2) | 2008/10/01 |
| KSGC 특별상 수상~~~~;; (2) | 2008/09/17 |
| 제작중인 게임 KSGC 공모전 출품스샷 (4) | 2008/09/08 |
| 현재 사용중인 Web Service들에 대해서. (0) | 2008/06/17 |
이올린에 북마크하기
이올린에 추천하기