Jeux de poudre: comment fonctionnent-ils?


13

J'ai récemment trouvé ces deux joyaux:

http://powdertoy.co.uk/

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

Ma question est: comment la physique avec autant d'éléments est-elle gérée efficacement? Suis-je en train de sous-estimer gravement la puissance de calcul moderne ou est-il possible d'avoir `` juste '' un tableau bidimensionnel, dont chaque cellule décrit ce qui est placé à la position correspondante et simule chaque cellule à chaque étape. Ou y a-t-il des choses plus complexes qui sont faites comme résumer de grandes zones du même type dans un seul ensemble de données et séparer ledit ensemble si nécessaire?

Existe-t-il des jeux open source comme celui-ci que je pourrais regarder?


J'ai posé une question similaire à propos de la simulation de sable sur Stackowerflow d'origine. Les réponses pourraient vous aider.
Evgeny Vinnik

Réponses:


5

Il y en a certainement pas mal; Je les modifiais. Notez que les liens sont pour les fils de discussion et les téléchargements de sources. Les deux dont je garde le meilleur souvenir sont:

EngimaSand par xavierenigma ( C ++ | Java ) Celui de Java est plus récent.

BurningSand par sieben ( C ++ ) Celui-ci est très rapide en physique.

Le site est malheureusement proche de la mort, mais il y a plusieurs fils ici sur la physique.

EDIT: Pour toute personne intéressée, j'ai Mediafire'd la source Java pour EnigmaSand ici .


Très appréciée. Les liens sont en panne pour le moment, cependant. Je vais réessayer dans quelques heures.
Marc Müller

Elles sont? Ils fonctionnent tous bien pour moi.
The Communist Duck

1
Mediafire téléchargé et édité dans la réponse.
The Communist Duck

5

La physique de ces jeux est simulée par l'utilisation d'un système basé sur un automate cellulaire complexe . C'est beaucoup plus compliqué que celui utilisé, disons, dans le jeu de la vie, et intègre des fonctionnalités qui signifient que ce n'est probablement pas une autorité de certification appropriée, mais elle est toujours relativement simple à calculer et ce depuis des années. Ne pas entrer dans trop de détails, mais la complexité de l'algorithme va être assez petite, peut-être même O (zone).

Il semble qu'il y ait également une certaine intelligence d'essaim, qui est également étonnamment efficace pour les effets intéressants qu'elle peut créer.


"et intègre des fonctionnalités qui signifient que ce n'est probablement pas une autorité de certification appropriée" ... que voulez-vous dire par là? Ces autorités de certification diffèrent-elles uniquement par le fait d'avoir plus de règles ou quelque chose de plus?
Gastón

2
Une autorité de certification canonique a l'état de chaque cellule dans la génération N + 1 défini par une fonction qui dépend des états du voisinage proche de la cellule dans la génération N, et la fonction est généralement la même pour chaque cellule. De nombreux jeux de "poudre" contiennent des choses comme des boids ou des objets physiques basés sur des contraintes, qui ne rentrent pas vraiment dans cette définition. Je doute qu'ils soient entièrement codés comme CA. Même s'ils le sont, à un moment donné, le quartier devient suffisamment grand et la fonction de transition devient suffisamment complexe pour que vous n'ayez vraiment pas affaire à une autorité de certification.
Gregory Avery-Weir

Bonne réponse et commentaire Gregory, merci pour vos idées.
Ingénieur

1
Bien que l'automate cellulaire puisse en faire partie, ce n'est certainement pas la réponse complète. Il y a également un solveur de fluide, ce qui le rend si `` réaliste ''
bobobobo

@bobobobo: Oui, cela va définitivement au-delà des limites des automates cellulaires appropriés.
Gregory Avery-Weir

3

Il y a de nombreuses années, Jos Stam a commencé à publier son code source pour les solveurs de fluides. Il y a un bout de code très court qui établit une grille et résout les équations de Navier-Stokes très rapidement. La source complète est également disponible sur sa page.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.