Jogos em pó: como eles funcionam?


13

Eu encontrei recentemente essas duas jóias:

http://powdertoy.co.uk/

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

Minha pergunta é: como a física com tantos elementos é tratada com eficiência? Estou subestimando severamente o poder da computação moderna ou é possível "apenas" ter uma matriz bidimensional, cada célula da qual descreve o que é colocado na posição correspondente e simular cada célula em cada etapa. Ou há coisas mais complexas sendo feitas, como resumir grandes áreas do mesmo tipo em um único conjunto de dados e separar esse conjunto, conforme necessário?

Existem jogos de código aberto como esse que eu poderia olhar?


Fiz uma pergunta semelhante sobre simulação de areia no Stackowerflow original. As respostas podem ajudá-lo.
Evgeny Vinnik

Respostas:


5

Certamente há alguns; Eu costumava modificá-los. Observe que os links são para tópicos do fórum e downloads de fontes. As duas que tenho as melhores lembranças são:

EngimaSand por xavierenigma ( C ++ | Java ) O Java é mais recente.

BurningSand por sieben ( C ++ ) Este é muito rápido em termos de física.

Infelizmente, o site está quase morto, mas há vários tópicos aqui sobre física.

Edição: Para qualquer pessoa interessada, eu mediafire'd a fonte Java para EnigmaSand aqui .


Muito apreciado. Os links estão inativos no momento. Vou tentar novamente em algumas horas.
Marc Müller

Eles são? Todos eles estão funcionando bem para mim.
O pato comunista

1
O Mediafire foi carregado e editado na resposta.
The Duck Comunista

5

A física desses jogos é simulada pelo uso de um sistema baseado em um autômato celular complexo . É significativamente mais complicado do que o usado no Game of Life, por exemplo, e incorpora recursos que significam que provavelmente não é uma autoridade de certificação adequada, mas ainda é relativamente simples de calcular e já faz anos. Para não entrar em muitos detalhes, mas a complexidade do algoritmo será muito pequena, talvez até O (área).

Parece que também há inteligência de enxame, o que também é surpreendentemente eficiente para os efeitos interessantes que pode criar.


"e incorpora recursos que significam que provavelmente não é uma autoridade de certificação adequada" ... o que você quer dizer com isso? Essas CAs diferem apenas em ter mais regras ou algo mais?
Gastón

2
Uma CA canônica tem o estado de cada célula na geração N + 1 definido por uma função que depende dos estados da vizinhança próxima da célula na geração N, e a função geralmente é a mesma para cada célula. Muitos jogos "em pó" contêm itens como boids ou objetos físicos baseados em restrições, que realmente não se enquadram nessa definição. Duvido que eles sejam totalmente codificados como CA. Mesmo se eles forem, em algum momento, a vizinhança fica grande o suficiente e a função de transição fica complexa o suficiente para que você realmente não esteja lidando com uma CA.
Gregory Avery-Weir

Boa resposta e comentário Gregory, obrigado por suas idéias.
Engenheiro de

1
Embora o autômato celular possa fazer parte dele, definitivamente não é a resposta completa. Há um solver fluido de lá também, que é o que faz com que pareça tão 'realista'
bobobobo

@obobobo: Sim, definitivamente vai além dos limites de autômatos celulares adequados.
Gregory Avery-Weir

3

Muitos anos atrás, Jos Stam começou a publicar seu código-fonte para solucionadores de fluidos. Há um pequeno pedaço de código que configura uma grade e resolve as equações de Navier-Stokes muito rapidamente. A fonte completa também está disponível em sua página.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.