BSP/PORTAL적용 결과

본점(http://yuchi.net)에 올린 글입니다. 게이버 따위에 자료를 올려줘야 할 가치가 있는진 좀 의문이긴 하지만 일단 올려봅니다.

제 홈피에서도 몇번인가 언급한적이 있고 KGC2006때 발표했었던 주제입니다.

툴을 이용해서 ROOM을 모델링하고 PORTAL을 자동생성, 공간 구분은 BSP를 이용하는 기술이죠.

그 동안 아이디어를 실제 프로젝트에 적용하는데 꽤 시간과 노력을 들였고, 이젠 안정화 단계에 접어들었다고 생각합니다.

해서 홈피 놀러오시는 분들에게 서비스 차원으로 언급한 기술을 적용한 결과를 간략하게 적어보도록 하겠습니다.

KGC2006발표자료가 궁금한 분은 이곳을 클릭하세요. 기술 자체에 대한 설명은 발표자료에 나와있으므로 생략하고 현재 제가 진행하고 있는 프로젝트에 적용한 결과에 대해서만 적겠습니다.

어떤식으로 작동하는지 간단한 동영상을 만들었구요.

두개의 동영상으로 첫번째는 솔리드 모델로, 두번째는 와이어프레임으로 표시합니다.

컬링이 어떻게 이루어지는지 실제로 볼 수 있습니다.

우선 테스트 환경은 다음과 같습니다.

테스트 머신 : INTEL Q6600 2.4GHz Quad Core , nVidia Geforce8600GT OS : windows server2003 x64 게임해상도 : 윈도우모드 1016*740, 32비트컬러 실행EXE : Server_AGENT_x64_release.exe Server_GAME_x64_release.exe EO_Client_01_x64_release.exe

저희 프로젝트는 TPS스타일의 전투를 하는 mmorpg입니다.

다만 이 이상은 아직 공개할 때가 아니므로 마을맵 일부분에서 컬링 데모를 보여줄 정도로만 캡춰하여 리사이즈 및 그레이스케일 처리하였습니다.

동영상 링크는 다음과 같습니다.

솔리드모델(클릭)

와이어프레임(클릭)

동영상 캡춰시에는 FRAPS가 30프레임으로 동기화 시키기 때문에 정확한 프레임 레이트를 표시할 수 없었습니다.

일단 실외 영역으로 처리하는 건물 바깥쪽, 정확히는 BSP공간의 바깥쪽에서는 평균 160-220프레임 정도, 건물 내에서 적절히 컬링 되는 경우 350- 670 프레임 정도의 프레임 레이트를 얻을 수 있었습니다.

(과거 테스트에선 16비트 모드 기준으로 890프레임 정도까지 나오는걸 확인했습니다.)

다음의 이미지는 캐릭터의 이동경로와 맵에서 포탈의 위치를 표시하고 있습니다.

노란색 선이 포탈입니다. 건물 내부에선 이보다 많은 수의 포탈이 복잡하게 배치되어있습니다만 정확히 기억하지 못하므로 대충 표시했습니다.

동영상과 관련해서 중요한건 입구 부분의 포탈과 캐릭터의 최종 위치, 보고 있는 방향입니다.

다음은 최종 위치에서 프레임 레이트를 표시하고 있는 스틸 샷입니다.

대략 저 위치에서 벽을 바라보고 있을 경우 뷰프러스텀이 통과할 수 있는 포탈이 전혀 없기 때문에 벽과 캐릭터 외에는 거의 렌더링 하지 않습니다.

그 덕에 650-670프레임 정도 나옵니다.

이러한 BSP/PORTAL체계가 완벽한 것은 아닙니다만 오클루젼 사용을 병행하면 효율을 상당히 높일 수 있습니다.

현재 사무실의 테스트 PC(AMD 2.2GHz Quad core, GeForce9600gt)에서는 1920*1080, 32비트 모드에서 평균 250프레임 이상(주로 실외), 최대 450프레임(실내) 정도의 프레임 레이트를 확인 할 수 있습니다.

몬스터 및 npc가 돌아다니고 전투를 할 때의 프레임레이트 이므로 실제 서비스하는 시점에서도 큰 차이는 없을것으로 봅니다.

긴 설명이 필요 없겠지만 간략하게 이러한 기술 적용으로 이득을 얻는 상황을 게임 컨텐츠 기준으로 풀어서 적어보면…

1. 동굴이나 건물 등에 몬스터, 플레이어,NPC를 왕창 때려넣어도 필드(실외)에서 사냥을 즐기는 유져들의 프레임 레이트에 영향을 거의 주지 않는다.

2. 동굴이나 건물등으로 들어갔을때 필드(실외)에 있는 플레이어,몬스터,npc등을 완전 제외시킬 수 있으므로 프레임 레이트를 상당히 올릴 수 있다.

3. 10층짜리 탑 따위를 만들어서 플레이어,npc,몬스터등을 잔뜩 때려넣어도 좋다. 층간 room과 포탈 구분만 되어있다면 상당한 프레임 레이트를 얻을 수 있다.

뭐 대충 이렇습니다. 간만의 기술 소개 자료를 올리려니 의외로 손이 많이 가네요.


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중