본문 바로가기
게임개발/모험의 서 개발일지

무제 rpg 개발일지: 4 - 슬더슬 맵 만들기

by 주인장 블루독 2024. 2. 19.

 지난 시간에 챗 지피티의 도움을 받아 0에서 1까지 만들었다. 이번시간엔 1에서 100까지 만들어보자.

한번 원하는 지도의 모양을 올려보고 이런 모양으로 생성되는 코드를 만들어달라고 했다.

 

 

  뭐 결론부터 말하자면 실패다. 몇십줄짜리 짧은 코드는 gpt도 잘 만들어주는데 이런 복잡한 코딩은 아직까진 불가능하다. 하지만 틈틈히 도움을 받는 정도면 매번 커뮤니티에 질문글을 올리는것 보다 헐씬 빠르고 좋다. 

 

 

이런 프롬프트로 코드를 요구하니

 

 

  결과물은 이러했다. 근데 이정도만 해도 시작점이라고 하기엔 충분하다! 한번 코드를 수정해보자. 그리고 맵 설개와 관련된 내용은

 

 

Steam Community :: Guide :: Map Generation in Slay the Spire

In this brief guide I will try to explain the relevant information regarding Map Generation and maybe some new ways to look at the game....

steamcommunity.com

 

위 개시물을 참고했다.

 

  

 

  Irregular isometric grid, 불규칙한 아이소메트릭 그리드, 모양으로 노드들을 배치해준다. 이렇게 한줄씩 섞어주면 대각선 위로 올라가는걸 표현하기 수월해진다. 이제 노드마다 층수(floor)를 할당해줘야 한다. 여기서 상당히 귀찮은 계산식을 생각해내야 한다.

 

 

 

  간편하게 x가 1이면 1층, 이런식으로 할 수 없고 대각선별로 층수를 표현해야하기 때문이다. 사고과정을 간단하게 보여주면

 

 

 

  각 층별로 계산식을 새워보니 +1 +1 +2 +2, 이런식으로 x축이 2의 배수마다 한층씩 올라간다. 이걸 공식으로 표현하면

 

 

 

  이런 수식이 나온다.

 

 

아주 잘 적용된다.

 

 

  더 용이하게 관리하기 위해 floorToNodes 딕셔너리를 만들어서 층수에 따라 추가해주기로 했다. 슬픈 사실은 이제 한 10%정도 완성됐다. 직사각형이 아닌 대각선으로 진행되는 특이성 때문에 이런 복잡한 과정을 거쳤다.이제 각 노드를 연결해줘야 한다.

 

 

 

  이렇게 각 노드는 가장 가까운 3개의 노드에 연결 가능하고 이를 선으로 표현했다. 

이번엔 모든 노드를 연결하는게 아니라 한번에 하나의 노드만 연속적으로 연결되게 해보자.

.

.

.

.

.

.

.

 

라고 생각했지만. 몇번의 커스텀을 거쳤지만 시작지점이 하나밖에 없는 특성상 대각선 방향으로 가는 지도는 해봐야 2,3가지 길만 만들어 줄 뿐 딱히 유의미한 게임플레이의 변화를 주지 못한다고 결론지었다. 

 

 

반응형

댓글