yuchi's Development Home


4DyuchiGX #8 맵툴

조회 수 14308 추천 수 115 2002.09.02 01:42:34
순서가 약간 바뀌었다.정신없이 살다보니 지난 일도 사실 기억이 희미하다.
2차 PT에 대한글 쓰는게 먼저였던거 같은데 하이트필드부터 써버렸다.

희미한 기억으론 2차PT땐 별일 없었다.툴 언제 되냐..뭐 그런 소리와 매쉬조각으로 잘라서는 도저히 힘들어서 못한다..하이트필드같은거 되게 해달라 뭐 그런 내용들이 나왔고 나도 사실 별로 보여줄게 없었다.

어쨌든 7번 글에 썼다시피 라이트맵 문제도 있고 해서 3차 PT때 보여줄 내용은 하이트필드와 맵툴이로 정했다.실제 광대역 맵의 게임을 만들 수 있다는 것을 입증하는것이 주된 목표였다.따라서 하이트필드나 하이트필드를 대신할 수 있는 방법을 보여야했고 이를 편집할 수 있는 툴도 보여줘야했다.

하이트필드에 대한건 아래에 썼고 맵툴에 대해서 써보도록 한다.

윈도우즈의 UI프로그래밍을 해보신 분이라면 이놈의 작업이 얼마나 짜증나고 엿같은지 충분히 알고 있으리라 생각한다.아니 어쩌면 그쪽이 더 재밌다고 생각하는 사람도 있을지 모르겠다.어쨌든 난 윈도우모드보단 콘솔모드를 선호하는 편이고 화면에 아이콘과 버튼을 잔뜩 띄우고 뭔가 뽀대나는 복잡한 인터페이스를 제공해야하는 그런 류의 프로그래밍이라면 질색이다.공부되는거 없을뿐더러 노가다가 만빵이기 때문이다.
MFC나 VCL을 쓰면 좀 편하긴 하지만 역시 짜증나긴 마찬가지.
게다가 난 MFC는 죽도록싫어하고 잘 다루지도 못한다.
어쨌든 win32 API만을 사용해서 툴의 UI를 구현하는 것은 맨손으로 밭매기와 같은 일.이런 짓 시키라고 서브 프로그래머가 있다고 하는데 이건 도저히 진영씨한테 시킬수 없었다.이 사람이 MFC에 익숙지 않은것도 이유이고 툴만들면서 엔진에 필요한 기능을 추가하고 수정하는 작업이 동시에 이루어져야 하는데 아무래도 작업이 분산되면 일정은 늘어질수밖에 없었다.PT에 쫓겨다녀야하는 내 입장으로서는 어쨌든 빨리 일을 처리해야했다.
결국 툴도 내가 만들기로 했다.

우선 툴의 기반 API는 뭘로 할것인가..에 대해선 openGL이나 D3D를 직접 사용해서 만드는게 낫지 않겠냐는 의견도 나왔으나 나는 한치의 망설임도 없이 개발중인 4DyuchiGX를 그대로 하부 API로 쓰기로 했다.D3D나 GL의 API는 전혀 쓰지 않을 생각이었다.그래야만 엔진이 더 쓸만해질것이고 검증할수 있으며 엔진을 업그레이드하면 툴도 업그레이드된다.또한 툴을 사용하는 이는 게임상에 어떻게 돌아갈지 정확히 시뮬레이션 할 수 있다.
짜증나는 부분도 있었지만 엔진을 inprocess COM으로 만든덕에 어렵지 않게 맵툴에서 갖다 쓸수 있었다.

그리고.. 예의 MFC를 이용한 UI작업과 엔진에 툴기능을 넣는 작업에 들어갔다..
이 대목에선....시바..다른 말 다 필요없다.
시바..절라 엿같았다.맥스 플러그인 만들때와 삐까한 스트레스,노가다의 연속이었다.win32API만 갖고 짜면 차라리 모든게 명확하기라도 하지..MFC라이브러리는 안에서 뭔 짓을 하는지 도무지 알수가 없으니 버그잡기도 힘들고 뜻대로 안돌아가면 도무지 이유를 알수가 없었다.더군다나 MFC class wizard는 실제 코드와 100% 매치되지 않았기 때문에 클래스 위저드없이 노가다 코딩을 해야하는 경우가 많았다.애초에 MFC로 짠다는게 유지보수가 용이한 모듈화된 코드를 짠다는건 포기해야 하는 일이었기에 소스코드는 거의 걸레가 되어갔다.
일단 하이트필드 편집이 우선이었으므로 하이트필드의 기본 파라메터를 입력해주는 윈도우와 하이트필드에 쓰일 타일 팔레트등을 구현했다.타일 팔레트 구현을 위해서 엔진에 스프라이트 기능을 추가했다.하이트 필드의 지형 편집을 위한 몇몇 함수들은 진영씨의 도움을 받아 비교적 손쉽게 구현할 수 있었다.

일단 죽이되든 밥이되든 쇄빠지게 걸레코드를 만들어가지고...3차 PT까진 시간에 맞출수 있었다.하이트필드에 다이나믹 라이트와 라이트맵까지 넣고(이 부분은 나중에 엄청 뜯어고쳤다.7장 하이트필드 참고) 툴을 이용해서 간단한 지형편집까지 구현, PT에 들어갔다.뭐 여전히 시큰둥한 반응이었지만 무사히 마쳤고...에..그리고 툴 소스도 엄청 뜯어고치고 엔진도 엄청 뜯어고치고...
그렇게 됐다.
지금도 하기싫어서 미치겠는데 어쨌든 m모 게임팀의 지원을 위해 최근 2개월 정도도 툴 만드는데 몽땅 쏟아부었고 요 밑의 스크린샷도 그 툴의 스샷이다.덕택에 현재는 게임 오브젝트의 배치,이벤트 트리거박스의 배치,라이트 배치,브러쉬를 이용한 매쉬 생성,지형편집 생성 등등 기본적으로 될건 된다.

최근 작업한 내용으로는 하이트필드의 몇백만개는 되는 버텍스중 한녀석을 골라내기 위해서(3차 PT할때가지만 해도 선형검색이었다.졸라 느렸다) 하이트필드 컴포넌트 안에 따로 쿼드 트리를 만들어넣었다. 덕택에 타일 픽킹도 매우 빠르게할수 있게됐다.프리핸드로 하이트필드에 마우스 커서 올려놓고 그림 그려도될 정도다.
맵 오브젝트에 대한 picking 기능이 들어갔고 일단 모든 게임 개체에 대해서 마우스로 picking하는게 가능해졌다.이벤트 트리거도 생성 편집기능이 들어갔고 브러쉬도 새로 만들었다.매쉬오브젝트간 복사,생성 기능도 새로 만들어넣었다.
자잘한 버그 때려잡고 뷰모드도 추가됐다...뭐...여튼 짜증은 나는데 해놓고나니까 좀 뽀대도 나는거 같고...
그럼에도 불구하고 아직 추가,수정할게 많다..---;
아 엿스러워라....
9번째 글에서 진짜로 라이트와 쉐도우에 대한 썰을 풀어보자.









베지타

2002.09.02 14:34:21
*.192.167.157

흠....

괜찮은데여....

성희

2002.09.09 21:59:03
*.172.93.18

웃... 글이 올라왔군요 +_+;

영천팬

2002.11.14 16:34:00
*.238.38.15

좀 더 자주 써주세염.. 넘넘 기다리고 있어여~~ ㅋㄷㅋㄷ

^____^

2008.03.20 02:39:22
*.29.249.44

음...음...+ㅂ+
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
201 TFS 사용시 로컬패스 맵핑이 안될 때 처리방법 여치 2011-07-11 42815
200 3D엔진 및 네트웍 솔루션 x64 포팅 프로젝트 대충 완료 file [4] 여치 2007-05-05 37340
199 dx11프로젝트 - 아웃라인 쉐이더 및 테셀레이션 여치 2011-06-06 24254
» 4DyuchiGX #8 맵툴 [4] 여치 2002-09-02 14308
197 WinRT 디바이스 디버깅에서 DEP0100 : Deployment failed due to a Developer Licensing issue에러를 만났을때 여치 2013-03-04 13136
196 계속되는 MS의 삽질에 대한 생각. [3] 여치 2013-02-15 13084
195 라이트맵 텍스쳐 좌표 생성 코드 개선 file [1] 여치 2006-12-31 12758
194 WinRT(Windows Store App) 엔진 프로젝트 file 여치 2013-02-12 11836
193 제가 필요해서 만든 OneDrivePlayer가 윈스토어에 올라갔네요. [2] 여치 2014-08-23 11359
192 jailbreaking된 Surface RT에 win32 D3D9엔진을 포팅해 보았다. 여치 2013-02-10 10461
191 Using Windows 8* WinRT API from desktop applications 여치 2013-03-10 9113
190 vs2010공백 및 탭 표시 핫키 file 여치 2012-08-08 8947
189 Visual Studio 2012 Compiling Native for ARM 여치 2013-02-02 7443
188 x64 어셈을 쓰기 위해 몇 가지 찾아본 결과(현재까지 경과) 여치 2005-12-09 7435
187 iOS엔진 프로젝트 file 여치 2012-09-15 7293
186 포스트 이펙트-글로우 file 여치 2004-12-04 7273
185 기적같은 디버깅. 컴파일러 버그? 역시나 그럴리가. [3] 여치 2014-05-14 6776
184 dx11프로젝트 - 테셀레이션(Curved PN Triangles) file 여치 2011-03-15 6745
183 hlsl ddx,ddy 여치 2012-10-12 6484
182 4DyuchiGX #7 HeightField [5] 여치 2002-09-01 6314
天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命 The Great Proletarian Cultural Revolution 人權 Human Rights 民運 Democratization 自由 Freedom 獨立 Independence 多黨制 Multi-party system 民主 言論 思想 反共 反革命 抗議 運動 騷亂 暴亂 騷擾 擾亂 抗暴 平反 維權 示威游行 法輪功 Falun Dafa 李洪志 法輪大法 大法弟子 強制斷種 強制堕胎 民族淨化 人體實驗 胡耀邦 趙紫陽 魏京生 王丹 還政於民 和平演變 激流中國 北京之春 大紀元時報 九評論共産黨 獨裁 專制 壓制 統一 監視 鎮壓 迫害 侵略 掠奪 破壞 拷問 屠殺 肅清 活摘器官 障テ社會 誘拐 買賣人口 遊進 走私 毒品 賣淫 春畫 賭博 六合彩 台灣 臺灣 Taiwan Formosa 中華民國 Republic of China 西藏 土伯特 唐古特 Tibet 達償ワ喇嘛 Dalai Lama 新疆維吾爾自治區 The Xinjiang Uyghur Autonomous Region free tibet



XE Login

天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命 The Great Proletarian Cultural Revolution 人權 Human Rights 民運 Democratization 自由 Freedom 獨立 Independence 多黨制 Multi-party system 民主 言論 思想 反共 反革命 抗議 運動 騷亂 暴亂 騷擾 擾亂 抗暴 平反 維權 示威游行 法輪功 Falun Dafa 李洪志 法輪大法 大法弟子 強制斷種 強制堕胎 民族淨化 人體實驗 胡耀邦 趙紫陽 魏京生 王丹 還政於民 和平演變 激流中國 北京之春 大紀元時報 九評論共産黨 獨裁 專制 壓制 統一 監視 鎮壓 迫害 侵略 掠奪 破壞 拷問 屠殺 肅清 活摘器官 障テ社會 誘拐 買賣人口 遊進 走私 毒品 賣淫 春畫 賭博 六合彩 台灣 臺灣 Taiwan Formosa 中華民國 Republic of China 西藏 土伯特 唐古特 Tibet 達償ワ喇嘛 Dalai Lama 新疆維吾爾自治區 The Xinjiang Uyghur Autonomous Region free tibet