Du bist nicht angemeldet.

Werbeanzeige

1

23.11.2022, 22:01

Fluid-Simulation mit Rust. Mit Video :D

Moin,

eigentlich wollte ich gar keine Fluid-Simulation schreiben sondern mir nur Rust mal ansehen.

Ich dachte ich mache mit Rust eine kleine KI die Städte baut oder so.
Habe dann erstmal einen Terrain-Generator gemacht für das Terrain in der die KI leben soll.
Geht ganz gut aber "White-Noise"-Terrain sieht unerträglich öde aus leider.
Es ist "Hydraulic Erosion" nötig damit Terrain es was her macht. Also habe ich mit Rust erstmal eine Fluid Simulation gemacht.
Ist wirklich ein Fluid keine Partikelsimulation.

Das sieht irgendwie ganz nett aus oder? Das Fluid habe ich rot gemacht, weil es dann brutal nach Blut aussieht:



Ich nehme momentan OpenGL aber irgendwie ist der Shader nicht ausgereift den ich geschrieben habe.
Vielleicht stelle ich noch auf Vulkan um. Das ist ja modern. Deshalb habe ich auch wenig Motivation einen schönen OpenGL-Shader zu machen.

Fazit zu Rust: es ist schrecklich! genau so schrecklich wie C++...


Falls jemand Interesse an dem Code für die Simulation hat, wollte nochmal paar Dinge aufräumen, würde den dann posten.
Sind 200 Zeilen und wenig optimiert, trotzdem schnell und ich denke simpel zu verstehen.

Kann man noch irgendwas cooles damit machen?
Mir fehlt die Fantasie. KI reinsetzen vielleicht noch und gegeneinander Krieg führen lassen. So dachte ich das ursprünglich.

Hoffe es gefällt euch.

LG
Bilder zu meinem Projekt: ParSim

Jonathan

Community-Fossil

  • Private Nachricht senden

2

24.11.2022, 07:53

Hab schon länger vorgehabt mir mal Rust für Spieleentwicklung anzuschauen. Hab einiges vielversprechendes dazu gehört, aber ich würde ungern allen Code den ich in C++ geschrieben habe wegschmeißen. Hm.

Womit wurde das genau umgesetzt? Ich schaue gelegentlich auf

https://www.areweguiyet.com/
https://arewegameyet.rs/

aber beide Seiten sagen seit Jahren im Teaser "Rust ist fast schon gut, aber halt noch nicht wirklich".


Zur Simulation: Das schwabbeln sieht nett aus. Du hast Erosion erwähnt, ändert sich aktuell wirklich was am Terrain oder simulierst du erstmal nur Flüssigkeiten? Ich fände es interessant Flüssigkeitenmechaniken mal wirklich als Spielelement irgendwo zu sehen, ich weiß nicht, ob ich das mal irgendwo wirklich gesehen habe. Es gibt jede Menge Spiele wo Räume geflutet werden und dann auch mal Wasserfälle ein- oder ausgeschaltet werden, aber eine wirkliche Simulation als Spielelement hab ich noch nie gesehen.

Zu den Shadern: Benutzt man nicht in Vulcan am Ende auch bloß GLSL? Es geht doch bei Vulcan bloß darum, die Dreiecke und Uniforms effizienter durchzuschleusen, aber die Shader an sich sind doch die selben? Also, außer man stellt direkt komplett auf Raytracing um. Aber auch da hast du ja am Ende auch Normalmaps und BRDFs und all sowas.
Lieber dumm fragen, als dumm bleiben!

3

24.11.2022, 10:38

Moin,

ich habe glium benutzt für das Fenster.
https://github.com/glium/glium

Ganz bisschen nalgebra-glm für OpenGl matrices.
https://docs.rs/nalgebra-glm/latest/nalgebra_glm/

Manchmal hatte ich die Befürchtung, dass C++ durch Rust in vielen Bereichen abgelöst werden könnte.
Ich will ja nicht zum alten Eisen gehören :D

Erosion gibts noch nicht. Hatte es zwar mal probiert aber die Bildung von Mäandern im Flussdelta war nicht so, wie ich es gerne wollte.
https://de.wikipedia.org/wiki/M%C3%A4ander

Dachte in der Map eventuell Wetter und Regen zu implementieren. Die Flüsse schwellen bei Regen dann an und trocknen bei Dürre aus.
Der Spieler könnte auch einen Damm oder Bewässerungsanlagen bauen.

Kann gut angehen, dass Vulkan auch mit GLSL ist. Das wäre nice. Muss ich mir echt mal angucken.

Ich habe das Projekt angehängt, sourcecode und exe. Der Code ist nicht super aufgeräumt aber sind ja eh nur wenige Zeilen.
Mit VSCode und Rust-Plugin solle es direkt kompilieren.

Mit der taste A fügt man Flüssigkeit hinzu.
Die Keyboard-Input mache ich leider irgendwie falsch, das hängt sich manchmal auf muss ich nochmal nachforschen.

LG
»Horus« hat folgende Datei angehängt:
  • terrain001.zip (400,17 kB - 1 mal heruntergeladen - zuletzt: Gestern, 03:04)
Bilder zu meinem Projekt: ParSim

Werbeanzeige