RPGVX Ace 스크립트
2014.10.11 00:50

Random Dungeon Generator - Random Room

조회 수 949 추천 수 0 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 랜덤 던전 생성기에서 랜덤 동굴 생성기 다음으로 만든 랜덤 방 생성기입니다.

 정리해서 짠게 아니라서 미흡한점 양해 부탁드립니다.


 랜덤 방 생성기를 제작하는데 참조한 사이트는 다음과 같습니다.

 랜덤 방 선택 동영상

 랜덤 던전 생성기 이론


 우선 순위 큐를 제작하기 싫어서 ruby에서 우선 순위 큐를 작성한 것을 이용했습니다.

 사이트는 다음과 같습니다.

 루비-배열로 구현된 우선순위 큐-


 원리는 '랜덤 던전 생성기 이론'에 있는 사이트를 보시면 되는데,

 해석하면 다음과 같습니다.


 1. 임의의 방을 무작위로 생성 시킨다.

 2. 임의의 방에서 무작위로 방을 1개 고른다.

 3. 고른 방의 주위의 방(겹쳐진방)이 있으면 그 방을 지우고 2번의 반복한다.

 4. 겹쳐진 방이 다 끝나면, 연결 되지 않은 방에 방을 1개 고르고, A*알고리즘(저는 BFS[Beast First Search]를 사용했습니다.)을 사용하여 방을 연결시킨다.

 5. 연결이 다되면, 연결된 방에 문과, 기타 이벤트들을 넣는다.(이건 구현 하지 않았습니다.)


 여기서, 무작위로 생성시킨 다음, 2-3의 반복을 이해가 안되는 분은, '랜덤 방 선택 동영상'을 보시면 이해가 빠르실겁니다.(동영상에서 연결된 사이트도 랜덤 방 생성기를 구현한 사이트입니다.)


 이제, 4을 구현 해야되는데. 여기서 제가 착각한 부분이기도 한 것인데, 경로를 찾기 위해선 2차 배열을 저장하는 배열을 가지고 있어야 됩니다.

 예) [[2,3],[2,4],[3,4]]


 그렇지 않으면, 어디에 최적화된 경로인지 알 수 없기 때문에, 반드시 배열 안에 배열을 해야되며, 우선 순위 검색은 깊이 우선 검색(DFS)보다 나은 점이, 끝까지 가는게 아니라, 최적의 경로(거리가 짧은 경로)를 우선시 하기 때문에, 빠른 경우가 많습니다.(그렇다고 무조건 빠른건 아닙니다.)


 적용 방법은

 Ran_Room.filesetMap(5,rand(100)+17, rand(100)+13)

 Ran_Room.filesetMap(10, 1000, 1000, 20, 50, 10, 30)


 


 Ran_Room.filesetMap(맵의 갯수, 맵의 넓이, 맵의 높이, 방의 최소 넓이, 방의 최대 넓이, 방의 최소 높이, 방의 최대 높이)


 로 구성 되어있고, 각 파일맵에 맞추시고 싶으시면,

 먼저 맵을 로드하신 후


 map = $data_load("Data/MapXXX.rvdata2"

  Ran_Room.createMaps(map, counts, min_x, max_x, min_y, max_y)



  Ran_Room.createMaps(맵의 변수, 생성 시킬 방의 갯수(임의의 위치의 방의 갯수 많을 수록 다양한 방이 만들어 질 가능성이 증가합니다.[그 만큼 느려집니다.], 방의 최소 넓이, 방의 최대 넓이, 방의 최소 높이, 방의 최대 높이)


 이렇게 개별로 적용 시킬 수 있습니다.


맵을 적용시켰을 경우.

map.jpg

?
  • ?
    임춘해 2014.11.21 00:56
    아놔진짜안돼요
  • ?
    JunkMan 2014.11.21 18:28
    그냥 적용 시켰는데 안되는것인가요?
    어떻게 하셨는지 알려주셔야지 제대로 답변이 가능합니다;
    그리고, 제가 테스트 해본 결과 Data불러오는 DataManager쪽에 적용시켜야지 제대로 작동이 가능합니다.(아니면, 맵에 들어가기 전에 어떻게든 적용 시켜주셔야됩니다.)
    플레이어가 맵에 들어간 다음에 적용 시켜봤자 소용없습니다.
    맵 파일을 제작해주는 소스로 짜져있기 때문에, 실시간으로 맵을 변형시키는 소스는 다른 쪽에 변형을 시켜야되므로 그점 양해 바랍니다.
    만약 게임 실행했는데 검은색 바탕으로만 나온다면, 그것은 맵을 제작하고 있는 중이라서 그렇게 보이는 겁니다.
    맵 제작에 오래 걸리는 경우는 다음과 같습니다.

    맵이 큰데, 방의 크기가 너무 작아서 방의 갯수가 많은 경우.
    맵이 큰데, 방의 크기가 크지만, 방의 경로가 외곽쪽에 몰려있는 경우,
    맵이 작은데 방의 크기가 커서 방의 경로가 외곽쪽에 몰려 있는 경우.
    맵이 작은데, 방의 크기가 커서 경로를 찾지 못하는 경우.(이 경우는 최악의 경우로 절대로 맵이 완성 될 수가 없습니다;)

    등이 있습니다.

    제가 만든 스크립트는 방과 방사이의 최단거리 우선 순위 탐색으로 한것입니다.
    이것으로 작동했을때, 외곽쪽으로 몰려 있는 경우,최악의 경우로 오래걸릴 수 밖에 없습니다;
  • ?
    두부 2014.12.06 02:35
    아래의 댓글들 모두 삭제해 주세요.
  • ?
    임춘해 2014.11.21 00:57
    아놔진짜안돼요
  • ?
    임춘해 2014.12.06 02:16
    첨부가 어디있어요
  • ?
    JunkMan 2014.12.06 02:52
    file이라는 이미지 옆에 첨부(2)을 눌러 보시면
    Random Room.txt라는게 있는데, 이걸 사용해주시면 되겠습니다.
  • ?
    임춘해 2014.12.06 02:17
    첨부가 어디있어요

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
248 RPGXP 스크립트 RPGXP ATB전투 시스템 예제(스크립트는 예제 안에 포함) 3 MagNesium 2015.11.17 801 0
247 RPGVX Ace 스크립트 타이틀 메뉴 위치 바꾸기 vx 및 vx ace 여줄가리 2015.09.21 2062 0
246 RPGXP 스크립트 스테이터스,보수,골드,플레임 타임 삭제 rpgmakingbot 2015.06.02 765 0
245 RPGVX Ace 스크립트 Mog Hunter 스페셜 철창노틸 2015.03.26 777 1
244 RPGVX Ace 스크립트 추천 스크립트 모음 2 철창노틸 2015.03.26 5898 1
243 RPGXP 스크립트 헤드 업 디스플레이 스크립트 3  운 2015.01.30 887 0
242 RPGXP 스크립트 컬러 비트맵 타이틀 스크립트 3  운 2015.01.20 865 1
241 RPGXP 스크립트 로고 스크립트 1  운 2014.12.10 1190 1
240 RPGXP 스크립트 타이틀 로딩 스크립트  운 2014.12.07 1097 0
239 RPGXP 스크립트 타이틀 스크립트 3  운 2014.12.05 1048 0
238 RPGXP 스크립트 액알 스크립트 4 커비♥ 2014.11.23 1454 1
» RPGVX Ace 스크립트 Random Dungeon Generator - Random Room 7 JunkMan 2014.10.11 949 0
236 RPGVX Ace 스크립트 Random Dungeon Generator - Random Cave JunkMan 2014.10.08 627 0
235 RPGVX Ace 스크립트 RPG Maker VX Lite Maze(미로) 만들기 (DFS 사용) 1 JunkMan 2014.10.06 995 2
234 RPGVX Ace 스크립트 Ace로 만든 습작 랜덤 위치로 지형변환. JunkMan 2014.10.04 528 0
233 RPGXP 스크립트 공포게임에 장비착용메뉴 3  운 2014.08.24 1440 0
232 RPGVX Ace 스크립트 VX Ace 스크립트 사이트 1 제피 2014.08.07 2708 0
231 RPGVX Ace 스크립트 RPG Maker VX Ace용 640*480 리사이징 스크립트 3 HUR 2014.08.04 1290 0
230 RPGVX Ace 스크립트 RPG Maker VX Ace용 로고 스크립트 3 HUR 2014.08.04 1208 0
229 RPGXP 스크립트 얼굴표시/문장을 한글자씩 나타내주는 스크립트 (출처-히페리온) 4 시르카 2014.06.22 1206 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)