playXP

서브 메뉴

Page. 1 / 246 [내 메뉴에 추가]
글쓰기
작성자 판밍
작성일 2018-02-11 00:28:44 KST 조회 1,024
첨부
제목
[해결][맵첨부] 미로 제작의 트리거 만드는데 도움을 요청

 

 

 

 

 

 

 

해결


 

실행이라는 트리거를 하나 더 만들었습니다.

이 트리거에서는

while을 이용해 검증트리거를 제가 원하는 미로가 될 때 까지 작동시키는 방식입니다.

 

 

 

 

 

 

 

 

 

질문을 올리고 계속 연구하다보니

내용이 조금 많이 달라져서 삭제하고 글을 다시 올립니다.

 

https://www.playxp.com/sc2/maps/tip/view.php?article_id=5580850&sub=sc2#!0
미로는 위 글과 같은 방식으로, 이동 경로 비용을 이용해 구성하고 있습니다.

 

 

현재 하고 있는 것

 

이러한 체스판 형태의 지도를 만들고 있으며

노랑/빨강칸에는 무작위로 군수공장이 생성되어 벽을 역할을 하며 미로가 형성됩니다.

 

 

생성 트리거 입니다.
1번 구역부터 519번 구역 중 랜덤한 곳에 군수공장을 1개 생성하고

이동 경로를 검증합니다.

 

검증은 맵 중앙의 프로토스 신호소에서 12/3/6/9시 방향에 위치한 테란 신호소로 이동 경로가 성립하는지 확인하고

성립하지 않으면, 생성한 군수공장을 제거하는 형식입니다.

 

 

그렇게 해서 미로를 생성했습니다.


 

 

일단 맵 중앙의 프로토스 신호소에서 12/3/6/9시 방향에 위치한 테란 신호소로 이동 할 수는 있는데

 

 

한 가지 문제가 있습니다.

 

 

파란 사각형 안과 같은, 군수공장 사이의 빈 공간이 생겨 죽은 땅이 되어버립니다.

이 공간을 없애고 싶습니다.

 

단순히 저 공간을 선별하여 저 위치에 군수공장을 생성해 길을 막아봤는데

그렇게 하니 미로의 밀도가 너무 높아져서 미로가 너무 단순해지게 됩니다.

 

그래서 미로를 제거하는 방식을 이용하려고 아래 트리거를 만들었습니다.

 

구조는

1. 파란 사각형과 같이 군수공장이 없는 구역인데, 해당 구역에서 중앙의 프로토스 신호소로 도달 할 수 없는 구역을 찾는다.

2. 해당 구역에서 가장 가까운 군수공장 1개를 제거한다.

3. 방금 제거된 군수공장의 위치에서 중앙의 프로토스 신호소로 이동 경로가 성립하는지 검증

4. 이동경로가 성립하지 않으면, 방금 제거된 군수공장의 위치에서 가장 가까운 군수공장 1개를 제거한다.

 

while을 사용해서 확실하게 검증해보려 했으나

while을 이용할 경우 렉이 심하게 발생해서 게임이 팅겨버립니다.

(아마 제일 처음 행동 트리거와 while이 겹치면서 짧은 시간에 반복횟수가 많아져서 그런 모양)

  

위와 같이 if를 이용한 경우, 트리거를 여러번 반복해야 합니다. (이 여러번도 몇번을 해야 확실한지 알 수 없음)

 

 

하고 싶은것

단 1번만 트리거를 실행 시켜서, 파란 사각형과 같은 갇히는 지역이 생기지 않게 할 수 없을까요?


 

 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이어요리왕비룡 (2018-02-12 01:38:48 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
가장 간단한 방법은, 랜덤이 아닌 패턴으로 지정하면 될 것 같습니다. 파란색 부분이 없는 상태로 군수공장을 배치한 뒤, 패턴 1로서 사용합니다. 그 다음 그걸 반복한다음 랜덤트리거에서 현재 있는 패턴 수만큼 숫자를 지정해주고 해당 패턴이 선택될 경우, 해당 패턴으로 배치하는 것이 제일 간단합니다.
아이어요리왕비룡 (2018-02-12 01:40:29 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
하지만 굳이 복잡하게 하고 싶으신 경우, 각 타일마다 상하좌우 4개의 타일에 전부 군수공장이 배치되어있을경우 랜덤으로 하나를 제거해 주시면 될 것 같습니다. 어느 쪽이든 마음대로 선택하시는 걸 추천드립니다. 다시 생각해보니 밑의 것이 더 간단한 것 같습니다.
아이어요리왕비룡 (2018-02-12 01:43:29 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
밑의 것으로 하려고 하면 if else등등의 명령문을 작성해줘야합니다. ex) 숫자패드로 설명하자면 타일 5번이 비어있고, 8 6 2 4번의 타일에 군수공장이 배치되어 있을경우 1~4를 랜덤으로 선택해 1이 선택되면 오른쪽의 타일이 제거되는 그런 방식을 사용하면 될 것 같습니다.
판밍 (2018-02-12 11:50:16 KST)
0↑ ↓0
센스 이미지
이미 해결한 내용이긴한데 답글을 보니 방법이 괜찮아 보이는데

1. 패턴 배치는 랜덤 미로가 제대로 성립하지 않아서 만들지 않았습니다.
2. 군수공장이 1개 설치되었을때, 그 군수공장을 중심으로 상하좌우에 있는 군수공장을 어떻게 선정하나요?

설치된 군수 공장을 중심으로 상하좌우에 있는 군수공장을 정확하게 선정 할 수 있는 방법이 있다면
훨씬 더 안정적으로 만들 수 있을거 같네요
아이어요리왕비룡 (2018-02-12 14:34:35 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
죄송합니다. 스타크래프트 1 시절에는 조건이 많아서 단순하게 가능했는데 갤디터는 조건이 심각하게 적어서 힘들 거 같네요.. 지금 생각해낸건, 유닛을 통해 맵을 검사하는 방법인데... 렉을 방지하기 위해선 시간이 오래 걸리는 게 문제네요.. 그래도 괜찮다면 유닛의 공격을 통해 군수공장을 제거하는 방법이라면 보다 정확하게 제거 할 수 있을 듯 합니다. 미리 군수공장의 구조물속성(혹시, 구조물로서 길을 막으면 AI가 어벙때리는게 구조물 속성이 아니라면, 다른 조건을 제거해주고)을 제거해 둔다면, 유닛이 이동경로가 막히면, 가야하는 위치쪽의 군수공장에 붙어있을테니, 사거리를 근접으로 만들고, 공격속도를 1.5초 정도로 늦춰준다면, 진로가 막히는 군수공장 유닛을 제거할 시간 2초정도만 쓰고 2초 타이머 만료시 다시 입구지점으로 이동 -> 또 막힐시 2초 타이머 재개.
로, 정확한 길로 철거를 진행할 수 있게 해줄 수도 있을 것 같습니다.
판밍 (2018-02-12 15:44:20 KST)
0↑ ↓0
센스 이미지
ㄴ 그 방법은 안될거 같네요, 지형은 1~2초사이에 생성이 완료 되어야 하는데
아이콘 천사사냥꾼 (2018-02-12 22:55:50 KST)
0↑ ↓0
센스 이미지
스1에 있는 조건은 스2에 다 있는데 갤디터 조건이 심각하게 적단건 무슨소리임
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.