Giochi di polvere: come funzionano?


13

Di recente ho trovato queste due gemme:

http://powdertoy.co.uk/

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

La mia domanda è: come viene gestita in modo efficiente la fisica con così tanti elementi? Sto solo sottovalutando gravemente la moderna potenza di calcolo o è possibile 'solo' avere un array bidimensionale, ciascuna delle quali descrive ciò che è posto nella posizione corrispondente e simula ogni cella in ogni fase. Oppure si stanno facendo cose più complesse come riassumere grandi aree dello stesso tipo in un singolo set di dati e separare detto set in base alle esigenze?

Ci sono giochi open source come questo che potrei guardare?


Ho fatto una domanda simile sulla simulazione della sabbia su Stackowerflow originale Le risposte potrebbero aiutarti.
Evgeny Vinnik,

Risposte:


5

Ce ne sono sicuramente alcuni; Li modificavo. Nota che i collegamenti sono per thread del forum e download di sorgenti. I due di cui ho i ricordi più belli sono:

EngimaSand di xavierenigma ( C ++ | Java ) Quello Java è più recente.

BurningSand di sieben ( C ++ ) Questo è molto veloce in termini di fisica.

Il sito è, purtroppo, vicino alla morte, ma non c'è più thread qui di fisica.

EDIT: Per chiunque sia interessato, ho incendiato la fonte Java per EnigmaSand qui .


Molto apprezzato. I collegamenti al momento sono inattivi. Ci riproverò tra qualche ora.
Marc Müller,

Loro sono? Stanno tutti lavorando bene per me.
Il comunista Duck il

1
Mediafire caricato e modificato nella risposta.
Il comunista Duck il

5

La fisica in questi giochi è simulata dall'uso di un sistema basato su un automa cellulare complesso . È significativamente più complicato di quello utilizzato, ad esempio, nel Game of Life, e incorpora funzionalità che significano che probabilmente non è una CA corretta, ma è ancora relativamente semplice da calcolare ed è stato per anni. Non entrare troppo nei dettagli, ma la complessità dell'algoritmo sarà abbastanza piccola, forse anche O (area).

Sembra che ci sia anche un'intelligenza di sciame lì, che è anche sorprendentemente efficiente per gli effetti interessanti che può creare.


"e incorpora funzionalità che significano che probabilmente non è una CA corretta" ... cosa intendi con questo? Queste CA differiscono solo per avere più regole o qualcosa di più?
Gastón,

2
Una CA canonica ha lo stato di ogni cella nella generazione N + 1 definito da una funzione che dipende dagli stati del vicino vicinato della cella nella generazione N e la funzione è generalmente la stessa per ogni cella. Molti giochi "in polvere" contengono cose come boids o oggetti fisici basati sui vincoli, che in realtà non rientrano in questa definizione. Dubito che siano codificati interamente come CA. Anche se lo sono, ad un certo punto, il quartiere diventa abbastanza grande e la funzione di transizione diventa abbastanza complessa da non avere realmente a che fare con una CA.
Gregory Avery-Weir

Buona risposta e commento Gregorio, grazie per i tuoi approfondimenti.
Ingegnere il

1
Sebbene l'automa cellulare possa farne parte, non è sicuramente la risposta completa. C'è anche un solutore di fluidi, che è ciò che lo rende così "realistico"
bobobobo,

@bobobobo: Sì, va decisamente oltre i limiti degli automi cellulari adeguati.
Gregory Avery-Weir,

3

Molti anni fa Jos Stam iniziò a pubblicare il suo codice sorgente per i solutori di fluidi. C'è un po 'di codice che imposta una griglia e risolve le equazioni di Navier-Stokes molto velocemente. La fonte completa è disponibile anche sulla sua pagina.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.