Mô phỏng nước trong trò chơi Isometric


7

Tôi đang tạo một trò chơi trong Flash AS3, trong đó người chơi cần sửa đổi đất để điều hướng nước đi đúng hướng.

Tuy nhiên, mô phỏng nước là một chủ đề mới đối với tôi và tôi hơi bị mắc kẹt. Nó không phải giống như nước thực tế, với những gợn sóng và những thứ, nhưng nó phải chảy, và nếu có đủ nước, nó cần phải tăng lên.

Tôi đã nghĩ ra hai loại nước khác nhau:

  • Một mùa xuân: Nguồn nước vô hạn. Được sử dụng để mô phỏng biển và các công cụ.
  • Khối nước: Chỉ cần một đơn vị nước.

Việc triển khai hiện tại của tôi cho thấy tôi muốn nước lan rộng như thế nào, nhưng nó không dâng lên và không cho phép nước hữu hạn. Ngoài ra, sự lan truyền không chiếm bất kỳ lượng nước nào, nó chỉ trùng lặp thay vì các đơn vị nước thực sự di chuyển.

Tôi tò mò về cách các bạn sẽ giải quyết vấn đề này. Bất kỳ ví dụ / mã giả luôn được đánh giá cao.


Phiên bản hiện tại: http://dl.dropbox.com/u/319897/ProjectWater.swf Bạn có thể thao tác trên vùng đất bằng cách nhấn chuột trái. Và có thể mô phỏng một bước nước tại một thời điểm bằng cách nhấn A.

Nguồn của phần nước: http://pastebin.com/Js2kYt4y


Đối với tràn và áp lực, mà bạn cần (xấp xỉ) để xử lý những thứ như uốn cong chữ U, hãy xem xét mô phỏng nước có chiều cao (có khả năng cao hơn một khối) và hợp nhất các khối nằm ngay trên nhau. Rõ ràng, bạn cần chuyển đổi trở lại thành các khối để hiển thị và các hệ thống khác và lưu "phòng đầu" phía trên mỗi khối sàn.
Martin Sojka

Bạn sẽ muốn thêm một số thông tin vào khối nước của bạn. Rất nhiều thông tin có thể thu được nếu bạn biết ai là cha mẹ của khối. Bạn có thể nhận được hướng của dòng chảy, và theo dõi cha mẹ trở lại để tìm nước chiều cao tối đa có thể đi. Sau đó, nếu bạn không thể chảy ra, kiểm tra cha mẹ của bạn để xem nếu bạn có thể chảy lên. Ngoài ra, bạn có thể muốn thêm "mực nước" vào các khối của mình, để khi một khối không nguồn duy nhất đang chảy, nó có thể tự phân chia thành khối. Xem bình luận của tôi về câu trả lời của Nick là tốt.
MichaelHouse

Tôi đã viết một bài đăng trên blog này và đăng một video về cách dòng chảy của tôi trông như thế nào . Tôi đã không đi sâu vào nhiều chi tiết cụ thể, vì điều đó sẽ gây nhàm chán cho hầu hết độc giả. Hãy hỏi bất kỳ câu hỏi về chi tiết cụ thể. Ngoài ra, bạn nên đánh dấu câu trả lời của Nick là được chấp nhận.
MichaelHouse

Câu trả lời:


7

Bạn cần kiểm tra automata di động, và có thể cả động lực học chất lỏng. Tarn Adams đã triển khai một hệ thống chất lỏng dựa trên tế bào trong Pháo đài Lùn, và đó là những công cụ mà anh ta tuyên bố sẽ sử dụng trong một cuộc phỏng vấn tôi đã đọc lại một thời gian (và cả 3 chiều theo trường hợp sử dụng của bạn). Tôi nghĩ cho mục đích của bạn, automata di động (tự sao chép / nhân giống các tế bào nước) là đủ. Cellular automata về cơ bản là những gì bạn thấy trong trò chơi kinh điển của Life của John Conway.

Cộng đồng phát triển roguelike có một tấn thông tin về loại công cụ này, bởi vì những trò chơi vốn đã cell-based. Tôi tin rằng có một danh sách gửi thư rec.games.roguelike ở đâu đó trên webz nơi bạn có thể nhận được một số thông tin chuyên sâu.

Cũng đề nghị bạn xem các video Voxeltron trên youtube, một trong số chúng (chỉ có khoảng 2 hoặc 3) cho thấy dung nham lỏng đang chuyển động. Nếu bạn sử dụng các tiểu phân đủ nhỏ trong lưới khối chính của mình, bạn có thể nhận được nước không khối khá mát mẻ, sử dụng sóng hình sin và tương tự cho chuyển động bề mặt. Một lần nữa, để nhân giống, bạn sẽ sử dụng các kỹ thuật automata di động.

Để biết giới thiệu về CA, hãy kiểm tra điều này .


Tôi tin rằng đây là bài viết được đề cập (nước gần cuối). Thật thú vị, nhưng cắt đứt khá đột ngột. Tôi đang làm việc với cùng một vấn đề này và đã giải quyết được nhiều vấn đề, nhưng vẫn chưa giải quyết được giải pháp cuối cùng. Tôi đang sử dụng một cái gì đó tương tự như automata di động. Vì vậy, tôi tin rằng đây là câu trả lời của bạn . Tôi sẽ làm một bài đăng trên blog của mình một khi tôi có nhiều nước hơn "tuôn ra" :)
MichaelHouse

@ Byte56 Tôi sẽ theo dõi blog của bạn sau đó!
Robin

1

Một cách tiếp cận tốt có thể là một trận lụt .

Có thể dễ dàng thêm kích thước thời gian bằng cách theo dõi lượng nước danh nghĩa trong mỗi ô và chỉ cho phép chuyển một tỷ lệ nước nhất định với mỗi dấu thời gian của mô phỏng. Tỷ lệ này có thể được chia đều cho các tế bào lân cận gốc nước trong lần lấp đầy đầu tiên. Cách tiếp cận đơn giản này có nghĩa là nước lấp đầy trên các đồng bằng và lấp đầy các lưu vực và như vậy.

Nếu bạn muốn chơi với khắc canons hoặc sông như là một tác dụng phụ của tốc độ truyền nước cao và như vậy bạn có thể xây dựng một sim vật lý psuedo thú vị ở bên cạnh sẽ làm hài lòng người chơi.

Về mặt nghệ thuật, điều này sẽ cho bạn cơ hội đặt vào các khối thác nước nếu nước chuyển qua độ cao địa hình và như vậy.

Bạn có thể làm cho nó để có các bồn rửa cũng như lò xo, và có lẽ cạnh của bảng là một bồn rửa tự nhiên, nếu không một mùa xuân cuối cùng sẽ tràn ngập bản đồ.

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.