본문 바로가기
개발/게임) 프로토타입

게임개발) 인디게임 맵 만들기

by 테샤르 2020. 5. 1.

인디게임 맵 만들기

유니티로 인디게임의 맵을 만들기를 테스트 코드를 작성했다. 

1차적으로는 방의 크기를 최대치(변수)를 설정하고 그로 인해서 해당 연관성 있는 맵을 생성하는 것을 목표로 했다.

사용한 리소스의 형태는 다음과 같다.

 

완벽하게 적용되지 않았지만 결과는 다음과 같다.

 

머릿속으로 생각했을 때는 굉장히 쉽게 적용할 수 예상했지만.

실상은 그렇지 않았다. 작업한 방식은 다음과 같다.

1. 좌표 + 방향으로 1차적으로 위치를 선택한다.

2. 생성할 블록을 검사한다. 현재 위치에서 좌우 4방향(위, 아래, 왼쪽, 오른쪽)을 해당 위치의 데이터가 존재하면

꼭 포함해야 할 역순을 가지고 온다. 

3. 생성이 가능한 데이터(2에 해당) 된 데이터를 기반으로 트리의 형태로 크기를 체크한다. 남은 크기 사이즈가 3이면 3방향 이하의 데이터만 산출

4. 산출된 데이터중 중 한 가지를 생성한다. 

5. 생성된 데이터의 방향 데이터만큼 현재 가진 크기 데이터를 분할하고 Queue에 넣는다.

6. 재귀 함수로 해당 데이터를 다시 한번 반복한다.

7. 모든 데이터 (Queue)에 저장된 데이터가 존재하지 않으면 반환한다.

위에 결과를 보게 되면 닫힌 노드들 사이에 작은 네모(입구만 존재하고) 출구가 연결되지 않는 데이터가 종종 보인다.

해당 데이터는 4방향을 체크해서 가져올 때 데이터 그룹에서 필수로 해당되어야 한다 < 로만 작업을 해서

 

테스트 샘플이어서 여기까지만 수정할 예정이다. 인디게임에서 랜덤 시드로 방을 생성하는 과정을 보면 이런 형태로 만들 거라고 생각한다. 꼭 이런 랜덤으로 실시간으로 안 만들어도 만드는 에디터에서도 이런 형태로 데이터를 만들고 이후에 추출해서 데이터를 만들어도 될듯하다.

지금은 1 * 1 자리 데이터로 작업을 했지만 사이즈가 다른 방 1 * 2 같은 것도 추가하면 좀 더 다채로운 랜덤 방이

 

 

반응형

댓글