Tôi nghĩ rằng tôi hiểu rõ hơn những gì bạn đang hỏi bây giờ.
Tiếng ồn không phải là ngẫu nhiên - nó trông ngẫu nhiên nhưng hoàn toàn dựa trên một công thức toán học và có thể lặp lại. Tất cả các thông tin được mã hóa trong công thức. Điều này có nghĩa là bạn có thể có một công thức có khả năng bao phủ một vùng vô hạn và chỉ cần sử dụng công thức trên tọa độ của khu vực bạn cần. Khi bạn cần một khu vực liền kề, bạn chỉ cần sử dụng lại công thức trên các tọa độ mới và vì công thức mang lại các giá trị liên tục, các khu vực sẽ nối liền nhau.
Đây là một ví dụ đơn giản, sử dụng nhiễu hình sin thay vì nhiễu perlin để tạo chiều cao và tưởng tượng thế giới là vô hạn trong trục X nhưng chỉ cao 1 đơn vị trong trục Y và Z.
Công thức là: height(x,y) = sin(x/20)
Trò chơi bắt đầu và chúng tôi tạo ra độ cao cho khu vực gần đó, tức là. (0,0) đến (9.0):
[0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.34, 0.39, 0.43]
Chúng tôi có một ngọn đồi, vươn lên về phía bên phải. Giả sử chúng ta đi đến cuối của nó và cần tạo các giá trị từ (10,0 đến 19,0) ngay bây giờ:
[0.48, 0.52, 0.56, 0.61, 0.64, 0.68, 0.72, 0.75, 0.78, 0.81]
Lưu ý cách ngọn đồi tiếp tục tăng đều đặn và giá trị ở (10.0) tiếp tục duy trì từ điểm ở (9.0). Điều này là do hàm sin liên tục, về cơ bản có nghĩa là nếu bạn cung cấp cho nó 2 số liền kề, bạn sẽ nhận được 2 kết quả liền kề - cho một định nghĩa nhất định về liền kề. Vì vậy, nếu bạn sử dụng tọa độ thế giới của mình làm tham số cho chức năng xác định thế giới của mình, bạn sẽ có được một cảnh quan liên tục khớp với nhau cho dù bạn tạo ra bao nhiêu hay ít một lúc. Khi bạn tạo các phần mới, chúng sẽ tự động chuyển từ các phần hiện có, vì độ cao đã được xác định trước.
Nếu thế giới sẽ không thay đổi, bạn thậm chí không cần lưu trữ bất cứ thứ gì, vì bạn có thể tính toán chính xác chiều cao ở bất kỳ điểm nào từ công thức. Rõ ràng với một thứ như Minecraft, thế giới hoàn toàn biến dạng, vì vậy bạn chỉ cần lưu từng khối khi bạn tạo ra nó. Cho rằng có sự kết hợp cao giữa các khối liền kề (nghĩa là nếu 1 khối là cỏ, thì nhiều khả năng không phải là khối bên cạnh nó cũng là cỏ), bạn có thể nén dữ liệu rất hiệu quả - mã hóa độ dài chạy sẽ hoạt động hiệu quả tốt, nhưng sau đó sẽ gần như bất kỳ thuật toán nén tiêu chuẩn.
Trong khi tôi đã nói về chiều cao là giá trị rõ ràng nhất, bạn có thể sử dụng cùng một hệ thống để tạo ra bất kỳ đặc điểm nào bạn muốn. Sử dụng hàm toán học với các thuộc tính liên tục và trong đó các đầu vào là tọa độ thế giới của bạn và có thể quyết định sự hiện diện của các mốc, mỏ khoáng sản, điểm sinh sản, bất cứ điều gì bạn thích. (Rõ ràng các giá trị trong một công thức có thể ảnh hưởng đến một công thức khác - không có điểm nào đặt mỏ than giữa không trung, do đó bạn tạo bản đồ chiều cao thế giới và sau đó chỉ tính toán khả năng than cho các khối đủ xa dưới mặt đất.)