Recientemente encontré estas dos gemas:
http://dan-ball.jp/en/javagame/dust/
Mi pregunta es: ¿Cómo se maneja eficientemente la física con tantos elementos? ¿Estoy subestimando severamente la potencia informática moderna o es posible 'simplemente' tener una matriz bidimensional, cada celda de la cual describe lo que se coloca en la posición correspondiente y simula cada celda en cada paso? ¿O se están haciendo cosas más complejas como resumir grandes áreas del mismo tipo en un solo conjunto de datos y separar dicho conjunto según sea necesario?
¿Hay algún juego de código abierto como este que pueda ver?
physics
efficiency
Marc Müller
fuente
fuente
Respuestas:
Ciertamente hay bastantes; Solía modificarlos. Tenga en cuenta que los enlaces son para hilos del foro y descargas de fuentes. Los dos de los que tengo mejores recuerdos son:
EngimaSand de xavierenigma ( C ++ | Java ) El Java es más nuevo.
BurningSand por sieben ( C ++ ) Este es muy rápido en cuanto a física.
El sitio es por desgracia cerca de la muerte, pero hay varios hilos aquí acerca de la física.
EDITAR: Para cualquier persona interesada, he mediafire'd la fuente de Java para EnigmaSand aquí .
fuente
La física en estos juegos se simula mediante el uso de un sistema basado en un autómata celular complejo . Es significativamente más complicado que el utilizado, por ejemplo, en el Juego de la Vida, e incorpora características que significan que probablemente no sea una CA adecuada, pero aún es relativamente simple de calcular y lo ha sido durante años. Para no entrar en demasiados detalles, pero la complejidad del algoritmo será bastante pequeña, tal vez incluso O (área).
Parece que también hay algo de inteligencia de enjambre allí, que también es sorprendentemente eficiente por los interesantes efectos que puede crear.
fuente
Hace muchos años, Jos Stam comenzó a publicar su código fuente para los solucionadores de fluidos. Hay un código muy breve que configura una cuadrícula y resuelve las ecuaciones de Navier-Stokes muy rápido. La fuente completa también está disponible en su página.
fuente