메뉴 건너뛰기

XpressEngine

동방크롤 잡설 - 맵 생성

2018.06.06 17:32

개발자 조회 수:42

동방크롤을 만들면서 여러가지 기술적인 문제나 아이디어 정리잡담

 

로그라이크 전반에 통용되는 이야기도 많을듯

 

 

구현할때 상당히 적당히 만들었기때문에 반성회같은 느낌으로 진행 예정

 

-----------------------------------------------------------------------------------

 

나는 로그라이크 개발의 꽃이라고 불릴만한 작업이 바로 맵 생성이라고 생각한다.

 

아마 많이들 로그라이크를 만들어보셨을테지만 로그라이크를 실제로 만들어보면 가장 재밌는 부분중 하나가 이 맵 생성이라고 생각한다.

 

실제로 맵 알고리즘 만들때가 로그라이크를 제일 재밌게 만들 수 있으며 이 과정이 지나가면 만들기가 극도로 지루해진다. 괜히 7일 로그라이크 대회가 있는 것이 아닌듯하다.

 

 

 

 

동방크롤의 맵생성은 너무 심플하다. 솔직히 구지 말할 필요도 없을 정도로 간단하고 대충 짜여있다.

 

너무 대충짜서 그런지 버그도 좀 많고 코드도 지저분하지만 이거 말고도 전부 지저분하니까 넘어가자

 

맵을 만드는 법은 여러가지 있지만 베이스는 다 같은데

 

 

 

4.png1. 방을 이곳저곳 만든다. 방에는 입구와 출구가 1개씩 설정되어있다.

2. 이 방의 출구와 입구사이를 잇는 길을 만들어서 이어준다.

3. 만들어진 길 위에 아까 방을 하나씩 다시 만들어준다. 방 중 일부는 특수한 형태의 방이 될 수 도 있다.

 

 

기본적으로 대부분은 위와 똑같은 방식을 따르며 세세한 수치(길이 방을 지나칠 수 있게 한다던지 방끼리 겹침을 허용한다던지)에 따라서 약간 맵의 형태가 달라지게 나올 수 있다.

 

 

 

2.gif

<위 방식을 gif로 구현해본것>

 

 

 

 

위 방식과 별도로 안개호수, 윳쿠리굴등에서 쓰이는 둥글둥글한 맵은 또 약간 다른 방식을 쓰는데 더 간단하다.

 

 

 

 

1. 동그란 원을 만든다.

2. 그 원에 이어지는 다른 동그란 원을 만든다.

3. 맵이 가득찰때까지 반복. 이 후에 특수지형을 넣어야되면 특수지형을 넣는다.

 

 

아주 심플하다. 너무 심플해서 그런지 버그가 좀 많다. (지형이 막히는 경우가 많이 발생했다.)

 

 

 

 

 

1.gif

<위 방식을 gif로 구현해본것>

 

 

 

 

너무 초창기에 만들어서 그런지 소스코드는 엄청 대충 만들었으니 안보는걸 추천하고

 

그 외에도 지금와서 반성을 한다면 특수지형같은 경우 다 하드코딩 되어있는데 돌죽처럼 스크립트 언어로 빼는게 좋았을 것 같다.

 

 

 

 

버그도 많고 반성할게 많은 부분이긴한데 역시 귀찮으니까 딱히 수정하진 않았다.