Permainan serbuk: bagaimana cara kerjanya?

13

Saya baru-baru ini menemukan dua permata ini:

http://powdertoy.co.uk/

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

Pertanyaan saya adalah: Bagaimana fisika dengan banyak elemen ditangani secara efisien? Apakah saya hanya terlalu meremehkan kekuatan komputer modern atau mungkinkah 'hanya' memiliki array dua dimensi, masing-masing sel menggambarkan apa yang ditempatkan pada posisi yang sesuai dan mensimulasikan setiap sel dalam setiap langkah. Atau ada hal-hal yang lebih rumit yang dilakukan seperti meringkas area besar dari jenis yang sama ke dalam satu set data tunggal dan memisahkan set yang diperlukan?

Adakah game sumber terbuka seperti ini yang bisa saya lihat?

Marc Müller
sumber
Saya telah mengajukan pertanyaan serupa tentang simulasi pasir pada Stackowerflow asli . Jawabannya mungkin membantu Anda.
Evgeny Vinnik

Jawaban:

5

Tentu ada beberapa; Saya dulu mod mereka. Perhatikan tautan untuk utas forum dan unduhan sumber. Dua yang saya punya kenangan terbaik adalah:

EngimaSand oleh xavierenigma ( C ++ | Java ) Yang Java lebih baru.

BurningSand oleh sieben ( C ++ ) Yang satu ini sangat cepat secara fisika.

Sayangnya situs ini hampir mati, tetapi ada beberapa utas di sini tentang fisika di .

EDIT: Bagi siapa pun yang tertarik, saya memiliki mediafire sumber Java untuk EnigmaSand di sini .

Bebek Komunis
sumber
Sangat dihargai. Tautan saat ini sedang down. Saya akan coba lagi dalam beberapa jam.
Marc Müller
Mereka? Mereka semua bekerja dengan baik untuk saya.
Bebek Komunis
1
Mediafire mengunggah dan mengedit jawaban.
Bebek Komunis
5

Fisika dalam permainan ini disimulasikan dengan menggunakan sistem yang didasarkan pada otomat seluler yang kompleks . Ini secara signifikan lebih rumit daripada yang digunakan dalam, katakanlah, Game of Life, dan menggabungkan fitur yang berarti itu mungkin bukan CA yang tepat, tetapi masih relatif sederhana untuk menghitung dan telah bertahun-tahun. Tidak terlalu banyak detail, tetapi kompleksitas algoritma akan menjadi sangat kecil, bahkan mungkin O (area).

Sepertinya ada juga beberapa kecerdasan segerombolan di sana, yang juga sangat efisien untuk efek menarik yang dapat dibuatnya.

Gregory Avery-Weir
sumber
"dan menggabungkan fitur yang berarti itu mungkin bukan CA yang tepat" ... apa maksudmu dengan itu? Apakah CA ini hanya berbeda karena memiliki lebih banyak aturan atau sesuatu yang lebih?
Gastón
2
CA kanonik memiliki keadaan setiap sel dalam generasi N + 1 yang didefinisikan oleh fungsi yang tergantung pada keadaan lingkungan terdekat sel dalam generasi N, dan fungsi umumnya sama untuk setiap sel. Banyak game "serbuk" berisi benda-benda seperti boids atau objek fisika berbasis kendala, yang tidak benar-benar termasuk dalam definisi ini. Saya ragu mereka sepenuhnya dikodekan sebagai CA. Bahkan jika mereka, pada titik tertentu, lingkungan menjadi cukup besar dan fungsi transisi menjadi cukup kompleks sehingga Anda benar-benar tidak berurusan dengan CA.
Gregory Avery-Weir
Jawaban dan komentar yang bagus Gregory, terima kasih atas wawasan Anda.
Insinyur
1
Meskipun otomat seluler mungkin menjadi bagian darinya, itu jelas bukan jawaban keseluruhan. Ada pemecah fluida di sana juga, yang membuatnya tampak begitu 'realistis'
bobobobo
@obobobo: Ya, itu pasti melampaui batas automata seluler yang tepat.
Gregory Avery-Weir
3

Bertahun-tahun yang lalu Jos Stam mulai mengeluarkan kode sumbernya untuk pemecah cairan. Ada sedikit kode yang mengatur kisi dan memecahkan persamaan Navier-Stokes dengan sangat cepat. Sumber lengkap tersedia di halamannya juga.

bobobobo
sumber