yuchi's Development Home


미치겠군.

조회 수 1665 추천 수 46 2005.04.17 03:25:45
프로젝트 시작한 이후 내가 집중적으로 매달렸던 이슈는 BSP/PORTAL/PVS였다.

BSP로 포탈을 만들고 포탈을 통해서 PVS를 구현하는 아주 간단한 주제.

드디어 되었노라고 큰 소리 땅땅 치며 홈피에도 적어놓은 바 있다.

개밥(dog food-말하자면 스스로가 마루타가 되는 테스트)을 열심히 먹어본 결과...PVS에 문제가 있는 것을 알게 되었다.

뭐..그렁저렁 잘 돌아가는걸로 보였다. 약간씩 보일 공간이 안보이는 것을 제외하면....

처음엔 단순히 float오차 문제일거라 생각했다.
오늘까지 코드를 열심히 분석해본 결과, 오차도 관련은 있지만 더 복합적인 문제라는 결론을 얻었다.

문제는 포탈을 잘라내고 뷰프러스텀을 생성해주는 코드 자체가 완벽한지 믿을수 없다는 것.
PVS자체로는 빌드가 끝나기 전에는 화면을 볼 수 있는게 없다는 것이 핑계였다.그래서 철저한 테스트를 기피했다.
하위 모듈부터 확실하게 테스트하고 상위 레이어를 구성한다는 평소 내 지론에서 벗어난 엄청난 실수였다.

과연...하위 함수들을 가능한 많이 테스트하고 넘어간 BSP/PORTAL 시스템에선 일단 현재까진 큰 문제가 없다고 판단했으나, 되겠지...라는 생각으로 단숨에 짜버린 PVS는 현재까지도 제대로 돌아가지 않고 있다.

이런 젠장.

난 그래픽 프로그래밍은 정말 하기 싫었는데...

차라리 CPU랑 인터럽트 쪼물딱 거리는 일이었다면 좀 더 잘 할 수 있었는데...

수학 잘하는 이들은 이 쯤이야..라고 할지 모르지만 부동소수점 연산은 수학대로 되지는 않는단 말이다.

최악의 경우를 상정하고 오늘 계획을 다시 세웠다.

일단 PVS 코드 전체를 하위 모듈부터 차근차근 다시 짜고 테스트할 생각이다.
근데 이거 다시 짠다고 제대로 돌아간다는 보장이 있냐고..T_T...

일주일간 열심히 매달려보고 그래도 안되면 내 머리를 뽀사든지 다른 방법을 생각해봐야지.

어휴.....

댓글 '12'

서재형

2005.04.17 17:03:04
*.52.212.246

잠깐이나마 잊어보심이. 그후에 다시 함 해보시는것도 좋을듯 싶네요. 허긴 저도 한참 열라게 했는데
검증이 다됐고 몇년간 썼던거다 문제없다 싶은데서 삑~ 사리가 나면 열라 난감~ 엉뚱한데서 헤매게
데고... 나중에 보면 특히 숫자 같은데서 오타가 있었다던지 =.=;;; 아니면 잘못 생각한걸 맞다고 우겼
다던지 어줍잖은 최적화 한답시고 초기화나 연산이 꼬이는등의 문제가 있었어요. 그때도 느끼는 거지
만 최적화에 너무 연연하다보니! 본질을 놓치는 경우가 있기도 했었고. 최적화는 나중에 하라는 말을
다시 한번 절감하게 되기도 하고. 영천님이나 저나(함부로 일반화 하는것 같아서 죄송) 최적화에 취미
아닌 취미가 있은것 같아서 ^_^ 아뭏든 바람이나 한번 쏘이시고 다시함 매진하시는건 어떨지~
그다지 도움이 못되는 얘기들이네요. ㅎㅎ

이선우

2005.04.18 17:05:38
*.235.238.120

흠. 머 짜다보면 확 뜯어고치고 싶은코드 종종 나오기 마련 아니겟어요 ㅎㅎㅎ 근데 완전 꼬인거 같으면 아까워도 과감하게 버리고 새로 짜는게 더 좋지 않을까 싶슴다. 저야 실력이 업어서 비유가 될지 몰겟슴다만.. 모든지 코딩하다 구조적 결함으로 망했을때 과감히 버리고 두번째 짤땐 이상하게 잘되더구만요. 저만그런가?? ㅎㅎㅎ

zapwand

2005.04.19 09:46:52
*.174.243.222

저도 삽질하면서 몇번씩 특정 기능을 하는 코드들을 다시 짤때가 많은데 확실히 전의 것보다
나아지더군요.
저도 지금 바램이 있다면 짜놓고 일주일만 지나면 제가 봐도 어떻게 동작하는지도 모를정도로 신기하게
복잡한 제 코드들을 좀 알기쉽게 정리하고픈 희망이 있습니다만.....현재는 그곳에서 버그가 발생하지
않기만을 바랄 뿐이죠.....-,.-; 버그나면 내가 짜놓고도 코드 분석해야 할판이니.....

chan++

2005.04.19 12:17:08
*.189.163.130

고생하는걸 보니 웬지 흐뭇하군. 밥은 언제살건가?

여치

2005.04.19 13:55:42
*.153.121.88

여자친구랑 제주도 놀러갔다온 인간한테 밥을 왜 사야되는건데?(-___________-)

게임초보

2005.04.19 23:53:31
*.51.68.67

포탈만 쓰고 bsp/pvs안쓰면 많이 느려집니까? 외국의 경우에 bsp컴파일러 구현을 포기하는 사례가 많더군요. 결국은 quark나 zoners 컴파일러에 의존하고 만다는...

여치

2005.04.20 00:02:57
*.232.217.250

언리얼이 포탈만을 사용합니다. 일전에 언리얼 세미나때 팀 스위니가 직접 얘기했습니다.pvs는 사용하지 않는다고.그러니까 속도면에서도 문제 될 것은 없습니다.쓸만한 방식이란 얘기죠. 문제는...
언리얼에디터만큼 훌륭한 맵 에디터가 필요합니다. 맵 에디터만 잘 만든다면 해볼만 합니다.
제 경우 처음에 포탈만 쓰는 방식으로 가려고 했습니다만 맵툴을 도저히 그만큼 만들수 없더군요. 시간,인력,기술 모두 부족했습니다.차라리 UI에 신경쓸 필요없는 bsp컴파일러쪽이 현실성 있었죠.

결론적으로 어느쪽을 선택하든 충분한 효과를 거둘 수는 있습니다.
다만 bsp/portal/pvs 컴파일러를 멀쩡하게 만들던지 맵 에디터를 확실하게 만들던지 어느쪽이든 상당한 노력이 필요하겠죠.

게임 초보

2005.04.20 11:06:49
*.51.64.221

제가 쫌 상상해 봤는 데요. 포탈을 아무 에디터로든 만들 수는 있을 것 같습니다. 포탈 폴리곤을 선정하는 것이 중요한 것 같은데 특정 매트리얼을 따로 두어서 이걸 포탈 폴리곤에 지정하는 겁니다. 그리고 매트리얼의 특정 속성값, 예를 들자면 ambient color R,G,B를 두고 R값을 특정 포탈에 묶여있는 카메라(뷰프러스텀)ID로 지정해 두면 거울 효과 같은 것도 해 낼 수 있고요. 다만 디자이너가 이 포탈같은 개념을 알고 맵 디자인 타임에 신경을 써줘야 하는 것 같습니다.
요즘 추세라는 게 퀘이크엔진에서도 특히 그렇지만 디자이너가 많이 알아야 하는 것 같습니다. 언리얼 엔진에서는 예전 부터 그랬지만 퀘이크엔진 같으면 메달오브 아너등의 게임에서 야외 장면에서 포탈을 어디에 넣어야 하는 지 알려면 많이 알아야 하지 않겠습니까? 존카멕이 블로그에서 밝혔듯이 최고의 디자인 팀 덕분에 최고의 엔진이 빛나는 것 같습니다.

여치

2005.04.20 13:01:44
*.153.121.88

저도 시도해봤었는데요 그렇게 만만치 않습니다.
일단 포탈만 쓰려면 룸의 개념이 필요하고 룸의 안과 밖이 정의되어야하는데 어디서부터 어디까지가 안이고 밖인지 명확하게 해줄 방법이 없습니다.
매쉬가 만들어질때 포탈과 룸(물론 안과밖의 면들을 구분하여)이 자동으로 지정이 되어야합니다.
맥스등의 범용 툴로 모델링 해놓고 따로 지정하는건 현실적으로 불가능합니다. 뭐 3D 지식이 빠싹한 그래픽 디자이너들을 이빠이 투입해서 죽도록 돌리면 가능할지도 모르지만...

BSP기반의 PVS로 오게 된 결정적인 이유는, 제가 직접 포탈 만들어가면서 모델링 하다가 현실적으로 불가능하다고 느꼈기 때문이죠.

게임초보

2005.04.20 19:04:41
*.51.72.2

그렇게 된거로 군요. 역시 부딫혀봐야 알게되는 것이로 군요. 건투를 빕니다.

여치

2005.04.21 05:41:59
*.232.217.250

뷰볼륨을 만드는 코드가 완전히 잘못된 것을 발견. 반나절 뜯어고치고 새벽에 디버깅 해서 일단 정상적으로 돌아가는것 같습니다.
조금만 더 생각하고 테스트 했더라면 한달은 절약할 수 있었을텐데...

아직 뭔 문제가 더 숨겨져있을지 알수는 없지만 일단 문제되던 '화면에 보여야할 할 공간이 안보이는 문제'는 해결.
오히려 생각보다 많은 리프들이 보여서 다시 이리저리 손을 대봐야할거 같은데...
여튼 조언해주신 여러분들께 감사드립니다.

chan++

2005.04.25 18:15:39
*.189.163.130

밥 살일 많지, 네비 거치대 가져가고 밥사기로 한것도 안샀고. 또 하나 더있는데 머였더라.
파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 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

Think



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