CHIPMUNK en bennu

Started by Prg, January 12, 2011, 04:27:44 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Grew

My game developer instagram :
https://www.instagram.com/ben_dev_game/

Prg

Quote from: FreeYourMind on February 21, 2011, 07:02:46 AM
Adapten y hagan ejemplos para la negrita a 320x240 nativos que yo hare el video encantado  ;D ;D

En la semana te haré algunos :)

Quote from: Grew on February 21, 2011, 01:02:27 PM
Do you know if there is a way to create ropes ?

Like: http://www.youtube.com/watch?v=z_Sx9N39KHk&feature=player_embedded#at=53

si te refieres a el gráfico podrías usar draw_line como en ejem.prg

si te refieres a la física de la cuerda puedes revisar el ejemplo cambioZona.prg

El código interesante es:
[code language="bennu"]body1 = bola(x*200+70,y*150+60);
   body2 = bola(x*200+140,y*150+120);
   addPinJoint(body1, body2,15,0,-15,0);


   x=2; y=3;
   body1 = bola(x*200+70,y*150+60);
   body2 = bola(x*200+140,y*150+120);
   addSlideJoint(body1, body2, 15,0,-15,0,20,40);

   x=1; y=3;
   body1 = bola(x*200+70,y*150+60);
   body2 = bola(x*200+140,y*150+120);
   addPivotJoint(body1, body2,x*200+100,y*150+30);

   x=0; y=3;
   body1 = bola(x*200+70,y*150+60);
   body2 = bola(x*200+140,y*150+120);
   addGrooveJoint(body1, body2, 30,30,30,-30,-30,0);

   x=3; y=2;
   body1 = bola(x*200+70,y*150+70);
   body2 = bola(x*200+140,y*150+70);
   addDampedSpring(body1, body2, 15,0,-15,0,20.0,5.0,0.3);
   x=2; y=2;
   body1 = addbar(x*200+70,y*150+60);
   body2 = addbar(x*200+140,y*150+60);
   addPivotJoint(body1,0,x*200+70,y*150+60);
   addPivotJoint(body2,0,x*200+140,y*150+60);
   addDampedRotarySpring(body1, body2, 0,3000,60);
   write(0,x*200+70,y*150+60,4,"addDampedRotarySpring");

   x=1; y=2;
   body1 = addLever(x*200+70,y*150+60);
   body2 = addLever(x*200+140,y*150+60);
   addPivotJoint(body1,0,x*200+70,y*150+60);
   addPivotJoint(body2,0,x*200+140,y*150+60);
   addRotaryLimitJoint(body1, body2, -90000,90000);
   write(0,x*200+70,y*150+60,4,"addRotaryLimitJoint");

   x=0; y=2;
   body1 = addLever(x*200+70,y*150+60);
   body2 = addLever(x*200+150,y*150+60);
   addPivotJoint(body1,0,x*200+70,y*150+60);
   addPivotJoint(body2,0,x*200+140,y*150+60);
   addRatchetJoint(body1, body2, 0,90000);
   write(0,x*200+70,y*150+60,4,"cpRatchetJointNew");

   x=3; y=1;
   body1 = addBar(x*200+70,y*150+60);
   body2 = addBar(x*200+140,y*150+60);
   addPivotJoint(body1,0,x*200+70,y*150+60);
   addPivotJoint(body2,0,x*200+140,y*150+60);
   addRatchetJoint(body1, body2, 0,2);
   write(0,x*200+70,y*150+60,4,"cpRatchetJointNew");

   x=2; y=1;
   body1 = addBar(x*200+70,y*150+60);
   body2 = addBar(x*200+140,y*150+60);
   addPivotJoint(body1,0,x*200+70,y*150+60);
   addPivotJoint(body2,0,x*200+140,y*150+60);
   addSimpleMotor(body1, body2, 180000);
   write(0,x*200+70,y*150+60,4,"addSimpleMotor");

   x=1; y=1;
   body1 = addWheel(50,100);
   body2 = addWheel(110,100);
   z=      addChassis(80,60);
   addGrooveJoint(z,body1,-30,10,-30,40,0,0);
   addGrooveJoint(z,body2,30,10,30,40,0,0);

   addDampedSpring(z, body1,-30,0,0,0,50,20,1.5);
   addDampedSpring(z, body2,30,0,0,0,50,20,1.5);
[/code]
por ejemplo podrías crear la cuerda a partir de addPinJoint o de DampedSpring o incluso a partir de addSlideJoint o addPivotJoint

en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Pavloco

Los videos y ejemplos son bastante motivadores. Pero no he sabido como es que se usa.
Se necesitan conocimientos muy avanzados????
O si hay algún manual o algo así for dummies????

Los juegos que usan la fisica son los que mas me divierten ojala y salgan muchos de esos apartir de ahora  ;D

Prg

Quote from: Pavloco on February 23, 2011, 04:01:28 AM
Los videos y ejemplos son bastante motivadores. Pero no he sabido como es que se usa.
Se necesitan conocimientos muy avanzados????
O si hay algún manual o algo así for dummies????

Los juegos que usan la fisica son los que mas me divierten ojala y salgan muchos de esos apartir de ahora  ;D


tutorial no hay, pero es sencillo:

en el begin del proceso define la masa
   lphysics.mass=1;
la inercia
   lphysics.inertia= cpMomentForCircle(1, 0.0, 15, &a);

el tipo de cuerpo físico (circle, line, box/CONVEX_POLYGON)
   lphysics.ShapeType=TYPE_circle;
la elasticidad
   lphysics.elasticity=0.3;
la fricción
   lphysics.friction=0.7;
un gráfico para tomar las medidas de éste y crear el cuerpo
   graph=pelota;
y forza la creación inmediatamente (opcional, sólo si el programa requiere el uso alguna función del motor sobre el proceso antes del frame, aunque nunca estorba así que podría usarse siempre)
   FORCECREATEBODY();

pon tu loop y lo que necesites y listo
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

prg, pregunta... has dicho que toma las medidas del grafico desde graph, esto solo considera el tamaño segun alto, ancho o tambien hace un analisis de pixels? imagino que hace lo primero, pero estaria bueno aclararlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Zip

waaa! its fantastic that chipmunk!
make an eglish topic please *_____*

Prg

#216
Quote from: SplinterGU on February 23, 2011, 06:50:02 AM
prg, pregunta... has dicho que toma las medidas del grafico desde graph, esto solo considera el tamaño segun alto, ancho o tambien hace un analisis de pixels? imagino que hace lo primero, pero estaria bueno aclararlo.

ancho y alto en polígonos/cajas (que son lo mismo), promedios para encontrar el diámetro óptimo en cuerpos circulares y ancho y alto para las líneas (se hace la línea del tamaño de la dimensión más grande del gráfico y el diámetro de la línea es la otra dimensión). Esto es si se hace uso de la creación automática, si se usa addShape o se define params se usan los datos proporcionados por el programador.

Los polígonos son simples cajas que envuelven todo el gráfico (a menos que se den los pixeles manualmente como en el ejemplo de triángulos) :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

fantastico... gracias por la aclaracion.

no estaria mal agregar un modo donde se calculen los datos del addshape en base al grafico, pero ahi es mas complejo, lo se, para una version muy futura, podria ser.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Pavloco

Quote from: Prg on February 23, 2011, 06:00:01 AM
Quote from: Pavloco on February 23, 2011, 04:01:28 AM
Los videos y ejemplos son bastante motivadores. Pero no he sabido como es que se usa.
Se necesitan conocimientos muy avanzados????
O si hay algún manual o algo así for dummies????

Los juegos que usan la fisica son los que mas me divierten ojala y salgan muchos de esos apartir de ahora  ;D


tutorial no hay, pero es sencillo:

en el begin del proceso define la masa
   lphysics.mass=1;
la inercia
   lphysics.inertia= cpMomentForCircle(1, 0.0, 15, &a);

el tipo de cuerpo físico (circle, line, box/CONVEX_POLYGON)
   lphysics.ShapeType=TYPE_circle;
la elasticidad
   lphysics.elasticity=0.3;
la fricción
   lphysics.friction=0.7;
un gráfico para tomar las medidas de éste y crear el cuerpo
   graph=pelota;
y forza la creación inmediatamente (opcional, sólo si el programa requiere el uso alguna función del motor sobre el proceso antes del frame, aunque nunca estorba así que podría usarse siempre)
   FORCECREATEBODY();

pon tu loop y lo que necesites y listo

A ok muchas gracias, asi como lo explicas y viendo los ejemplos no parece complicado.Vere que puedo hacer, parece muy divertido :) gracias.

Prg

#219
Quote from: SplinterGU on February 23, 2011, 06:53:04 PM
fantastico... gracias por la aclaracion.

no estaria mal agregar un modo donde se calculen los datos del addshape en base al grafico, pero ahi es mas complejo, lo se, para una version muy futura, podria ser.

No estoy muy seguro cómo hacerlo, pero quizá a futuro podríamos ver qué hacer :)

...................

Ejemplo para la caanoo (320x240)

Acabo de ver que si un cuerpo es estático debemos tener su inercia y su masa siempre a infinity de lo contrario no colisionan bien. Lo corregiré la próxima vez que suba una versión, mientras definan estas propiedades a infinity en los cuerpos estáticos y manténganlas así.

Saludos.

pd: usa mouse/pantalla táctil (al tocar los rectángulos verdes desaparecen).

en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

FreeYourMind

Gracias, ya veo que tengo que terminar de adaptarlo (falta mapear los botones y hacer la release).
Mañana lo pruebo  :D

Zip

I download the file whit module and example,
3 example dont work,
i put module on bin of bennu where is other
other example work correctly,

for example personajojump dont work..

i see on you tube what we can do whit that module, is wonderful,
thanx somuch for port :*

Prg

#222
Quote from: Zip on February 24, 2011, 08:32:56 AM
I download the file whit module and example,
3 example dont work,
i put module on bin of bennu where is other
other example work correctly,

for example personajojump dont work..

i see on you tube what we can do whit that module, is wonderful,
thanx somuch for port :*

Que raro, me he descargado la última versión subida y me funciona PlayerJump perfectamente.

¿Qué SO usas? ¿Me puedes decir el nombre de todos los ejemplos que no funcionan?
Lo he probado en windows7 y en ubuntu (el ejemplo PlayerJump)

¿Te descargaste la versión de mediafire? (Esa es la actual)
Quote from: FreeYourMind on February 23, 2011, 10:36:00 PM
Gracias, ya veo que tengo que terminar de adaptarlo (falta mapear los botones y hacer la release).
Mañana lo pruebo  :D

no recordaba que tenía que hacer eso XD
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Zip