Ben oldukça büyük (çağrı) bloke / bloke değil dizi (yandan bakıldığında) karşı 2D su simülasyonu herhangi bir girdi arıyorum. Aşağıdaki fikirleri buldum:
Hücre Otomataları
Hücre otomatlarını kullanarak CPU üzerinde büyük bir parralel simülasyonu yapın . Kurallar kadar basit:
- Eğer tabana açık bir hücre varsa, ona hareket ettirin.
- Sol ve sağ hücreleri kontrol edin, ikisinden rastgele bir tane seçin ve ona hareket edin.
Artıları
- Uygulaması basit.
- Çok oyunculu sistemde anlamlı / deterministik.
Eksileri
- Muhtemelen gerçekten yavaş.
- İkna edici değil.
GPU'da Akışkanlar Dinamiği
Aşağıdaki gibi bir dokuya karşı GPU'da yaklaşık bir akışkan dinamiği yaklaşımı gerçekleştirin:
+------+-----+-----+-------+
|R |G |B |A |
+------+-----+-----+-------+
|vX |vY |NULL |Density|
+------+-----+-----+-------+
Artıları
- Muhtemelen gerçekten hızlı.
- Oldukça inandırıcı olabilir.
- Başka bir piksel gölgelendirici doğrudan oluşturabilir.
Eksileri
- Uygulaması zor.
- Tweak zor.
- Seviyemin büyüklüğünde tek bir doku ayıramıyorum.
- Izgara alanlarını üst üste bilebilirim, ancak bu daha fazla karmaşıklık katacaktır.
Parçacıklar
Suyu simüle etmek için parçacıklar kullanın. Katkı harmanlama kullanarak işleme sırasında ve daha sonra suya net kenarlar vermek için alfa kanalına bir çarpma fonksiyonu uygulayın.
Artıları
- Muhtemelen güzel görünecek.
- Uygulaması kolaydır.
- Oluşturması kolay.
- Çok oyunculu bir sistem için anlamlıdır, ancak transfer etmek için biraz bant genişliği gerektirir.
Eksileri
- Parçacıklar arası etkiler muhtemelen yavaş olacaktır (mahalle araması).
- Katı boşluklardan suyun 'sızmasına' neden olabilir (çünkü katı boşluk küçüktür, örneğin 1 piksel).
- Parçacık boyutuna bağlı olarak suda garip deliklere yol açabilir.
- Yukarıdakilerin her ikisi de, partiküllerin gerçek boyutlarından daha yakın kaymasına izin verilerek hafifletilebilir, ancak partiküller arası ve partikül / peyzaj performansı ile ilgili sorunlara neden olur.
Başka fikir var mı?
Not: Bu bir tahmin, burada fiziksel olarak doğru su aramıyorum - sadece 'yeterince iyi' bir şey (hızlı ve kirli bonus puanları). Oyun çok oyunculu, bu yüzden maalesef tüm seviyenin sürekli olarak simüle edilmesi gerekiyor.