Saya mencari input pada simulasi air dalam 2D, terhadap array yang agak besar (sebut saja) yang diblokir / tidak diblokir (dilihat dari samping). Saya telah datang dengan ide-ide berikut:
Automata Sel
Lakukan simulasi parralel besar-besaran pada CPU, menggunakan sel automata . Dengan aturan sesederhana:
- Jika ada sel yang terbuka ke bawah, pindahlah ke sana.
- Periksa sel kiri dan kanan, pilih yang acak dari keduanya dan pindah ke sana.
Pro
- Mudah diimplementasikan.
- Bermakna / deterministik dalam sistem multi pemain.
Cons
- Mungkin sangat lambat.
- Tidak meyakinkan.
Fluid Dynamics pada GPU
Lakukan perkiraan kasar dinamika fluida pada GPU terhadap tekstur seperti berikut:
+------+-----+-----+-------+
|R |G |B |A |
+------+-----+-----+-------+
|vX |vY |NULL |Density|
+------+-----+-----+-------+
Pro
- Mungkin sangat cepat.
- Bisa sangat meyakinkan.
- Pixel shader lebih lanjut bisa membuatnya secara langsung.
Cons
- Sulit diimplementasikan.
- Sulit untuk mengubah.
- Saya tidak dapat mengalokasikan satu tekstur ukuran level saya.
- Saya bisa tumpang tindih dengan area grid, tetapi ini akan menambah kompleksitas lebih lanjut.
Partikel
Gunakan partikel untuk mensimulasikan air. Selama rendering menggunakan campuran aditif dan kemudian menerapkan fungsi multiplikasi ke saluran alpha untuk memberikan tepi air yang segar.
Pro
- Mungkin akan terlihat bagus.
- Mudah diimplementasikan.
- Mudah dibuat.
- Berarti dalam sistem multi-pemain, meskipun akan membutuhkan bandwidth yang cukup untuk transfer.
Cons
- Efek antar-partikel mungkin akan lambat (pencarian lingkungan).
- Dapat menyebabkan air 'bocor' melalui ruang padat (karena ruang padat kecil, misalnya 1px).
- Dapat menyebabkan lubang aneh di air tergantung pada ukuran partikel.
- Kedua hal di atas dapat dikurangi dengan membiarkan partikel melayang lebih dekat daripada ukuran sebenarnya, namun akan menyebabkan masalah dengan kinerja antar-partikel dan partikel / lanskap.
Ada ide lebih lanjut?
Catatan: Ini perkiraan, saya tidak mencari air yang benar secara fisik di sini - hanya sesuatu yang 'cukup baik' (poin bonus untuk cepat dan kotor). Gim ini multipemain, jadi sayangnya seluruh level perlu disimulasikan terus menerus.