Đang tìm kiếm một thuật toán tạo bản đồ thế giới tốt [đã đóng]


97

Tôi đang làm một trò chơi giống như Civilization và tôi đang tìm một thuật toán tốt để tạo bản đồ thế giới giống như Trái đất. Tôi đã thử nghiệm với một số lựa chọn thay thế, nhưng vẫn chưa tìm được người chiến thắng thực sự.

Một tùy chọn là tạo bản đồ độ cao bằng cách sử dụng nhiễu Perlin và thêm nước ở mức sao cho khoảng 30% diện tích thế giới là đất liền. Mặc dù nhiễu Perlin (hoặc các kỹ thuật dựa trên Fractal tương tự) thường được sử dụng cho địa hình và thực tế một cách hợp lý, nhưng nó không cung cấp nhiều cách kiểm soát số lượng, kích thước và vị trí của các lục địa kết quả, mà tôi muốn có từ quan điểm chơi trò chơi.

Tiếng ồn Perlin

Tùy chọn thứ hai là bắt đầu với một hạt một ô được đặt ngẫu nhiên (tôi đang làm việc trên một lưới ô), xác định kích thước mong muốn cho lục địa và mỗi lượt thêm một ô nằm ngang hoặc dọc liền kề với lục địa hiện có cho đến khi bạn đã đạt đến kích thước mong muốn. Lặp lại cho các lục địa khác. Kỹ thuật này là một phần của thuật toán được sử dụng trong Civilization 4. Vấn đề là sau khi đặt một vài lục địa đầu tiên, có thể chọn một vị trí bắt đầu được bao quanh bởi các lục địa khác và do đó sẽ không phù hợp với lục địa mới. Ngoài ra, nó có xu hướng sinh ra các lục địa quá gần nhau, dẫn đến một thứ trông giống một con sông hơn là lục địa.

Mở rộng ngẫu nhiên

Có ai tình cờ biết một thuật toán tốt để tạo các lục địa thực tế trên bản đồ dựa trên lưới trong khi vẫn kiểm soát số lượng và kích thước tương đối của chúng không?


2
Tôi không hiểu tại sao một câu hỏi tự nhiên với hơn 90 lượt ủng hộ lại nên được đóng lại. Bỏ phiếu để mở lại.
John Coleman

Câu trả lời:


38

Bạn có thể lấy một gợi ý từ tự nhiên và sửa đổi ý tưởng thứ hai của mình. Khi bạn tạo ra các lục địa của mình (tất cả đều có cùng kích thước), hãy làm cho chúng di chuyển và xoay một cách ngẫu nhiên và va chạm và làm biến dạng lẫn nhau và trôi ra xa nhau. (Lưu ý: đây có thể không phải là điều dễ thực hiện nhất.)

Chỉnh sửa: Đây là một cách khác để làm điều đó, hoàn thành với một triển khai - Tạo bản đồ đa giác cho trò chơi .


2
Ý kiến ​​hay. Tôi không biết về việc cố gắng mô phỏng các mảng kiến ​​tạo hoàn toàn nhưng miễn là mỗi lục địa "sở hữu" các ô đất riêng của mình (trái ngược với việc chỉ đơn giản hoạt động như một máy phát cho một mảng bản đồ) và về cơ bản nằm trên hoặc hoạt động như một mảng của riêng nó, nó sẽ không khó để thực hiện. Tôi sẽ phải thử cái này ngay bây giờ :)
nathanchere

@FerretallicA Cảm ơn. Tôi rất muốn tự mình làm công việc này - khi tôi có thêm thời gian rảnh ... :-)
David Johnstone

3
Một thủ thuật rẻ tiền mà bạn luôn có thể sử dụng là xác định trong một hàm toán học điều gì xác định một bản đồ "tốt", sau đó tạo mười thay đổi nhỏ ngẫu nhiên và sau đó sử dụng chúng tốt nhất. Tiếp tục làm điều đó và nó sẽ trôi về loại bản đồ bạn muốn.
dascandy

Bạn có thể sử dụng một bản sửa đổi của K-means clustering để xác định từng mảnh đất thuộc sở hữu của 'lục địa' nào. Sau đó, sử dụng biểu đồ Voronoi (sẽ dễ dàng khi bạn đã xác định các cụm) để xác định ranh giới mảng ... đối với mỗi đoạn đường trong Voronoi, bạn sẽ xác định được một vectơ chuyển động ngẫu nhiên và phải có khả năng xác định vùng động đất so với núi lửa các vùng, v.v. Sau đó, mỗi điểm đất sẽ kết thúc với một vectơ riêng lẻ dựa trên vị trí của nó liên quan đến ranh giới mảng và kết thúc bằng một mô phỏng khá thực tế để làm việc.
Steve

Tôi đang sử dụng phương pháp hạt giống một ô. Bất kỳ đề xuất nào về cách thêm địa hình phức tạp hơn như dãy núi vào này?
A Tyshka

11

Tôi khuyên bạn nên sao lưu và

  1. Suy nghĩ về những gì tạo nên các lục địa "tốt"
  2. Viết một thuật toán có thể phân biệt bố cục lục địa tốt từ một thuật toán xấu.
  3. Tinh chỉnh thuật toán để bạn có thể xác định mức độ tốt của bố cục.

Khi bạn đã có sẵn điều đó, bạn có thể bắt đầu triển khai một thuật toán có dạng như sau:

  • Tạo ra các lục địa đáng sợ và sau đó cải thiện chúng

Để cải thiện, bạn có thể thử tất cả các loại thủ thuật tối ưu hóa tiêu chuẩn, cho dù đó là ủ mô phỏng, lập trình di truyền hoặc một cái gì đó hoàn toàn đặc biệt , chẳng hạn như di chuyển một hình vuông cạnh được chọn ngẫu nhiên từ bất kỳ nơi nào nó nằm trên lục địa đến cạnh đối diện với khối tâm của lục địa. Nhưng điều quan trọng là có thể viết một chương trình có thể phân biệt lục địa tốt với lục địa xấu. Bắt đầu với các lục địa vẽ tay cũng như các lục địa thử nghiệm của bạn, cho đến khi bạn nhận được thứ mình thích.


1
Điều đó có ý nghĩa nhỏ trong bối cảnh này. Nó giống như nói rằng, đối với một trình tạo Fractal, bạn nên tạo một chương trình tạo ra các Fractal khó hiểu sau đó thử và viết một chương trình cho bạn biết liệu những gì bạn có có phải là Fractal tốt hay không. Dễ dàng hơn nhiều chỉ cần làm cho nó 'đúng' ngay từ đầu. Nếu không bạn hoàn toàn làm lệch trọng tâm và phạm vi của vấn đề.
nathanchere, 21/09/10

1
@FerretallicA Hoàn toàn không đồng ý. Với đồ họa, có thể rất hữu ích khi bắt đầu bằng cách lấy một thứ gì đó, bất cứ thứ gì trên màn hình. Khi đó Não phải của bạn có thể bắt đầu thực hiện một số công việc.
luser droog

11

Tôi đã viết một cái gì đó tương tự như những gì bạn đang theo đuổi cho một bản sao kiểu bảo vệ màn hình tự động của Civilization 1. Đối với bản ghi tôi đã viết điều này trong VB.net nhưng vì bạn không đề cập bất kỳ điều gì về ngôn ngữ hoặc nền tảng trong câu hỏi của bạn nên tôi sẽ giữ nó trừu tượng.

"Bản đồ" chỉ định số lượng lục địa, phương sai kích thước lục địa (ví dụ: 1,0 sẽ giữ cho tất cả các lục địa có cùng diện tích đất gần đúng, xuống 0,1 sẽ cho phép các lục địa tồn tại với 1/10 khối lượng của lục địa lớn nhất), diện tích đất tối đa (theo tỷ lệ phần trăm) để tạo ra, và thiên vị đất trung tâm. Một "hạt giống" được phân bố ngẫu nhiên xung quanh bản đồ cho mỗi lục địa, có trọng số về trung tâm của bản đồ theo độ lệch trung tâm (ví dụ: độ lệch thấp tạo ra các lục địa phân bố giống với Trái đất hơn, trong đó độ lệch trung tâm cao sẽ giống với nhiều hơn Pangea). Sau đó, đối với mỗi lần lặp lại của sự tăng trưởng, các "hạt giống" chỉ định các ô đất theo một thuật toán phân phối (sẽ nói thêm ở phần sau) cho đến khi đạt được diện tích đất tối đa.

Thuật toán phân bổ đất đai có thể chính xác như bạn muốn nhưng tôi đã tìm thấy nhiều kết quả thú vị hơn khi áp dụng các thuật toán di truyền khác nhau và tung xúc xắc. "Trò chơi cuộc sống" của Conway là một trò chơi thực sự dễ dàng để bắt đầu. Bạn sẽ cần thêm MỘT SỐ logic nhận biết toàn cầu để tránh những thứ như các lục địa phát triển vào nhau nhưng phần lớn mọi thứ tự lo liệu. Vấn đề mà tôi phát hiện ra với nhiều phương pháp tiếp cận dựa trên Fractal hơn (đó là khuynh hướng đầu tiên của tôi) là kết quả trông quá theo khuôn mẫu hoặc dẫn đến quá nhiều kịch bản yêu cầu các quy tắc giải quyết cảm giác khó chịu để có được một kết quả không đủ năng động. Tùy thuộc vào thuật toán bạn sử dụng, bạn có thể muốn áp dụng "làm mờ" trên kết quả để loại bỏ những thứ như gạch đại dương đơn hình vuông phong phú và đường bờ biển ca rô. Trong trường hợp một thứ gì đó giống như một lục địa được sinh ra bởi một số lục địa khác và không còn nơi nào để phát triển, hãy di chuyển hạt giống đến một điểm mới trên bản đồ và tiếp tục phát triển vượt qua. Vâng, điều đó có thể có nghĩa là bạn đôi khi kết thúc với nhiều lục địa hơn kế hoạch, nhưng nếu đó thực sự là điều bạn chắc chắn không muốn thì một cách khác để giúp tránh nó là thiên vị các thuật toán tăng trưởng để chúng ưu tiên phát triển theo hướng ít gần với các hạt giống. Tệ nhất là (theo ý kiến ​​của tôi), bạn có thể gắn cờ một chuỗi là không hợp lệ khi một hạt giống không còn nơi nào để phát triển và tạo ra một bản đồ mới. Chỉ cần đảm bảo rằng bạn đặt số lần thử tối đa để nếu có bất kỳ điều gì không thực tế được chỉ định (như lắp 50 lục địa có trọng số chẵn trên một bảng 10x10), bạn sẽ không mất công cố gắng tìm ra giải pháp hợp lệ.

Tôi không thể đảm bảo về cách thực hiện điều đó của Civ, v.v. sử dụng phương pháp tương tự để tạo ra các dòng sông, dãy núi, v.v.


11

Tôi đã tạo một thứ tương tự như hình ảnh đầu tiên của bạn trong JavaScript. Nó không quá phức tạp nhưng nó hoạt động:

http://jsfiddle.net/AyexeM/zMZ9y/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<style type="text/css">
    #stage{
        font-family: Courier New, monospace;
    }
    span{
        display: none;
    }
    .tile{
        float:left;
        height:10px;
        width:10px;
    }
    .water{
        background-color: #55F;
    }
    .earth{
        background-color: #273;
    }
</style>
</head>

<body>


<div id="stage">

</div>

<script type="text/javascript">

var tileArray = new Array();
var probabilityModifier = 0;
var mapWidth=135;
var mapheight=65;
var tileSize=10;

var landMassAmount=2; // scale of 1 to 5
var landMassSize=3; // scale of 1 to 5


$('#stage').css('width',(mapWidth*tileSize)+'px');


for (var i = 0; i < mapWidth*mapheight; i++) {

    var probability = 0;
    var probabilityModifier = 0;

    if (i<(mapWidth*2)||i%mapWidth<2||i%mapWidth>(mapWidth-3)||i>(mapWidth*mapheight)-((mapWidth*2)+1)){

        // make the edges of the map water
        probability=0;
    }
    else {

        probability = 15 + landMassAmount;

        if (i>(mapWidth*2)+2){

            // Conform the tile upwards and to the left to its surroundings 
            var conformity =
                (tileArray[i-mapWidth-1]==(tileArray[i-(mapWidth*2)-1]))+
                (tileArray[i-mapWidth-1]==(tileArray[i-mapWidth]))+
                (tileArray[i-mapWidth-1]==(tileArray[i-1]))+
                (tileArray[i-mapWidth-1]==(tileArray[i-mapWidth-2]));

            if (conformity<2)
            {
                tileArray[i-mapWidth-1]=!tileArray[i-mapWidth-1];
            }
        }

        // get the probability of what type of tile this would be based on its surroundings 
        probabilityModifier = (tileArray[i-1]+tileArray[i-mapWidth]+tileArray[i-mapWidth+1])*(19+(landMassSize*1.4));
    }

    rndm=(Math.random()*101);
    tileArray[i]=(rndm<(probability+probabilityModifier));

}

for (var i = 0; i < tileArray.length; i++) {
    if (tileArray[i]){
        $('#stage').append('<div class="tile earth '+i+'"> </div>');
    }
    else{
        $('#stage').append('<div class="tile water '+i+'"> </div>');
    }
}

</script>

</body>
</html>

3
Thực hiện rất thanh lịch, tôi thích.
nathanchere

Cảm ơn chàng trai !! Nó rất nhẹ và đẹp
Liberateur

9

Tạo bản đồ đa giác bài viết mô tả từng thế hệ đồ bước unsing đa giác Voronoi.

Anh chàng này cũng cung cấp tất cả các mã nguồn. Đó là Flash (ActionScript 3 / ECMAScript) nhưng có thể chuyển đổi sang bất kỳ ngôn ngữ hướng đối tượng nào khác

Hoặc cố gắng sử dụng các thuật toán được triển khai trong một số phần mềm đo lường môi trường fractal như TerraJ


5

Chỉ nghĩ ra khỏi vòng bít ở đây:

Chọn một số điểm bắt đầu và gán cho mỗi điểm một kích thước được rút ngẫu nhiên (hy vọng). Bạn có thể duy trì một bản vẽ kích thước riêng biệt cho các lục địa được quy hoạch và các đảo được quy hoạch nếu bạn muốn.

Vòng qua các phần tử đất và nơi chúng chưa ở kích thước quy hoạch, hãy thêm một hình vuông. Nhưng phần thú vị là cân nhắc cơ hội mà mỗi phần tử lân cận sẽ là một. Một số điều được đề xuất có thể dẫn đến:

  1. Khoảng cách đến vùng đất "khác" gần nhất. Hơn nữa, tốt hơn là tạo ra không gian đại dương rộng. Gần hơn tốt hơn là tạo ra các kênh hẹp. Bạn phải quyết định xem bạn có để các bit hợp nhất hay không.
  2. Khoảng cách từ hạt giống. Gần hơn tốt hơn có nghĩa là khối đất nhỏ gọn, xa hơn tốt hơn có nghĩa là các bit dài ra
  3. Số ô đất hiện có liền kề. Trọng lượng có lợi cho nhiều ô vuông liền kề mang lại cho bạn bờ biển mịn màng, thích ít ô mang lại cho bạn nhiều cửa vào và bán đảo.
  4. Sự hiện diện của các hình vuông "tài nguyên" gần đó? Phụ thuộc vào quy tắc trò chơi, khi bạn tạo hình vuông tài nguyên và nếu bạn muốn làm cho nó dễ dàng.
  5. Bạn sẽ cho phép các bit tiếp cận hoặc tham gia với các cực?
  6. ??? không biết gì nữa

Tiếp tục cho đến khi tất cả các khu đất đã đạt đến kích thước quy hoạch hoặc không thể phát triển được nữa vì một số lý do.

Lưu ý rằng việc loại bỏ tham số cho các yếu tố trọng số này cho phép bạn điều chỉnh loại thế giới được tạo ra, đây là một tính năng mà tôi thích ở một số chiếc Civ.

Bằng cách này, bạn sẽ cần tạo địa hình trên từng bit riêng biệt.


4

Bạn có thể thử một thuật toán hình vuông kim cương hoặc nhiễu perlin để tạo ra thứ gì đó giống như bản đồ độ cao. Sau đó, chỉ định giá trị phạm vi cho những gì hiển thị trên bản đồ. Nếu "chiều cao" của bạn đi từ 0 đến 100, thì hãy tạo 0 - 20 nước, 20 - 30 bãi biển, 30 - 80 cỏ, 80 - 100 núi. Tôi nghĩ rằng notch đã làm điều gì đó tương tự như điều này trong minicraft, nhưng tôi không phải là một chuyên gia, tôi chỉ có suy nghĩ hình vuông kim cương sau khi cuối cùng nó đã hoạt động.


3

Tôi nghĩ rằng bạn có thể sử dụng cách tiếp cận theo phong cách "lập trình động" ở đây.

Giải quyết các vấn đề nhỏ trước và kết hợp các giải pháp một cách thông minh để giải quyết vấn đề lớn hơn.

A1= [elliptical rectangular random ... ]// list of continents with area A1 approx. 
A2= [elliptical rectangular random ... ]// list of continents with area A2 approx.
A3= [elliptical rectangular random ... ]// list of continents with area A3 approx.
...
An= [elliptical rectangular random ... ]// list of continents with area An approx.

// note that elliptical is approximately elliptical in shape and same for the other shapes.

Choose one/more randomly from each of the lists (An).

Now you have control over number and area of continents.

You can use genetic algorithm for positioning them 
as you see "fit" ;)

Sẽ rất tốt nếu bạn xem qua một số "Thuật toán bố cục đồ thị"

Bạn có thể sửa đổi những điều này cho phù hợp với mục đích của mình.


3

Tôi đã có một ý tưởng cho việc tạo bản đồ tương tự như câu trả lời về mảng kiến ​​tạo. Nó đã đi một cái gì đó như thế này:

  1. quét qua các ô lưới tạo cho mỗi ô vuông là một ô vuông "đất" nếu rnd <= 0,292 (phần trăm đất khô thực tế trên hành tinh trái đất).
  2. Di chuyển mỗi mảnh đất một ô vuông về phía láng giềng lớn hơn gần nhất của nó. Nếu hàng xóm cách đều nhau, hãy đi về phía lớn hơn. Nếu các khối có kích thước bằng nhau, hãy chọn ngẫu nhiên.
  3. nếu hai hình vuông đất chạm nhau, hãy nhóm chúng thành một đoạn, từ bây giờ trở đi, tất cả các hình vuông sẽ chuyển thành một.
  4. lặp lại từ bước 2. Dừng lại khi tất cả các phần được kết nối.

Điều này tương tự như cách hoạt động của lực hấp dẫn trong không gian 3D. Nó khá phức tạp. Một thuật toán đơn giản hơn cho nhu cầu của bạn sẽ hoạt động như sau:

  1. Thả vào n ô đất bắt đầu ở các vị trí x, y ngẫu nhiên và các khoảng cách có thể chấp nhận được với nhau. Đây là những hạt giống cho lục địa của bạn. (Sử dụng định lý Pitago để đảm bảo các hạt có khoảng cách nhỏ nhất giữa chúng và tất cả các hạt khác.)
  2. sinh ra một hình vuông đất từ ​​một hình vuông đất hiện có theo một hướng ngẫu nhiên, nếu hướng đó là một hình vuông đại dương.
  3. lặp lại bước 2. Dừng lại khi các ô đất lấp đầy 30% tổng kích thước bản đồ.
  4. nếu các lục địa đủ gần nhau, hãy thả cầu trên đất liền như mong muốn để mô phỏng hiệu ứng kiểu Panama.
  5. Thả vào các hòn đảo nhỏ hơn, ngẫu nhiên như mong muốn để có cái nhìn tự nhiên hơn.
  6. đối với mỗi hình vuông "đảo" bạn thêm vào, hãy cắt bỏ các biển nội địa và các hình vuông hồ từ các lục địa bằng cách sử dụng cùng một thuật toán ngược lại. Điều này sẽ duy trì tỷ lệ đất ở mức mong muốn.

Hãy cho tôi biết điều này diễn ra như thế nào. Tôi chưa bao giờ tự mình thử.

Tái bút. Tôi thấy điều này giống với những gì bạn đã thử. Ngoại trừ nó thiết lập tất cả các hạt giống cùng một lúc, trước khi bắt đầu, vì vậy các lục địa sẽ cách nhau đủ xa và sẽ dừng lại khi bản đồ được lấp đầy đủ.


2

Tôi chưa thực sự thử điều này nhưng nó được lấy cảm hứng từ câu trả lời của David Johnstone về các mảng kiến ​​tạo. Tôi đã thử tự mình thực hiện nó trong dự án Civ cũ của mình và khi nói đến việc xử lý va chạm, tôi có một ý tưởng khác. Thay vì tạo ô trực tiếp, mỗi lục địa bao gồm các nút. Phân phối khối lượng cho mỗi nút sau đó tạo ra một loạt các lục địa "đốm màu" bằng cách sử dụng phương pháp siêu thị 2D. Kiến tạo và sự trôi dạt lục địa sẽ rất dễ "giả" chỉ bằng cách di chuyển các nút xung quanh. Tùy thuộc vào mức độ phức tạp bạn muốn đi, bạn thậm chí có thể áp dụng những thứ như dòng chảy để xử lý chuyển động của nút và tạo ra các dãy núi tương ứng với ranh giới mảng chồng lên nhau. Có lẽ sẽ không thêm nhiều vào khía cạnh trò chơi của mọi thứ,

Một lời giải thích tốt về siêu tượng nếu bạn chưa làm việc với chúng trước đây:

http://www.gamedev.net/page/resources/_//feature/fprogramming/exploring-metaballs-and-isosurfaces-in-2d-r2556


2

Đây là những gì tôi đang nghĩ, vì tôi sắp triển khai một cái gì đó tương tự như thế này mà tôi có cho một trò chơi đang phát triển. :

Thế giới chia thành các khu vực. tùy theo độ lớn của thế giới sẽ xác định có bao nhiêu vùng. Đối với ví dụ này, chúng tôi sẽ giả định một thế giới có kích thước trung bình, với 6 khu vực. Mỗi vùng lưới chia thành 9 vùng lưới. các vùng lưới đó chia thành 9 ô mỗi ô. (điều này không phải để di chuyển nhân vật, mà chỉ đơn thuần là để tạo bản đồ) Lưới dành cho quần xã sinh vật, vùng lưới dành cho các đặc điểm trên đất liền, (lục địa và đại dương) và các vùng dành cho khí hậu tổng thể. Các tấm lưới chia thành các ô.

Được tạo ra một cách ngẫu nhiên, các khu vực được chỉ định các bộ khí hậu hợp lý. Ví dụ: các vùng lưới được gán ngẫu nhiên cho; đại dương hoặc đất liền. Lưới được chỉ định quần xã sinh vật một cách ngẫu nhiên với các công cụ sửa đổi dựa trên vùng lưới và khí hậu của chúng, đó là rừng, sa mạc, đồng bằng, băng hà, đầm lầy hoặc núi lửa. Khi tất cả những điều cơ bản đó được chỉ định, đã đến lúc trộn chúng với nhau, sử dụng hàm dựa trên tỷ lệ phần trăm ngẫu nhiên để điền vào các tập hợp ô. Ví dụ; nếu bạn có một quần xã sinh vật rừng, bên cạnh một quần xã sinh vật sa mạc, bạn có một thuật toán làm giảm khả năng ảnh hưởng rằng một ô sẽ là "rừng" và tăng lên rằng nó sẽ là "hoang vắng". Vì vậy, khoảng một nửa giữa chúng, bạn sẽ thấy một loại ảnh hưởng pha trộn khi kết hợp hai quần xã sinh vật để tạo ra một sự chuyển đổi hơi suôn sẻ giữa chúng. Việc chuyển đổi từ vùng lưới này sang vùng lưới tiếp theo có thể sẽ mất thêm một chút công việc để đảm bảo sự hình thành vùng đất hợp lý. Ví dụ, có 50 gạch từ trung tâm của quần xã sinh vật đến rìa của quần xã sinh vật, có nghĩa là, có 50 gạch từ cạnh mà nó chạm vào trung tâm của quần xã sinh vật tiếp theo. Điều đó hợp lý sẽ để lại sự thay đổi 100% từ quần xã sinh vật này sang quần xã sinh vật tiếp theo. Vì vậy, khi các ô gạch tiến gần đến biên giới của hai quần xã sinh vật, tỷ lệ phần trăm thu hẹp xuống khoảng 60% hoặc lâu hơn. Tôi nghĩ sẽ không khôn ngoan nếu đưa ra quá nhiều xác suất vượt qua các quần xã sinh vật ở xa biên giới, nhưng bạn sẽ muốn biên giới được pha trộn một chút. Đối với các vùng lưới, tỷ lệ phần trăm thay đổi sẽ rõ ràng hơn nhiều. Thay vì% giảm xuống khoảng 60%, nó sẽ chỉ giảm xuống khoảng 80%. Và một cuộc kiểm tra thứ cấp sau đó sẽ phải được thực hiện để đảm bảo rằng không có một viên gạch nước ngẫu nhiên ở giữa một quần xã sinh vật trên cạn bên cạnh đại dương mà không có một số logic nào đó. Vì vậy, hoặc kết nối gạch nước đó với khối đại dương để tạo thành một kênh giải thích gạch nước, hoặc loại bỏ nó hoàn toàn. Đất trong quần xã sinh vật dưới nước dễ giải thích hơn bằng cách sử dụng các mỏm đá và những thứ như vậy.

Ồ, hơi ngớ người, xin lỗi.


này! Tôi đang thực hiện một số nghiên cứu khi đang cố gắng tạo một bản đồ cho .. và tôi sắp thực hiện chính xác những gì bạn đã mô tả. Chỉ vì tò mò làm thế nào mà nó thành ra?
VivienLeger

1

Tôi sẽ đặt địa hình fractal theo một số bố cục mà bạn biết là "công trình" (ví dụ: lưới 2x2, hình thoi, v.v., với một số jitter) nhưng với sự phân bố Gauss giảm dần đỉnh xuống về phía rìa của các trung tâm lục địa. Đặt mực nước thấp hơn sao cho gần hết đất cho đến khi bạn gần đến mép.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.