Tôi thích cách Age of Empires II tạo ra các bản đồ ngẫu nhiên (đa dạng, chuyển đổi quần xã tốt, bản đồ cảm thấy ngẫu nhiên mà không cảm thấy hỗn loạn), nhưng đang đấu tranh để nhân rộng phong cách. Tôi đã cố gắng sử dụng tiếng ồn Perlin, nhưng mọi thứ phát ra quá đồng nhất hoặc nếu không, giá trị Perlin -> heuristic địa hình quá nhạy cảm và dễ vỡ để tạo ra nhiều loại thế giới.
Tôi nhớ loại bản đồ AoE2 "Không xác định" đã quảng cáo "100.000 bản đồ có thể", gợi ý một số cách sử dụng số hạt giống, nhưng tôi không chắc cách sử dụng số hạt giống để tạo ra giống tôi đã thấy.
Những thuật toán và phương pháp phỏng đoán nào tôi có thể sử dụng để tạo ra các bản đồ ngẫu nhiên có cảm giác như bản đồ ngẫu nhiên AoE2?
Chỉnh sửa để cụ thể hơn:
Nghĩ thêm về vấn đề của tôi và nghiên cứu những gì tôi thích về công cụ bản đồ ngẫu nhiên của AoE2, tôi tin rằng vấn đề lớn nhất của tôi là quản lý việc phân phối nước và thực vật trên bản đồ . Bây giờ tôi thấy tôi cũng đã gắn kết điều đó trong tâm trí của mình bằng "chuyển đổi sinh học có ý nghĩa", nhưng đó là một vấn đề khác (mặc dù tôi hy vọng việc tiếp tục sử dụng tiếng ồn Perlin sẽ khiến nó khó giải quyết).
Tôi đã thêm một số bản đồ ngẫu nhiên AoE2 làm nổi bật những gì tôi thích về công cụ lập bản đồ của họ, những nỗ lực của tôi không thể tái tạo được. Tất cả các ảnh chụp màn hình được lấy từ loại bản đồ ngẫu nhiên, "Tùy chỉnh" -> "Không xác định". Tôi đã không hướng dẫn trò chơi sử dụng các khu vực địa lý cụ thể như quần đảo.
Hơn nữa bên dưới là hình ảnh từ công cụ bản đồ của riêng tôi. Mỗi pixel tương ứng với một ô bản đồ AoE2.
Một điều phức tạp cho dự án của tôi là tôi muốn bản đồ lớn hơn nhiều lần so với bản đồ AoE2. Do đó, bất kỳ công cụ nào tôi sử dụng đều phải có khả năng tạo ra toàn bộ quần xã trong mỗi bản đồ và không phải là một bộ quần xã sinh vật hẹp trên mỗi bản đồ, như sử dụng AoE2.
Bản đồ Age of Empires II
Đây là một ví dụ có các hồ nội địa và một số thứ nhìn ra sông. Tôi thích cách bản đồ bao gồm một lượng lớn nước nằm rải rác, nhưng nước đó vẫn hơi tập trung - có những vùng đất rộng lớn có sẵn để xây dựng đế chế của bạn. Bạn không cần phải dành toàn bộ trò chơi lên kế hoạch cho thành phố của mình trên mặt nước.
Đây là ví dụ tương tự khi trò chơi đủ thông minh để kết nối các đảo với đầm lầy có thể đi qua được. Tôi không thể tưởng tượng làm thế nào một thuật toán dựa trên tiếng ồn sẽ tạo ra đầm lầy ở đó và chỉ những nơi đó. Ngoài ra, hãy chú ý cách trò chơi tạo ra vùng đất sao cho mỗi người chơi có vùng đất riêng, rộng lớn để bắt đầu. Nó không tạo ra các miếng đất ngẫu nhiên, sau đó đoán chính xác xem cái nào sẽ là thứ kinh khủng nhất cho mỗi người chơi bắt đầu.
Tôi thích bản đồ này cũng sử dụng nhiều nước, nhưng không bao gồm nhiều hồ nội địa. Tương phản nó với hình ảnh đầu tiên. Tôi thích cách AoE2 tạo ra các khu vực địa lý hoàn toàn khác nhau bằng cách sử dụng cùng các khối xây dựng. Nỗ lực của tôi trong việc sử dụng tiếng ồn Perlin đã thất bại ở đây - Tôi hoặc có được những đại dương trải dài khổng lồ làm lùn khối đất hoặc Vùng đất 10.000 hồ. Tôi cũng thấy khó có được cả hai hòn đảo và các lục địa được kết nối (nghĩ là Bắc / Nam Mỹ).
Tương phản hình ảnh này với hình trên nó. Chúng cho thấy sự khô cằn của bản đồ không phụ thuộc vào mực nước. Hình ảnh đầu tiên có một bản đồ gần như không có nước, nhưng vẫn có rừng và cỏ. Hình ảnh thứ hai có một lượng nước vừa phải, nhưng là một sa mạc. Tôi thích điều đó là có thể (nghĩ rằng có cả New Mexico hoặc Sahara và Costa Rica trong thế giới của bạn).
Bản đồ của riêng tôi
Tôi đã đọc ở một loạt các địa điểm rằng một cách tốt để xây dựng bản đồ là tạo ra nhiều mức độ nhiễu Perlin, mỗi mức đại diện cho một chiều dữ liệu khác nhau. Theo khuyến nghị phổ biến, tôi đã đi với độ cao và độ ẩm, chọn loại địa hình từ bảng Whittaker ở đây .
Tôi lấy hai bản đồ perlin, định lượng các giá trị từ mỗi thành số nguyên thông qua một đơn giản if perlin_val < x { i=some_int } else if perlin_val < y...
, sau đó ánh xạ các cặp số nguyên (độ cao, độ ẩm) vào một bảng các loại địa hình (ví dụ: [1,0] -> sa mạc nhiệt đới, [1,1 ] -> đồng cỏ). Đại dương được bao gồm trong hệ thống này - độ cao = 0 đại dương xác định.
Có sự thay đổi tốt, và theo nhiều cách, nó cảm thấy giống như một thế giới thực, nhưng có một vài vấn đề:
Đầu tiên, không có mô hình nào cho độ sâu đại dương. Bạn sẽ mong đợi những vùng nước nông gần bờ và những vùng nước sâu hơn nữa, không có vần điệu hay lý do nào là nơi đó
Thứ hai, tất cả nước tập trung ở các đại dương; không có hồ hoặc sông, vì tiếng ồn Perlin đột nhiên giảm xuống giá trị thấp hơn ở giữa lục địa.
Tạo sự cân bằng giữa số lượng của mỗi quần xã là rất, rất khó. Tôi gán cái này cho:
Nhiễu Perlin tuân theo phân phối chuẩn, do đó, việc ước tính cách điều chỉnh xác suất của mỗi ánh xạ kích thước là khó khăn
Cố gắng cân bằng nhiều chiều là khó khăn - có thể tôi muốn nhiều hơn (2,3) vì vậy tôi tăng tỷ lệ nhận được (n, 3). Chà, bây giờ tôi có quá nhiều (3,3) và mọi thứ có vẻ sai.
Khi tôi phóng to nhiễu đủ gần để có dữ liệu mượt mà, tôi đã không nhận được một mẫu giá trị Perlin rất hoàn chỉnh. Vì vậy, tôi sẽ điều chỉnh các bản phân phối của mình cho bản đồ trước mặt, tải lại bản đồ ngẫu nhiên mới và nhận được kết quả rất khác nhau.
Tôi đã cố gắng khắc phục vấn đề sông / hồ bằng cách tạo ra nước từ bộ giá trị Perlin thứ ba. Một quyết định nước / đất nhị phân, sau đó áp dụng tất cả các công cụ trên vào đất. Điều này làm cho việc kiểm soát phân phối nước trở nên dễ dàng hơn (vẫn chưa hoàn hảo, nhưng tốt hơn), nhưng đưa ra một vấn đề là có rất nhiều chuyển đổi sinh học không có ý nghĩa. Ví dụ, các mảng sa mạc không thể giải thích được giữa đồng cỏ tươi tốt, tuyết trên bãi biển, v.v ... Vẫn khó kiểm soát tỷ lệ của quần xã đất, vì những lý do nêu trên.
Nhìn vào các vấn đề trên, tôi đã thử một thuật toán đơn giản hơn, chỉ ánh xạ nhiễu Perlin thành một chiều. Bây giờ tôi có một loạt các loại địa hình leo thang từ 0 = đại dương sâu -> 1 = đại dương nông -> 2 = bãi biển ... -> N = tuyết. Trong khi điều này mang lại các hòn đảo và lục địa, và làm cho việc cân bằng tỷ lệ của từng địa hình trở nên dễ dàng hơn rất nhiều, các loại địa hình quá xa nhau. Mỗi khối đất trông giống như một bản đồ độ cao, thường không có các loại địa hình nằm rải rác trên bề mặt của nó. Mỗi khối đất có các đặc điểm xấp xỉ nhau, luôn theo cùng một thứ tự và luôn có cùng hình dạng giống như chiếc nhẫn.