Pregunta

Estoy buscando algunas buenas referencias para aprender a modelar la física 2D en los juegos. no busco una biblioteca que lo haga por mí; quiero pensar y aprender, no usar ciegamente el trabajo de otra persona.

He buscado bastante en Google, y aunque he encontrado algunos tutoriales en GameDev, etc., encuentro que sus tutoriales son difíciles de entender porque están mal escritos o asumen un nivel de comprensión matemática que Todavía no poseo.

Para detalles específicos, estoy buscando cómo modelar un juego 2D de arriba hacia abajo, como un juego de combate de tanques, y quiero modelar con precisión (entre otras cosas) la aceleración y la velocidad, la acumulación de calor de 'componentes, 'colisiones entre modelos y límites de nivel, y armas de tipo misil.

Sitios web, libros recomendados, blogs, ejemplos de código: todos son bienvenidos si ayudan a comprender. Estoy considerando usar C # y F # para construir mi juego, por lo que los ejemplos de código en cualquiera de esos idiomas serían geniales, pero no dejes que el lenguaje te impida publicar un buen enlace. =)

Editar : No quiero decir que no entiendo las matemáticas, es más el caso de que no sé lo que necesito saber para comprender los sistemas involucrados, y no Realmente no sé cómo encontrar los recursos que me enseñarán de una manera comprensible.

¿Fue útil?

Solución

Aquí hay algunos recursos que reuní hace unos años. De la nota es la integración de Verlet. También incluyo enlaces a algunos motores de física de código abierto y comerciales que encontré en ese momento. Hay un artículo de stackoverflow sobre este tema aquí: ¿física del juego en 2D?

Métodos de física

Books

  • " Game Physics Engine Development " , Ian Millington - Soy dueño de este libro y lo recomiendo encarecidamente. El libro construye un motor de física en C ++ desde cero. El autor comienza con la física básica de partículas y luego agrega & "; Leyes del movimiento &"; Restricciones, física de cuerpo rígido y así sucesivamente. Incluye código fuente bien documentado hasta el final.

Motores de física

Otros consejos

Hablando por experiencia, implementar un motor de física 2D es bastante difícil. Detallaré los varios pasos que tomé al crear mi motor.

  1. Detección de colisión. La detección de colisiones puede ser un problema difícil, incluso cuando no se trata de mundos 3D o simulaciones en red. Para la física 2D, definitivamente desea utilizar el Teorema del eje de separación . Una vez que haya implementado SAT, habrá terminado la mitad de la dinámica de su motor.

  2. Cinemática / Dinámica. Chris Hecker ha escrito un excelente recurso en línea que me guió paso a paso a través de la respuesta de colisión.

  3. Todo lo demás. Una vez que haya terminado la detección / respuesta de colisión, es cuestión de implementar todo lo que desee en el motor. Esto puede incluir fricción, fuerzas de contacto, juntas, junto con cualquier otra cosa que se te ocurra.

¡Diviértete! Crear tu propia simulación física es una experiencia increíblemente gratificante.

Este es un gran tutorial que demuestra conceptos de física 2D usando flash y no es específico para flash. http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

Incluso si desea aprender todo de abajo hacia arriba, una biblioteca de física de código abierto que está bien codificada y documentada contiene mucha más información que un libro. ¿Cómo trato la situación x ... encontrar en archivos puede ser más rápido que un índice en papel?

Respuesta original:

¿Qué, sin mencionar Box2D ? Es un proyecto de código abierto de un empleado de Blizzard, tiene una buena comunidad y, bueno, funciona muy bien.

En mi (breve) experiencia con Box2D, integrándolo con Torque Game Builder, encontré que la API estaba limpia de usar, la documentación era clara, soportaba todos los objetos físicos que esperaba (las juntas en particular eran un requisito), y el La comunidad parecía amigable y activa (en algún momento a principios de 2010).

A juzgar por los carteles del foro, también parecía que los gerentes eran receptivos a las contribuciones de origen (que no llevaban equipaje de licencia).

Su solucionador basado en la isla parecía bastante rápido, como esperaba de su reputación, no es que hice ninguna prueba de rendimiento importante.

F # tiene una función llamada Unidades de medida que realiza análisis dimensionales por usted y le proporciona errores si se equivoca. Por ejemplo, si dices:

let distance : float<meters> = gravity * 3.0<seconds>

Eso produciría un error de compilación, ya que la gravedad es < metros / segundos ^ 2 > y no < metros > ;. Además, dado que F # es solo .NET, puede escribir su código de matemáticas / física en una biblioteca de clases y hacer referencia a eso desde su C #.

Le recomiendo que consulte estas publicaciones de blog para obtener más información:

Este es un gran recurso para escribir su primer motor. Está en 3D, pero es muy fácil de convertir a 2D. Conozco al menos una gran empresa que siguió este tutorial para su motor interno, y personalmente he seguido sus pasos para mi propio motor. Explica todos los conceptos básicos de física en la primavera / física basada en impulsos, y le muestra cómo escribir su propio integrador.

El F # .NET Journal ha publicado dos artículos sobre esto:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top