혹시 궁금해 하시는 분이 계실까봐 스샷 몇장올립니다.
자세한 내용은 일단 http://www.larosel.com/209 를 참고하세요..;

사용자 삽입 이미지

대략 이런 형태가 나왔습니다.

사용자 삽입 이미지
원래는 이런 형태죠;;

사용자 삽입 이미지
와이어 프레임은 이런 느낌입니다.

사용자 삽입 이미지
걸을수 있는 바닥면에 대한 데이터도 여전히 있습니다.

사용자 삽입 이미지
마을전경은 대략 이런느낌;;

점점 김성민씨의 Space Filling Volume와 모냥이 비슷해집니다..;;

일단은 버전2로 올라오면서 용량 최적화가 많이 됐습니다.
이전 구조에 공간데이터를 넣었으면 좌절할만한 용량이-_-;;

일단 기본설명은 버전1에서 설명했으니 생략하도록 하겠습니다..;

데이터가 같은 셀들을 묶어서 용량최적화를 했고..
공간의 데이터를 가지고 있을 수 있도록 내용을 추가했습니다.
알고리즘은 V1에서 높이만 뽑던걸 Pair로 뽑도록 변경한거라 별다른 내용은 없습니다.

렌더링 되고 있는 화면은 닫힌 공간(실제 공간을 차지하고 있는)을 렌더링 하고 있지만
실제 데이터는 열린 공간을 가지고 있습니다.
닫힌 공간으로는 충돌처리를 할수가 없게 되어 버리더군요;;
이유는 캐릭터가 점..; 이라면 닫힌공간에 부딪히나..를 검사하면 되지만
캐릭터가 세로부피가 있기 때문에(머 대략2m라고 치고) 이 공간에 내가 들어갈 수 있나..를 검사하도록 만들어야 합니다.
다리가 있다고 쳤을때 다리하고 지면이 1미터 간격밖에 안되는데 지나가 버리면 이상하겠죠;;

거창하게 공간데이터 이긴 하지만 실제 사용은 높이만 가지고 있던 내용이랑 큰차이가 없어서 3D상의 공간 충돌뿐만이 아니라 공간상의 길찾기도 내용만 약간 수정해서 그대로 넣어도 사용하는데 지장은 없습니다. 속도적인 부분도 가만할수 있을정도일듯 싶습니다.

잠수나 날아다니거나 하는경우는 사실 1인칭형으로 이동이 될거기 때문에 3D길찾기가 필요한 경우는 없겠지만 혹시나 수중전투-_-같은 경우는 필요하겠죠..; 혹시 몹이 하늘을 날아다니거나..하는 경우도 써먹을수도 있을거고..;;

그리고 걸을수 있는 데이터...의 경우에는 공간데이터와는 따로 가지고 있습니다.
공간데이터쪽에 플래그 같은걸 넣어도 되지만 길찾기 할 때 속도를 높이려고 그냥 중복해서 가지고 있습니다.;;

전과 달라진 내용은 지면데이터 쪽에도 지면에 대한 공간으로 가지고 있습니다.
혹시 캐릭터나 몬스터 이동시 높이에 대한 부피체크(위에서 설명한)가 들어갈 일이 있을까봐 같이 넣었습니다. ( 사실은 따로 만들기 귀찮아서;; )

머 그외에는 버전1에 비해 특별한 내용은 없군요..;

사용자 삽입 이미지

용량을 궁금해 하실까봐 용량을 캡쳐했습니다.
dat파일이 실제 서버에서 사용하는 파일입니다.

메모리 구조와 파일구조가 거의 비슷해서 실제 셀데이터 올릴때 vector에 공간차지하는거 약간 1~2메가 정도 말고는 실제 메모리에 올라가는 용량 그대로입니다.

4020*4020 1미터 단위 4개..와 2040*2040 1미터 단위 2개..맵이 185메가 정도군요..;
원래는 좀 더되야 하는데 내부에서 중복셀을 줄이기 위해 16분할로 데이터를 가지고 있습니다.
용량의 대부분이 셀데이터와 실제 지형을 연결시켜주는 인덱스 데이터이기 때문에
중복셀이 많으면 4바이트를 쓰고 적으면 1, 2바이트를 사용하기 때문에 분할하는것과 안하는것이 차이가 꽤 납니다. ( 많게는 2배까지 )

사실 실제 서버는 존서버 방식이라 한서버에 몇개의 존만 올라가서 그냥 써도 상관은 없지만 나중에 테스트 서버같은데는 모든존을 다 올려버리게 될거 같아서 가능한 다이어트를 했습니다.

_ST가 붙은 파일들은 클라이언트용 패킹파일입니다.
파일 내용자체는 100%같습니다.

사용자 삽입 이미지
안에는 대략 이런 모냥이죠;;

서버파일은 그냥 파일을 줄줄줄 붙여논거 밖에 없습니다. 파일 합치는 방식만 다르고 실제파일은 같습니다.

클라이언트용 패킹파일샷은 압축했을때 얼마나 압축이 되나.. 참고하시라고 올렸습니다.
185메가 짜리가 72메가 가량이 되었군요..
실제 클라이언트에서 그대로 쓰는 구조라 압축률이 낮은걸 쓰고 있어서 저정도 용량입니다.
zip방식으로 걍 압축하면 50메가 정도입니다.

대충 내용은 이정도입니다..
소스를 만들어서 배포를 하거나 할 예정은 없습니다..;;;; ( 이 내용외의 기본 내용들을 만들어서 붙이기도 귀찮고 같이 딸려있는 다른 모듈들;; 덕분에;; )

알고리즘은 내용에 설명을 다 해놨으니 공간개념이 있는 프로그래머분들은 아마 내용만 보고 만드시는데 별 지장은 없을듯 싶습니다.

실제 소스도 공간데이터 만드는 부분 200라인 정도 데이터 구조랑, 로드, 세이브가 500라인정도밖에 안됩니다.

혹시 궁금하신 내용이 있으면 답변 해드리도록 하겠습니다.

'자료 > 내자료' 카테고리의 다른 글

mpl::is_vector  (2) 2009.02.17
SPE V1 - 길찾기용 지형구조  (9) 2006.12.10
게임을 위한 GUI모듈  (4) 2006.07.31
MSB/LSB template  (0) 2006.05.18
is_template  (0) 2006.05.10

+ Recent posts