c# - juegos - juego estilo zelda unity
Recursos para la fĂsica del juego 2d (8)
Estoy buscando algunas buenas referencias para aprender a modelar la física 2D en los juegos. No estoy buscando una biblioteca que lo haga por mí. Quiero pensar y aprender, no usar ciegamente el trabajo de otra persona.
He hecho un buen uso de Google, y aunque he encontrado algunos tutoriales en GameDev, etc., sus tutoriales me resultan difíciles de entender porque están escritos mal o suponen un nivel de comprensión matemática que no conozco. t aún posee.
Para detalles - Estoy buscando cómo modelar un juego 2D de arriba hacia abajo, más o menos como un juego de combate de tanques - y quiero modelar con precisión (entre otras cosas) aceleración y velocidad, 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 utilizar 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 permita que el idioma le impida publicar un buen enlace. =)
Editar : no me refiero a que no entienda las matemáticas, es más cierto que no sé lo que necesito saber para entender los sistemas involucrados, y realmente no sé cómo encontrar los recursos que me enseñará de una manera comprensible.
F # tiene una función llamada Unidades de medida que realiza un análisis dimensional para usted y 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, como 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 #.
Recomiendo que revises estas publicaciones de blog para obtener más información:
Este es un gran tutorial que demuestra los conceptos de física 2D utilizando flash y no es específico de flash. http://www.rodedev.com/tutorials/gamephysics/game_physics.swf
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 física de primavera / impulsos y te muestra cómo escribir tu propio intergrabador.
El Diario F # .NET ha publicado dos artículos sobre esto:
Simulación de materiales de elementos finitos en tiempo real (15 de junio de 2008).
Dinámica del cuerpo rígida (15 de enero de 2010)
Hablando desde la experiencia, implementar un motor de física 2D es bastante difícil. Detallaré los varios pasos que tomé al crear mi motor.
Detección de colisiones. La detección de colisiones puede ser un problema difícil, incluso cuando no se trata de mundos tridimensionales o simulaciones en red. Para la física bidimensional, definitivamente quiere usar el Teorema del Eje Separador . Una vez que hayas implementado SAT, estás a medio camino haciendo la parte dinámica de tu motor.
Cinemática / Dinámica. Chris Hecker ha escrito un excelente recurso en línea que me guió a través de la respuesta de colisión paso a paso.
Todo lo demas. Una vez que haya finalizado la detección / respuesta de colisión, es una cuestión de implementar todo lo demás que desee en el motor. Esto puede incluir fricción, fuerzas de contacto, articulaciones, junto con cualquier otra cosa que se te ocurra.
¡Que te diviertas! Crear tu propia simulación de física es una experiencia increíblemente gratificante.
Incluso si desea aprender todo de abajo hacia arriba, una biblioteca de código abierto que esté bien codificada y documentada contiene mucha más información que un libro. ¿Cómo trato con la situación x ... buscar en los archivos puede ser más rápido que un índice en papel.
Respuesta original:
¿Qué, ninguna mención de Box2D ? Es un proyecto de fuente abierta de un empleado de Blizzard, tiene una buena comunidad y funciona muy bien.
En mi (breve) experiencia con Box2D, integrándola con Torque Game Builder, encontré la API limpia para usar, la documentación era clara, admitía todos los objetos de física que esperaba (las uniones en particular eran un requisito), y la comunidad parecía amigable y activo (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 tenían el equipaje de la licencia).
Es un solucionador basado en la isla que parecía bastante rápido, como esperaba de su reputación, no es que haya hecho ninguna prueba importante de rendimiento.
Aquí hay algunos recursos que reuní hace unos años. Es de destacar la Integración Verlet. También incluyo enlaces a algunos motores de código abierto y de física comercial que encontré en ese momento. Hay un artículo de sobre este tema aquí: ¿Física del juego en 2D?
Métodos de Física
- Integración Verlet (Artículo de Wikipedia)
- Física avanzada del personaje (¡Gran artículo! Incluye movimiento, colisiones, articulaciones y otras limitaciones).
Libros
- "Game Physics Engine Development" , Ian Millington. Poseo 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 de movimiento", restricciones, física de cuerpo rígido y más y más. Él incluye un código fuente bien documentado en todo momento.
Motores Físicos
- Tokamak (API de física de código abierto)
- APE (Motor de Física Actionscript)
- FLADE (Flash Dynamics Engine)
- Fisix Engine (otro motor Flash Actionscript)
- Simple Physics Engine (comercial)