🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

횡스크롤 맵추출 질문입니다.

23.10.23 16:14 작성 조회수 359

0

몇시간을 고민하다가.... 도저히 아이디어가 떠오르지않아 질문드립니다.

횡스크롤 2D 포트폴리오 제작중입니다..

강의 다르게 바람의 나라 형식의 이동이 아닌
메이플스토리와 같은 이동방식을 선택했습니다.

맵은 타일맵으로 만들려고합니다.

 

여러가지 아이디어는 있는데 이게 긴가민가합니다.

 

생각해둔 아이디어는 타일맵의 오브젝트 좌표를 하나하나 따와서 Rect로 만들어

 

DirectX 방식으로 right.x, top.y ,left.x , buttony 좌표로 만들어 GroundObject[] 배열로 담아둡니다.

 


※ GroundObject1 의 좌표 (TileMap)

 

최초 캐릭터 생성시 Ground 라는 bool 값을 주어

이것을 True 생성하고 이동 패킷이 올때마다,

 

GroundObject[] 모든 Object를 돌면서 하나라도 True

되는곳이 있다면 Ground 의 bool 값은 편하지않고 서버에서 낙하처리를 하지 않는것입니다.

 

만약 모든 GroundObject[] 타일이 false 값이라면 캐릭터는 낙하하면서 GroundObject[]배열을 순차적으로 돌면서 True값이 있는지 찾는겁니다.

 

떨어지다가 GroundObject[]에 하나라도 다시 True 변환이 되는 되는 것이 있다면 Ground bool 값을 Ture 반환한후 캐릭터는 낙하를 멈추는 방식을 생각해 봤습니다.

 

하지만 Direct 나 API 같은경우야 ... Rect 충돌 함수가 있으니 편하다고 하지만은....

 

이방법은 필요시 모든 GroundObject를 돌아야하는 시간복잡도 O(n) 최악이 나올수도 있다는 것입니다.

 

※확실하진 않지만 여러 사람이 동시에 진행했을때 서버 과부화가 걸리지 않을까 생각이 듭니다.

 

또 하나의 걱정은 저의 짧은 지식으로 저 타일맵 안에 있는 그라운드 오브젝트의 좌표를 유니티에서 추출할수 없다는것이죠.

 

서론이 길었는데 질문입니다.

 

 

  1. 가장 걱정인것은 해당방법을 채용 하더라도
    서버에 과부화가 오지 않는가?

2.정답이 아니더라도 다른 아이디어가 있는지?

 

입니다.

 

답변 1

답변을 작성해보세요.

0

물론 맵이 커지면 부하가 오겠죠.
이런 경우 공간 분할을 이용한 캐싱을 고려해볼 수 있습니다. (0~100 좌표 안에 있는 Rect만 따로 저장한다거나..)
기본적으로 충돌이 있는데 점프와 낙하가 들어가면 꽤 난이도가 높아집니다.
유니티 물리는 서버에선 활용하지 못하기 때문이죠

채널톡 아이콘