Trò chơi bột: làm thế nào để họ làm việc?


13

Gần đây tôi đã tìm thấy hai viên đá quý:

http://powdertoy.co.uk/

http://dan-ball.jp/en/javagame/dust/

Câu hỏi của tôi là: Làm thế nào các vật lý với rất nhiều yếu tố được xử lý hiệu quả? Tôi chỉ đánh giá thấp sức mạnh tính toán hiện đại hay có thể 'chỉ' có một mảng hai chiều, mỗi ô mô tả những gì được đặt ở vị trí theo và mô phỏng từng ô trong mỗi bước. Hoặc có những điều phức tạp hơn đang được thực hiện như tóm tắt các khu vực lớn cùng loại thành một tập dữ liệu duy nhất và tách tập hợp nói khi cần thiết?

Có trò chơi mã nguồn mở nào như thế này tôi có thể xem không?


Tôi đã hỏi câu hỏi tương tự về mô phỏng cát trên Stackowerflow ban đầu Các câu trả lời có thể giúp bạn.
Evgeny Vinnik

Câu trả lời:


5

Chắc chắn có khá nhiều; Tôi đã sử dụng để sửa đổi chúng. Lưu ý các liên kết dành cho chủ đề diễn đàn và tải nguồn. Hai tôi có những kỷ niệm đẹp nhất là:

EngimaSand bởi xavierenigma ( C ++ | Java ) Java mới hơn.

Đốt cháy bởi sieben ( C ++ ) Cái này rất nhanh về mặt vật lý.

Không may là trang này gần chết, nhưng có một số chủ đề ở đây về vật lý.

EDIT: Đối với bất kỳ ai quan tâm, tôi có mediafire là nguồn Java cho EnigmaSand tại đây .


Nhiều đánh giá cao. Liên kết đang giảm tại thời điểm này, mặc dù. Tôi sẽ thử lại sau vài giờ nữa.
Marc Müller

Họ đang? Tất cả đều hoạt động tốt với tôi.
Vịt Cộng sản

1
Mediafire đã tải lên và chỉnh sửa thành câu trả lời.
Vịt Cộng sản

5

Vật lý trong các trò chơi này được mô phỏng bằng cách sử dụng một hệ thống dựa trên thiết bị tự động di động phức tạp . Nó phức tạp hơn đáng kể so với trò chơi được sử dụng trong Trò chơi cuộc sống và kết hợp các tính năng có nghĩa là nó có thể không phải là một CA phù hợp, nhưng nó vẫn tương đối đơn giản để tính toán và đã được nhiều năm. Không đi sâu vào chi tiết, nhưng độ phức tạp của thuật toán sẽ khá nhỏ, thậm chí có thể là O (diện tích).

Có vẻ như cũng có một số trí thông minh trong đó, cũng hiệu quả đáng ngạc nhiên cho các hiệu ứng thú vị mà nó có thể tạo ra.


"Và kết hợp các tính năng có nghĩa là nó có thể không phải là một CA phù hợp" ... ý của bạn là gì? Có phải các CA này chỉ khác nhau về việc có nhiều quy tắc hơn hoặc một cái gì đó nhiều hơn?
Gastón

2
Một CA chuẩn có trạng thái của mỗi ô trong thế hệ N + 1 được xác định bởi một hàm phụ thuộc vào trạng thái của vùng lân cận của ô trong thế hệ N và hàm nói chung là giống nhau cho mỗi ô. Nhiều trò chơi "bột" có chứa những thứ như boids hoặc các đối tượng vật lý dựa trên ràng buộc, không thực sự nằm trong định nghĩa này. Tôi nghi ngờ họ được mã hóa hoàn toàn như một CA. Ngay cả khi chúng, tại một số điểm, vùng lân cận đủ lớn và chức năng chuyển đổi đủ phức tạp để bạn thực sự không phải đối phó với CA.
Gregory Avery-Weir

Câu trả lời tốt và nhận xét Gregory, cảm ơn cho sự hiểu biết của bạn.
Kỹ sư

1
Mặc dù thiết bị tự động di động có thể là một phần của nó, nhưng nó chắc chắn không phải là toàn bộ câu trả lời. Cũng có một người giải quyết chất lỏng, đó là điều khiến nó trông rất 'thực tế'
bobobobo

@bobobobo: Vâng, nó chắc chắn vượt ra ngoài giới hạn của automata di động thích hợp.
Gregory Avery-Weir

3

Nhiều năm trước Jos Stam bắt đầu đưa ra mã nguồn của mình cho người giải quyết chất lỏng. Có một đoạn mã rất ngắn thiết lập lưới và giải các phương trình Navier-Stokes rất nhanh. Nguồn đầy đủ có sẵn trên trang của mình là tốt.

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.