Age of Empires II 랜덤 맵처럼 느껴지는 랜덤 맵을 어떻게 생성 할 수 있습니까?


18

Age of Empires II가 무작위 맵을 생성하는 방식이 좋았습니다 (좋은 다양성, 괜찮은 생체 전환, 혼란을 느끼지 않고 무작위로 느꼈습니다).하지만 스타일을 복제하는 데 어려움을 겪고 있습니다. 예를 들어 Perlin 노이즈를 사용하려고 시도했지만 모든 것이 너무 균일하거나 그렇지 않은 경우 Perlin의 가치-> 지형 휴리스틱이 너무 민감하여 취약하여 다양한 세계 유형을 만들 수 없습니다.

AoE2 맵 유형 "알 수 없음"이 "100,000 개의 가능한 맵"을 광고하여 시드 번호 사용을 제안했지만 시드 번호를 사용하여 내가 본 다양성을 생성하는 방법을 잘 모르겠습니다.

AoE2 임의 맵처럼 느껴지는 임의 맵을 생성하는 데 어떤 알고리즘과 휴리스틱을 사용할 수 있습니까?

보다 구체적으로 편집 :

내 문제에 대해 더 많이 생각하고 AoE2의 랜덤 맵 엔진에 대해 내가 좋아하는 것을 연구하면서 가장 큰 문제는지도에서 물과 식물의 분포를 관리하는 것입니다 . 이제는 "생각할 수있는 생체 전환"과 관련이 있다고 생각하지만 다른 문제입니다 (Perlin 노이즈를 계속 사용하면 해결하기 까다로울 것입니다).

나는 매핑 엔진에 대해 내가 좋아하는 것을 강조하는 몇 가지 AoE2 랜덤 맵을 추가했다. 모든 스크린 샷은 임의의지도 유형 인 "맞춤"-> "알 수 없음"에서 가져옵니다. 나는 열도와 같은 특정 지역을 사용하도록 게임에 지시하지 않았다.

아래는 내지도 엔진의 이미지입니다. 각 픽셀은 하나의 AoE2 맵 타일에 해당합니다.

프로젝트의 한 가지 복잡한 점은 맵이 AoE2 맵보다 몇 배나 더 크길 원한다는 것입니다. 따라서 내가 사용하는 모든 엔진은 AoE2와 같이 맵마다 하나의 좁은 세트의 생물 군계가 아니라 각 맵에서 전체 범위의 생물 군계를 만들 수 있어야합니다.

에이지 오브 엠파이어 II지도

내륙 호수

다음은 내륙 호수와 강이 보이는 것들을 보여주는 예입니다. 나는지도에 흩어져있는 많은 양의 물이 어떻게 포함되어 있는지를 좋아하지만 그 물은 여전히 ​​약간 집중되어 있습니다. 제국을 짓는 데 사용할 수있는 넓은 땅이 있습니다. 물 주위에 도시를 계획하는 데 전체 게임을 할 필요는 없습니다.

연결된 섬

다음은 게임이 섬을 통과 가능한 습지와 연결하기에 충분히 똑똑한 유사한 예입니다. 소음 기반 알고리즘이 어떻게 습지를 만들고 그 장소 만 만들지 상상할 수 없습니다. 또한 게임이 어떻게 토지를 만들 었는지 확인하십시오. 각 플레이어는 자신 만의 개인 전용 토지를 가지고 있습니다. 그것은 임의의 땅 패치를 만들지 않았으며, 각 플레이어가 시작하기에 가장 끔찍한 부분을 가장 잘 추측합니다.

제도

이지도는 물을 많이 사용하지만 내륙 호수는 많이 포함되어 있지 않습니다 . 첫 번째 이미지와 대조하십시오. AoE2가 동일한 빌딩 블록을 사용하여 완전히 다른 지역을 만드는 방식이 마음에 듭니다. Perlin 소음을 사용하려는 시도는 여기에서 실패했습니다. 나는 땅 덩어리를 뒤흔들고있는 거대한 거대한 바다 나 10,000 호수의 땅을 얻었습니다. 또한 섬 연결된 대륙 (북남미 생각)을 모두 얻는 것이 어렵다는 것을 알았습니다 .

건조하고 무성한 건조한 사막

이 이미지를 위의 이미지와 대조하십시오. 그들은지도의 건조가 수위에 의존하지 않음을 보여줍니다. 첫 번째 이미지에는 물이 거의 없지만 숲과 잔디가 들어있는지도가 있습니다. 두 번째 이미지에는 적당량의 물이 있지만 사막입니다. 나는 그것이 가능하다는 것을 좋아합니다 (당신의 세계에 뉴 멕시코 또는 사하라와 코스타리카가 있다고 생각하십시오).

내 자신의지도

지도를 작성하는 좋은 방법은 여러 차원의 데이터를 나타내는 여러 수준의 Perlin 노이즈를 계층화하는 것입니다. 인기있는 권장 사항에 따라 Whittaker 표에서 지형 유형을 선택하여 높이와 습도를 조정 했습니다 .

두 개의 펄린 맵을 가져 와서 간단한 값을 통해 각각의 값을 정수로 양자화 if perlin_val < x { i=some_int } else if perlin_val < y...한 다음 (상승, 수분) 정수 쌍을 지형 유형 테이블 (예 : [1,0]-> 열대 사막, [1,1)에 매핑했습니다 ]-> 초원). 이 시스템에 바다가 포함되었습니다-고도 = 정의 된 바다.

g1_ 성공

좋은 변형이 있으며 여러면에서 실제와 같은 느낌이 들지만 몇 가지 문제가 있습니다.

  • 첫째, 해양 깊이에는 패턴이 없습니다. 당신은 해안 근처의 얕은 물과 더 깊은 물을 더 기대할 것입니다.

  • 둘째, 모든 물이 바다에 집중되어 있습니다. Perlin 소음이 대륙 한가운데 갑자기 더 낮은 값으로 떨어지지 않기 때문에 호수 나 강이 없습니다.

  • 각 생물 군계의 양 사이에 균형을 잡는 것은 매우 어렵습니다. 나는 이것을 다음으로 귀속합니다.

    • Perlin 노이즈는 정규 분포를 따르므로 각 차원 매핑의 확률을 조정하는 방법을 예측하기가 어렵습니다.

    • 여러 차원의 균형을 맞추는 것은 어렵습니다. 어쩌면 더 많은 (2,3)을 원하므로 (n, 3)을 얻을 확률이 높아집니다. 글쎄, 지금은 너무 많고 (3,3) 모든 것이 잘못 보입니다.

    • 부드러운 데이터를 얻을 수있을 정도로 노이즈를 근접하게 확대했을 때 Perlin 값에 대한 완벽한 샘플을 얻지 못했습니다. 그래서 내 앞의지도에 대한 분포를 조정하고 새로운 임의의지도를 새로 고치고 매우 다른 결과를 얻었습니다.

x 분리수

나는 Perlin 값의 세 번째 세트에서 물을 만들어 강 / 락수 문제를 해결하려고했습니다. 이진 물 / 토지 결정은 위의 모든 것들을 땅에 적용합니다. 이렇게하면 물 분배를 제어하기가 훨씬 쉬워 지지만 (아직 완벽하지는 않지만 더 나아짐), 이해가되지 않는 많은 생물 군계 변화가 있다는 문제가 발생합니다. 예를 들어, 울창한 초원 한가운데서 해변에 눈이 내리는 등의 설명 할 수없는 사막의 패치. 위에서 언급 한 이유로 인해 육지 생물 군계의 비율을 통제하기는 여전히 어렵습니다.

일차원 실패

위의 문제를 보면서 Perlin 노이즈를 한 차원에만 매핑하는 간단한 알고리즘을 시도했습니다. 이제 0 = 심해-> 1 = 얕은 바다-> 2 = 해변 ...-> N = 눈에서 에스컬레이션되는 지형 유형 배열이 있습니다. 이로 인해 섬과 대륙이 생성되고 각 지형의 비율을 훨씬 쉽게 균형 잡을 수 있지만 지형 유형이 너무 모여 있습니다. 모든 토지 질량은 일반적으로 지표면에 흩어져있는 지형 유형이없는 고도지도처럼 보입니다. 모든 육지 덩어리는 대략 같은 특징을 가지고 있으며 항상 같은 순서로 항상 같은 고리 모양입니다.


원래 개발 팀에 속하지 않은 사람은 실제로 귀하의 질문에 대답 할 수 있을지 확신하지 못하지만 씨앗이 예상보다 훨씬 낮습니다. 시드는 거의 기본 맵 유형마다 다른 맵을 생성하며, 모든 맵을 조합하여 포함하면 100,000에 도달 할 가능성이 높습니다.
Magus

이 질문은 게임을 만드는 것이 아니라 이미 존재하는 특정 게임에 대한 구현 세부 정보를 요구하기 때문에 주제가 아닌 것으로 보입니다.
Trevor Powell

@TrevorPowell이 사이트에 대한 주제별 질문에 대한 지침을 검토 한 후 질문을 다시 작성했습니다.
spiffytech

내 의견 후 약 10 초 후에 편집 내용을 게시했습니다. 이제 서비스입니다! ;)
Trevor Powell 22 년

1
-1 여전히 너무 넓습니다. "느낌이있는지도"의 의미에 대해 구체적이어야합니다. 당신이 말하는 것에 대한 구체적인 예가이 질문에 대답해야합니다. 절차 적 세대는 사람들이 생각하는 것보다 훨씬 예술적입니다. 예술 창작과 인식은 주관적인 주제입니다. 집중하고 싶은 특정한 것을 골라 그것에 대해 물어보십시오. 이 질문의 범위는 현재 매우 광범위합니다.
MichaelHouse

답변:


9

내가 절차 적 지형 생성을위한 전형적인 자원이라는 느낌이 든 Amit Patel의 훌륭한 기사를 확인하십시오.

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/

그가하는 핵심은 노이즈 맵이 아닌 그래프 구조를 사용하여 지형을 모델링하는 것입니다 (Perlin et al). 나는 그의 삽화를 포함 시키지는 않겠지 만 기사를 읽으면 다른 접근법에 대해 생각하는 것이 도움이 될 것이라고 생각합니다.

CIV / AOE 유형 게임을 만드는 경우 리소스 배치가 중요합니다. 핵심 자원이 너무 드물거나 가치가 높은 자원이 너무 일반적 일 수는 없습니다. 각 다각형을 주어진 특성을 가진 영역으로 가정하면 (기사의 그림 참조, 더 이해가 될 것입니다) 선택한 알고리즘에 따라 각 다각형에 리소스를 할당하는 것을 볼 수 있습니다. 사막 옆의 숲은 희귀 할 수 있지만 다각형 옆의 숲은 예를 들어보다 일반적인 초원에 의해 좀 더 일반적이되도록 다각형의 리소스를 이웃에 의해 통계적으로 편향시킴으로써 상당히 영리 할 수 ​​있습니다.


2
Amit의 가이드는 Age of Empires에 너무 현실적인 지형을 만듭니다. :)
Seth Battin

그는 그렇습니다. 그러나 다양한 크기의 셀 (각각 특정 지형 유형)을 사용하는 기본 개념은 내가 생각하는 접근법으로 효과적입니다. 방정식에서 지형 높이에 대한 아이디어를 제거하십시오.
Tim Holt

Amit의 기사를 검토했지만 단일 섬을 갖는 데 너무 엄격하게 최적화되었습니다. 해수면으로부터의 거리의 간단한 기능으로 고도를 높이는 것은 여러 섬 또는 더 큰 대륙에서 어색한 결과를 낳을 것이며, 그의 물 분배 방법은 결국 바다로 흘러가는 풍경에서 두드러진 정점을 가정합니다. Amit의 계획에서 지형 높이를 제거하려면 자신의 생물 군계 분포 아이디어를 내 프로젝트에 적용하는 방법을 잘 모르겠습니다.
spiffytech

5

Age of Empires 2에 대한 임의의 맵 스크립트를 만듭니다 . 나의 가장 최근의 것 HD 버전입니다.

Age of Empires 2에 대한 맵을 작성하는 방법을 이해 하려면 RMS (랜덤 맵 스크립팅)에 대한이 훌륭한 안내서가 있습니다. 있습니다.

Age of Empires는 전문가 시스템을 사용하므로 스크립트를 통해 생성 규칙에 대한 루틴을 작성할 수 있습니다. 지역에 관해서는 단순히 영역을 마스킹하고 그에 따라 마스크 된 영역에 다른 스크립트 / 루틴을 적용하는 경우라고 생각합니다. 텍스트 편집기에서 기존 맵 스크립트를 열어 생성 규칙을 쉽게 확인할 수 있습니다. 메모장에 내 글을 쓴다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.