Tạo thủ tục của cấp vô hạn


16

Một số cách tiếp cận tốt để thủ tục tạo ra mức 2d vô hạn là gì? Mức độ có thể bị hạn chế ở một trong hai chiều nhưng không nhất thiết.

Cách tiếp cận có ý nghĩa nhất đối với tôi cho đến nay là sử dụng bán kính dựa trên lưới. ví dụ: chia khu vực chơi thành một lưới với các ô vuông có kích thước nhất định và sau đó tải các ô vuông X trong bán kính xung quanh người chơi. Sau đó, khi người chơi di chuyển đến một hình vuông khác, xây dựng bộ tiếp theo và thả xa hơn (Khu vực khám phá không cần thiết.) Khi hình vuông được xây dựng, nó chứa một sự sắp xếp ngẫu nhiên của các đối tượng. Khi các vật thể rời khỏi vòng ngoài của hình vuông, chúng sẽ bị xóa khỏi thế giới. Có cách nào tốt hơn hay khác nhau? Hoặc nếu đây là một cách tiếp cận tốt, vấn đề tiềm năng là gì?

Để thảo luận, bạn có thể nghĩ về cấp độ như một trường tiểu hành tinh từ trên xuống với sức mạnh, vv rải rác khắp nơi.


2
Điều này dường như có liên quan: gamedev.stackexchange.com/questions/2230/ trên
jacmoe

^ và do đó, nó nằm trong cột "Liên quan" ở bên phải. Không cần liên kết.
Ricket

7
Và sau đó nó trở thành "liên kết" cũng như "liên quan" - gọn gàng, hả? :)
jacmoe

Câu trả lời:


6

Một vấn đề với thế giới "vô hạn" là tọa độ cơ bản của bạn có thể không phải là vô hạn. Đôi khi, nếu trò chơi làm chậm người chơi đủ, nó có thể không phải là vấn đề đáng lo ngại, vì thời gian để đạt được số nguyên bao quanh, chẳng hạn, sẽ là quá lâu để đạt được. Nhưng nếu bạn cho phép sự khác biệt cao về tốc độ, bạn có thể cần phải rất chính xác và rất xa, bạn sẽ cần phải suy nghĩ về tọa độ của mình. Một sửa chữa hợp lý sẽ có hai cấp độ, chẳng hạn như tọa độ nguyên của lưới của bạn và tọa độ float trong mỗi tham chiếu lưới.

Ở một bên, bạn thậm chí có thể duy trì chính xác bố cục của thế giới của mình, bằng cách sử dụng tọa độ lưới làm hạt giống để tạo thế giới ngẫu nhiên của bạn trong một hình vuông nhất định. Vì vậy, khi người chơi rời khỏi khu vực, bạn có thể thả nó xuống và khi người chơi quay lại, bạn có thể tái tạo nó từ hạt giống.


4
Vấn đề này có thể được khắc phục bằng cách thỉnh thoảng tập trung vào thế giới.
Jonathan Fischoff

Ngoài ra, hãy lưu ý không chỉ về số nguyên bao quanh mà cả sự không chính xác của các điểm nổi nhỏ thay đổi khi số lượng dấu phẩy động cao. Hãy thử điều này: float pos = 1000000000.0f; float nextPos = pos + 0.001f; float diff = nextPos - pos; Trên máy của tôi, diff là 0.
tenpn

Đây là tất cả những điểm tốt. Tôi nghĩ rằng sẽ thích hợp để lấy lại tọa độ mỗi khi một tập hợp hình vuông mới được tạo ra, miễn là nó đủ hiệu quả.
Colin Gislason

Ngẫu nhiên đây là giải pháp tương tự như trong phiên bản PC của Minecraft :) +1 cho số nguyên cố định + float theo ý kiến ​​của tôi là giải pháp tốt nhất
Nhà phát triển GameD
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.