Pulverspiele: Wie funktionieren sie?


13

Ich habe kürzlich diese beiden Edelsteine ​​gefunden:

http://powdertoy.co.uk/

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

Meine Frage ist: Wie wird die Physik mit so vielen Elementen effizient gehandhabt? Unterschätze ich die moderne Rechenleistung nur stark oder ist es möglich, ein "nur" zweidimensionales Array zu haben, von dem jede Zelle beschreibt, was an der entsprechenden Position platziert wird, und das jede Zelle in jedem Schritt simuliert. Oder gibt es komplexere Dinge wie das Zusammenfassen großer Bereiche derselben Art in einem einzigen Datensatz und das Trennen des genannten Satzes nach Bedarf?

Gibt es Open-Source-Spiele wie dieses, die ich mir ansehen könnte?


Ich habe ähnliche Fragen zur Sandsimulation auf dem ursprünglichen Stackowerflow gestellt. Die Antworten könnten Ihnen helfen.
Evgeny Vinnik

Antworten:


5

Es gibt sicherlich einige; Ich habe sie modifiziert. Beachten Sie, dass sich die Links auf Forenthreads und Quelldownloads beziehen. Die beiden, an die ich mich am besten erinnere, sind:

EngimaSand von xavierenigma ( C ++ | Java ) Das Java ist neuer.

BurningSand von sieben ( C ++ ) Dieser ist physikalisch sehr schnell.

Die Seite ist leider dem Tode nahe, aber es gibt mehrere Threads hier über Physik.

EDIT: Für alle Interessierten, ich habe die Java - Quelle für EnigmaSand mediafire'd hier .


Sehr geschätzt. Die Links sind jedoch im Moment nicht verfügbar. Ich werde es in ein paar Stunden noch einmal versuchen.
Marc Müller

Sie sind? Sie arbeiten alle gut für mich.
Die kommunistische Ente

1
Mediafire hat die Antwort hochgeladen und bearbeitet.
Die kommunistische Ente

5

Die Physik in diesen Spielen wird unter Verwendung eines Systems simuliert, das auf einem komplexen zellularen Automaten basiert . Es ist erheblich komplizierter als das, das beispielsweise in Game of Life verwendet wird, und enthält Funktionen, die bedeuten, dass es wahrscheinlich keine ordnungsgemäße Zertifizierungsstelle ist, aber es ist immer noch relativ einfach zu berechnen und das schon seit Jahren. Nicht zu sehr ins Detail gehen, aber die Komplexität des Algorithmus wird ziemlich klein sein, vielleicht sogar O (Bereich).

Es sieht so aus, als gäbe es auch eine gewisse Schwarmintelligenz, die auch für die interessanten Effekte, die sie erzeugen kann, überraschend effizient ist.


"und enthält Funktionen, die bedeuten, dass es wahrscheinlich keine richtige Zertifizierungsstelle ist" ... was meinst du damit? Unterscheiden sich diese Zertifizierungsstellen nur darin, dass sie mehr Regeln oder etwas mehr haben?
Gastón

2
Bei einer kanonischen CA ist der Zustand jeder Zelle in der Generation N + 1 durch eine Funktion definiert, die von den Zuständen der nahen Nachbarschaft der Zelle in der Generation N abhängt, und die Funktion ist im Allgemeinen für jede Zelle dieselbe. Viele "Powder" -Spiele enthalten Dinge wie Boids oder Constraint-basierte Physikobjekte, die nicht wirklich unter diese Definition fallen. Ich bezweifle, dass sie vollständig als Zertifizierungsstelle kodiert sind. Selbst wenn dies der Fall ist, wird die Nachbarschaft zu einem bestimmten Zeitpunkt groß genug, und die Übergangsfunktion wird so komplex, dass Sie es nicht mit einer Zertifizierungsstelle zu tun haben.
Gregory Avery-Weir

Gute Antwort und Kommentar Gregory, danke für deine Einsichten.
Ingenieur

1
Obwohl zellularer Automat ein Teil davon sein könnte, ist es definitiv nicht die ganze Antwort. Es gibt auch einen Flüssigkeitslöser, der so "realistisch"
aussieht

@bobobobo: Ja, es geht definitiv über die Grenzen richtiger zellularer Automaten hinaus.
Gregory Avery-Weir

3

Vor vielen Jahren begann Jos Stam , seinen Quellcode für Flüssigkeitslöser herauszubringen. Es gibt einen sehr kurzen Code, der ein Gitter erstellt und die Navier-Stokes-Gleichungen sehr schnell löst. Die vollständige Quelle finden Sie auch auf seiner Seite.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.