• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

몬스터 스폰할때 3D 지형이면 어떻게 스폰할 위치를 구하는지 궁금합니다..

20.10.30 00:59 작성 조회수 560

0

높이 값이 다 다른 예를 들어서 굴곡이 있는 언덕같은 지형이라고 했을 때 몬스터 스폰은 어떻게 결정하는지 궁금해요..

스폰범위의 근방 3d 맵 메쉬 데이터를 전부 뒤져서 언덕인지 아닌지 찾아봐야하는건가요..?? 이렇게 한다고 해도 이걸 어떻게 어떤 알고리즘으로 해야하는지도 모르겠네요;;

아니면 뭔가 3d맵을 2d로 만듬다음에 높이값만 어떻게 추가적으로 넣는다던지..? 2차원 배열에서 각 배열 원소에 높이값을 추가?

아니면 그냥 3차원배열로 관리?  3d지형 메쉬를 직접 관리할 것 같지는 않은데.. 서버같은 경우는 3d지형 데이터를 보통 어떤식으로 관리하나요?? 지형 메쉬데이터를 설마 다뽑아서 관리하나요..???!? 너무 궁금합니다!

서버같은 경우도 어떻게 구하는지 궁금합니다. 아니면 뭔가 꼼수 같은게 있는 건지요..? 실무에선 보통 어떻게 하는지 궁금해요

강의 항상 감사합니다~! 

답변 3

·

답변을 작성해보세요.

1

Cell은 그리드의 한 칸을 의미합니다.
3D라고 해도 모든 좌표마다 높이값이 다를텐데
그 무수히 많은 점들을 서버에서 일일히 기억할 수는 없겠죠.
그래서 결국 그리드처럼 일정한 사이즈의 사각형들로 나눠서 표현을 하게 됩니다.
(사실 클라에서도 마찬가지로 모든 좌표들의 높이를 기억하는 것은 아니고,
Terrain의 높이값을 지정하는 HeightMap을 이용해서 적당히 중간값을 계산하는거와 비슷합니다.)

그런데 동굴처럼 음푹 패여있는 지형은 애매한게
동일한 위치라도 동굴 안/밖이냐에 따라 2가지 위치가 있을 수 있게 됩니다.
위 그림에서 초록색 선 어딘가에 플레이어가 위치한다 가정하면,
높이를 기준으로 (1)위치인지 (2)위치인지를 판단해야 하겠죠. 이를 Layer라고 표현한겁니다.
ex) (1)위치보다 높이 있으면 (1) 위치로 인정, 아니라면 (2)로 인정하는 식으로 보정



1

메쉬 데이터를 뒤지기엔, 메쉬에 너~무 많은 정점이 있으니 서버에선 감당을 못합니다.

아니면 뭔가 3d맵을 2d로 만듬다음에 높이값만 어떻게 추가적으로 넣는다던지..?
2차원 배열에서 각 배열 원소에 높이값을 추가?

-> 이 방법이 가장 고전적으로 사용하는 방법입니다.
보통 3D게임에선 Terrain(지형)과 이동할 수 없는 고정 StaticMesh들에 따라
맵 위에 서 있는 좌표가 결정되는데,
적절한 툴을 만들어서 적당하게 위 사항들을 고려한 그리드를 생성하고,
높낮이가 있는 게임이라면 여기서 높이값도 넣어주면 됩니다.
그런데 의외로 MMO중에서는 무늬만 3D인 게임이 은근 많습니다.
리니지2M만 봐도 캐릭터는 3D이지만 실제 이동이나 맵 자체는 2D랑 별 다를 바가 없죠.

그런데 와우같이 동굴의 개념이 들어가는 경우라면 상황이 살짝 더 복잡해집니다.
같은 좌표라 해도 높이에 따라 동굴 안일 수도, 동굴 위의 지형에 있을 수도 있기 때문이죠.
이럴 땐 높낮이에 따라 적용하는 Cell을 바꿔치기 하는 일종의 Layer를 둔다거나,
아니면 아예 3D Cell의 느낌인 Voxel로 구현을 해야 합니다.
인터넷 검색해보면 복셀 관련 문서가 많이 나올거에요.

0

이럴 땐 높낮이에 따라 적용하는 Cell을 바꿔치기 하는 일종의 Layer 둔다거나

이부분이 이해가 안되는데 자세하게 설명좀 부탁드려도될까요? 그리고 cell은 정확히 어떤걸 의미하는 단어죠..?