yuchi's Development Home
글 수 694
프로젝트 시작한 이후 내가 집중적으로 매달렸던 이슈는 BSP/PORTAL/PVS였다.
BSP로 포탈을 만들고 포탈을 통해서 PVS를 구현하는 아주 간단한 주제.
드디어 되었노라고 큰 소리 땅땅 치며 홈피에도 적어놓은 바 있다.
개밥(dog food-말하자면 스스로가 마루타가 되는 테스트)을 열심히 먹어본 결과...PVS에 문제가 있는 것을 알게 되었다.
뭐..그렁저렁 잘 돌아가는걸로 보였다. 약간씩 보일 공간이 안보이는 것을 제외하면....
처음엔 단순히 float오차 문제일거라 생각했다.
오늘까지 코드를 열심히 분석해본 결과, 오차도 관련은 있지만 더 복합적인 문제라는 결론을 얻었다.
문제는 포탈을 잘라내고 뷰프러스텀을 생성해주는 코드 자체가 완벽한지 믿을수 없다는 것.
PVS자체로는 빌드가 끝나기 전에는 화면을 볼 수 있는게 없다는 것이 핑계였다.그래서 철저한 테스트를 기피했다.
하위 모듈부터 확실하게 테스트하고 상위 레이어를 구성한다는 평소 내 지론에서 벗어난 엄청난 실수였다.
과연...하위 함수들을 가능한 많이 테스트하고 넘어간 BSP/PORTAL 시스템에선 일단 현재까진 큰 문제가 없다고 판단했으나, 되겠지...라는 생각으로 단숨에 짜버린 PVS는 현재까지도 제대로 돌아가지 않고 있다.
이런 젠장.
난 그래픽 프로그래밍은 정말 하기 싫었는데...
차라리 CPU랑 인터럽트 쪼물딱 거리는 일이었다면 좀 더 잘 할 수 있었는데...
수학 잘하는 이들은 이 쯤이야..라고 할지 모르지만 부동소수점 연산은 수학대로 되지는 않는단 말이다.
최악의 경우를 상정하고 오늘 계획을 다시 세웠다.
일단 PVS 코드 전체를 하위 모듈부터 차근차근 다시 짜고 테스트할 생각이다.
근데 이거 다시 짠다고 제대로 돌아간다는 보장이 있냐고..T_T...
일주일간 열심히 매달려보고 그래도 안되면 내 머리를 뽀사든지 다른 방법을 생각해봐야지.
어휴.....
BSP로 포탈을 만들고 포탈을 통해서 PVS를 구현하는 아주 간단한 주제.
드디어 되었노라고 큰 소리 땅땅 치며 홈피에도 적어놓은 바 있다.
개밥(dog food-말하자면 스스로가 마루타가 되는 테스트)을 열심히 먹어본 결과...PVS에 문제가 있는 것을 알게 되었다.
뭐..그렁저렁 잘 돌아가는걸로 보였다. 약간씩 보일 공간이 안보이는 것을 제외하면....
처음엔 단순히 float오차 문제일거라 생각했다.
오늘까지 코드를 열심히 분석해본 결과, 오차도 관련은 있지만 더 복합적인 문제라는 결론을 얻었다.
문제는 포탈을 잘라내고 뷰프러스텀을 생성해주는 코드 자체가 완벽한지 믿을수 없다는 것.
PVS자체로는 빌드가 끝나기 전에는 화면을 볼 수 있는게 없다는 것이 핑계였다.그래서 철저한 테스트를 기피했다.
하위 모듈부터 확실하게 테스트하고 상위 레이어를 구성한다는 평소 내 지론에서 벗어난 엄청난 실수였다.
과연...하위 함수들을 가능한 많이 테스트하고 넘어간 BSP/PORTAL 시스템에선 일단 현재까진 큰 문제가 없다고 판단했으나, 되겠지...라는 생각으로 단숨에 짜버린 PVS는 현재까지도 제대로 돌아가지 않고 있다.
이런 젠장.
난 그래픽 프로그래밍은 정말 하기 싫었는데...
차라리 CPU랑 인터럽트 쪼물딱 거리는 일이었다면 좀 더 잘 할 수 있었는데...
수학 잘하는 이들은 이 쯤이야..라고 할지 모르지만 부동소수점 연산은 수학대로 되지는 않는단 말이다.
최악의 경우를 상정하고 오늘 계획을 다시 세웠다.
일단 PVS 코드 전체를 하위 모듈부터 차근차근 다시 짜고 테스트할 생각이다.
근데 이거 다시 짠다고 제대로 돌아간다는 보장이 있냐고..T_T...
일주일간 열심히 매달려보고 그래도 안되면 내 머리를 뽀사든지 다른 방법을 생각해봐야지.
어휴.....
댓글 '12'
여치
언리얼이 포탈만을 사용합니다. 일전에 언리얼 세미나때 팀 스위니가 직접 얘기했습니다.pvs는 사용하지 않는다고.그러니까 속도면에서도 문제 될 것은 없습니다.쓸만한 방식이란 얘기죠. 문제는...
언리얼에디터만큼 훌륭한 맵 에디터가 필요합니다. 맵 에디터만 잘 만든다면 해볼만 합니다.
제 경우 처음에 포탈만 쓰는 방식으로 가려고 했습니다만 맵툴을 도저히 그만큼 만들수 없더군요. 시간,인력,기술 모두 부족했습니다.차라리 UI에 신경쓸 필요없는 bsp컴파일러쪽이 현실성 있었죠.
결론적으로 어느쪽을 선택하든 충분한 효과를 거둘 수는 있습니다.
다만 bsp/portal/pvs 컴파일러를 멀쩡하게 만들던지 맵 에디터를 확실하게 만들던지 어느쪽이든 상당한 노력이 필요하겠죠.
언리얼에디터만큼 훌륭한 맵 에디터가 필요합니다. 맵 에디터만 잘 만든다면 해볼만 합니다.
제 경우 처음에 포탈만 쓰는 방식으로 가려고 했습니다만 맵툴을 도저히 그만큼 만들수 없더군요. 시간,인력,기술 모두 부족했습니다.차라리 UI에 신경쓸 필요없는 bsp컴파일러쪽이 현실성 있었죠.
결론적으로 어느쪽을 선택하든 충분한 효과를 거둘 수는 있습니다.
다만 bsp/portal/pvs 컴파일러를 멀쩡하게 만들던지 맵 에디터를 확실하게 만들던지 어느쪽이든 상당한 노력이 필요하겠죠.
게임 초보
제가 쫌 상상해 봤는 데요. 포탈을 아무 에디터로든 만들 수는 있을 것 같습니다. 포탈 폴리곤을 선정하는 것이 중요한 것 같은데 특정 매트리얼을 따로 두어서 이걸 포탈 폴리곤에 지정하는 겁니다. 그리고 매트리얼의 특정 속성값, 예를 들자면 ambient color R,G,B를 두고 R값을 특정 포탈에 묶여있는 카메라(뷰프러스텀)ID로 지정해 두면 거울 효과 같은 것도 해 낼 수 있고요. 다만 디자이너가 이 포탈같은 개념을 알고 맵 디자인 타임에 신경을 써줘야 하는 것 같습니다.
요즘 추세라는 게 퀘이크엔진에서도 특히 그렇지만 디자이너가 많이 알아야 하는 것 같습니다. 언리얼 엔진에서는 예전 부터 그랬지만 퀘이크엔진 같으면 메달오브 아너등의 게임에서 야외 장면에서 포탈을 어디에 넣어야 하는 지 알려면 많이 알아야 하지 않겠습니까? 존카멕이 블로그에서 밝혔듯이 최고의 디자인 팀 덕분에 최고의 엔진이 빛나는 것 같습니다.
요즘 추세라는 게 퀘이크엔진에서도 특히 그렇지만 디자이너가 많이 알아야 하는 것 같습니다. 언리얼 엔진에서는 예전 부터 그랬지만 퀘이크엔진 같으면 메달오브 아너등의 게임에서 야외 장면에서 포탈을 어디에 넣어야 하는 지 알려면 많이 알아야 하지 않겠습니까? 존카멕이 블로그에서 밝혔듯이 최고의 디자인 팀 덕분에 최고의 엔진이 빛나는 것 같습니다.
여치
저도 시도해봤었는데요 그렇게 만만치 않습니다.
일단 포탈만 쓰려면 룸의 개념이 필요하고 룸의 안과 밖이 정의되어야하는데 어디서부터 어디까지가 안이고 밖인지 명확하게 해줄 방법이 없습니다.
매쉬가 만들어질때 포탈과 룸(물론 안과밖의 면들을 구분하여)이 자동으로 지정이 되어야합니다.
맥스등의 범용 툴로 모델링 해놓고 따로 지정하는건 현실적으로 불가능합니다. 뭐 3D 지식이 빠싹한 그래픽 디자이너들을 이빠이 투입해서 죽도록 돌리면 가능할지도 모르지만...
BSP기반의 PVS로 오게 된 결정적인 이유는, 제가 직접 포탈 만들어가면서 모델링 하다가 현실적으로 불가능하다고 느꼈기 때문이죠.
일단 포탈만 쓰려면 룸의 개념이 필요하고 룸의 안과 밖이 정의되어야하는데 어디서부터 어디까지가 안이고 밖인지 명확하게 해줄 방법이 없습니다.
매쉬가 만들어질때 포탈과 룸(물론 안과밖의 면들을 구분하여)이 자동으로 지정이 되어야합니다.
맥스등의 범용 툴로 모델링 해놓고 따로 지정하는건 현실적으로 불가능합니다. 뭐 3D 지식이 빠싹한 그래픽 디자이너들을 이빠이 투입해서 죽도록 돌리면 가능할지도 모르지만...
BSP기반의 PVS로 오게 된 결정적인 이유는, 제가 직접 포탈 만들어가면서 모델링 하다가 현실적으로 불가능하다고 느꼈기 때문이죠.
검증이 다됐고 몇년간 썼던거다 문제없다 싶은데서 삑~ 사리가 나면 열라 난감~ 엉뚱한데서 헤매게
데고... 나중에 보면 특히 숫자 같은데서 오타가 있었다던지 =.=;;; 아니면 잘못 생각한걸 맞다고 우겼
다던지 어줍잖은 최적화 한답시고 초기화나 연산이 꼬이는등의 문제가 있었어요. 그때도 느끼는 거지
만 최적화에 너무 연연하다보니! 본질을 놓치는 경우가 있기도 했었고. 최적화는 나중에 하라는 말을
다시 한번 절감하게 되기도 하고. 영천님이나 저나(함부로 일반화 하는것 같아서 죄송) 최적화에 취미
아닌 취미가 있은것 같아서 ^_^ 아뭏든 바람이나 한번 쏘이시고 다시함 매진하시는건 어떨지~
그다지 도움이 못되는 얘기들이네요. ㅎㅎ