[VIDEO TUTORIALES] mod_chipmunk con PhysicsMotion API.

Started by Erkosone, January 20, 2013, 04:02:56 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Erkosone

He corregido un par de fallos del programa del tutorial 6, la descarga está actualizada, ahora ya se crea bien la longaniza XD.. había puesto "ancho" en un lugar donde iba "alto" XD..
Ahora funciona correctamente la función para unir cuerpos.

Ran

MACHO ERES LA LECHE! CURRAZO Y ENCIMA VIDEOTUTORIALES! tu efectividad es del 1000x100 :D

Erkosone

VIDEO TUTORIAL 07 Final


TEMA: Maquinaaaasss!!!
CONTENIDO: Como crear un coche y hacerlo correr por el escenario!


Con este tutorial doy por finalizado el trabajo para la versión 1.0 de la PhysicsMotionAPI, creo que llegado este punto no falta nada mas para poder hacer juegos, puede que para juegos muy concretos si que hagan falta mas cosas pero para juegos como los que venimos haciendo desde los tiempos de DIV creo que está todo o casi todo.


Subo el vídeo que acaba de terminar de compilarse y dejo el descargable también, me imagino que os gustará jeje.. he pillado el coche de Sonic y le he dado vída con 2 funciones que dan hasta risa XD..


En breve disponible..

Erkosone

VIDEO TUTORIAL 07 FINAL!


TEMA: Creación de máquinas con motores.
CONTENIDO: Como crear un coche y hacerlo correr por el escenario.


VIDEO: http://youtu.be/rhTgB9gMeNg
DESCARGABLE: https://dl.dropbox.com/u/65979707/bennuGD/PhysicsMotionAPI_for_chipmunk_07_FINAL.zip




Y hasta aquí el cursillo de este API, espero que os sea de utilidad compañeros  ;D

Erkosone

VIDEO TUTORIAL EXTRA


TEMA: Continuación del vídeo de maquinas.
CONTENIDO: Funciones watchDog, Shapes tipo poligonal, Physics_joint_get_impulse().


VIDEO: http://www.youtube.com/watch?v=IBuID7uOxDw
DESCARGABLE: https://dl.dropbox.com/u/65979707/bennuGD/PhysicsMotionAPI_for_chipmunk_tuto%2009.zip

Marc


Erkosone

Nada hombre.. splinter comparte su bennuGD..  Prg comparte su mod_chipmunk.. todos comparten sus trabajos.. yo no iba a ser menos xD.. hay que compartir para que el conocimiento de las cosas se expanda, si no estaríamos perdidos..


Me alegro que te gusten los vídeos ;)

Erkosone

Buenas, como anexo a todo esto de la física en los juegos os dejo una valiosa tabla especial para 2D que me ha costado un riñón conseguir.. se trata de una tabla de materiales usados frecuentemente en video juegos y que se adaptan a la perfección con la mod_chipmunk.


Para que sirven estos datos? simple, no es recomendable setear los valores de MASA FRICCION y ELASTICIDAD así a la brava.. si se quieren obtener buenos resultados hay que parametrizar correctamente a los objetos del juego, esta tabla es el resultado de mucho tiempo de busqueda en google sobre densidades, fricción media en 'estático/deslizando' y elasticidad de los materiales.


Tengo que decir que no es tan simple como esto en realidad, pues dependiendo del tamaño de un objeto la elasticidad varía un poco, pero son datos bastante acertados que quería compartir con la comunidad pues funcionan muy bien y se obtienen resultados asombrosamente realistas.


Como usar esto?
- Simple, para un objeto cualquiera coger el ancho del mapa y multiplicarlo por el alto, esto nos da el 'AREA' del sprite, este area ha de ser multiplicada por la densidad y obtendremos el valor real de 'masa', los valores de fricción y elasticidad son directamente los de la tabla.


He estado buscando durante tiempo por google y hay muchisima gente en infinidad de comunidades que ha pedido algo así.. peor para ellos por no estar en esta comunidad XD..


Lo dicho, 'MASA = alto * ancho * DENSIDAD'..





// Inicialización de las propiedades de los materiales 2D..
// Son materiales para asignar parametros que usará chipmunk..
function materialsBuild();
begin
   materials2D[0].nombre =       "NOT DEFINED";
   materials2D[0].friccion =   1.00f;         // nivel del rozamiento de la superficie de un sprite..
   materials2D[0].elasticidad = 1.00f;         // nivel de rebote para un sprite..
   materials2D[0].densidad =    1.00f;         // factor multiplicador para el area que sirve para calcular la masa final..
   
   
   materials2D[1].nombre =       "WOOD";
   materials2D[1].friccion =   0.50f;
   materials2D[1].elasticidad = 0.17f;
   materials2D[1].densidad =    0.57f;
   
   materials2D[2].nombre =       "METAL";
   materials2D[2].friccion =   0.13f;
   materials2D[2].elasticidad = 0.17f;
   materials2D[2].densidad =    7.80f;
   
   materials2D[3].nombre =       "STONE";
   materials2D[3].friccion =   0.75f;
   materials2D[3].elasticidad = 0.05f;
   materials2D[3].densidad =    2.40f;
   
   materials2D[4].nombre =       "PLASTIC";
   materials2D[4].friccion =   0.38f;
   materials2D[4].elasticidad = 0.09f;
   materials2D[4].densidad =    0.95f;
   
   materials2D[5].nombre =       "RUBBER";
   materials2D[5].friccion =   0.75f;
   materials2D[5].elasticidad = 0.95f;
   materials2D[5].densidad =    1.70f;
   
   materials2D[6].nombre =       "HUMAN BODY";
   materials2D[6].friccion =   1.00f;
   materials2D[6].elasticidad = 0.00f;
   materials2D[6].densidad =    0.95f;
   
   return(0);
end


Eso es el código de una función que usa un programa que estoy haciendo, los datos son realmente buenos, espero que os sirvan para vuestros proyectos.
Un saludo.


Erkosone

Nuevo tutorial de camino, esta vez va de layers o "filtros de colisión".
El vídeo está subiendo, en unos minutos lo publico con el ejemplo correspondiente.
Un saludo.

Erkosone

Añadido nuevo tutorial al inicio del post, creo que os gustará ;)

Erkosone

#40
Hola gente, estoy trabajando en una nueva función para la PhysicsMotionAPI, se trata de un limitador dinámico elástico, que feo suena esto no?
Es un nuevo tipo de joint pero no es exactamente como los joints originales de la chipmunk.


Se trata de una función que permite crear una regla "joint" entre 2 procesos y toma a uno de ellos como estático, esto no se puede hacer con la chipmunk gratuita jeje.. Y no altera para nada a la entidad que se persigue, he aquí la gracia de la función, solo aplica impulso a uno de los dos ID del joint  ;D


Sirve para dejar "colgando" a una entidad de otra, o para hacer que una entidad persiga a otra, pero usando la física de chipmunk, la gracia de la función es que respeta los solvers de gravedad y colisión de la chipmunk, simplemente hace una serie de calculos y adiciona un impulso a la entidad tomando como punto de referencia la posición en el cpSpace del proceso pasado como parámetro, la función soporta elasticidad para el joint jeje.. ha quedado realmente chula.


En breve la colgaré actualizando la PhysicsMotionAPI, el formato de esta nueva feature es:
Physics_entity_dinamicImpulse( int idToJoint, int distancia, float elasticidad );


Donde idToJoint es simplemente el ID del proceso al que se desea seguir, distancia es la distancia que se desea mantener y elasticidad es la elasticidad del joint dinámico.
Está programada mediante el integrador de verlet clásico y como solver para no alterar bruscamente el funcionamiento de la simulación el resultado se adiciona en forma de impulso a la entidad que realiza la llamada.



EDIT: Se me olvidaba, este joint puede trabajar con procesos que no son entidades como punto de referencia, osea, un cuadradito en pantalla con nada de física, y queremos que una entidad física quede conectada a este proceso que no tiene shape ni nada definido.. sin problema ;)
En breve un ejemplo de uso.

Erkosone

Nuevo tutorial subiendo..
Link´s al inicio del hilo en este post.


A disfrutarlo ;)
Estará disnible en un rato.. el vídeo son 500 megas.

emov2k4

                        Erkosone estas por ahí ? te he dejado mensajes por todos lados, tiene el link del programa pixell 2.0 ?? Saludos

Erkosone

Hola emov, disculpa la tardanza, en estas fechas voy de trabajo hasta las orejas..
Lo tienes en su versión 2.1 en el primer link de descarga de este mismo hilo, va incluido en la carpeta DATA/TOOLS/


Un saludo.

emov2k4

ohhhh siempre estubooo ahí y nunca lo vi....  :( :o :o

Gracias !! :D