Bennu Game Development

Foros en Español => Proyectos => Topic started by: Prg on January 12, 2011, 04:27:44 PM

Title: CHIPMUNK en bennu
Post by: Prg on January 12, 2011, 04:27:44 PM
Chipmunk Bennu (mod_chipmunk)

aquí un video con lo que se puede lograr

http://www.youtube.com/watch?v=z_Sx9N39KHk&feature=player_embedded (http://www.youtube.com/watch?v=z_Sx9N39KHk&feature=player_embedded)

abajo un ejemplo que he hecho en bennu (la librería y las pocas funciones que ya he puesto, corriendo en bennu).

Ahora las malas noticias:

¿alguien quiere ayudarme a pasar las funciones a bennu?

¿alguien sabe usar la librería, que tenga algunos ejemplos por ahí?


algunas dudas:

veo que existe un tipo de TYPE_STRUCT para el retorno de funciones en bennu, esto no funciona, o si?

las otras ya se me olvidaron XD... luego las pongo..

la licencia de esta librería parece adecuada para bennu,

QuoteCopyright (c) 2007 Scott Lembcke and Howling Moon Software

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Ejemplos y última versión:

última versión (1.61), adapta la versión 6.1.3 de Chipmunk
http://www.mediafire.com/?5uadq5zljhurzqv (http://www.mediafire.com/?r4yjff30tysofa9)

saludos
Title: Re: CHIPMUNK en bennu
Post by: Noivern on January 12, 2011, 04:52:17 PM
Esto sería genial para aprovechar el g-sensor de la caanoo :baba: ^¬^
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 12, 2011, 06:08:03 PM
fantastico prg...
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 12, 2011, 08:10:06 PM
Quote from: SplinterGU on January 12, 2011, 06:08:03 PM
fantastico prg...

oye, y sobre las dudas?
Quote
algunas dudas:

veo que existe un tipo dato de retorno llamdo  TYPE_STRUCT para el retorno de funciones en bennu, esto no funciona, o si?
chipmunk usa callbacks ¿esto se podría poner al alcance del código bennu?, ¿existe alguna forma?

seguramente tu puedes darme una buena orientación en eso
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 12, 2011, 08:18:59 PM
como retorno no, pero podes pasar un puntero a la estructura que tenes desde la funcion invocadora y llenarlo desde la funcion llamada.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 12, 2011, 08:22:43 PM
Quote from: SplinterGU on January 12, 2011, 08:18:59 PM
como retorno no, pero podes pasar un puntero a la estructura que tenes desde la funcion invocadora y llenarlo desde la funcion llamada.

ok, gracias. Me imaginé  :-[

bueno, seguiré con la librerías

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 12, 2011, 08:38:19 PM
prg, el ejemplo esta fantastico, estaria bueno intergrarlo mas nativamente, y que no necesites tener que poner

x = vect.x

y cosas asi.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 12, 2011, 08:47:13 PM
Quote from: SplinterGU on January 12, 2011, 08:38:19 PM
prg, el ejemplo esta fantastico, estaria bueno intergrarlo mas nativamente, y que no necesites tener que poner

x = vect.x

y cosas asi.

si, sin lugar a dudas, pero no conozco cómo hacerlo.

hay alguna fuente con información al respecto?

seguiré pasando las funciones a bennu, nunca sobran las funciones nativas (intento mantener el api original lo más posible, exceptuando lo que no se puede por compatibilidad con bennu), si además se logra integrarlo más nativamente, sería genial

además chipmunk corre en psp y iphone, lo que quiere decir que se podría usar en las consolas en las que bennu está presente... teóricamente se podría...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 12, 2011, 08:56:12 PM
desconozco el api chipmunk, como para recomendarte adecuadamente... la idea seria un callback que modifique directo las variables del proceso.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 13, 2011, 01:32:26 AM
ok, como lo que estaba haciendo windgate para bennu 3d?

bueno, puedo experimentar...

saludos :)
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 13, 2011, 01:57:39 AM
Felicidades y ánimo. La licencia parece una BSD normalilla, así que yo diría que sí es compatible con la GPL de bennu.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 13, 2011, 11:13:14 PM
bueno, hasta el día de hoy ya tenemos todas estas funciones en bennu

   //Inicialización
   {"CPINITCHIPMUNK" , "",   TYPE_INT, modcpInitChipmunk},

   //Funciones matemáticas
   {"CPFLERP" , "FFF",   TYPE_FLOAT, modcpflerp},
   {"CPFCLAMP" , "FFF",   TYPE_FLOAT, modcpfclamp},
   {"CPFLERPCONST" , "FFF",   TYPE_FLOAT, modcpflerpconst},
   //{"CPV" , "FF",TYPE_, modcpv},

   //OPERACIONES CON VECTORES
   {"CPVEQL" , "PP",   TYPE_INT, modcpveql},
   {"CPVADD" , "PPP",   TYPE_INT, modcpvadd},
   {"CPVSUB" , "PPP",   TYPE_INT, modcpvsub},
   {"CPVNEG" , "PP",   TYPE_INT, modcpvneg},
   {"CPVMULT" , "PFP",   TYPE_INT, modcpvmult},
   {"CPVPERP" , "PP",   TYPE_INT, modcpvperp},
   {"CPVRPERP" , "PP",   TYPE_INT, modcpvrperp},
   {"CPVNORMALIZE" , "PP",   TYPE_INT, modcpvnormalize},
   {"CPVNORMALIZE_SAFE" , "PP",   TYPE_INT, modcpvnormalize_safe},
   {"CPVPROJECT" , "PPP",   TYPE_INT, modcpvproject},
   {"CPVROTATE" , "PPP",   TYPE_INT, modcpvrotate},
   {"CPVUNROTATE" , "PPP",   TYPE_INT, modcpvunrotate},
   {"CPVFORANGLE" , "FP",   TYPE_INT, modcpvforangle},
   {"CPVCLAMP" , "PFP",   TYPE_INT, modcpvclamp},
   {"CPVNORMALIZE" , "P",   TYPE_INT, modcpvnormalize},
   {"CPVLERP" , "PPFP",   TYPE_INT, modcpvlerp},
   {"CPVLERPCONST" , "PPFP",   TYPE_INT, modcpvlerpconst},
   {"CPVSLERP" , "PPFP",   TYPE_INT, modcpvslerp},
   {"CPVSLERPCONST" , "PPFP",   TYPE_INT, modcpvslerpconst},
   {"CPVNEAR" , "PPF",   TYPE_INT, modcpvnear},

   {"CPVDOT" , "PP",   TYPE_FLOAT, modcpvdot},
   {"CPVCROSS" , "PP",   TYPE_FLOAT, modcpvcross},
   {"CPVLENGTH" , "P",   TYPE_FLOAT, modcpvlength},
   {"CPVLENGTHSQ" , "P",   TYPE_FLOAT, modcpvlengthsq},
   {"CPVTOANGLE" , "P",   TYPE_FLOAT, modcpvtoangle},
   {"CPVDISTSQ" , "PP",   TYPE_FLOAT, modcpvdistsq},
   {"CPVDIST" , "PP",   TYPE_FLOAT, modcpvdist},

   {"CPVSTR" , "P",   TYPE_STRING, modcpvstr},


   //cpBB
   {"CPBBWRAPVECT" , "PPP",   TYPE_INT, modcpBBWrapVect},
   {"CPBBCLAMPVECT" , "PPP",   TYPE_INT, modcpBBClampVect},
   {"CPBBEXPAND" , "PPP",   TYPE_INT, modcpBBexpand},
   {"CPBBCONTAINSVECT" , "PP",   TYPE_INT, modcpBBcontainsVect},
   {"CPBBMERGE" , "PPP",   TYPE_INT, modcpBBmerge},
   {"CPBBCONTAINSBB" , "PP",   TYPE_INT, modcpBBcontainsBB},
   {"CPBBINTERSECTS" , "PP",   TYPE_INT, modcpBBintersects},
   {"CPBBNEW" , "FFFFP",   TYPE_INT, modcpBBNew},



   //cpBody
   {"DEFCPBODYP" , "IIP",   TYPE_INT, modDefcpBody},
   {"DEFCPBODYF" , "IIF",   TYPE_INT, modDefcpBody},
   {"DEFCPBODYI" , "III",   TYPE_INT, modDefcpBody},
   {"CPBODYNEW" , "PF",   TYPE_INT, modcpBodyNew},
   {"CPBODYNEW" , "P",   TYPE_INT, modcpBodyNewInfinity},
   {"CPBODYNEW" , "",   TYPE_INT, modcpBodyNewInfinityInf},
   {"GETBODY" , "P",   TYPE_INT, modgetBody},
   {"CPBODYLOCAL2WORLD" , "PPP",   TYPE_INT, modcpBodyLocal2World},
   {"MODGETECPBODY" , "II",   TYPE_FLOAT, modGetEcpBody},
   {"MODGETECPBODY" , "IIP",   TYPE_INT, modGetEcpBody},
   {"CPBODYALLOC" , "",   TYPE_INT, modcpBodyAlloc},
   {"CPBODYINIT" , "IFF",   TYPE_INT, modcpBodyInit},
   {"CPBODYDESTROY" , "I",   TYPE_INT, modcpBodyDestroy},
   {"CPBODYFREE" , "I",   TYPE_INT, modcpBodyFree},
   {"CPBODYINITSTATIC" , "I",   TYPE_INT, modcpBodyInitStatic},
   {"CPBODYNEWSTATIC" , "",   TYPE_INT, modcpBodyNewStatic},
   {"CPMOMENTFORCIRCLE" , "FFFP",   TYPE_FLOAT, modcpMomentForCircle},
   {"CPMOMENTFORSEGMENT" , "FPP",   TYPE_FLOAT, modcpMomentForSegment},
   {"CPMOMENTFORPOLY" , "FIPP",   TYPE_FLOAT, modcpMomentForPoly},
   {"CPMOMENTFORBOX" , "FFF",   TYPE_FLOAT, modcpMomentForBox},
   {"CPAREAFORCIRCLE" , "FF",   TYPE_FLOAT, modcpAreaForCircle},
   {"CPAREAFORSEGMENT" , "PPF",   TYPE_FLOAT, modcpAreaForSegment},
   {"CPAREAFORPOLY" , "IP",   TYPE_FLOAT, modcpAreaForPoly},
   {"CPBODYSETMASS" , "IF",   TYPE_INT, modcpBodySetMass},
   {"CPBODYSETMOMENT" , "IF",   TYPE_INT, modcpBodySetMoment},
   {"CPBODYSETANGLE" , "IF",   TYPE_INT, modcpBodySetAngle},
   {"CPBODYUPDATEPOSITION" , "IF",   TYPE_INT, modcpBodyUpdatePosition},
   {"CPBODYRESETFORCES" , "I",   TYPE_INT, modcpBodyResetForces},
   {"CPBODYISSLEEPING" , "I",   TYPE_INT, modcpBodyIsSleeping},
   {"CPBODYSLEEP" , "I",   TYPE_INT, modcpBodySleep},
   {"CPBODYACTIVATE" , "I",   TYPE_INT, modcpBodyActivate},
   {"CPBODYISSTATIC" , "I",   TYPE_INT, modcpBodyIsStatic},
   {"CPBODYISROGUE" , "I",   TYPE_INT, modcpBodyIsRogue},
   {"CPBODYSLEEPWITHGROUP" , "II",   TYPE_INT, modcpBodySleepWithGroup},
   {"CPBODYAPPLYFORCE" , "IPP",   TYPE_INT, modcpBodyApplyForce},
   {"CPBODYAPPLYIMPULSE" , "IPP",   TYPE_INT, modcpBodyApplyImpulse},
   {"CPBODYWORLD2LOCAL" , "IPP",   TYPE_INT, modcpBodyWorld2Local},
   {"CPBODYSLEW" , "IPF",   TYPE_INT, modcpBodySlew},
   {"CPBODYUPDATEVELOCITY" , "IPFF",   TYPE_INT, modcpBodyUpdateVelocity},


   //cpShape
   {"CPSEGMENTSHAPENEW" , "PPPF",   TYPE_INT, modcpSegmentShapeNew},
   {"DEFCPSHAPEI" , "III",   TYPE_INT, modDefcpShape},
   {"DEFCPSHAPEF" , "IIF",   TYPE_INT, modDefcpShape},
   {"DEFCPSHAPEP" , "IIP",   TYPE_INT, modDefcpShape},
   {"CPPOLYSHAPEGETVERT" , "PIP",   TYPE_INT, modcpPolyShapeGetVert},
   {"CPPOLYSHAPENEW" , "IIPP", TYPE_INT, modcpPolyShapeNew},
   {"CPCIRCLESHAPENEW" , "IFP", TYPE_INT, modcpCircleShapeNew},
   {"CPSEGMENTSHAPEINIT" , "IIPPF",   TYPE_INT, cpSegmentShapeInit},
   {"CPCIRCLESHAPEINIT" , "IIFP",   TYPE_INT, modcpCircleShapeInit},
   {"CPPOLYSHAPEINIT" , "IIIPP",   TYPE_INT, modcpPolyShapeInit},
   {"CPRECENTERPOLY" , "IP",   TYPE_INT, modcpRecenterPoly},
   {"CPCENTROIDFORPOLY" , "IPP",   TYPE_INT, modcpCentroidForPoly},
   {"CPSEGMENTSHAPEGETRADIUS" , "I",   TYPE_FLOAT, modcpSegmentShapeGetRadius},
   {"CPCIRCLESHAPEGETRADIUS" , "I",   TYPE_FLOAT, modcpCircleShapeGetRadius},
   {"CPSEGMENTSHAPEGETNORMAL" , "IP",   TYPE_INT, modcpSegmentShapeGetNormal},
   {"CPCIRCLESHAPEGETOFFSET" , "IP",   TYPE_INT, modcpCircleShapeGetOffset},
   {"CPSEGMENTSHAPEGETA" , "IP",   TYPE_INT, modcpSegmentShapeGetA},
   {"CPPOLYSHAPEALLOC" , "",   TYPE_INT, modcpPolyShapeAlloc},
   {"CPSEGMENTSHAPEALLOC" , "",   TYPE_INT, modcpSegmentShapeAlloc},
   {"CPCIRCLESHAPEALLOC" , "",   TYPE_INT, modcpCircleShapeAlloc},
   {"CPPOLYSHAPEGETNUMVERTS" , "I",   TYPE_INT, modcpPolyShapeGetNumVerts},
   {"CPSHAPECACHEBB" , "I",   TYPE_INT, modcpShapeCacheBB},
   {"CPRESETSHAPEIDCOUNTER" , "",   TYPE_INT, modcpResetShapeIdCounter},
   {"MODCPSHAPEFREE" , "I",   TYPE_INT, modcpShapeFree},
   {"CPSHAPEDESTROY" , "I",   TYPE_INT, modcpShapeDestroy},

   //cpSpace
   {"CPSPACEALLOC" , "",   TYPE_INT, modcpSpaceAlloc},
   {"CPSPACEINIT" , "P",   TYPE_INT, modcpSpaceInit},
   {"CPSPACEFREECHILDREN" , "P",   TYPE_INT, modcpSpaceFreeChildren},
   {"CPSPACEDESTROY" , "P",   TYPE_INT, modcpSpaceDestroy},
   {"CPSPACENEW" , "",   TYPE_INT, modcpSpaceNew},
   {"CPSPACEFREE" , "P",   TYPE_INT, modcpSpaceFree},
   {"DEFSPACEF" , "PIF",   TYPE_INT, modDefSpace},
   {"DEFSPACEI" , "PII",   TYPE_INT, modDefSpace},
   {"DEFSPACEP" , "PIP",   TYPE_INT, modDefSpace},
   {"CPSPACEADDSHAPE" , "II",   TYPE_INT, modcpSpaceAddShape},
   {"CPSPACEADDSTATICSHAPE" , "II",   TYPE_INT, modcpSpaceAddStaticShape},
   {"CPSPACEADDBODY" , "PP",   TYPE_INT, modcpSpaceAddBody},
   {"CPSPACESTEP" , "PF",   TYPE_INT, modcpSpaceStep},
   {"CPSPACEREHASHSTATIC" , "I",   TYPE_INT, modcpSpaceRehashStatic},
   {"CPSPACEREHASHSHAPE" , "II",   TYPE_INT, modcpSpaceRehashShape},

que funcionen adecuadamente es otra cosa XD

he modificado el ejemplo y le he agregado giro a la barra, y movimiento a la pelota, por si alguien quiere probar

el ejemplo se encuentre en la descarga del primer mensaje.

si todo va bien, quizá en una semana más tengamos toda la api en bennu... ojala!!  (queda como la mitad).

lo de la mayor integración con bennu lo vemos luego, cuando conozca un poco más la librería para ver cómo hacerlo. saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 14, 2011, 12:23:28 AM
muchas gracias!

Tremendo karma has ganado!
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 14, 2011, 01:59:51 AM
lo probe, hay algo que no me gusta...

cuando la pelota esta sobre la barra, si vas girando la barra, llega un momento que la pelota atraviesa la barra, es como que no se actualiza muy rapido el tema.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 14, 2011, 04:07:24 AM
también lo ví.

según lo que he leído hay varios detallitos:

-los objetos se deben mover (preferentemente) aplicándoles fuerzas, de lo contrario pueden pasar cosas como las que observamos
-para mejorar la respuesta del motor hay que aumentar el número de iteraciones (la librería itera para encontrar la posición de los objetos), y también está una función que permite variar cómo la librería va


el api dice lo siguiente sobre moverlos (supongo que también se aplica al rotarlos)

   * Use forces to modify the rigid bodies if possible. This will be the most stable.
   * Modifying a body's velocity shouldn't necessarily be avoided, but applying large changes every frame can cause strange results in the simulation. Experiment freely, but be warned.
   * Don't modify a body's position every step unless you really know what you are doing. Otherwise you're likely to get the position/velocity badly out of sync.

y sobre la calidad de la simulación también está esto:

The number of iterations, and the size of the time step determine the quality of the simulation. More iterations, or smaller time steps increase the quality. Keep in mind that higher quality also means higher CPU usage.

también estoy rotando un objeto que se difinió como estático, no se si eso también afecte...

No conozco la librería mucho (de hecho poco), habrá que investigarse el tema mejor.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 14, 2011, 11:34:24 AM
bueno, quizas no sea esta la liberia adecuada o habra que ajustar esos settings... pero ya la iniciativa, la experiencia que estas adquiriendo y ver algo funcionando con fisica es un gran paso...
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 14, 2011, 12:23:23 PM
He visto escrito que eso pasa en más librerías, quizás hay que hacer las cosas con más cariño...
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 14, 2011, 08:30:36 PM
Quote from: SplinterGU on January 14, 2011, 11:34:24 AM
bueno, quizas no sea esta la liberia adecuada o habra que ajustar esos settings... pero ya la iniciativa, la experiencia que estas adquiriendo y ver algo funcionando con fisica es un gran paso...

pue si.. je je
Ya he probado variar los valores y nada...

Quote from: josebita on January 14, 2011, 12:23:23 PM
He visto escrito que eso pasa en más librerías, quizás hay que hacer las cosas con más cariño...

ja ja ja... eso si que puede ser verdad XD

las rotaciones hay que manejarlas muy cuidadosamente, ya que conforme te alejas del centro del objeto la distancia que hay que moverse para corregir la posición es mayor, e incluso puede dejar al cuerpo del otro lado.

bueno, de todos modos pasaré la librería... no creo que sobre... aunque ahora me lo tomaré con más calma.

saludos
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 14, 2011, 09:10:34 PM
Jo jo...
corregido

y agrego mover la pelota con mouse.left
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 14, 2011, 09:13:10 PM
a ver... :)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 14, 2011, 09:31:18 PM
ahora quedo casi perfecto, pasa mas precision los objetos fijos, como la barra tienen que tener una prioridad de proceso mayor, sino la pelota se sigue metiendo en la barra, menos, pero sigue.

podrias enumerar las cosas que se pueden setear/controlar con esto de la fisica?

a mi se me ocurre que podrias agregar algunas variables locales, como ser (quizas algunas sobren o falten otras, es una idea):

- si interactua con el motor de fisica o no
- forma del objeto (circular, rectancular)
- si es fijo o movil
- obtener el tamaño del objeto en base al tamaño del grafico (y quizas size tambien)
- el angulo, que sea el angulo
- tipo de superficie (esto imagino que tendra algo que define que resistencia o material es, supongo que no es lo mismo un liquido o una superficie pegagosa, que una resbaladiza o una aspera o una lisa, no se como o si permite definir estas cosas)
- peso del objeto

variables globales:

- gravedad

crear un proceso controlador de la fisica (physical_engine), que se encargue de buscar todos los procesos que van a interactuar con el motor de fisica y que se encargue de actualizar los datos que correspondan en cada momento, o tambien podes hacer como hizo windgate, que puso un proceso que se lanzaba dentro del proceso que querias meter como 3D y este controlaba y mantenia los aspectos del 3D de su padre (o sea, el proceso que queria meter en 3D), solo que vos lo harias no para 3d sino para la fisica. y tambien se encargaria de los aspectos globales.
este controlador luego se puede pasar a C.

Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 14, 2011, 09:34:08 PM
otra cosa que no se, es si esta lib solo permite fisica de juegos visto de costado o tambien permite para juegos de vista aerea.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 15, 2011, 12:05:43 AM
pues para vista aerea, se podría usar capas, las cuales permiten que ciertos objetos que colisionan, pero que no pertenecen a la misma capa, no reaccionen.

lo de la lista de formas de objetos y demás lo podría hacer en bennu y luego tu me ayudarías a pasarlo a C, esto lo haré cuando termine lo que me hace falta de la librería que ya es poco (constraits, detección de colisiones y algunos otros temas menores), esto debido a que aún no conozco toda la librería, conforme voy pasando las funciones voy conociéndolas (y enamorándome de lo fácil que es hacer cómo funciona la física).

Para lo que no veo la solución es para el caso del modo 7, debido al uso de height...

Bueno, nos vemos el domingo. saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 15, 2011, 05:40:23 AM
no me preocupa el modo 7 en principio...

la idea seria no tener que usar ninguna funcion fisica desde el lenguaje, sino que todo se haga automatico seteando variables globales y locales...

si logramos eso, seria grandioso, y podria integrarse como engine fisico oficial (o recomendado oficialmente)... si asi lo quieres, sino que queda como un engine externo...

yo te ayudo con la parte de C.

hasta el domingo...
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 16, 2011, 06:49:12 PM
Primero me gustaría dejar las variables que hay que modificar para que los objetos no se introduzcan como sucedía en el ejemplo anteriormente

QuoteMagic Collision Detection Globals:

Chipmunk contains a few global variables that control how collisions are solved. They can't be set on a per space basis, but most games wont need to change them at all.

extern cpFloat cp_bias_coef

Because Chipmunk does not perform swept collisions, shapes may overlap. Each time you call cpSpaceStep() Chipmunk fixes a percentage of the overlap to push the shapes apart. By default, this value is set to 0.1. With this setting, after 15 steps the overlap will be reduced to 20%, after 30 it will be reduced to 4%. This is usually satisfactory for most games. Setting cp_bias_coef to 1.0 is not recommended as it will reduce the stability of stacked objects.

extern cpFloat cp_collision_slop

Chipmunk's impulse solver works by caching the last solution as it is likely to be very similar to the current one. In order to help keep objects touching, Chipmunk allows objects to overlap a small amount. By default this value is 0.1. If you are using pixel coordinates you won't even notice. If using a different scale, adjust the value to be as high as possible without creating any unwanted visual overlap.

extern cpTimestamp cp_contact_persistence

This is how many steps the space should remember old contact solutions. The default value is 3 and it's unlikely that you'll need to change it.

luego, comenzaré a comentar las propiedades que me comentabas en la lista, si se puede o no:
____________________________________________________________
primero hablaré sobre los componentes de chipmunk (lo que he aprendido)

body
el body (el cuerpo del proceso, pero no la parte que colisiona). Sus propiedades son:

    * velocity_func – cpBodyVelocityFunc: Function pointer called to update the velocity of the body.
    * position_func – cpBodyPositionFunc: Function pointer called to update the position of the body.
    * m – cpFloat: Mass of the body.
    * i – cpFloat: Moment of inertia (MoI or sometimes just moment) of the body. The moment is like the rotational mass of a body. See below for function to help calculate the moment.
    * p – cpVect: Position of the body.
    * v – cpVect: Velocity of the body.

    * f – cpVect: Current force being applied to the body. Note: does not reset automatically as in some physics engines.
    * a – cpFloat: Current rotation angle of the body in radians.
    * w – cpFloat: Current rotational velocity of the body.
    * t – cpFloat: Current torque being applied to the body. Note: does not reset automatically as in some physics engines.
    * rot – cpVect: Cached unit length rotation vector.
    * v_limit – cpFloat: Maximum speed a body may have after updating it's velocity.
    * w_limit – cpFloat: Maximum rotational speed a body may have after updating it's velocity.
    * data – cpDataPointer: A user definable data pointer. If you set this to point at the game object the shapes is for, then you can access your game object from Chipmunk callbacks.

shape
El shape es la parte que colisiona. un body se puede formar por muchos shapes (yo sólo he hecho bodyes de un shape)

las propiedades son:

# body – cpBody*: The rigid body the shape is attached to.
# bb – cpBB: The bounding box of the shape. Only guaranteed to be valid after cpShapeCacheBB() or cpSpaceStep() is called. Moving a body that a shape is connected to does not update it's bounding box.
# sensor – cpBool: A boolean value if this shape is a sensor or not. Sensors only call collision callbacks, and never generate real collisions.
# e – cpFloat: Elasticity of the shape. A value of 0.0 gives no bounce, while a value of 1.0 will give a "perfect" bounce. However due to inaccuracies in the simulation using 1.0 or greater is not recommended however. See the notes at the end of the section.
# u – cpFloat: Friction coefficient. Chipmunk uses the Coulomb friction model, a value of 0.0 is frictionless. Tables of friction coefficients. See the notes at the end of the section.
# surface_v – cpVect: The surface velocity of the object. Useful for creating conveyor belts or players that move around. This value is only used when calculating friction, not resolving the collision.
# collision_type – cpCollisionType: You can assign types to Chipmunk collision shapes that trigger callbacks when objects of certain types touch. See the callbacks section or an example for more information.
# group – cpCollisionGroup: Shapes in the same non-zero group do not generate collisions. Useful when creating an object out of many shapes that you don't want to self collide. Defaults to CP_NO_GROUP.
# layers – cpLayers: Shapes only collide if they are in the same bit-planes. i.e. (a->layers & b->layers) != 0 By default, a shape occupies all bit-planes. Wikipedia has a nice article on bitmasks if you are unfamiliar with how to use them. Defaults to CP_ALL_LAYERS.
# data – cpDataPointer: A user definable data pointer. If you set this to point at the game object the shapes is for, then you can access your game object from Chipmunk callbacks.

space

Este sería nuestro mundo, aquí agregamos los bodyes

sus propiedades son:
# iterations – int: Allow you to control the accuracy of the solver. Defaults to 10. See the section on iterations above for an explanation.
# gravity – cpVect: Global gravity applied to the space. Defaults to cpvzero. Can be overridden on a per body basis by writing custom integration functions.
# damping – cpFloat: Amount of viscous damping to apply to the space. A value of 0.9 means that each body will lose 10% of it's velocity per second. Defaults to 1. Like gravity can be overridden on a per body basis.
# idleSpeedThreshold – cpFloat: Speed threshold for a body to be considered idle. The default value of 0 means to let the space guess a good threshold based on gravity.
# sleepTimeThreshold – cpFloat: Time a group of bodies must remain idle in order to fall asleep. The default value of INFINITY disables the sleeping algorithm.
# staticBody – cpBody: A statically allocated infinite mass body that the space uses to substitute for NULL bodies on shapes and constraints. Set the space->staticBody.data pointer to something helpful if you want to have some context from within callbacks.


Constraints

A constraint is something that describes how two bodies interact with each other. (how they constrain each other) Constraints can be simple joints that allow bodies to pivot around each other like the bones in your body, or they can be more abstract like the gear joint or motors.

sus propiedades son:

# a – cpBody*: The first body that the constraint acts on.
# b – cpBody*: The second body that the constraint acts on.
# maxForce – cpFloat: is the maximum force that the constraint can use to act on the two bodies. Defaults to INFINITY.
# biasCoef – cpFloat: is the percentage of error corrected each step of the space. (Can cause issues if you don't use a constant time step) Defaults to 0.1.
# maxBias – cpFloat: is the maximum speed at which the constraint can apply error correction. Defaults to INFINITY.
# data – cpDataPointer: A user definable data pointer. If you set this to point at the game object the shapes is for, then you can access your game object from Chipmunk callbacks.

http://www.youtube.com/watch?v=ZgJJZTS0aMM&feature=player_embedded

a mi se me ocurre que podrias agregar algunas variables locales, como ser (quizas algunas sobren o falten otras, es una idea):

- si interactua con el motor de fisica o no     
En el memento que un shape se agrega a un body, el motor de física lo usa. Los cuerpos se pueden dormir, pero esto equivale a hacer un freeze en bennu
Quote
An example of how this could be used is to set up a piles of boxes that a player can knock over. Creating the piles and letting them fall asleep normally would work, but it means that all of the boxes would need to be simulated until they fell asleep. This could be slow if you had a lot of piles. Instead you can force them to sleep and start the game with the boxes already sleeping.

Another example would be collapsing platforms. You could create a sleeping object that is suspended in the air. As soon as the player comes along to jump on it, it wakes up and starts falling. In this case, it would be impossible to have the platform fall asleep naturally.
Esta indicación sería para hacer las correcciones en el body de su x e y (cuando se cambian las coordenadas del proceso, hay que cambiar también las del boody, igual a la inversa), angle y momento de inercia. quizá también para eliminar el body cuando el proceso muere; cuando el proceso se duerme no sabría como hacerlo.


- forma del objeto (circular, rectancular)
Existen tres formas de cuerpo: circular, linea y polígono. Recordemos que un body se puede hacer de varios shapes, así que la forma del objeto de un proceso puede ser tan complicada como lo necesitemos (esto complica hacer el cuerpo con simples seteos). Además un body poligonal se forma de una lista de vértices, esto lo complica un poco más, pero lo hace más potente.

- si es fijo o movil
esto es sencillo, un cuerpo fijo no se mueve a menos que se force el movimiento, como en el caso de nuestro rectángulo que gira. Otro cuerpo no lo moverá ni la gravedad

- obtener el tamaño del objeto en base al tamaño del grafico (y quizas size tambien)
Se puede obtener el área

- el angulo, que sea el angulo
Esto es secillo, tanto de leer como de escribir, es una propiedad del body

- tipo de superficie (esto imagino que tendra algo que define que resistencia o material es, supongo que no es lo mismo un liquido o una superficie pegagosa, que una resbaladiza o una aspera o una lisa, no se como o si permite definir estas cosas)
esto se define por elasticidad y frección. la viscosidad es una propiedad de todo el space

- peso del objeto
La masa del objeto y el momento de inercia son propiedades del body, y su lectura y escritura es sencilla.

variables globales:

- gravedad
esta es una propieada del espacio, así como la viscosidad

existen también las globales que puse al principio


En chipmuk no he visto size (cambiar el tamaño)
____________________________________________________________

también quiero poner un enlace al tema que lo comenzó todo:
http://forum.bennugd.org/index.php?topic=1534.0

y para finalizar decir que he terminado de pasar todas las funciones de chipmunk a bennu, ahora hay que comenzar a integrarlo más nativamente.

...
sería genial que el motor se pudiera dejar como el oficial, o como algún recomendado... es muy bueno, quizá no tiene todo lo que quisiéramos, pero tiene muchas cosas que no nos imaginábamos como los constraits que permiten hacer bones o motores.
Title: Re: CHIPMUNK en bennu
Post by: crashon182 on January 16, 2011, 08:48:30 PM
buenísimo el aporte!!
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 16, 2011, 10:59:55 PM
gracias amigo.

una preguntita:

cpSpace *Space;
int space;

void __bgdexport( libchipmunk, module_initialize )()
{
   cpInitChipmunk();
   Space = cpSpaceNew();
   cpSpaceInit(Space);
   space=(int)Space;
   printf("%d %d\n",space,Space);
}


void __bgdexport( libchipmunk, module_finalize )()
{
   cpSpaceFreeChildren(Space);
   cpSpaceFree(Space);
   printf("Descargado");
}

char * __bgdexport( libchipmunk, globals_def ) =
"space;\n"
;
DLVARFIXUP __bgdexport( libchipmunk, globals_fixup )[] =
{
{ "space", NULL, -1, -1 },
{ NULL, NULL, -1, -1 }
};

space no toma valor en bennu, cómo le hago?

en bennu, en el main está este código:

[code language="bennu"]Begin
   set_mode(800,600,32);
   graph=load_png("pelota.png");

   say(space);[/code]

la salida en la consola es:

Quote> Executing: C:\Program Files (x86)\ConTEXT\ConExec.exe "bgdi" ejem

14167448 14167448
0
> Execution finished.

y luego crash

que me falta?
esto es ya para ir automatizando, que elimine la memoria de la librería al cerrar el programa, y que al iniciar el programa haga el espacio para comenzar a agregar bodies.

lo demás lo haré en el .h desde bennu, pero aprovechando que la dll se entera cuando el programa inicia y finaliza, quiero hacer esto ya desde aquí.

saludos

pd: el nombre de la librería lo he cambiado a libChipmunk, para que sea más acorde y no milib como antes.

pd2: si me reconoce la variable, pero no le asigna el valor que debería tener. intenté darle la posición de memoria de space pero nada
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 17, 2011, 05:38:12 AM
al declararla asi la estas declarando como int.

tenes que crear la estructura, como la crearias en bennugd, o sea, en la string de global, pones la estructura tal cual la crearias en bennugd, esa string es como crear un .h con la definicion en bennugd.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 17, 2011, 04:50:04 PM
yo la que quiero sacar es la variable que es entero, la otra tiene mayúscula la primera letra y es un puntero. En bennu trabajo con enteros en lugar de usar punteros a estructuras. he cambiado el nombre de la variable, y me sigue arrojando 0

[code language="bennu"]int space234;

void __bgdexport( libchipmunk, module_initialize )()
{
    cpInitChipmunk();
    space234 = (int)cpSpaceNew();
   cpSpaceInit(space234);
   printf("%d\n",space234);
}


void __bgdexport( libchipmunk, module_finalize )()
{
    cpSpaceFreeChildren(space234);
    cpSpaceFree(space234);
    printf("Descargado");
}

char * __bgdexport( libchipmunk, globals_def ) =
"space234;\n"
;
DLVARFIXUP __bgdexport( libchipmunk, globals_fixup )[] =
{
{ "space234", NULL, -1, -1 },
{ NULL, NULL, -1, -1 }
};[/code]

Quote> Executing: C:\Program Files (x86)\ConTEXT\ConExec.exe "bgdi" pruebas

34821824
0
Descargado
> Execution finished.

De cualquier forma, ya he comenzado a meter código bennu en el .h para facilitar el uso de la librería en bennu, como habíamos quedado. Cuando termine te lo paso para que lo revises y que le hagas lo que consideres necesario.

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 17, 2011, 06:27:19 PM
claro, ya veo... lo tenes que hacer asi...


#define SPACE234    0

para usarla tenes que poner

GLODWORD( libchipmunk,  SPACE234 )

y elimina el

int space234;

del codigo C

el valor 0, es porque es la primer variable definida en el fixup
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 18, 2011, 07:37:43 PM
no te entendí muy bien, pero mejor te paso todo el proyecto.

En el .h está mi código bennu para facilitar el uso. ahora sólo hay que llamar desde el proceso que se quiere tener física el proceso Ch_initProcess y luego crear el shape (o los shapes) del proceso. Te paso la carpeta con todo, en la dirección LibChipmunks\Chipmunk\bin\Debug se encuentran algunos ejemplos que he pasado de los oficiales. Entre ellos está uno con todos los constraints y un carro (física de carro), una torre que se desmorona (no debería, pero la desacomodé un poco y ... bum!) además está el ejemplo de siempre, pero corregido.

saludos

pd: agregué y corregí algunas cosas con respecto a la versión anterior.

pd2: En el ejemplo de los constraints y el carro se incluye código para mover objetos con el ratón... se ve genial.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 18, 2011, 09:34:19 PM
lo miro... gracias
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 19, 2011, 04:53:07 AM
Ejemplo de física de un juego visto desde arriba.
Bómberman.

Splinter, seguro se te ocurrirán muchas mejoras para la forma en que se usan las funciones de las librerías, como hacer que los constraints funcionen con el id en lugar de que funcionen con el body del proceso o hacer que las funciones de impulsos y de obtener datos del body funcionen de ésa forma.

Los ejemplos los hago para revisar que estoy recibiendo los datos correctamente en las funciones de bennu y las envio correctamente a las respectivas de chipmunk. Todo parece bien, sólo faltaría ver las funciones que aceptan infinity que como es double hay que hacer la traducción (es un valor overflow, para el float y quizá para el double).

saludos

pd: ya quiero ver cómo queda la librería en bennu.

pd2: quedo a tus órdenes para cualquier cosa o corrección (durante los próximos 15 días porque ya se me estan acabando las vacaciones  :'( ).
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 19, 2011, 05:18:07 AM
decime exactamente que querias hacer con la variable global... y yo lo hago en el codigo y luego vos ves como es y lo seguis.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 19, 2011, 03:27:59 PM
ok, lo que quiero con la variable es hacer que se pueda modificar desde código bennu y desde la librería (sin meterla en funciones).

Todo lo que he hecho para acercar la librería más a la sintaxis bennu está en bennu, y debido a que no se cómo acceder y modificar locales desde la librería, lo seguieré haciendo desde bennu, ¿no hay problema, vd?

¿Te gusta la actual forma de agregar los shapes? ¿alguna idea para mejorarla?
Si se hace con variables, siento que se reduce a tener un sólo shape por proceso.

Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 19, 2011, 07:18:28 PM
no mire el API, no estoy con tiempo...

pon las variables que quieras publicas a nivel C, y yo te las hago a nivel BennuGD/C.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 20, 2011, 05:05:01 AM
Quote from: SplinterGU on January 19, 2011, 07:18:28 PM
no mire el API, no estoy con tiempo...

pon las variables que quieras publicas a nivel C, y yo te las hago a nivel BennuGD/C.

no te apures, entonces luego lo haces.

seguiré programando todo en bennu, y algún día, cuando tengas tiempo, vemos el tema.

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 20, 2011, 11:26:42 AM
no, no, pon las variables a nivel C con un texto que diga que son esas las variables que quieres que se compartan entre C/BennuGD, me pasas el fuente y yo te lo dejo preparado.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 20, 2011, 04:21:00 PM
Quote from: SplinterGU on January 20, 2011, 11:26:42 AM
no, no, pon las variables a nivel C con un texto que diga que son esas las variables que quieres que se compartan entre C/BennuGD, me pasas el fuente y yo te lo dejo preparado.

ok, están en el .c de abajo. en las líneas 2578 a 2583, al final del .c
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 21, 2011, 11:05:02 PM
El día de hoy al fin encontré qué era lo que daba algunos errores en la librería al cerrar los programas. Ya lo he solucionado y he convertido los constraints para que funcionen con la id del proceso. Eh modificado también el sistema de shapes para que cada proceso sólo tenga una y poder manejar sus propiedades con variables como se había comentado originalmente. He termindo de dar soporte a infinity a las funciones que sé que lo requieren. Sólo falta revisar el api para ver qué funciones faltan para corregir su uso de shapes y bodies a ids. También falta hacer que al eliminar un body se eliminen sus constraints para prevenir errores de memoria.

sólo me reportaba, cuando termine esto subo versión.

saludos.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 21, 2011, 11:10:46 PM
ya no necesitas entonces que te pase las variables? justo me iba a poner con eso.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 01:56:36 AM
Sí necesito. Ahorita estoy haciendo uso de funciones para acceder a ellas.
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 23, 2011, 02:15:08 AM
Ánimo con el trabajo, Prg. De verdad que estás haciendo algo muy útil y necesario ;)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 02:15:17 AM
bien, te modifico el ultimo codigo que subiste o tenes uno nuevo?
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 02:18:06 AM
Quote from: SplinterGU on January 23, 2011, 02:15:17 AM
bien, te modifico el ultimo codigo que subiste o tenes uno nuevo?

usa el que ya subí. El nuevo tiene muy pocos cambios, me estoy centrando a modificar el .h.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 02:25:34 AM
ok, en un ratito te lo paso...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 02:57:11 AM
ummm...

al codigo que pusiste le falta... no puedo modificarlo si no se como lo vas a usar desde C...

intentare explicar...

vos declaras en C

int space;                      //que se pueda modificar desde bennu y desde aquí
float gravity_X;                //que se pueda modificar desde bennu y desde aquí
float gravity_Y;                //que se pueda modificar desde bennu y desde aquí
float bias_coef;                //que se pueda modificar desde bennu y desde aquí
float collision_slop;           //que se pueda modificar desde bennu y desde aquí
float contact_persistence;      //que se pueda modificar desde bennu y desde aquí

necesito el codigo en C donde lo vas a usar, por ejemplo...

int lala()
{
blah = gravity_x;
bleh = collision_slop;
}

necesito el codigo ya usando las variables, porque todo se basa en que no se declararan mas en C, y para acceder a estas variables desde C vas a tener que usar GLODWORD o la que dependa del tipo a accesar.

no se si me explico.

si vos solo me declaras las variables, no voy a poder ayudarte mucho porque voy a meter un cambio a medias, y lo mas complicado no lo voy a poder meter.

ademas, obviamente saber, cuales de esas variables seran globales y cuales locales
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 03:37:52 AM
inicia en la linea 2715.

puse las variables y las funciones.

puedo usar el free de c para memoria reservada desde bennu vd? no habrá problemas de compatibilidad luego?
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 03:51:42 AM
no hay problema con eso...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 04:00:37 AM
jejeje... no me logro explicar, porque ahora las declaraciones las volaste, supongo que siguen las mismas declaraciones, pero las usas en la ultima funcion...

bueno, voy a hacer lo que entiendo queres hacer...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 04:14:03 AM
prg, me tenes en MSN o GMAIL?

hay un problema, si ya tenes las variables definidas en bennugd, no necesitas copiarlas a datos C, la podes usar directamente, veo que algunas variables, solo le das el uso de copiarla.

me gustaria verlo por msn o algo, asi lo resolvemos rapido,.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 04:29:12 AM
hacemos mas facil... aca te pego la porcion de codigo desde las lineas que mencionaste... para mi, la funcion Update, asi como esta, carece de sentido... las variables las podes acceder directamente, con los defines que puse yo... no necesitas copiarlas a otras variables C, a menos claro que la fisica se ejecute en un thread y usen directamente las variables que estas llenando...

bueno, la porcion de codigo es esta, la update no la modique, porque no le veo sentido... y en el global_def te puse como accedes a las variables asi sea para escribirlas como para leerlas, por ejemplo para modificar gravity_x, haces lo siguiente:

*(FLOAT *)GLOADDR(libchipmunk,GLO_GRAVITY_X)) = 0.0;

para leerla

float_var = *(FLOAT *)GLOADDR(libchipmunk,GLO_GRAVITY_X));


//el uso est[a abajo
//int space;                 que se pueda modificar desde bennu y desde aquí
//float gravity_X;                //que se pueda modificar desde bennu y desde aquí
//float gravity_Y;                //que se pueda modificar desde bennu y desde aquí
//float bias_coef;                //que se pueda modificar desde bennu y desde aquí
//float collision_slop;           //que se pueda modificar desde bennu y desde aquí
//float contact_persistence;      //que se pueda modificar desde bennu y desde aquí

//int space;    //--------------Esta variable hay que ponerla en global

char * __bgdexport( libchipmunk, globals_def ) =
"int space;"                                                        /* Access and set with GLODWORD(libchipmunk,GLO_SPACE) */
"float gravity_X;"                                                  /* Access and set with *(FLOAT *)GLOADDR(libchipmunk,GLO_GRAVITY_X)) */
"float gravity_Y;"                                                  /* Access and set with *(FLOAT *)GLOADDR(libchipmunk,GLO_GRAVITY_Y)) */
"float bias_coef;"                                                  /* Access and set with *(FLOAT *)GLOADDR(libchipmunk,GLO_BIAS_COEF)) */
"float collision_slop;"                                             /* Access and set with *(FLOAT *)GLOADDR(libchipmunk,GLO_COLLISION_SLOP)) */
"float contact_persistence;"                                        /* Access and set with *(FLOAT *)GLOADDR(libchipmunk,GLO_CONTACT_PERSISTENCE)) */
;

DLVARFIXUP __bgdexport( libchipmunk, globals_fixup )[] =
{
{ "space", NULL, -1, -1 },
{ "gravity_X", NULL, -1, -1 },
{ "gravity_Y", NULL, -1, -1 },
{ "bias_coef", NULL, -1, -1 },
{ "collision_slop", NULL, -1, -1 },
{ "contact_persistence", NULL, -1, -1 },
{ NULL, NULL, -1, -1 }
};

#define GLO_SPACE                   0
#define GLO_GRAVITY_X               1
#define GLO_GRAVITY_Y               2
#define GLO_BIAS_COEF               3
#define GLO_COLLISION_SLOP          4
#define GLO_CONTACT_PERSISTENCE     5


static void  addDampedSpring(int id2,int id3,float x1,float y1, float x2,float y2,float x3,float y3,float z3){//la he tomado de mi codigo bennu, todavía hay que acomodar los parámetros. id2 e id3 son ids de procesos
int b1,b2;
cpConstraint z;
    cpSpace * espacio = GLODWORD(libchipmunk, GLO_SPACE );
if (id2<>0)
b1=id2.body;
else
b1 = espacio->staticBody;

if (id3<>0)
b2=id3.body;
else
b2 = espacio->staticBody;

cpSpaceAddConstraint(espacio, z=cpDampedSpringNew(b1,b2,cpv(x1,y1),cpv(x2,y2),x3,y3,z3));
addConstr(z);
return z;
}

static void updatePhisc(){
    cpSpace * espacio = space;
    espacio->gravity.x=gravity_X;
    espacio->gravity.y=gravity_Y;
    cp_bias_coef=bias_coef;
    cp_collision_slop=collision_slop;
    cp_contact_persistence=contact_persistence;

}

void __bgdexport( libchipmunk, module_initialize )()
{
    cpInitChipmunk();
    GLODWORD(libchipmunk, GLO_SPACE ) = (int)cpSpaceNew();
cpSpaceInit(GLODWORD(libchipmunk, GLO_SPACE ));
//printf("%d\n",space234);
}


void __bgdexport( libchipmunk, module_finalize )()
{
    cpSpaceFreeChildren(GLODWORD(libchipmunk, GLO_SPACE ));
    cpSpaceFree(GLODWORD(libchipmunk, GLO_SPACE ));
  //  printf("Descargado");
}

HOOK __bgdexport (libwm , handler_hooks ) [] =
{
( 4700 , updatePhisc ),
( 0 , null ),
}


todas las variables son globales? no hay ninguna local a los procesos?
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 05:28:03 AM
lo del update es porque chipmunk usa internamente doubles, y tengo que hacer el vaciado de los floats a los doubles.

permíteme asimilar lo que has puesto y ponerlo a funcionar en bennu :)

una duda:

en
[code language="bennu"]static void  addDampedSpring(int id2,int id3,float x1,float y1, float x2,float y2,float x3,float y3,float z3){//la he tomado de mi codigo bennu, todavía hay que acomodar los parámetros. id2 e id3 son ids de procesos
int   b1,b2;
   cpConstraint z;
    cpSpace * espacio = GLODWORD(libchipmunk, GLO_SPACE );
   if (id2<>0)
      b1=id2.body;
   else
      b1 = espacio->staticBody;

   if (id3<>0)
      b2=id3.body;
   else
      b2 = espacio->staticBody;

   cpSpaceAddConstraint(espacio, z=cpDampedSpringNew(b1,b2,cpv(x1,y1),cpv(x2,y2),x3,y3,z3));
   addConstr(z);
   return z;
}
[/code]

body es local a id3, ahí cómo se accede?
id3 es el id de un proceso, y lo que hago es acceder a él como cuando hago father.graph o father.x
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 05:35:20 AM
ahh, pero para eso la tenes que declarar en en una igual a global_defs, pero llamada local_defs, despues tenes que hacer un fixup igual y los defines desde 0, para indexar el fixup.

y usar en vez de GLO*, usas LOC*

te conviene ver el archivo dlvaracc.h
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 05:36:23 AM
en el fixup de las locals pones

"body",NULL,-1,-1

etc
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 04:22:59 PM
ok, gracias. intentaré esto.

saludos.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 04:54:18 PM
no hay que agradecer...

pregunta si tienes problemas, no te atasques.

saludos.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 05:29:31 PM
ok  ;D

static int updatePhisc(INSTANCE * my, int * params){
   cpSpace * espacio = GLODWORD(libchipmunk,GLO_SPACE);
   espacio->gravity.x= *(float *)GLOADDR(libchipmunk,GLO_GRAVITY_X);
   espacio->gravity.y= *(float *)GLOADDR(libchipmunk,GLO_GRAVITY_Y);
   cp_bias_coef=*(float *)GLOADDR(libchipmunk,GLO_BIAS_COEF);
   cp_collision_slop=*(float *)GLOADDR(libchipmunk,GLO_COLLISION_SLOP);
   cp_contact_persistence=GLOADDR(libchipmunk,GLO_CONTACT_PERSISTENCE);
   cpSpaceStep(space, 1.0/25.0f);
return 0;
}

HOOK __bgdexport (libchipmunk , handler_hooks ) [] =
{
( 4700 , updatePhisc ),
( 0 , NULL )
};

sí lo necesito, ya que hay que modificar la estructura space que es la que el sistema usa para generar la física del mundo. además aquí quiero tener la lista de procesos para actualizar sus coordenadas y el ángulo

Lo tengo así, pero me marca error en la línea [code language="bennu" options="singleline"]( 4700 , updatePhisc ),[/code]  y dice:

initializer element is not constant|
(near initialization for 'libchipmunk_handler_hooks[0].prio')|
y en la siguiente
warning: left-hand operand of comma expression has no effect|
initializer element is not constant|
(near initialization for 'libchipmunk_handler_hooks[0].hook')|


_:____________
accerder a locales ya lo tengo (revisé el código de grproc y ahí aprendí cómo)

ya tengo una funcion accediendo a las locales de los procesos y usándolas.

sólo me falta la actualización de los valores del mundo y la actualización de los procesos desde la librería (actualmente lo hago con otro proceso desde bennu), esto lo haré con la parte que falta arriba.




Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 07:52:39 PM
esas variables cp_* son de la libreria? si es asi, entonces entiendo.

es que deberias usar llaves en vez de parentesis en la inicializacion del hook.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 23, 2011, 07:55:19 PM
otra cosa, el prototipo de las funciones hook no puede ser cualquiera, esto no va:

static int updatePhisc(INSTANCE * my, int * params)

debe ir esto

static int updatePhisc()


cuidado cuando modificas las coordenadas del proceso, porque deberias tener en cuenta las modificaciones que el usuario haga, por ejemplo, mover un personaje, aunque este este afectado a un efecto fisico, tu efecto fisico deberia interactuar con esto.

quizas en estos casos deberias poner unas locales que indican como el objeto se mueve en ese frame, algun INCR_X, INCR_Y o DELTA_MOTION_X, DELTA_MOTION_Y, o incluso alguna que indique la fuerza que ejerce en ese movimiento (si corresponde), y esas variables seran responsabilidad del usuario/programador setear, asi a vos te es mas facil actualizar las coordenadas.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 23, 2011, 08:31:54 PM
Quote from: SplinterGU on January 23, 2011, 07:55:19 PM
otra cosa, el prototipo de las funciones hook no puede ser cualquiera, esto no va:

static int updatePhisc(INSTANCE * my, int * params)

debe ir esto

static int updatePhisc()


cuidado cuando modificas las coordenadas del proceso, porque deberias tener en cuenta las modificaciones que el usuario haga, por ejemplo, mover un personaje, aunque este este afectado a un efecto fisico, tu efecto fisico deberia interactuar con esto.

quizas en estos casos deberias poner unas locales que indican como el objeto se mueve en ese frame, algun INCR_X, INCR_Y o DELTA_MOTION_X, DELTA_MOTION_Y, o incluso alguna que indique la fuerza que ejerce en ese movimiento (si corresponde), y esas variables seran responsabilidad del usuario/programador setear, asi a vos te es mas facil actualizar las coordenadas.

sí tomo en cuenta las modificaciones del usuario. lo que hago es revisar el valor de la x con la x del frame anterior, si son distintas actualizar las posición del curpo físico y luego actualizar las coordenadas del proceso con lo que la física me indica. eso sí, Debo pulir un poco esto para que el modificar las coordenadas del cuerpo no se brinque la física.

Supongo que ahora será con listas ligadas o con un arreglo dinámico (antes eran prosesos loa que se encargaban).

ya tengo gran parte funcionando con ids, además ya se inicializa la librería automáticamente y se libera, sólo me faltaría implementar las LLS o el arreglo dinámico para la actualización cada frame de los procesos. para saber si un proceso existe, uso el código de la función exists, o será mejor revisar cada proceso en cada frame para saber si está en el motor y entonces actualizar las coordenadas? (si la respuesta es revisar cada frame, cómo se revisan todos los procesos?)

ah si, el update ya funciona, gracias
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 24, 2011, 12:21:46 AM
fantastico...

si, imagine que ibas a usar ese metodo de calcular segun el valor anterior... pero... (malditos peros...) el problema esta en que no siempre los cambios de coordenadas corresponden a un movimiento, podria darse el caso que se trate de un reposicionamiento o reubicacion, con lo cual seria el movimiento cero de ese objeto y no deberia aplicar la fisica, por lo menos, no en ese frame.

por eso, yo sugeri un delta... asi si ese delta es 0, sabemos que el objeto no se movio.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 24, 2011, 01:41:43 AM
ya veo.  :)

No estoy muy seguro si hay problemas con reubicaciones (por la forma en que la física trabaja). Si encuentro algún problema o alguien lo encuentra le ponemos los deltas, también existe la opción de reposicionar mediante una función cuando se requiera un cambio extremo.

aunque ahorita que lo pienso los deltas podrían solucionar algunos problemas menores que tengo ahorita... y se podrían aplicar impulsos para resolverlos...

tengo que revisar muy seriamente esta opción. gracias por la idea amigo.

Iré haciendo la lista ligada para la actualización de los procesos y luego vemos este tema... saludos

por el momento te dejo tranquilo, tengo todo el material que necesito para continuar programando mucho rato. gracias
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 24, 2011, 02:53:09 AM
creo que hablpe muy pronto con lo de ya no preguntar...
cómo le hago para acceder a las locales que otros módulos definen como x, y, angle e id?

con un ejemplo es suficiente
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 24, 2011, 05:06:40 AM
agregando una entrada al fixup...

la idea del fixup es, quiero acceder a la variable XXX, pero no tengo la direccion... querido motor, me das la direccion? entonces el motor recorre tu estructura fixup con todos los nombres de las variables que vos queres acceder y rellena en el campo que incialamente esta en NULL, la direccion, los otros 2 valores que estan a -1 son size y cantidad de elementos, que los llena el motor cuando carga la dll, solo se necesita que el usuario ponga el nombre.

por eso, si queres acceder a X, Y o angle o id, pones 4 entradas con el nombre de cada una de estas variables... luego agregas un define que te sirva para identificar mas facilmente cual de los indices de ese array accedes con GLO o LOC.

recordar que hay 2 fixups, 1 para globales y otro para locales.

y si vas a usar variables de otro modulo, o usas la funcion para detectar si la variable existe, que basicamente es ver que el valor del address no sea NULL en el caso de las globales y el size en las locales (pero ya hay un define para eso)... o incluir el modulo (o lib) en las dependencias (modules_dependency).

----

con respecto a la reubicacion, la cosa es que deberia ser transparente al usuario... y no tener que llamar a ninguna funcion desde el lenguaje... salvo funciones como ser (tiro cosas sin saber el api), por ejemplo, "crear_viento(direccion, fuerza)", hablo por hablar... no tengo idea del api... pero espero se entienda la idea.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 24, 2011, 05:09:10 AM
obviamente, estas cosas estaria bueno ponerlas si es posible, si no lo es, pues nada... se queda con funciones...
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 25, 2011, 04:48:17 AM
actualmente con códigos como este

[code language="bennu"]//PRG, ejemplo para el motor de física

import "mod_key";
import "mod_text";
import "mod_proc";
import "mod_grproc";
import "mod_video";
import "mod_wm";
import "mod_map";
import "mod_say";
import "mod_math";
import "mod_screen";
include "libChipmunk.h"

global
   pelota;
   cpVect verts[]=
   -25,-25,
   -25,25,
   25,25,
   25,-25;
   cuadro;
   bola;
   bomba;

Begin
   set_mode(800,600,32);
   cuadro=load_png("cuadro.png");
   bola=load_png("bola40.png");
   bomba=load_png("bomba.png");
   damping=1;
   for (z=0;z<15;z++)
      cuadro(z*50+50,50);
   end
   for (z=0;z<15;z++)
      cuadro(z*50+50,550);
   end
   for (y=0;y<4;y++)
      for (z=0;z<6;z++)
         cuadro(z*100+150,y*100+150);
      end
   end

   for (z=0;z<9;z++)
      cuadro(50,z*50+100);
   end

   for (z=0;z<9;z++)
      cuadro(750,z*50+100);
   end
   bomberman(150,150);
   bias_coef=1;
   write(0,400,10,4,"Presiona v para dejar una bomba que se empuja");
   write(0,400,20,4,"Presiona space para dejar una bomba que NO se empuja");
   while (!key(_esc))
      frame;

   end
   let_me_alone();
end

process cuadro(x,y)
begin
   static=true;
   mass=infinity;
   inertia=infinity;
   elasticity=1;
   friction=1;
   group=1;
   addPolyShape(0,0,4,&verts);
   graph=cuadro;
   z=-15;
   loop
      frame;
   end
end

process bomberman(x,y)
private
   cpVect pos;
   press,press1;
   id2;
begin
   x=400;
   y=100;
   mass=10;
   inertia=10;
   priority=father.priority-2;
   elasticity=0;
   friction=0;                 //para que no gire al friccionar con otros objetos
   group=2;
   addCircleShape(0,0,20);
   graph=bola;
   while (!key(_esc))
      if (key(_right))
         incr_x=5;
                       angle=0;
      end

      if (key(_left))
         incr_x=-5;
         angle=180000;
      end

      if (key(_up))
         incr_y=-5;
         angle=90000;
      end

      if (key(_down))
         incr_y=5;
         angle=270000;
      end

      if (key(_space))
         if (press)
            bomba(x,y,20000.0);
            press=false;
         end
      else
         press=true;
      end

      if (key(_v))
         if (press1)
            bomba(x,y,1.0);
            press1=false;
         end
      else
         press1=true;
      end

      frame;

   end
end

process bomba(x,y,mass)
private
   cpVect pos;
   pego=true;

begin

   priority=father.priority-2;
   group=2;
   elasticity=0.3;
   friction=0;
       addCircleShape(0,0,20);
   graph=bomba;
   while (!key(_esc))
      if (pego and not collision(father))
         group=CP_NO_GROUP;
         pego=false;
      end
      frame;

   end
end
[/code]

ya tenemos física.

ahora sólo falta revisar que todo esté bien, agregar un callback para saber cuándo se puede brincar (espero saber cómo hacerlo) y uno para saber dónde colisionan los objetos (he visto esto en los ejemplos, pero ambas cosas no se cómo se hacen).


también quiero ver por qué el raycol detecta algunos círculos y otros no, quizá sea por el tamaño del radio...

dejo la carpeta con los ejemplos en la funcionando con las locales en la parte de la descarga de abajo. Se eliminó el link de descarga y se deja la última versión al principio del tema

Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 25, 2011, 05:04:20 AM
deberiamos evitar estas funciones:

addPolyShape(0,0,4,&verts);
addCircleShape(0,0,20);

quizas agregar variables locales del estilo:

ShapeType

y en base a ShapeType tomar en base al grafico (la circleshape) el radio y en usando una variable shapeVerts los vertices, no se si esta variable son de cantidad fija de elementos, si es asi, entonces no hay drama, si es cantidad variable, entonces deberia ser un array de ints, con el primer elemento indicando la cantidad de vertices, asi como hace la xgraph.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 25, 2011, 05:47:06 AM
podría hacerse, pero se elimina la posibilidad de agregar varios shapes a un sólo proceso (actualmente se deja que la masa, inercia, elasticidad y fricción se definan aparte en los shapes extras. Aún no pruebo que funcione el sistema con varios shapes), y haciéndolo como comentas se elimina la posibilidad por completo.

además es esta función la que crea el nodo de actualización del motor internamente.
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 25, 2011, 11:42:36 AM
Prg, cuando tengas esto medio rulando definitivamente, mándame un PM (ando con exámenes y no puedo estar muy atento a todo lo que me gustaría, así que igual no me entero) y lo meto en mi PPA, que me interesa mucho.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 25, 2011, 05:25:09 PM
Quote from: josebita on January 25, 2011, 11:42:36 AM
Prg, cuando tengas esto medio rulando definitivamente, mándame un PM (ando con exámenes y no puedo estar muy atento a todo lo que me gustaría, así que igual no me entero) y lo meto en mi PPA, que me interesa mucho.

ok, yo te aviso. :)

Quote from: SplinterGU on January 25, 2011, 05:04:20 AM
deberiamos evitar estas funciones:

addPolyShape(0,0,4,&verts);
addCircleShape(0,0,20);

quizas agregar variables locales del estilo:

ShapeType

y en base a ShapeType tomar en base al grafico (la circleshape) el radio y en usando una variable shapeVerts los vertices, no se si esta variable son de cantidad fija de elementos, si es asi, entonces no hay drama, si es cantidad variable, entonces deberia ser un array de ints, con el primer elemento indicando la cantidad de vertices, asi como hace la xgraph.


bueno, ya lo he pensado bien, veré qué hago..

una pregunta, se pueden invocar funciones de bennu desde la librería?
recuerdo haber escuchado que con una cadena con el nombre se podian llamar, sería para dejar dos callbacks al alcance del usuario bennu, unos callbacks con muchos beneficios: saber cuando dos objetos collisionan y saber cuándo se pueden borrar objetos manualmente..
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 25, 2011, 09:30:55 PM
Quote from: Prg on January 25, 2011, 05:47:06 AM
podría hacerse, pero se elimina la posibilidad de agregar varios shapes a un sólo proceso (actualmente se deja que la masa, inercia, elasticidad y fricción se definan aparte en los shapes extras. Aún no pruebo que funcione el sistema con varios shapes), y haciéndolo como comentas se elimina la posibilidad por completo.

además es esta función la que crea el nodo de actualización del motor internamente.

la idea es que el nodo se actualice internamente usando esta funcion, pero no se que onda si son varios shapes, lo mio fue una idea, pero puedes usar una variable para cada tipo de necesidad (masa, inercia, friccion, elasticidad, etc)

Quote from: Prg on January 25, 2011, 05:25:09 PM
Quote from: josebita on January 25, 2011, 11:42:36 AM
Prg, cuando tengas esto medio rulando definitivamente, mándame un PM (ando con exámenes y no puedo estar muy atento a todo lo que me gustaría, así que igual no me entero) y lo meto en mi PPA, que me interesa mucho.

ok, yo te aviso. :)

Quote from: SplinterGU on January 25, 2011, 05:04:20 AM
deberiamos evitar estas funciones:

addPolyShape(0,0,4,&verts);
addCircleShape(0,0,20);

quizas agregar variables locales del estilo:

ShapeType

y en base a ShapeType tomar en base al grafico (la circleshape) el radio y en usando una variable shapeVerts los vertices, no se si esta variable son de cantidad fija de elementos, si es asi, entonces no hay drama, si es cantidad variable, entonces deberia ser un array de ints, con el primer elemento indicando la cantidad de vertices, asi como hace la xgraph.


bueno, ya lo he pensado bien, veré qué hago..

una pregunta, se pueden invocar funciones de bennu desde la librería?
recuerdo haber escuchado que con una cadena con el nombre se podian llamar, sería para dejar dos callbacks al alcance del usuario bennu, unos callbacks con muchos beneficios: saber cuando dos objetos collisionan y saber cuándo se pueden borrar objetos manualmente..

los callbacks no es algo fiable, por lo menos no mientras se ejecuta el ciclo, quizas puedes capturar los eventos para el proximo frame o procesarlos en los hooks, no se, seria cuestion de probar.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 28, 2011, 09:08:00 PM
Ya terminé...

sólo quedó un detallito:

cuando seteo las variables, no puedo crear su cuerpo sino hasta después del primer frame, por lo que antes de usar funciones del motor hay que hacer un frame la primera vez. esto se ve en los ejemplos.

Agregué un ejemplo de plataformas con scroll.

ahora hay que ver si todo está bien. eso lo veré con sus quejas.

mmm, información no hay. los ejemplos es toda la información. Después agregaré ayuda.

dejo la versión actual aquí y en el primer mensaje.
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 28, 2011, 09:19:43 PM
Veo que trae código C. ¿La puedo considerar final?
Otra cosa, para subir la librería al PPA necesito darle una licencia, ¿la librería es GPLv2, como bennu?.

Gracias :)

PD: Necesito saber también el número de versión de la librería (para facilitar el tema de las actualizaciones).
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 28, 2011, 11:23:20 PM
hay que resolver el tema del frame...

por eso decia yo de que el cuerpo no lo crees en el proceso, sino por variables... tambien podes crearlo ni bien sale el proceso (frame) y no esperar el frame real, esto es por si otros procesos interactuan con este proceso... esto se hace con un callback, algo de post_process o algo asi.
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 29, 2011, 02:23:24 AM
He empaquetado la última Chipmunk en mi PPA y he podido compilarme esta librería, pero aunque algunas cosas funcionan bien, la librería casca bastante en mi Ubuntu con el siguiente backtrace:
[code language="bash"]josebage@joseba-AAO:~/cvs/bennugd-module-chipmunk/samples$ bgdi carroBennuNativamente.dcb
65561
*** glibc detected *** carroBennuNativamente.dcb: double free or corruption (!prev): 0x08a5e870 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c1a1)[0x17c1a1]
/lib/libc.so.6(+0x6dafb)[0x17dafb]
/lib/libc.so.6(cfree+0x6d)[0x180c8d]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(+0x14e0e)[0xe5be0e]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(+0x16660)[0xe5d660]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(cpHashSetEach+0x3e)[0xe6713e]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(cpSpaceStep+0x406)[0xe5def6]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(+0x1570c)[0xe5c70c]
/usr/lib/bennugd/libbgdrtm.so(instance_go_all+0x27e)[0x94dace]
carroBennuNativamente.dcb[0x8048d95]
/lib/libc.so.6(__libc_start_main+0xe6)[0x126ce6]
carroBennuNativamente.dcb[0x8048af1][/code]
Puede ser porque estoy ejecutando la versión en desarrollo de Ubuntu, pero no creo. ¿Alguna idea, prg?.

Una cosa que me he fijado es que en el ejemplo carrobennunativamente, el programa casca inmediatamente cuando hago click en cualquier casilla fuera los objetos físicos, pero parece ir bien cuando hago click en los objetos.
Adjunto la librería compilada para linux, por si alguien puede echarle un ojo.

[Edito] Al código que has puesto le falta cambiar (línea 4660) "nombremodulo" por libchipmunk.
[Edito2] Cuando la librería se rompe, a veces sale lo de arriba y otras, símplemente:
[code language="bash"]josebage@joseba-AAO:~/cvs/bennugd-module-chipmunk/samples$ bgdi carroBennuNativamente.dcb
65561
Violación de segmento (`core' generado)
[/code]
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 30, 2011, 03:04:11 AM
Quote from: SplinterGU on January 28, 2011, 11:23:20 PM
hay que resolver el tema del frame...

por eso decia yo de que el cuerpo no lo crees en el proceso, sino por variables... tambien podes crearlo ni bien sale el proceso (frame) y no esperar el frame real, esto es por si otros procesos interactuan con este proceso... esto se hace con un callback, algo de post_process o algo asi.

el cuerpo se crea por variables, por eso es el problema.

Quote from: josebita on January 29, 2011, 02:23:24 AM
He empaquetado la última Chipmunk en mi PPA y he podido compilarme esta librería, pero aunque algunas cosas funcionan bien, la librería casca bastante en mi Ubuntu con el siguiente backtrace:
[code language="bash"]josebage@joseba-AAO:~/cvs/bennugd-module-chipmunk/samples$ bgdi carroBennuNativamente.dcb
65561
*** glibc detected *** carroBennuNativamente.dcb: double free or corruption (!prev): 0x08a5e870 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c1a1)[0x17c1a1]
/lib/libc.so.6(+0x6dafb)[0x17dafb]
/lib/libc.so.6(cfree+0x6d)[0x180c8d]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(+0x14e0e)[0xe5be0e]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(+0x16660)[0xe5d660]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(cpHashSetEach+0x3e)[0xe6713e]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(cpSpaceStep+0x406)[0xe5def6]
/home/josebage/cvs/bennugd-module-chipmunk/samples/../libchipmunk.so(+0x1570c)[0xe5c70c]
/usr/lib/bennugd/libbgdrtm.so(instance_go_all+0x27e)[0x94dace]
carroBennuNativamente.dcb[0x8048d95]
/lib/libc.so.6(__libc_start_main+0xe6)[0x126ce6]
carroBennuNativamente.dcb[0x8048af1][/code]
Puede ser porque estoy ejecutando la versión en desarrollo de Ubuntu, pero no creo. ¿Alguna idea, prg?.

Una cosa que me he fijado es que en el ejemplo carrobennunativamente, el programa casca inmediatamente cuando hago click en cualquier casilla fuera los objetos físicos, pero parece ir bien cuando hago click en los objetos.
Adjunto la librería compilada para linux, por si alguien puede echarle un ojo.

[Edito] Al código que has puesto le falta cambiar (línea 4660) "nombremodulo" por libchipmunk.
[Edito2] Cuando la librería se rompe, a veces sale lo de arriba y otras, símplemente:
[code language="bash"]josebage@joseba-AAO:~/cvs/bennugd-module-chipmunk/samples$ bgdi carroBennuNativamente.dcb
65561
Violación de segmento (`core' generado)
[/code]

ahm, necesito revisar. reviso y te digo:

lo del mouse, no lo había visto.

Los otros errores no se qué sea.

gracias
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 30, 2011, 03:48:03 AM
ya he revisado la librería. No me aparece nada, doy click fuera de los objetos y no casca.

La he probado en windows 7.

también la probé en win xp, pero lo del click no lo revisé. sólo revisé que funcionara y sí lo hacía.

sólo te casca en el del carro?

sólo cuando haces click?

se alcanzan a mostrar los objetos?

te pasa lo mismo en cambioZona?

gracias y perdón por las molestias. en windows cuando quiere casca y ahora no me quiere cascar XD
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on January 30, 2011, 09:58:02 AM
Me casca cambioZona y carroBennuNativamente
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 30, 2011, 04:56:13 PM
Estoy igual que free. Sólo por aclarar, estoy en linux. Hay dos ejemplos que van genial, pero los que dice free cascan al pulsar fuera del objeto cascan y el de los dominos no arranca. Intentaré probar cosas cuando pueda, mientras tanto ¿qué opciones de compilación usas? ¿Versión de chipmunk?
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on January 30, 2011, 05:23:29 PM
Estoy intentando portarla a Caanoo, mas detalles en horas.

EDIT: EL CVS de Bennu sigue offline despues de varios dias... Voy as usar una version mas antigua de momento....
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 30, 2011, 05:43:08 PM
bueno, eso ya me dice algo..

de pura casualidad, cuando compilaron en ubuntu, cambiaron algo de la librería?

lo que pasa es que la librería se puede compilara para que use floats en lugar de doubles internamente, pero si se hace esto (yo lo intenté), me cascaban algunas funciones, entre ellas una que estaba en el del carro (y que también está en el de cambio de zona, que es el del carro con el de plataformas).

les paso mi carpeta de chipmunk, tiene los include, los .c y la librería compilada para windows de chipmunk original .a en la carpeta codeblocks/chipmunk

también viene el proyecto de compilación de chipmunk con codeblocks (sólo darle build y ya).

también les paso el proyecto en codeblocks de mi librería por si sirve de algo.



como última pregunta:

les casca al presionar el mouse o al soltarlo?

En el ejemplo de los dominos, está a pantalla completa y a 1280x800 pixeles, no se si sea eso. también puedes comentar la linea 39 y 40 y ver si así funciona.


http://www.mediafire.com/?3hqem4p72bcta10
http://www.mediafire.com/?v64b3w9a487wd93

saludos
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on January 30, 2011, 06:49:17 PM
Cuales eran los imports para GRAPH y map ??
Me faltan includes, vamos como siempre xDDD

mod_chipmunk.c:3306: error: 'GRAPH' undeclared (first use in this function)
mod_chipmunk.c:3306: error: (Each undeclared identifier is reported only once
mod_chipmunk.c:3306: error: for each function it appears in.)
mod_chipmunk.c:3306: error: 'map' undeclared (first use in this function)
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 30, 2011, 07:19:49 PM
Quote from: FreeYourMind on January 30, 2011, 06:49:17 PM
Cuales eran los imports para GRAPH y map ??
Me faltan includes, vamos como siempre xDDD

mod_chipmunk.c:3306: error: 'GRAPH' undeclared (first use in this function)
mod_chipmunk.c:3306: error: (Each undeclared identifier is reported only once
mod_chipmunk.c:3306: error: for each function it appears in.)
mod_chipmunk.c:3306: error: 'map' undeclared (first use in this function)

yo tengo las librerías libbgdrtm.dll, mod_map.dll y libgrbase.dll entre los linker settings

y en los includes tengo a la mod_map, libdraw, libgrbase, librender, libvideo, libblit y libfont (a lo mejor algunas no se necesiten XD )
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 30, 2011, 11:23:49 PM
Anda, pues mira, el tema del ejemplo de los dominós sí es por la resolución.
¿Asumes que la pantalla se ha inicializado siempre?. Puede que una comprobación para ver si lo ha hecho de verdad venga bien...

En cualquier caso, se agradecen los proyectos, lo miraré con cariño (el martes, probablemente, hasta entonces no puedo).

PD: Los directorios de include que yo uso son:
[code language="bash"]-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/bennugd -I/usr/include/bennugd/libdraw -I/usr/include/bennugd/libgrbase -I/usr/include/bennugd/librender -I/usr/include/bennugd/libvideo -I/usr/include/bennugd/libblit -I/usr/include/SDL -I/usr/include/bennugd/mod_map -I/usr/include/bennugd/libfont[/code]
y las librerías para compilar:
[code language="bash"]-L/usr/lib/bennugd -ldraw -lrender -lSDL -lmod_map -lvideo -lblit -lfont -lgrbase -lbgdrtm[/code]
Salen de hacer pkg-config con las librerías necesarias con la versión de Bennu de mi PPA.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 31, 2011, 02:01:54 AM
ok. de todos modos en la semana intentaré probar la librería en mi ubuntu y corregir el problema.

Splinter, me podrías pasar el nombre del módulo donde se usan los callbacks para lo que me comentabas o un  ejemplo?

gracias a todos.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 31, 2011, 04:04:42 PM
interpreter.c, fijate al inicio y al final de la funcion se llaman 2 callbacks.

no recuerdo ahora que modulo lo usa, mas que modulo, creo que era una lib.
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 31, 2011, 06:33:15 PM
hola, llevo como una hora intentado usar la librería de chipmunk (ya la he compilado en ubuntu), pero el bgdc y el bgdi no la encuentran. intenté hacer los enlaces simbólicos como la vez que instalé bennu en fedora y también intenté lo de LD_LIBRARY_PATH pero me dice lo siguiente:

LD_LIBRARY_PATH= .;$LD_LIBRARY_PATH
bash: .: se requiere un argumento de nombre de fichero
.: uso: . filename [arguments]

lo estoy haciendo desde consola, cómo puedo hacer para usar la nueva librería?

el enlace lo hize así:

sudo cp '/home/orlando/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug/libChipmunk.so' .
orlando@nodo1:/usr/lib/bgd/module$ sudo ln -s libChipmunk.so liblibChipmunk.so

y nada.

alguna idea?

gracias
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on January 31, 2011, 07:03:20 PM
tenes que usar : en vez de ;
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 31, 2011, 08:56:09 PM
je je

creo que con ubuntu tengo mala suerte...

ya hice todo lo que se y no puedo compilar. Tomo una captura de pantalla con todo lo que tengo. Puedo compilar cosas de bennu sin usar librerías externas, pero quiero usar la mía y nada. me dice que no la encuentra. gracias
Title: Re: CHIPMUNK en bennu
Post by: josebita on January 31, 2011, 10:54:27 PM
Para los paths de esas variables debes usar rutas absolutas:
LD_LIBRARYU_PATH=$(pwd):$LD_LIBRARY_PATH
Title: Re: CHIPMUNK en bennu
Post by: Prg on January 31, 2011, 11:20:15 PM
ni siquiera así  :'(

dice exactamente lo mismo

¿no puedo guardarla en alguna carpeta y hacer algo mas para que la reconozca para dejarme de cosas?

la guardé en /usr/lib y luego le hice sudo ln -s libChipmunk.so liblibChipmunk.so
y nada  :'(  :'(  :'(
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 01, 2011, 12:28:12 AM
Vale. Si te fijas en el código C, a la librería la has llamado "libchipmunk" no "libChipmunk". Eso es importante.
Por cierto, no sé si has mirado lo de las dependencias que te puse, que están como "modulename" en lugar de "libchipmunk".
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 01, 2011, 01:15:09 AM
QuotePor cierto, no sé si has mirado lo de las dependencias que te puse, que están como "modulename" en lugar de "libchipmunk".

sí, lo corregí inmediatamente. gracias

QuoteVale. Si te fijas en el código C, a la librería la has llamado "libchipmunk" no "libChipmunk". Eso es importante.

le he puesto en el include libchipmunk, le he cambiado el nombre al .so por libchipmunk.so

e hice todo esto:

Quoteorlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$ LD_LIBRARY_PATH=pwd
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$ PATH=$PATH:pwd
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$ export LD_LIBRARY_PATH
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$ export PATH
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$ bgdc ejem.prg
BGDC 1.0.0 (Jan 20 2011 10:20:53)
Copyright � 2006-2011 SplinterGU (Fenix/BennuGD)
Copyright � 2002-2006 Fenix Team (Fenix)
Copyright � 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)
Bennu Game Development comes with ABSOLUTELY NO WARRANTY;
see COPYING for details

/home/orlando/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug/ejem.prg:13: error: Library "libchipmunk.so" not found, found "libchipmunk"
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$ $LD_LIBRARY_PATH
/home/orlando/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug
orlando@nodo1:~/Escritorio/chipmunkBennuUbuntu/LibChipmunks/Chipmunk/bin/Debug$

y como vemos en el resultado, todo sigue igual.

disculpen los problemas.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 01, 2011, 02:16:29 AM
no pongas . usa $PWD
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 01, 2011, 04:18:25 AM
ya no uso . , uso pwd (sin la $ porque con eso no me da nada) y se setea la ld_library_path (al hacer $ld_library_path se presenta en la consola la ruta actual), el problema es que no se usa, no se por qué.  Eh revisado con la fsock y la mos_smpeg y pasa lo mismo. Parece que se ignora ese archivo o lo que sea que es.

también le he puesto la ruta manualmente y nada.

ya logreé hacer que las demás librerías me dejen compilar (ttf y smpeg), ahora falta la mía que nada. lo bueno es que ya pude hacer que las otras funcionaran y se que lo que queda es de mi libreria.

gracias
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 01, 2011, 06:54:25 AM
Prg, debes usar [code language="bash"]$(pwd)[/code] no [code language="bash"]pwd[/code] ni [code language="bash"]$pwd[/code].[code language="bash"]$(pwd)[/code] significa "el resultado de ejecutar el comando pwd". pwd no es una variable de entorno.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 01, 2011, 12:53:17 PM
tambien existe $PWD, que es la variable de entorno que tiene el path actual, segun el shell.

Title: Re: CHIPMUNK en bennu
Post by: Prg on February 01, 2011, 04:52:19 PM
entiendo. Lo recordaré :)

muchas gracias a ambos.

ya he logrado usar librerías de el directorio y también he logrado crear una librería propia y usarla en bennu. ya sólo queda que la chipmunk la pueda usar. Me he fijado que si uso una función y no está definida antes, el code no me manda error (sólo un warning de implicit declaration), no se porqué. pero la librería que resulta no se puede usar desde bennu. posiblemente algo así esté pasando en chipmunk, a lo mejor no todas las funciones que la librería chipmunk están en mi librería. Tengo que revisar bien esto.

bueno, me retiro un rato.

saludos y nuevamente gracias a ambos.

karmas  a ambos.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 01, 2011, 04:57:00 PM
Quote from: SplinterGU on February 01, 2011, 12:53:17 PM
tambien existe $PWD, que es la variable de entorno que tiene el path actual, segun el shell.
Es bien cierto, no lo sabía.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 01, 2011, 11:51:29 PM
bien, ya compilé la librería y ya funciona. era que no había agregado todas las funciones de chipmunk a la librería que uso desde mi código de la libchipmunk.

he cambiado el nombre de libchipmunk a mod_chipmunk, he dado soporte a signal(id,signal) y he visto el problema del carro. buscaré la solución...

En lo de los dominos no me salió problemas.

Entonces corrijo el problema ese (ojalá que sea algo mío y algo sencillo) y subo la nueva versión.

Lo de los callbacks, no supe muy bien. Supongo que te pediré ayuda cuando tengas un poco de tiempo amigo splinter.

por lo pronto a ver si se puede probar la librería en más sistemas  y ver que todo va bien.

Y a ver si le cuento al creado de la chipmunk por su foro que ya existe chipmunk en bennu, veo que tiene una zona de descargas de ports (así se les llama vd?)


Para el que no haya visto código de chipmunk en bennu, pongo lo siguiente:


[code language="bennu"]//PRG, ejemplo para el motor de física



import "mod_key";

import "mod_text";

import "mod_proc";

import "mod_grproc";

import "mod_video";

import "mod_wm";

import "mod_map";

import "mod_say";

import "mod_math";

import "mod_screen";

import "mod_chipmunk";

import "mod_draw";





global

   pelota;

   cpVect point,ot;

   handler;

private

   press;

   cpSegmentQueryInfo info ;

   cpContactPointSet Ct;

   float distancia;

   bl;

Begin

   set_mode(800,600,32);

   pelota=load_png("bola40.png");

   gravity_Y=20;

   interval=1.0/25.0;

   plano();

   for (z=0;z<6;z++)

      cubo();

   end

   write(0,400,10,4,"Mueve la pelota con _left, _right y gira el plano con _a, _d");

   write(0,400,30,4,"Usa espacio para crear más círculos. ");

   bias_coef=1.0;

   mouse.graph=pelota;

   mouse.size=50;

   write_var(0,400,300,4,distancia);

   handler=COLLISIONHANDLERNEW(1,2);    //detecta donde colisionan los objetos con collisionType 1 y 2

   say(handler);

   while (!key(_esc))

      bl=SpaceSegmentQueryFirst( 400,300, mouse.x,mouse.y, CP_ALL_LAYERS, CP_NO_GROUP, &info);  //busca primera colision de una linea entre x,y  y x1,y1 (raycol)

      x=mouse.x;

      y=mouse.y;

      if(mouse.x<800 and mouse.y<600 and bl!=-1)       //si encontró colisión, busca el punto de colisión y lo almacena en x,y

         SegmentQueryHitPoint(400,300, mouse.x,mouse.y, &info,&x,&y);

         distancia=SegmentQueryHitDist(400,300, mouse.x,mouse.y, &info);    //encuentra la distancia entre el inicio de la linea y la colisión

      end



      delete_draw(0);

      drawing_Z(-100);

      draw_line(400,300,x,y);                         //imprime una linea desde el comienzo de la linea de colisión hasta el mouse o el punto de colisión

      while (GETCOLLISIONINFO(handler,&ct))

         for (z=0;z<ct.count;z++)

            draw_fcircle(ct.points[z].point.x,ct.points[z].point.y,5);   //dibuja círculos en los puntos donde colisionan los objetos indicados en el handler "handler".

         end

      end



      if (key(_space))

         if (not press)

            cubo();

            press=true;

         end

      else

         press=false;

      end

      // Ch_update();

      frame;



   end



   let_me_alone();

   //   Ch_End();



end



process plano()

private

datos[]=-250,0,250,0,50;

begin

// params=&datos;

   static=true;



   mass=infinity;

   inertia=infinity;

   collisionType=2;

   elasticity=1;

   friction=0.4;

   graph=new_map(500,20,32);

   x=400;

   y=440;

   z=15;

   angle=-45000;

   ShapeType=TYPE_LINE;

   map_clear(file,graph,rgb(0,255,0));



   loop

      if (key(_a))

         angle+=1000;

      end

      if (key(_d))

         angle-=1000;

      end

      frame;

   end

end



process cubo()

private

id3;

begin

   x=400;

   y=100;

   static=false;

   mass=10;

   inertia=10;

   ELASTICITY=0.1;

   friction=0.3;

   collisionType=1;

   priority=father.priority-2;

   ShapeType=TYPE_CIRCLE;

   graph=pelota;

    while (body==0)     //el sistema creador de física actúa después del primer frame en cada proceso, así que, mientras no actúe, no continuará el proceso,

   say("aun");

   frame;

   end

   while (id3=GETCONSTRAINTS(id))       //no tienen constraints, no debe salir en consola nada

   say("const"+id3);

   end

   while (id3=GETSHAPES(id))

   say("shapes"+id3);                   //sólo tienen un shape, así que sólo debe haber 6 shapes en la consola al principio.

   end

   while (!key(_esc))

      if (key(_right))

         incr_x+=5;

      end



      if (key(_left))

         incr_x-=5;

      end

      if (out_region(id,0))

         signal(id,s_kill);

      end

      frame;



   end

end[/code]

creo que esto captura la idea de programación de bennu
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 01, 2011, 11:57:49 PM
que es ese problema de los signals que mencionas?
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 02, 2011, 02:52:39 AM
El problema no es del signal. El problema es que ... mejor mira:
la búsqueda de procesos que no tienen body o que han cambiado su tipo de shape es:

[code language="bennu"] INSTANCE *i = first_instance ;
   while ( i )
   {
       if (LOCDWORD( mod_chipmunk, i, LOC_BODY )==0 &&  LOCDWORD( mod_chipmunk, i, LOC_SHAPETYPE )!=0)
       {
           creaBodyAndShapeAutomat(i);
       }
       i = i->next ;
   }[/code]

Esto está en updatePhisc:

HOOK __bgdexport (mod_chipmunk , handler_hooks ) [] =
{
   { 4700 , updatePhisc},
   { 0 , NULL }
};

y se ejecuta cada frame, sin embargo si un proceso se crea, hacemos algo como:

[code language="bennu"]process plano(x,y,angle)
private
//   datos[]=-250,0,250,0,50;
begin
   static=true;
   mass=infinity;
   inertia=infinity;
   collisionType=2;
   elasticity=1;
   friction=0.4;
   graph=new_map(300,20,32);
   z=15;
   ShapeType=TYPE_LINE;
   map_clear(file,graph,rgb(0,255,0));
       ctype=c_scroll;
   loop
      frame;
   end
end[/code]
De tal forma que cuando se llega a la proxima ejecución del hook, se revisa el proceso y se crea el body y el shape. El problema es que tienes que esperar hasta el próximo shape,  y si usas una función que trabaja con el body y todavía no se ha llegado al frame el programa truena.

Se me ocurren 3 formas de solucionarla:

1) poner un frame antes de usar cualquier función del motor la primera vez en un proceso (así está pero no me gusta)
2) poner la creación del body en los callbacks que me comentabas
3) que toda función revise si existe un body en el proceso (body<>0), si no y el type_shape<>type_none, crear el body y continuar, si el type_shape==0 mandar un mensaje de error y exit() o ignorar

la ventaja del 3er punto es que se podría especificar el tipo de shape e inmediatamente comenzar a usarlo, la desventaja que cada vez que se llamara una función se realizaría la verificación

qué opinas, lo que me digas eso haré..


Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 02, 2011, 03:16:02 AM
una funcion que trabaja con body? a que te refieres?

---

por otro lado, no estas teniendo en cuante si estas variables son modificadas desde otro proceso externo, por ejemplo, imagina que tenemos un proceso, body_controler() que lo que hace es setear o transformar los cuerpos de una forma a otra, entonces este proceso buscaria ciertos procesos, accederia a sus variables locales y las modificaria, con lo que ahi el frame no te va a ayudar de mucho, ya que vas a tener que esperar el frame real para que ese cuerpo se cree.

podes usar el callback  instance_pos_execute_hook para agregar ahi la creacion de los body, esto se haria cuando sale del proceso, asi sea por frame o por debug o frame parcial o por lo que sea que haga salir a la instancia para pasar a otro proceso; esto seria mas rapido que el anterior metodo, pero sigue teniendo el problema de los procesos externos que modifican estas variables locales.

yo creo que la respuesta al problema es la primer pregunta que te hice en este post.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 02, 2011, 03:26:47 AM
con funciones que trabajan con body me refiero a:

[code language="bennu"]static int modUpdateVelocity2(INSTANCE * my, int * params)
{
   cpBodyUpdateVelocity(LOCDWORD(mod_chipmunk,my,LOC_BODY), cpv(*(float *)GLOADDR(mod_chipmunk,GLO_GRAVITY_X),*(float *)GLOADDR(mod_chipmunk,GLO_GRAVITY_Y)), *(float *)&params[0],*(float *)GLOADDR(mod_chipmunk,GLO_INTERVAL)/(float)GLODWORD(mod_chipmunk,GLO_PHRESOLUTION));
   return 0;
}[/code]

por ejemplo,

si LOCDWORD(mod_chipmunk,my,LOC_BODY)==0 puede crashear o no hacer nada (no se).

Quote
yo creo que la respuesta al problema es la primer pregunta que te hice en este post.
a cuál pregunta te refieres?
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 02, 2011, 03:31:52 AM
Quote from: Prg on February 02, 2011, 03:26:47 AM
con funciones que trabajan con body me refiero a:

[code language="bennu"]static int modUpdateVelocity2(INSTANCE * my, int * params)
{
    cpBodyUpdateVelocity(LOCDWORD(mod_chipmunk,my,LOC_BODY), cpv(*(float *)GLOADDR(mod_chipmunk,GLO_GRAVITY_X),*(float *)GLOADDR(mod_chipmunk,GLO_GRAVITY_Y)), *(float *)&params[0],*(float *)GLOADDR(mod_chipmunk,GLO_INTERVAL)/(float)GLODWORD(mod_chipmunk,GLO_PHRESOLUTION));
    return 0;
}[/code]

por ejemplo,

si LOCDWORD(mod_chipmunk,my,LOC_BODY)==0 puede crashear o no hacer nada (no se).

Quote
yo creo que la respuesta al problema es la primer pregunta que te hice en este post.
a cuál pregunta te refieres?

a la que me has respondido... tu solucion es evitar usar esas funciones, define variables globales para todo lo que afecte globalmente el entorno, y si puedes tener una funcion para forzar el update del entorno... otra opcion es que esta funcion internamente llame a la updatePhisic.

perdon, lo que te dije sirve para las del ambiente, pero para las que trabajan con el body, deberias tambien evitarlas y poner variables locales para eso, que se pueden resetear cuando termina el frame.

pero quizas la mas simple es que las funcioens que trabajan con body llamen al updatePhisic o directamente que creen el body si trabajan con 1 solo body.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 02, 2011, 03:43:03 AM
ok, pondré otro ejemplo:

[code language="bennu"]static int modaddRatchetJoint(INSTANCE * my, int * params)
{
    cpBody *   b1, *b2;
    cpConstraint * z;
    cpSpace * espacio = (cpSpace *)GLODWORD(mod_chipmunk, GLO_SPACE );
    INSTANCE * b;
    if (params[0]!=0)
    {
        b = instance_get( params[0] ) ;
        b1=LOCDWORD(mod_chipmunk,b,LOC_BODY);
    }
    else
    {
        b1 = &espacio->staticBody;
    }

    if (params[1]!=0)
    {
        b = instance_get( params[1] ) ;
        b2=LOCDWORD(mod_chipmunk,b,LOC_BODY);
    }
    else
    {
        b2 = &espacio->staticBody;
    }
    z=cpRatchetJointNew(b1,b2,*(float *)&params[2],deg2rad(*(float *)&params[3]));
    cpSpaceAddConstraint(espacio, z);
    addConstr(b1,b2,z);
    return (int)z;
}[/code]

Esta función agrega una fuerza a dos procesos (es una fuerza que actúa en los proceso hasta que se elimine), se requiere su body y se pueden agregar muchas veces en distintos puntos del cuerpo y entre varios procesos. agregando varios tipos y con distintos parámetros, hablamos de más de 5 tipos, y en un ejemplo que crean una red elástica con estas fuerzas agregan más de 5 a un sólo body en distintos puntos y del mismo tipo (spring), pero pudieran agrega aparte de cualquiera de las otras fuerzas también.

aquí no me parece buena idea poner solamente variables, sería tener decenas de locales y aún faltan funciones.

otro ejemplo es la función de intersección de boundingbox, la de contener (que revisa si un boundingbox está completamente dentro de otro)

la función que cambia entre coordenadas locales a globales también hace uso del body

la función que redefine todos los vértices de un cuerpo con forma de polígono (cualquier cantidad de vértices)

la función que aplica un impulso en un cuerpo en un punto y con una dirección

y si busco más puedo encontrar algunas más.

Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 02, 2011, 01:00:39 PM
tenes varias opciones para hacer esto:

- si el proceso no tiene el body creado al llamar esta funcion, podes crearla en ese momento accediendo a las variables locales
- podes encolar este tipo de funciones en alguna estructura interna
- podes hacer un array donde definis estas cosas, para luego procesarlas en el frame

creo que la mas simples es la primera.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 03, 2011, 02:57:03 AM
me gusta mucho la segunda por elegante...

por el momento he agregado una función para forzar la creación del body.

Ya he corregido los errores que teníamos en linux, la he probado y funciona bien

dejo las descargas al principio del tema

QuoteVeo que trae código C. ¿La puedo considerar final?
Otra cosa, para subir la librería al PPA necesito darle una licencia, ¿la librería es GPLv2, como bennu?.

Gracias Sonrisa

PD: Necesito saber también el número de versión de la librería (para facilitar el tema de las actualizaciones).

Pues ya eh entrado a la escuela, por lo tanto no podré hacerle cambios en breve, sólo puedo corregir errores y lentamente. no se si se pueda considerar final. Ya funcionan todos los test y usan lo que se necesita para hacer juegos en bennu, aunque hay funciones que aún no pruebo, pero por lo general no son muy complicadas, son funciones de la librería Chipmunk.c que se ponen al alcance del código bennu.

Sobre la licencia, no se mucho del tema, pero estoy de acuerdo en darle la misma licencia que bennu.

Para el número de versión, qué tal 0.9 mientras revisamos que no haya más errores qué corregir?

bueno, gracias y saludos.

Descargas de esta versión al principio del tema (el primer post)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 03, 2011, 03:17:08 AM
mas alla de los ejemplos, te haria falta un pequeño tutorial...
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 03, 2011, 03:40:32 AM
ah si, je je,  la ayuda la tengo en aprox 1 semana. para no apresurarme...
Title: Re: CHIPMUNK en bennu
Post by: Fede on February 03, 2011, 06:19:10 AM
No os estoy siguiendo mucho, porque me desbordais.  ;D

Peeeeerooooooooo....  ¡A repartir más karmas!
Title: Re: CHIPMUNK en bennu
Post by: crashon182 on February 03, 2011, 04:47:40 PM
No escribo mucho en este tema, pero lo sigo de cerca ánimos con el proyectooo!!!!  y K up!
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 03, 2011, 10:29:43 PM
Gracias por los comentarios, Prg. Cuando tenga tiempo, la acabo de empaquetar y la subo.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 04, 2011, 12:26:20 AM
He subido una primera versión de la librería al PPA (aún la estoy copiando al resto de versiones de la distribución). Aún no está empaquetada tan bien como me gustaría (sobre todo la libchipmunk) así que iré actualizando la versión de la librería en los próximos días sin que haya cambios de funcionalidad. A los efectos diría que ya está lista para ser instalada por los usuarios.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 04, 2011, 01:55:33 AM
Quote from: josebita on February 04, 2011, 12:26:20 AM
He subido una primera versión de la librería al PPA (aún la estoy copiando al resto de versiones de la distribución). Aún no está empaquetada tan bien como me gustaría (sobre todo la libchipmunk) así que iré actualizando la versión de la librería en los próximos días sin que haya cambios de funcionalidad. A los efectos diría que ya está lista para ser instalada por los usuarios.

recuerda que le cambié el nombre a mod_chipmunk

Y recuerda también compartir en este hilo los cambios  ;)  :)
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 04, 2011, 02:49:21 AM
Sí, me refería a la libchipmunk de upstream. El tema es que en el netbook estoy usando Ubuntu Natty, que aún está en alfa y me daba algunos problemas al compilar la versión dinámica (.so) de la libchipmunk de forma que de momento los paquetes libchipmunk* de mi PPA sólo proporciona la librería estática (libchipmunk.a) y la mod_chipmunk se compila contra ella.
No es el mejor método, así que cuando tenga tiempo haré que se compile contra una versión dinámica de la librería.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 07, 2011, 09:51:52 PM
Rápidamente he descrito cada una de las funciones, globales, locales y estructuras usadas dentro de la mod_chipmunk. La descripción está en un pdf llamado ayuda.

También he corregido algunas cosas de la librería y la he compilado tanto para windows como para ubuntu.


El link de descarga está al principio del tema.

http://forum.bennugd.org/index.php?topic=1982.msg35257#msg35257

saludos
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 08, 2011, 12:12:36 AM
Genial, gracias :)
¿Has pensado en meter la documentación a la wiki?
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 09, 2011, 01:24:49 AM
Quote from: josebita on February 08, 2011, 12:12:36 AM
Genial, gracias :)
¿Has pensado en meter la documentación a la wiki?

La verdad no lo había pensado, pero si la librería pega será necesario :D

Gracias por la idea.

saludos
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 11, 2011, 06:24:17 PM
Nueva versión corrigiendo algunas cosas:

- Cuerpos estáticos ya no se duermen evitando los errores que había
- Procesos con más de un shape corregidos y probados con más de 80 shapes en un proceso (Excelente rendimiento).
- Todos los shapes de un proceso se inicializan con el layer, group, friction y eslticity del proceso.

Link de descarga al principio del tema
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 11, 2011, 07:03:54 PM
¿Cuál es la diferencia entre el "main.c" y el "main - Copy.c"? Imagino que el fuente correcto es el main.c, ¿verdad?.

Otro par de cosas muy pequeñajas: Cuando intento abrir los fuentes con el gedit, siempre me salta una advertencia de que no es capaz de abrirlo porque tiene caracteres en varios charsets distintos. Además, el código fuente no deja claro que la librería es GPL. Te adjunto una copia del mismo main.c, pero recodificada en UTF-8 y con una cabecera que deja claro que el código es GPL, por si quisieras utilizarla.

En cualquier caso, muchas gracias por los cambios (lo de dormir los procesos me parece que será bastante bueno en juegos complejos) y ya estoy subiendo la librería al PPA.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 11, 2011, 08:08:48 PM
El copia era un respaldo... lo borraré... je je

Gracias por el main con encabezado. lo usaré la próx ves.
lo de los caracteres ya me lo había dicho el gedit, pero como el code no se queja no le hice caso.

El main que me pasaste tiene es de la actual versión? para usarlo directamente. saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 11, 2011, 08:27:03 PM
muy bueno prg, tengo que probarlo.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 11, 2011, 09:57:06 PM
Quote from: Prg on February 11, 2011, 08:08:48 PM
El copia era un respaldo... lo borraré... je je

Gracias por el main con encabezado. lo usaré la próx ves.
lo de los caracteres ya me lo había dicho el gedit, pero como el code no se queja no le hice caso.

El main que me pasaste tiene es de la actual versión? para usarlo directamente. saludos
Vale, entonces he hecho el empaquetado bien :) Por alguna razón el paquete no se ha subido bien al servidor de compilación de launchpad, así que lo vuelvo a intentar.

En cuanto al código, debería ser idéntico, los únicos cambios que le he hecho son:
Así que sí, deberías poder retomar todo desde ahí.
Eso sí, comprueba que la dirección de email (la he tomado de tu perfil) sea la que quieres poner.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 13, 2011, 03:18:03 AM
Gracias  :)
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 13, 2011, 07:27:50 PM
Acabo de conseguir portar tu ultima version a Caanoo, voy a probar los ejemplos a ver si funciona  :D
Title: Re: CHIPMUNK en bennu
Post by: peterpollito on February 13, 2011, 08:31:20 PM
prg eres un crack toma karma!
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 13, 2011, 08:47:44 PM
Bueno, despues de adaptar un ejemplo a Caanoo, vino lo que temia, no encuantra la mod (mismo problema que tuve con la mod_mappy en su día), pero hay algo distinto en esto, a ver si Splinter lo puede aclarar, es que en este caso me pone 2 mensajes:

error: Library "mod_chipmunk.so" not found, found "mod_chipmunk"


O sea, despues de decir que no encuentra la .so, me sale el mensaje de que encuentra el nombre a secas sin extensión, esto es la primera vez que lo veo cuando sale este error !!

He probado poner el nombre de las 2 formas, incluso poner las 2.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 13, 2011, 09:13:16 PM
found es el token donde fallo

quizas deberia cambiar el mensaje... pero no se me ocurre otro que sea generico y sirva para todo error de compilacion.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 13, 2011, 10:39:33 PM
¿Qué tal esto?
error: Library "mod_chipmunk.so" not found. Did you mean "mod_chipmunk"?
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 13, 2011, 10:41:35 PM
es que el ", found" es parte de un texto fijo generico, tengo que cambiar todo...

y es el token donde fallo.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 13, 2011, 10:50:50 PM
Pues como tuve antes este problema al portar el mod_mappy, y DCElso en el mod_mappy le funciono el port bien, porque usaba el compilador oficial con DGE, del cual yo despues tambien use su makefile y compile con exito tambien su mod_mappy (ya que teniamos un problema de que no reconocia el nombre de la dll apesar de estar bien, posiblemente por error de alguna dependencia en falta que provocaba este fallo apesar de su exitosa compilación).

Pues bien, para este hice lo mismo, lo compile despues tambien con el makefile de DCElso y el SDK oficial, pero no tuve la misma suerte.
Tanto una compilacion como otra, me sigue sin reconocer el modulo, apesar de tener bien el export...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 13, 2011, 11:36:49 PM
DGE??? vos decis que DCelso hizo una version que no usa SDL???

porque si te referis solo a que compilo con SDK oficial, lamento informar que eso no implica que use la DGE...

me gustaria que me cuentes un poco mas acerca de esto de la DGE y BennuGD...
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 14, 2011, 12:07:29 AM
Noooo.
Me refiero a que yo usaba el toochain eabi4 que andaba por ahi y DCElso se descargo el oficial, mi compilacion no reconocia el nombre de export y el suyo si (sólo ocurria en ese modulo mod_mappy).
Despues utilizé el oficial y si iba tambien, lo de DGE, es porque viene con el SDK oficial y en las libs de dependencias DCElso le puso varias dependencias posiblemente que sobraban como la DGE, pero lo cierto es que el modulo ya funcionaba.


En este, sencillamente despues de salir el mismo fallo, pues probe con el oficial tambien y con el makefile de DCElso, pero tambien sigue sin reconocer el nombre del modulo....
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 14, 2011, 12:13:31 AM
seguramente falta una dependencia, si da ese mensaje y la .so se encuentra en el path.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 14, 2011, 02:24:29 AM
Tienes que compilar primero la chipmunk de c (creo que aquí está el código con los .h y los .c  http://www.mediafire.com/?3hqem4p72bcta10  ), y luego usarla para crear la mod_chipmunk de bennu.

Ahorita estoy en windows, pero si te sirve te puedo pasar la que tengo compilada de ubuntu.

Title: Re: CHIPMUNK en bennu
Post by: josebita on February 14, 2011, 02:47:39 AM
Splinter, aunque creo que lo he dicho alguna vez creo que en estos casos ayudaría mucho que si loadlib.h no puede cargar la librería, imprima el dliberror que ahora mismo se está descartando (corrígeme si me equivoco)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 14, 2011, 03:16:38 AM
Quote from: josebita on February 14, 2011, 02:47:39 AM
Splinter, aunque creo que lo he dicho alguna vez creo que en estos casos ayudaría mucho que si loadlib.h no puede cargar la librería, imprima el dliberror que ahora mismo se está descartando (corrígeme si me equivoco)

no, porque la loadlib.h es algo generico, y no en todos los casos la no carga de una libreria significa la finalizacion en la ejecucion, eso lo debe decidir una capa de arriba... tal vez en el futuro, pueda implementar unas cosas que tengo en mente donde esto se aplicara y tener un mensaje de ese estilo en esa capa seria un grave error.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 14, 2011, 03:17:49 AM
Quote from: Prg on February 14, 2011, 02:24:29 AM
Tienes que compilar primero la chipmunk de c (creo que aquí está el código con los .h y los .c  http://www.mediafire.com/?3hqem4p72bcta10  ), y luego usarla para crear la mod_chipmunk de bennu.

Ahorita estoy en windows, pero si te sirve te puedo pasar la que tengo compilada de ubuntu.



quiero suponer que free ya la compilo antes de reportar que le fallaba... asi que me suena que le debe faltar otra cosa.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 14, 2011, 05:22:02 AM
Quote from: josebita on January 30, 2011, 11:23:49 PM
Anda, pues mira, el tema del ejemplo de los dominós sí es por la resolución.
¿Asumes que la pantalla se ha inicializado siempre?. Puede que una comprobación para ver si lo ha hecho de verdad venga bien...

En cualquier caso, se agradecen los proyectos, lo miraré con cariño (el martes, probablemente, hasta entonces no puedo).

PD: Los directorios de include que yo uso son:
[code language="bash"]-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/bennugd -I/usr/include/bennugd/libdraw -I/usr/include/bennugd/libgrbase -I/usr/include/bennugd/librender -I/usr/include/bennugd/libvideo -I/usr/include/bennugd/libblit -I/usr/include/SDL -I/usr/include/bennugd/mod_map -I/usr/include/bennugd/libfont[/code]
y las librerías para compilar:
[code language="bash"]-L/usr/lib/bennugd -ldraw -lrender -lSDL -lmod_map -lvideo -lblit -lfont -lgrbase -lbgdrtm[/code]
Salen de hacer pkg-config con las librerías necesarias con la versión de Bennu de mi PPA.

Necesitas tener a todas las librerías de arriba.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 14, 2011, 07:00:07 AM
Luego reviso las dependencias, pero habia mirado las que me dijiste antes y creo que las tenia todas.

No entiendo muy bien lo que decis de compilar primero la chipmunk de c, yo sólo he compilado la main.c, que es el modulo para Bennu.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 14, 2011, 05:07:51 PM
Quote from: SplinterGU on February 14, 2011, 03:16:38 AM
Quote from: josebita on February 14, 2011, 02:47:39 AM
Splinter, aunque creo que lo he dicho alguna vez creo que en estos casos ayudaría mucho que si loadlib.h no puede cargar la librería, imprima el dliberror que ahora mismo se está descartando (corrígeme si me equivoco)

no, porque la loadlib.h es algo generico, y no en todos los casos la no carga de una libreria significa la finalizacion en la ejecucion, eso lo debe decidir una capa de arriba... tal vez en el futuro, pueda implementar unas cosas que tengo en mente donde esto se aplicara y tener un mensaje de ese estilo en esa capa seria un grave error.
Bueno, en tal caso que sólo avise con un warning, o -mejor aún- que avise sólo cuando se compila en modo debug. Así el mensaje no aparecerá en general pero sí se le puede pedir al usuario que compile así para probar.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 14, 2011, 05:29:01 PM
Quote from: josebita on February 14, 2011, 05:07:51 PM
Quote from: SplinterGU on February 14, 2011, 03:16:38 AM
Quote from: josebita on February 14, 2011, 02:47:39 AM
Splinter, aunque creo que lo he dicho alguna vez creo que en estos casos ayudaría mucho que si loadlib.h no puede cargar la librería, imprima el dliberror que ahora mismo se está descartando (corrígeme si me equivoco)

no, porque la loadlib.h es algo generico, y no en todos los casos la no carga de una libreria significa la finalizacion en la ejecucion, eso lo debe decidir una capa de arriba... tal vez en el futuro, pueda implementar unas cosas que tengo en mente donde esto se aplicara y tener un mensaje de ese estilo en esa capa seria un grave error.
Bueno, en tal caso que sólo avise con un warning, o -mejor aún- que avise sólo cuando se compila en modo debug. Así el mensaje no aparecerá en general pero sí se le puede pedir al usuario que compile así para probar.

lo del debug puede ser... como sea, tengo que darle una revision general a los mensajes y corregirlos, hay algunos que usan los defines del messages.h y otros ponen la string directa.

tengo que corregirlo y de paso probar el tema de los lang.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 15, 2011, 01:48:59 AM
Quote from: FreeYourMind on February 14, 2011, 07:00:07 AM
Luego reviso las dependencias, pero habia mirado las que me dijiste antes y creo que las tenia todas.

No entiendo muy bien lo que decis de compilar primero la chipmunk de c, yo sólo he compilado la main.c, que es el modulo para Bennu.

Entonces ahí está el problema.

La mod_chipmunk usa una librería llamada chipmunk, esta librería hay que compilarla y luego usarla para compilar el main.c de bennu y el resultado de compilar esta última se tiene que llamar mod_chipmunk.

En resumidas cuentas tienes que agregar la librería libchipmunk.a. El código a partir del cual se crea la libchipmunk.a está en este link
http://www.mediafire.com/?3hqem4p72bcta10

el link ya lo había pasado, quizá ya lo hayas descargado

En la carpeta codeblocks viene un proyecto para generar la librería, pero falta agregarle algunos archivos de la carpeta src. Sin embargo no creo que te sirva un proyecto de codeblocks (en caso contrario dímelo y te mando el actual). De cualquier forma en ese link viene los .h y .c para generarla. Nunca he generado librerías sin mi Ide, así que no podré ayudarte mucho en el proceso, pero josebita sí lo ha hecho  ::) así que podemos abusar de su amabilidad una o dos veces  ;D XD
Title: Re: CHIPMUNK en bennu
Post by: Windgate on February 15, 2011, 02:14:43 AM
Prg, me siento ofendido... Ahora acabo de tener noticias de que existía esta librería... :-[

Por favor, quiero el ejemplo más GROSO, por privado si hace falta, o publica el último link porque 10 páginas de post se me apoderan un poco para comerlas de golpe.

La lluvia de karmas para cuando lo examine y lo insemine apropiadamente.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 15, 2011, 03:33:38 AM
wind, es imperdonable lo tuyo!
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 15, 2011, 06:55:37 AM
Gracias PRG.
Aye le puse mas dependencias, la so quedo ocupando lo mismo pero se congelaba en el loading y no llegaba ni siquiera a imprimir logs de error.

Hoy por la noche miraré a ver, estaba pensando que igual poniendo el codigo de la chipmunk dentro del modulo y compillarlo de nuevo igual seria mas facil (no he mirado todavia la chipmunk). De todas formas ya miraré a ver.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 15, 2011, 08:42:01 PM
Queria comentaros 3 puntos por separado:

1 - Para PRG: He intentado compilar chipmunk.c, he creado el objeto pero he tenido que poner la directiva -std=c99 en el gcc.

Me falta linkar libs, sabes cuales son ? Por cierto estaba creando un modulo dinamico .so, como se puede en su lugar crear un modulo estatico .a ?

2 - He tenido una idea tontorrona que no se si es valida en el mundo de la compilacion heheheheh, como tenia el objeto creado tuve la brillante idea de llevarlo al make del mod_chipmunk.so, y en el make juntarlo a la lista de objetos, con lo cual tuve un nuevo mod_chipmunk.so que incluye los 2 objetos, curiosamente ocupa tamaño similar al de la version windows, o sea, 115,3 kb.
Lo meti en la caanoo esperando un milagro de newie xDDD pero no funciona, este también se queda en el loading y no llega tampoco a los logs.

3 - Esto es la primera vez que lo veo, el link de una demo de este modulo (ejemplo que adapte a caanoo) para el menu juegos de la Caanoo, no me sale en el menu!!!! En cambio si entro por el explorer, si que sale, y con el icono de imagen correctamente.

Os paso los ficheros a los que teneis caanoo para que lo mireis a ver que puede ser, yo no veo nada raro en las rutas (vamos, llevo haciendo este hace tiempo, adaptando estos ini's,  y nunca me ha pasado)

(Quitar extension rar, lo he comprimido en linux)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 15, 2011, 11:23:04 PM
prg, estuve viendo el codigo de tu demo 111AAAGira2d y la verdad me encanto como quedo el tema de las variables y las addsegment no me parecen nada grave, asi que me encanta el modulo.

eso si, el juego es complicado, junto todos las figuras pero ni loco puedo hacer entrar la bola por la puerta.

se necesita un tutorial de como usar el modulo.

una pregunta, quedaron resueltos todos los problemas, como ser por ejemplo, eso que decias del frame que si el objeto no estaba creado? le falta algo al modulo? alguna limitacion con respecto a la lib chipmunk?
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 15, 2011, 11:35:54 PM
Quote from: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.
Haz que no arranque en pantalla completa y se soluciona. Al menos a mí.

La comprobación que hace Prg con el is_mode_ok() en el ejemplo no está del todo bien...
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 15, 2011, 11:39:00 PM
Quote from: SplinterGU on February 15, 2011, 11:23:04 PM
prg, estuve viendo el codigo de tu demo 111AAAGira2d y la verdad me encanto como quedo el tema de las variables y las addsegment no me parecen nada grave, asi que me encanta el modulo.

eso si, el juego es complicado, junto todos las figuras pero ni loco puedo hacer entrar la bola por la puerta.

se necesita un tutorial de como usar el modulo.

una pregunta, quedaron resueltos todos los problemas, como ser por ejemplo, eso que decias del frame que si el objeto no estaba creado? le falta algo al modulo? alguna limitacion con respecto a la lib chipmunk?

no quedó nada pendiente. metí una nueva función, para forzar la creación del cuerpo antes del frame para solucionar los problemas y tiene más aplicaciones como forzar la eliminación del cuerpo antes del frame o cambiar el tipo por otro (también antes del frame).

Quote from: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.

corre a una resolución de 1024x768. Si la pc no soporta la resolución por alguna razón el juego sale, pero deja un mensaje en consola (Se supone). Intenta cambiar la resolución para ver si es eso. Lo que pasa es que lo tomé directamente de los ejemplos de chipmunk, por eso necesita esa resolución como mínimo.

Quote from: FreeYourMind on February 15, 2011, 08:42:01 PM
Queria comentaros 3 puntos por separado:

1 - Para PRG: He intentado compilar chipmunk.c, he creado el objeto pero he tenido que poner la directiva -std=c99 en el gcc.

Me falta linkar libs, sabes cuales son ? Por cierto estaba creando un modulo dinamico .so, como se puede en su lugar crear un modulo estatico .a ?

2 - He tenido una idea tontorrona que no se si es valida en el mundo de la compilacion heheheheh, como tenia el objeto creado tuve la brillante idea de llevarlo al make del mod_chipmunk.so, y en el make juntarlo a la lista de objetos, con lo cual tuve un nuevo mod_chipmunk.so que incluye los 2 objetos, curiosamente ocupa tamaño similar al de la version windows, o sea, 115,3 kb.
Lo meti en la caanoo esperando un milagro de newie xDDD pero no funciona, este también se queda en el loading y no llega tampoco a los logs.

3 - Esto es la primera vez que lo veo, el link de una demo de este modulo (ejemplo que adapte a caanoo) para el menu juegos de la Caanoo, no me sale en el menu!!!! En cambio si entro por el explorer, si que sale, y con el icono de imagen correctamente.

Os paso los ficheros a los que teneis caanoo para que lo mireis a ver que puede ser, yo no veo nada raro en las rutas (vamos, llevo haciendo este hace tiempo, adaptando estos ini's,  y nunca me ha pasado)

(Quitar extension rar, lo he comprimido en linux)

Me estoy enseñando a hacer makefiles (espero no tardar muchos días). Cuando termine haré el makefile de chipmunk para dejar de complicarte la vida amigo. saludos...

Quote from: josebita on February 15, 2011, 11:35:54 PM
Quote from: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.
Haz que no arranque en pantalla completa y se soluciona. Al menos a mí.

La comprobación que hace Prg con el is_mode_ok() en el ejemplo no está del todo bien...

perdón, esa función no la conozco muy bien... no sabía cómo se usa esa función
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 15, 2011, 11:46:38 PM
No hay nada que perdonar, hombre :)
El tema es que le estás preguntando si el sistema admite un modo de 1024x768 en modo ventana (en el parámetro FLAGS tienes un 0), pero le estás pidiendo por otro lado que ponga el modo a pantalla completa.

Lo correcto sería usar algo en plan:
mode_is_ok(1024, 768, 16, MODE_FULLSCREEN);

En lugar de usar screen_mode.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 16, 2011, 12:55:56 AM
Quote from: josebita on February 15, 2011, 11:35:54 PM
Quote from: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.
Haz que no arranque en pantalla completa y se soluciona. Al menos a mí.

La comprobación que hace Prg con el is_mode_ok() en el ejemplo no está del todo bien...

muchas gracias, ese ejemplo esta excelente!
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 16, 2011, 12:57:52 AM
Quote from: Prg on February 15, 2011, 11:39:00 PM
Quote from: SplinterGU on February 15, 2011, 11:23:04 PM
prg, estuve viendo el codigo de tu demo 111AAAGira2d y la verdad me encanto como quedo el tema de las variables y las addsegment no me parecen nada grave, asi que me encanta el modulo.

eso si, el juego es complicado, junto todos las figuras pero ni loco puedo hacer entrar la bola por la puerta.

se necesita un tutorial de como usar el modulo.

una pregunta, quedaron resueltos todos los problemas, como ser por ejemplo, eso que decias del frame que si el objeto no estaba creado? le falta algo al modulo? alguna limitacion con respecto a la lib chipmunk?

no quedó nada pendiente. metí una nueva función, para forzar la creación del cuerpo antes del frame para solucionar los problemas y tiene más aplicaciones como forzar la eliminación del cuerpo antes del frame o cambiar el tipo por otro (también antes del frame).

Quote from: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.

corre a una resolución de 1024x768. Si la pc no soporta la resolución por alguna razón el juego sale, pero deja un mensaje en consola (Se supone). Intenta cambiar la resolución para ver si es eso. Lo que pasa es que lo tomé directamente de los ejemplos de chipmunk, por eso necesita esa resolución como mínimo.

Quote from: FreeYourMind on February 15, 2011, 08:42:01 PM
Queria comentaros 3 puntos por separado:

1 - Para PRG: He intentado compilar chipmunk.c, he creado el objeto pero he tenido que poner la directiva -std=c99 en el gcc.

Me falta linkar libs, sabes cuales son ? Por cierto estaba creando un modulo dinamico .so, como se puede en su lugar crear un modulo estatico .a ?

2 - He tenido una idea tontorrona que no se si es valida en el mundo de la compilacion heheheheh, como tenia el objeto creado tuve la brillante idea de llevarlo al make del mod_chipmunk.so, y en el make juntarlo a la lista de objetos, con lo cual tuve un nuevo mod_chipmunk.so que incluye los 2 objetos, curiosamente ocupa tamaño similar al de la version windows, o sea, 115,3 kb.
Lo meti en la caanoo esperando un milagro de newie xDDD pero no funciona, este también se queda en el loading y no llega tampoco a los logs.

3 - Esto es la primera vez que lo veo, el link de una demo de este modulo (ejemplo que adapte a caanoo) para el menu juegos de la Caanoo, no me sale en el menu!!!! En cambio si entro por el explorer, si que sale, y con el icono de imagen correctamente.

Os paso los ficheros a los que teneis caanoo para que lo mireis a ver que puede ser, yo no veo nada raro en las rutas (vamos, llevo haciendo este hace tiempo, adaptando estos ini's,  y nunca me ha pasado)

(Quitar extension rar, lo he comprimido en linux)

Me estoy enseñando a hacer makefiles (espero no tardar muchos días). Cuando termine haré el makefile de chipmunk para dejar de complicarte la vida amigo. saludos...

Quote from: josebita on February 15, 2011, 11:35:54 PM
Quote from: SplinterGU on February 15, 2011, 11:32:03 PM
el ejemplo llamado dominos crashea en linux ni bien arranca, no se si en windows pasa lo mismo.
Haz que no arranque en pantalla completa y se soluciona. Al menos a mí.

La comprobación que hace Prg con el is_mode_ok() en el ejemplo no está del todo bien...

perdón, esa función no la conozco muy bien... no sabía cómo se usa esa función

primero quiero verla bien, entender como funciona y hacer algun ejemplo... luego voy a armar el configure y demas, asi que si no estan apurados pueden esperar.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 16, 2011, 01:50:39 AM
Quote from: josebita on February 15, 2011, 11:46:38 PM
No hay nada que perdonar, hombre :)
El tema es que le estás preguntando si el sistema admite un modo de 1024x768 en modo ventana (en el parámetro FLAGS tienes un 0), pero le estás pidiendo por otro lado que ponga el modo a pantalla completa.

Lo correcto sería usar algo en plan:
mode_is_ok(1024, 768, 16, MODE_FULLSCREEN);

En lugar de usar screen_mode.
ahh!!!
je je

...

Disculpen mi ignorancia, el configure del que habla splinter para qué es?  ::)
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 16, 2011, 02:58:38 AM
He hecho el makefile para la chipmunk que debes usar para compilar la mod_chipmunk.

esto te dará la libchipmunk.a que necesitas con tan solo hacer make en el directorio (lo hice en mi ubuntu y funcionó, por lo tanto no debería haber problemas).

Recuerda que debes usar esta librería para la mod_chipmunk, si aún con esta no logras hacer que funcione intentaré hacer un make que haga la mod_chipmunk también.

saludos
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 16, 2011, 06:39:14 AM
Que make mas raro :)
En que punto tendria que cambiar el compilador ? Yo necesito compilarlo con el compilador de Caanoo que tengo en una ruta local y que le paso.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 16, 2011, 02:36:29 PM
Quote from: Prg on February 16, 2011, 01:50:39 AM
Quote from: josebita on February 15, 2011, 11:46:38 PM
No hay nada que perdonar, hombre :)
El tema es que le estás preguntando si el sistema admite un modo de 1024x768 en modo ventana (en el parámetro FLAGS tienes un 0), pero le estás pidiendo por otro lado que ponga el modo a pantalla completa.

Lo correcto sería usar algo en plan:
mode_is_ok(1024, 768, 16, MODE_FULLSCREEN);

En lugar de usar screen_mode.
ahh!!!
je je

...

Disculpen mi ignorancia, el configure del que habla splinter para qué es?  ::)

alguna vez compilaste bennugd? como lo compilas? con configure y eso genera los makefiles, detecta el sistema, etc.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 16, 2011, 04:10:26 PM
Quote from: FreeYourMind on February 16, 2011, 06:39:14 AM
Que make mas raro :)
En que punto tendria que cambiar el compilador ? Yo necesito compilarlo con el compilador de Caanoo que tengo en una ruta local y que le paso.

oie, aprendí a hacerlo en unas pocas horas y viendo una página. XD

sólo necesitas hacer make en el directorio y ya...

Si no existe make, entonces tendremos que esperar a Splinter con el configure. Él seguro podrá hacer algo...  :)

Quote from: SplinterGU on February 16, 2011, 02:36:29 PM
Quote from: Prg on February 16, 2011, 01:50:39 AM
Quote from: josebita on February 15, 2011, 11:46:38 PM
No hay nada que perdonar, hombre :)
El tema es que le estás preguntando si el sistema admite un modo de 1024x768 en modo ventana (en el parámetro FLAGS tienes un 0), pero le estás pidiendo por otro lado que ponga el modo a pantalla completa.

Lo correcto sería usar algo en plan:
mode_is_ok(1024, 768, 16, MODE_FULLSCREEN);

En lugar de usar screen_mode.
ahh!!!
je je

...

Disculpen mi ignorancia, el configure del que habla splinter para qué es?  ::)

alguna vez compilaste bennugd? como lo compilas? con configure y eso genera los makefiles, detecta el sistema, etc.
Ahh. Nunca compilé bennugd, siempre uso el que nos pasas compilado.

gracias
Title: Re: CHIPMUNK en bennu
Post by: Windgate on February 16, 2011, 09:42:24 PM
Está brutal esto del Chipmunk, ¿Sería factible hacer algo así sin mucha complicación?

http://armorgames.com/play/3614/crush-the-castle

Me encantó ese juego por lo sencillo y adictivo.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 16, 2011, 10:53:42 PM
¡Coño! Angry Birds goes medieval :)

Sí, para esa clase de cosas es justo para lo que está. Debería ser bastante sencillo.
Title: Re: CHIPMUNK en bennu
Post by: l1nk3rn3l on February 17, 2011, 12:15:37 AM
Quote from: Windgate on February 16, 2011, 09:42:24 PM
Está brutal esto del Chipmunk, ¿Sería factible hacer algo así sin mucha complicación?

http://armorgames.com/play/3614/crush-the-castle

Me encantó ese juego por lo sencillo y adictivo.

joder si es adictivo
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 01:17:02 AM
Quote from: Windgate on February 16, 2011, 09:42:24 PM
Está brutal esto del Chipmunk, ¿Sería factible hacer algo así sin mucha complicación?

http://armorgames.com/play/3614/crush-the-castle

Me encantó ese juego por lo sencillo y adictivo.

es cortito, adictivo si
Title: Re: CHIPMUNK en bennu
Post by: Drumpi on February 17, 2011, 01:39:47 AM
Y tan cortito, media hora me ha durado :D :D :D
Aunque creo que me lo pasado haciendo "trampas", porque algunos tios se han muerto "porque sí" ^^U
Eso sí, prefiero el método de disparo de los "Angry Birds", es más preciso.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 17, 2011, 01:52:59 AM
yo maté uno  :'(



Nueva versión.

-Optimiza un  poco más mover cuerpos estáticos
-Corrige la eliminación de cuerpos estáticos (un pequeño detalle  ::) )
-Ahora si se revisa correctamente el modo de video del juego de dominó.

Sería muy sencillo hacer juegos como el de la catapulta.

Para la roca se usaría un joint que lo uniera a la cuerda, la cuerda tendría un joint hacia la madera. Se armaría la torre con un proceso por bloque.

La idea es cuando se da el segundo click destruir el joint de la roca a la cuerda, esto debería arrojar la roca... Sería cuestión de ver el funcionamiento.

El tema de la torre es como el demo de los dominós,
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 17, 2011, 02:09:35 AM
Venga, te adjunto el ejemplo de los dominos con la comprobación correcta. Intenta ponerse al modo ese en modo pantalla completa y si no puede se pone en modo ventana (que doy por hecho que siempre es posible).

Y ya estoy subiendo el paquete al PPA.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 02:21:15 AM
aca otro juego fantastico que se podria hacer

http://www.qjuegos.com/juegos/5555/air-transporter.html

a ver quien se anima a hacer algo
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 02:22:18 AM
gracias prg!
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 02:24:15 AM
otro

http://www.juegos.com/juego/Unecolores.html
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 17, 2011, 02:30:13 AM
Oye, se me ocurre que podríamos organizar un pequeño concurso con esto, ¿no?.
Algo así como dar una semana y ver qué puede hacer la gente con la librería. ¿Qué os parece?.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 03:32:49 AM
si, y podriamos organizar una colecta para el premio... yo me gaste todo lo que tenia en paypal... :D
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 04:27:15 AM
otro? http://www.juegos.com/juego/Cerditos.html
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 17, 2011, 05:55:00 AM
bueno, mientras otro ejemplo:

Máquina TheoJansen (.prg abajo).

sólo subo el prg ya que sólo requiere la librería para correr.

pd: el ejemplo es de los originales de chipmunk (como dominós y carroBennu), pero adaptado por mí.

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 06:04:54 AM
gracias!
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 06:16:11 AM
esta lib de fisica es fantastica, como potencia a bennugd esto...

gracias prg!

:D
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 17, 2011, 07:26:06 AM
Quote from: Prg on February 17, 2011, 05:55:00 AM
bueno, mientras otro ejemplo:

Máquina TheoJansen (.prg abajo).

sólo subo el prg ya que sólo requiere la librería para correr.

pd: el ejemplo es de los originales de chipmunk (como dominós y carroBennu), pero adaptado por mí.

saludos
¡Qué guapo!
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 17, 2011, 03:10:14 PM
Eres famoso, tío:
http://www.bennugd.fr/index.php?mod=news&ac=commentaires&id=41&PHPSESSID=0ddcc22b387ecd4354956b17fe914e67
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 03:25:32 PM
prg, me preocupa el nombre de las variables, yo diria que las agrupes en una estructura, asi como esta el scroll o mouse, porque estas variables tienen nombres que pueden llegar a estar usandose o pueden usarse en algun programa, poniendolas en una struct te evitas problemas de choques.

por favor, podes adaptar esto?

quizas en una struct llamada "physic", en principio las globales, aunque las locales me parece que tambien hay que pensar en algo...

quizas gphysic para las globales y lphysic para las locales.

antes que se difunda mas esto, es tiempo de corregirlo.

edit:

tambien los nombres de esas macros iguala, o cualquier otra que este en castellano hay que pasarlas a ingles.
Aunque aun no entiendo la funcionalidad de iguala, pero ya me enterare cuando vea el documento completo.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 17, 2011, 04:29:05 PM
Quote from: josebita on February 17, 2011, 03:10:14 PM
Eres famoso, tío:
http://www.bennugd.fr/index.php?mod=news&ac=commentaires&id=41&PHPSESSID=0ddcc22b387ecd4354956b17fe914e67

auch  :D , y yo que quería avisar en el foro de chipmunk que esto se estaba haciendo...  ::)

Quote from: SplinterGU on February 17, 2011, 03:25:32 PM
prg, me preocupa el nombre de las variables, yo diria que las agrupes en una estructura, asi como esta el scroll o mouse, porque estas variables tienen nombres que pueden llegar a estar usandose o pueden usarse en algun programa, poniendolas en una struct te evitas problemas de choques.

por favor, podes adaptar esto?

quizas en una struct llamada "physic", en principio las globales, aunque las locales me parece que tambien hay que pensar en algo...

quizas gphysic para las globales y lphysic para las locales.

antes que se difunda mas esto, es tiempo de corregirlo.

edit:

tambien los nombres de esas macros iguala, o cualquier otra que este en castellano hay que pasarlas a ingles.
Aunque aun no entiendo la funcionalidad de iguala, pero ya me enterare cuando vea el documento completo.

Ok. Los colocaré en estructuras.  :)
La macro es sólo para el ejemplo, sin embargo se puede sustituir por un cpv(), creo que esto será lo que haga con esa macro.

Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 04:58:34 PM
fantastico...

gracias.
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 17, 2011, 05:49:32 PM
Si no te importa, prg, que sea physics en lugar de physic, que es más correcto.
Y por cierto, ese es el foro francés de bennu, aun puedes anunciarlo en el de chipmunk :)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 06:35:59 PM
Quote from: josebita on February 17, 2011, 05:49:32 PM
Si no te importa, prg, que sea physics en lugar de physic, que es más correcto.
Y por cierto, ese es el foro francés de bennu, aun puedes anunciarlo en el de chipmunk :)

correcto, gracias.
Title: Re: CHIPMUNK en bennu
Post by: Drumpi on February 17, 2011, 08:24:05 PM
Hombre, yo usaría una nomenclatura más estandar, por ejemplo, llamando a la estructura global CHIPMUNK, CHIPMUNKDATA, CHIPMUNKPHYSIC o al menos CHPMGLOB, y al resto iniciarlas con CHPM_restodelnombre o algo así, porque "physic" es demasiado genérico y se puede confundir con otra librería de físicas que se pueda usar o variales que creee el propio programador.
Es más largo, sí, pero sabes a la larga a qué se refiere, evitas futuros conflictos y es muy difícil que coincida en nombre con otra librería.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 09:58:50 PM
Quote from: Drumpi on February 17, 2011, 08:24:05 PM
Hombre, yo usaría una nomenclatura más estandar, por ejemplo, llamando a la estructura global CHIPMUNK, CHIPMUNKDATA, CHIPMUNKPHYSIC o al menos CHPMGLOB, y al resto iniciarlas con CHPM_restodelnombre o algo así, porque "physic" es demasiado genérico y se puede confundir con otra librería de físicas que se pueda usar o variales que creee el propio programador.
Es más largo, sí, pero sabes a la larga a qué se refiere, evitas futuros conflictos y es muy difícil que coincida en nombre con otra librería.

esa es la idea, que sea generico, que represente al motor de fisica.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 17, 2011, 10:52:34 PM
Listo, antes de subir esta versión me gustaría que me dijeran si entendí bien.

las globales están así:

[code language="bennu"]   gphysics.gravity_Y=20;
   gphysics.interval=1.0/25.0;[/code]

las locales así:

[code language="bennu"]   lphysics.static=true;
   lphysics.mass=infinity;
   lphysics.inertia=infinity;
   lphysics.collisionType=2;
   lphysics.elasticity=1;
   lphysics.friction=0.4;[/code]

alguna otra cosa que debiera cambiar?

gracias y saludos :)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 17, 2011, 11:26:15 PM
en principio no, con eso esta bien...

mira que tampoco tiene que ser exacto asi, puede ser tambien gphysics y physics... o como gustes, me gustaria tambien saber tu opinion.

o global_physics y physics o local_physics, no se... que te parece mejor?

yo creo que gphysics y lphysics puede ir, pero ahora es el momento de discutirlo.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 18, 2011, 01:56:03 AM
Me gusta como gphysics y lphysics, ya que es muy fácil de recordar, además el prefijo l o g es muy fácil de inferirse y sobre todo porque ya está así. :)

Entonces creo que así se queda, ahora a corregir todos los ejemplos.

Cualquier cosa, quedo a sus órdenes. saludos :)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 18, 2011, 02:04:17 AM
muchas gracias...

estuve viendo la documentacion que armaste, y la verdad me asusta un poco la cantidad de funciones, cuando tenga un tiempo me lo estudio bien y veo si se me ocurre alguna forma de minimizar la cantidad de funciones... si eso pasa, luego te tiro algunas sugerencias a ver que opinas y si se pueden implementar.

gracias por todo.
Title: Re: CHIPMUNK en bennu
Post by: Grew on February 18, 2011, 09:51:24 AM
Thank you very much for your work Prg!! This will help us a lot to create good games :).
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 18, 2011, 02:46:01 PM
My psp video in the french forum xD
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 18, 2011, 10:47:32 PM
Quote from: SplinterGU on February 18, 2011, 02:04:17 AM
muchas gracias...

estuve viendo la documentacion que armaste, y la verdad me asusta un poco la cantidad de funciones, cuando tenga un tiempo me lo estudio bien y veo si se me ocurre alguna forma de minimizar la cantidad de funciones... si eso pasa, luego te tiro algunas sugerencias a ver que opinas y si se pueden implementar.

gracias por todo.

he subido la nueva versión y adaptado todos los ejemplos.

Ahoa los dominos no se caen (sólo se tambalean XD) hasta que los impactes (_space)

Quote from: Grew on February 18, 2011, 09:51:24 AM
Thank you very much for your work Prg!! This will help us a lot to create good games :).

:)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 18, 2011, 11:48:30 PM
gracias prg
Title: Re: CHIPMUNK en bennu
Post by: josebita on February 19, 2011, 08:38:27 AM
A ver si cuando llegue a casa lo actualizo.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 20, 2011, 03:25:54 AM
bueno, cualquier cosa quedo a sus órdenes.

Gracias a ustedes amigos  ;)

saludos :)
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 20, 2011, 04:33:30 PM
Buenas, por fin parece que he compilado bien el modulo, con la lib estática incluida, por lo menos ya no falla su carga.
He compilado tu ultima versión, en la demo que estaba preparando ahora tengo este error compilando el prg en la Caanoo:

error: Unknown identifier, found "GRAVITY_Y"

He mirado el codigo c, y se define "float gravity_Y;\n" , las variables globales del modulo son case sensitive ? La he puesto tal cual y sigue saliendo el error.
Os paso el modulo (quitad la extension .rar antes de descomprimir en Linux), agradecería pruebas en la Caanoo, de momento voy a quitar la variable a ver que pasa.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 20, 2011, 05:29:17 PM
Funciona!!!!!!!!!!!!!!!!!

Estaba probando ejemplo antiguo, con el nuevo como prg ha cambiado cosas pues ya chuta, hehheeheh, voy a adaptar los ejemplos a la Caanoo, y a disfrutar de fisicas en la negrita  ;D
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 20, 2011, 06:05:42 PM
Aqui os dejo una captura, de momento tengo pereza en adaptar mas ejemplos, pero tambien lo podeis hacer vosotros :)

Los ejemplos de prg tienen mucha resolucion, estoy usando scale_resolution para hacer ports rapidos, con lo cual el rendimiento no es muy bueno, pero me imagino que con ejemplos propios para Caanoo la cosa promete :)

(http://forum.bennugd.org/index.php?action=dlattach;topic=1982.0;attach=1805)


Title: Re: CHIPMUNK en bennu
Post by: Prg on February 20, 2011, 06:16:55 PM
genial, muchas gracias :)

esto me está emocionando mucho!! :)
Title: Re: CHIPMUNK en bennu
Post by: Grew on February 20, 2011, 09:50:51 PM
Is CPMOMENTFORPOLY allready working?
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 20, 2011, 10:10:15 PM
I don't know, it is implemented, see the page 1:

{"CPMOMENTFORPOLY" , "FIPP",   TYPE_FLOAT, modcpMomentForPoly},
Title: Re: CHIPMUNK en bennu
Post by: Grew on February 20, 2011, 10:19:46 PM
Ok, it seems to work.

But I've tried to define params for TYPE_CONVEX_POLYGON, and the prog crash!


data[]=0,0,3,
       -20,-20
       -20,20,
       20,0;

begin

lphysics.ShapeType=TYPE_CONVEX_POLYGON;
lphysics.params=&data;
graph=new_map(40,40,32);
map_clear(file,graph,rgb(100,255,255));


Is the data correct to define a triangle?
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 20, 2011, 10:41:24 PM
Int * params 5,13
La valeur par défaut est null, ce point est utilisé pour indiquer à l'opérateur du corps physique avec
paramètres que nous voulons créer le corps. Normalement, le créateur a créé les organes du corps
automatiquement, mais si ce pointeur est non-nul, ce serait d'utiliser les valeurs contenues ici
pour créer le corps.
Le tableau est passé à ce paramètre doit avoir la forme suivante:
Si TYPE est égal ShapeType LINE, être mis sur le premier champ sous la coordination
x le point où la ligne commence, puis la coordonnée y, puis la coordonnée x du point
où elle se termine, puis la coordonnée y et enfin le rayon de la ligne. Toutes les coordonnées
sont locales, et le centre du processus est le point (0,0).
Si TYPE CIRCLE ShapeType est le premier champ de la table doit être l'abscisse x
centre du cercle, la seconde est la coordonnée y, et le troisième est le rayon du cercle. Tous les
coordonnées locales, et le centre du processus est le point (0,0).
Si le ShapeType est du type A ou CONVEX POLYGON BOX, le premier élément est la coordonnée
x du centre du polygone, la seconde est la coordonnée y, alors nous avons le montant
sommet, alors le sommet x suivi et chacun des sommets. L'ordre des sommets
est l'inverse de la main de relog.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 21, 2011, 12:16:47 AM
crasheaba por  un error en la creación del polígono a través del params.

Ya he corregido el error y además hice un ejemplo de física con triángulos.

la nueva versión es 0.975 al principio del tema.

una disculpa

pd: olvidaba decir, si se quiere correr en alguna consola portatil quizá quieran disminuir el valor de phresolution y de itarations (phresolution está por defecto en 3, e indica las veces que el motor se ejecuta por frame, iterations está en 10 e indica el número de iteraciones que realiza el motor sobre cada objeto cada vez que se ejecuta). Valores altos dan mejor resultado en la simulación, pero consumen más.

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 21, 2011, 12:51:30 AM
free, un video please...

prg, esa params, la pusiste dentro de la struct, cierto?
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 21, 2011, 01:57:41 AM
Quote from: SplinterGU on February 21, 2011, 12:51:30 AM
free, un video please...

prg, esa params, la pusiste dentro de la struct, cierto?

sí, si la puse dentro de la estructura.

pd: En el ejemplo triángulo
[code language="bennu"]cpvect p[]= -20.0,-20.0  //falta una coma
      -20.0,20.0,
      20.0,0.0;[/code]
debe ser

[code language="bennu"]cpvect p[]= -20.0,-20.0,
      -20.0,20.0,
      20.0,0.0;[/code]
si esto no se corrije la simulación no será tan buena.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on February 21, 2011, 02:10:22 AM
gracias prg...
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 21, 2011, 02:16:28 AM
de nada amigo, gracias a ustedes también :)

Title: Re: CHIPMUNK en bennu
Post by: 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
Title: Re: CHIPMUNK en bennu
Post by: 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
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 22, 2011, 02:02:26 AM
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

Title: Re: CHIPMUNK en bennu
Post by: 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
Title: Re: CHIPMUNK en bennu
Post by: 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
Title: Re: CHIPMUNK en bennu
Post by: 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.
Title: Re: CHIPMUNK en bennu
Post by: Zip on February 23, 2011, 02:53:05 PM
waaa! its fantastic that chipmunk!
make an eglish topic please *_____*
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 23, 2011, 06:48:25 PM
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) :)
Title: Re: CHIPMUNK en bennu
Post by: 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.
Title: Re: CHIPMUNK en bennu
Post by: Pavloco on February 23, 2011, 07:18:00 PM
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.
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 23, 2011, 10:19:01 PM
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).

Title: Re: CHIPMUNK en bennu
Post by: 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
Title: Re: CHIPMUNK en bennu
Post by: 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 :*
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 24, 2011, 05:22:32 PM
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
Title: Re: CHIPMUNK en bennu
Post by: Zip on February 24, 2011, 06:55:56 PM
Chipmunk 0.975

I use xp
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 24, 2011, 07:08:19 PM
Primer video para Caanoo  :D

http://www.youtube.com/watch?v=tHuxtAVphYU
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 24, 2011, 09:58:04 PM
Ya tengo la versión para Wiz medio compilada (ya tengo la lib me falta el modulo bennu).

Tengo un problema que me da rabia cada vez que uso la terminal de linux, al hacer un make si esta se llena de warnings se come mitad de los logs, y no se localizar la entrada con el error porque la consola no muestra todo el texto en el scroll...

Hay alguna forma de poder ver todo el log para ver la linea que me interesa ?
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 24, 2011, 10:34:19 PM
Quote from: FreeYourMind on February 24, 2011, 07:08:19 PM
Primer video para Caanoo  :D

http://www.youtube.com/watch?v=tHuxtAVphYU
¿Los resortes y los motores desapareciron o los quitaste?
repasando el video veo que se mueven muy rápido y salen de la pantalla, qué raro.

por otro lado, podrías intentar mandar la salida del make a algún archivo, nunca lo he intentado, pero puedes probar algo así:

bgdc >> "hola.h"

yo lo hice con el bgdc y en el archivo rescaté su salida.

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 :*

he probado el ejemplo de playerJump en mi xp y sí funciona, te pasaré mi mod_chipmunk.dll, copia la librería en la carpeta con las otras librerías de bennu y te debería funcionar (a mí no me reconoció la librería hasta que la copié en el directorio con las otras (tengo todas las librerías juntas y los .exe también están en esa carpeta), no se por qué). ¿Podrías probar nuevamente y escribir el error que genera? gracias

saludos
Title: Re: CHIPMUNK en bennu
Post by: Zip on February 25, 2011, 02:00:04 PM
ok now all the exaple work,
i copied new release of bennu in the folder of bennupack

=)
wow, chipmunk implement gravidad that's a very good thing *___*
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on February 25, 2011, 04:34:04 PM
Version para Gp2x Wiz ya disponible!

http://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,19,527
Title: Re: CHIPMUNK en bennu
Post by: Prg on February 25, 2011, 04:59:42 PM
Quote from: FreeYourMind on February 25, 2011, 04:34:04 PM
Version para Gp2x Wiz ya disponible!

http://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,19,527

muchas gracias
karma++ amigo :)
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 02, 2011, 05:45:42 PM
Hola, he estado comentado con FreeYourMind y parece que algunas características de la librería no están funcionando como debieran en las consolas (los objetos con constraints)...

¿Qué particularidades deben considerarse al programar para ellas con respecto a ubuntu o windows?
¿Manejan correctamente doubles?

Adapté la librería para usar floats en lugar de doubles, sin embargo no se observan mejoras.

A propósito, ustedes qué opinan: ¿Dejamos que la librería siga usando doubles internamente o está bien que ahora use floats? Si usa doubles hay que estar haciendo cambios de tipo en todas las funciones ya que bennu no los usa (es lo que se hacía), si usa floats se gana velocidad por que no hay que hacer los cambios (ya casi está esta versión), además se usa menos memoria porque no hay que hacer copias de datos en doubles para el manejo de la función original.

Las dos preguntas del principio son muy importantes, si alguien puede ayudarme se lo agradecería, saludos :)
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 02, 2011, 06:02:46 PM
Hola, logro resultados similares a los que se observan en el video de la caanoo si compilo la libchipmunk para que use doubles y le digo a la mod_chipmunk que usa flotantes,

FreeYourMind ¿sí remplazaste los archivos que te pasé en la carpeta codChipmunkAdaptado con sus respectivos de la Chipmunk original?

¿Cuando tengas algún momentito y ganas  ;D podrías revisar si ejem.prg crashea? (si lo hace es que la libchipmunk usa doubles y la otra no)

perdón por todas las molestias.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on March 02, 2011, 06:04:13 PM
el manejo de coma flotante en wiz es por software, lo mismo en caanoo, pero en caanoo tiene un mejor manejo gracias al eabi.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on March 02, 2011, 06:05:12 PM
Quote from: Prg on March 02, 2011, 06:02:46 PM
Hola, logro resultados similares a los que se observan en el video de la caanoo si compilo la libchipmunk para que use doubles y le digo a la mod_chipmunk que usa flotantes,

FreeYourMind ¿sí remplazaste los archivos que te pasé en la carpeta codChipmunkAdaptado con sus respectivos de la Chipmunk original?

¿Cuando tengas algún momentito y ganas  ;D podrías revisar si ejem.prg crashea? (si lo hace es que la libchipmunk usa doubles y la otra no)

perdón por todas las molestias.

podra ser un problema de precision o de conversion.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 02, 2011, 06:15:09 PM
No se a que ejemp.prg te refieres, si es el mismo ejemplo del video, pues como te dijé lo compilo en la wiz y la ejecución es identica.
Dejame hacer mas pruebas como te dijé y mirar el tema con tiempo y ya te comento.

Sobre el codigo c. si, efectivamente cambie todos los ficheros por los que me enviaste, como ya te dijé, la dll se quedo ligeramente mas pequeña, por los tipos de datos.
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 02, 2011, 06:52:34 PM
En los ejemplos de la mod viene uno que se llama ejem.prg, a ese me refería.

No te preocupes, cuando puedas, iré investigando también... saludos :)

Quote from: SplinterGU on March 02, 2011, 06:05:12 PM
Quote from: Prg on March 02, 2011, 06:02:46 PM
Hola, logro resultados similares a los que se observan en el video de la caanoo si compilo la libchipmunk para que use doubles y le digo a la mod_chipmunk que usa flotantes,

FreeYourMind ¿sí remplazaste los archivos que te pasé en la carpeta codChipmunkAdaptado con sus respectivos de la Chipmunk original?

¿Cuando tengas algún momentito y ganas  ;D podrías revisar si ejem.prg crashea? (si lo hace es que la libchipmunk usa doubles y la otra no)

perdón por todas las molestias.

podra ser un problema de precision o de conversion.
¿Ante esto, qué me recomiendas?

saludos
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 02, 2011, 06:54:14 PM
Dejame probarlo y te cuento (antes tengo que hacer unas cosas y pasar unos juegos que compre a la consola Caanoo)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on March 02, 2011, 07:26:31 PM
Quote from: Prg on March 02, 2011, 06:52:34 PM
En los ejemplos de la mod viene uno que se llama ejem.prg, a ese me refería.

No te preocupes, cuando puedas, iré investigando también... saludos :)

Quote from: SplinterGU on March 02, 2011, 06:05:12 PM
Quote from: Prg on March 02, 2011, 06:02:46 PM
Hola, logro resultados similares a los que se observan en el video de la caanoo si compilo la libchipmunk para que use doubles y le digo a la mod_chipmunk que usa flotantes,

FreeYourMind ¿sí remplazaste los archivos que te pasé en la carpeta codChipmunkAdaptado con sus respectivos de la Chipmunk original?

¿Cuando tengas algún momentito y ganas  ;D podrías revisar si ejem.prg crashea? (si lo hace es que la libchipmunk usa doubles y la otra no)

perdón por todas las molestias.

podra ser un problema de precision o de conversion.
¿Ante esto, qué me recomiendas?

saludos

deberia ver como estas haciendo la conversion... no hay forma a la lib de decirle que trabaje directamente con floats?
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 02, 2011, 08:07:32 PM
según yo ya lo hice, en otro mensaje lo comento pero parece que pasa lo mismo... No hay algún entorno para probar en pc o algo así?

Quote from: FreeYourMind on March 02, 2011, 06:54:14 PM
Dejame probarlo y te cuento (antes tengo que hacer unas cosas y pasar unos juegos que compre a la consola Caanoo)

Cuando puedas amigo :), y si puedes
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 02, 2011, 09:58:44 PM
Probando:


1 - El ejemplo del video, se nota que el problema es que al hacer calculos en las plataformas mobiles, automaticamente estos toman valores 0, por eso se nota que desaparecen de sus posiciones originales a la posicion (0,0) y ahí se quedan....

He intentado poner solo enteros, pero da este error de compilacion:

addInanimateShape(type_line, 0 ,0, 0, 240, 0);

Error al compilar , min parametros 6, encontrados ','

No se podria cambiar la funcion a enteros para ver la diferencia ? En lugar de trabajar doubles, floats, decimales, o lo que sea, probabamos con enteros a ver que tal funcionaba.

2 - El ejemplo ejemp.prg, lo he adaptado a la resolucion de la consola, funciona sin ningun tipo de pete, pero se nota que debe faltar la plataforma del suelo, porque las bolas se quedan en el suelo pero este no se ve.
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 03, 2011, 01:40:52 AM
Quote from: FreeYourMind on March 02, 2011, 09:58:44 PM
Probando:


1 - El ejemplo del video, se nota que el problema es que al hacer calculos en las plataformas mobiles, automaticamente estos toman valores 0, por eso se nota que desaparecen de sus posiciones originales a la posicion (0,0) y ahí se quedan....

He intentado poner solo enteros, pero da este error de compilacion:

addInanimateShape(type_line, 0 ,0, 0, 240, 0);

Error al compilar , min parametros 6, encontrados ','

No se podria cambiar la funcion a enteros para ver la diferencia ? En lugar de trabajar doubles, floats, decimales, o lo que sea, probabamos con enteros a ver que tal funcionaba.

2 - El ejemplo ejemp.prg, lo he adaptado a la resolucion de la consola, funciona sin ningun tipo de pete, pero se nota que debe faltar la plataforma del suelo, porque las bolas se quedan en el suelo pero este no se ve.

addInanimateShape(type_line, 0 ,0, 0, 240, 0);
Esta función es el límite de la pantalla para que los objetos no se salgan de ella, por lo tanto puedes comentar las lineas. Estos shapes no son los rectángulos.

Quote
2 - El ejemplo ejemp.prg, lo he adaptado a la resolucion de la consola, funciona sin ningun tipo de pete, pero se nota que debe faltar la plataforma del suelo, porque las bolas se quedan en el suelo pero este no se ve.
No hay piso, hay una plataforma en la que las pelotas caen y comienzan a rodar por su inclinacíon hasta que salen de pantalla y se eliminan. La plataforma es un rectángulo verde.
Title: Re: CHIPMUNK en bennu
Post by: josebita on March 03, 2011, 01:50:55 AM
Prg, has visto el post sobre la mod_chipmunk en la Wii, verdad?
http://bennugd-wii.blogspot.com/2011/03/bennugd-for-wii-rc1-modchipmunk.html
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 03, 2011, 03:17:39 AM
Quote from: josebita on March 03, 2011, 01:50:55 AM
Prg, has visto el post sobre la mod_chipmunk en la Wii, verdad?
http://bennugd-wii.blogspot.com/2011/03/bennugd-for-wii-rc1-modchipmunk.html

No lo había visto, ¿en la wii corre bien? me refiero a que si los objetos no desaparecen.

Con la nueva versión usando solo floats la velocidad aumentará.

saludos y gracias
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on March 03, 2011, 04:41:31 AM
quien se anima a hacer algo asi? es simple...

http://www.minijuegos.com/Sugar-Sugar/10523
Title: Re: CHIPMUNK en bennu
Post by: josebita on March 03, 2011, 12:31:31 PM
Quote from: Prg on March 03, 2011, 03:17:39 AM
Quote from: josebita on March 03, 2011, 01:50:55 AM
Prg, has visto el post sobre la mod_chipmunk en la Wii, verdad?
http://bennugd-wii.blogspot.com/2011/03/bennugd-for-wii-rc1-modchipmunk.html

No lo había visto, ¿en la wii corre bien? me refiero a que si los objetos no desaparecen.

Con la nueva versión usando solo floats la velocidad aumentará.

saludos y gracias
El ejemplo de los dominos (con scale_resolution) va de lujo cuando cambio la profundidad de color de 32 a 16 bits. En 32 bpp va bien, pero es lento.
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 03, 2011, 08:44:08 PM
Quote from: SplinterGU on March 03, 2011, 04:41:31 AM
quien se anima a hacer algo asi? es simple...

http://www.minijuegos.com/Sugar-Sugar/10523

Este juego está genial :)

Quote from: josebita on March 03, 2011, 12:31:31 PM
Quote from: Prg on March 03, 2011, 03:17:39 AM
Quote from: josebita on March 03, 2011, 01:50:55 AM
Prg, has visto el post sobre la mod_chipmunk en la Wii, verdad?
http://bennugd-wii.blogspot.com/2011/03/bennugd-for-wii-rc1-modchipmunk.html

No lo había visto, ¿en la wii corre bien? me refiero a que si los objetos no desaparecen.

Con la nueva versión usando solo floats la velocidad aumentará.

saludos y gracias
El ejemplo de los dominos (con scale_resolution) va de lujo cuando cambio la profundidad de color de 32 a 16 bits. En 32 bpp va bien, pero es lento.

a qué resolución deben estar los juegos?
Has probado el ejemplo de  cambioZona?

la parte de los carros funciona bien?

gracias :)
Title: Re: CHIPMUNK en bennu
Post by: josebita on March 03, 2011, 11:08:48 PM
640x480 o 320x240. Sólo he probado el de los dominós, de momento. A ver si pruebo el de los carros, pero me imagino que irá bien.
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 04, 2011, 04:56:02 AM
En lugar del ejemplo del carro mejor prueba este:

http://forum.bennugd.org/index.php?action=dlattach;topic=1982.0;attach=1808

El resultado deben ser dos rectángulos verdes y 3 de otro color además de una bolita... Necesita un ratón, no se si exista problema...
Tiene la una resolución de 320x240 y está a 8 bits.
Title: Re: CHIPMUNK en bennu
Post by: Zip on March 04, 2011, 08:44:50 AM
please make a page on wikibennu for this module  :-[
i dont understand well spanish
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 04, 2011, 10:25:32 AM
In spanish please  ;D
Title: Re: CHIPMUNK en bennu
Post by: josebita on March 04, 2011, 10:49:00 AM
Quote from: Prg on March 04, 2011, 04:56:02 AM
En lugar del ejemplo del carro mejor prueba este:

http://forum.bennugd.org/index.php?action=dlattach;topic=1982.0;attach=1808

El resultado deben ser dos rectángulos verdes y 3 de otro color además de una bolita... Necesita un ratón, no se si exista problema...
Tiene la una resolución de 320x240 y está a 8 bits.
Lo probaré más tarde, gracias.
Title: Re: CHIPMUNK en bennu
Post by: Zip on March 04, 2011, 02:08:39 PM
Quote from: FreeYourMind on March 04, 2011, 10:25:32 AM
In spanish please  ;D
LOL no!!
i dont understand spanish, for this cause i need a wikibennu page in english
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on March 06, 2011, 02:15:34 AM
free ya la empezaste a usar en tu juego de pinball? creo que te vendria barbara esta lib.
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 06, 2011, 03:58:27 PM
Nueva versión, ahora sólo floats (menos precisión, más velocidad y no tengo que hacer conversiones (menos código)).

Se mejora el ejemplo de PlayerJump
Nuevo ejemplo con uso de boundingBox
Nuevas funcion para obtener la inercia de un shape, GETOPTIMALINERTIA(lphysics.ShapeType, lphysics.shape), véase PlayerJump

Para compilar la nueva librería es necesario remplazar el .h de la carpeta codChipmunkAdaptado por el .h correcto en el código de la libChipmunk.

De cualquier forma viene mi so y mi dll, como siempre, en los ejemplos y en el directorio para aquellos que los quieran usar sin compilar sus propias versiones.

Ha habido muchos cambios en la librería, si encuentran algo raro avisen. Hasta ahorita no he tenido problemas y las he probado muchas veces desde la semana pasada cuando comenzaba con estos cambios.

Link de descarga al principio del  tema como siempre.

saludos :)
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 06, 2011, 10:47:39 PM
Quote from: SplinterGU on March 06, 2011, 02:15:34 AM
free ya la empezaste a usar en tu juego de pinball? creo que te vendria barbara esta lib.

hheheh, ya habia reflexionado sobre el tema :)

Pero he decidido no hacerlo, o por lo menos, si lo hago mantener tambien la linea de implementación que sigo actualmente, porque no quiero que me den las cosas hechas, el motor que tengo actualmente ya solo necesita pequeños ajustes, y no quiero hechar a la basura lo que tengo, nada mas porque me ha servido para aprender algo sin buscarme muchas matematicas ni formulas complicadas.

De todas formas el proyecto sigue parado ya hace medio año, y lo va continuar unos meses mas.
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 20, 2011, 08:19:30 PM
hola, le he dado una ordenada a la ayuda, clasifiqué las funciones de acuerdo a ciertos criterios (funciones que actúan sobre procesos, las que actúan sobre bounding box, las que hacen operaciones matemáticas, etc.)

Adjunto el pdf.

saludos :)
Title: Re: CHIPMUNK en bennu
Post by: Fede on March 20, 2011, 09:29:34 PM
Aunque voy a tardar un poco en usar este port, k++.  ;D
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 20, 2011, 09:30:03 PM
Tenemos los ports pendientes, a ver cuando pillamos hueco para hacer mas pruebas (fin de semana me vendria mejor).
Title: Re: CHIPMUNK en bennu
Post by: Drumpi on March 21, 2011, 01:00:26 AM
Hey, gracias PRG.
k++ por el tuto ordenadito y todo :D :D :D
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 21, 2011, 01:37:10 AM
Quote from: FreeYourMind on March 20, 2011, 09:30:03 PM
Tenemos los ports pendientes, a ver cuando pillamos hueco para hacer mas pruebas (fin de semana me vendria mejor).

es verdad, supongo que tendremos que poner algunos printf para ver qué está sucediendo internamente en las consolitas... bueno, a ver si a uno de estos días te paso una versión de debuggeo...

:)

Gracias amigos :)
Title: Re: CHIPMUNK en bennu
Post by: l1nk3rn3l on March 21, 2011, 04:19:38 PM
genial proyecto dame los fuentes y la ultima release para win2

para subirlo al bennupack
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 21, 2011, 06:44:05 PM
Es la versión del principio del tema. 0.98.

El link es este:

http://www.mediafire.com/?gxm7chwl0bf3ne5
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 28, 2011, 05:03:23 AM
hola free, disculpa.

cuando puedas podrías correr en alguna de las consolas el siguiente prg?
esto me guardará un archivo txt con todo lo que sucedió en la simulación, con un poco de suerte me dará una idea de la próxima prueba para ver qué está pasando en las consolas.

córrelo algunos segundos y luego sácalo para que tampoco se llene el archivo...
jeje

saludos :)
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 28, 2011, 05:42:26 AM
Okis, por la noche te lo pruebo.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on March 28, 2011, 09:00:55 PM
Ya me empiezas a asustar, tu ejemplo se basa en una version mas reciente de chipmunk, la funcion 'infinityf()' no se reconoce.
Te has basado en una mas reciente a la ultima ?
La version compilada para Wiz/Caanoo es la 0.97, me imagino que el ejemplo es de la 0.98, si quieres te la vuelvo a compilar, pero esto seria para mañana :)

Los joy_init tampoco se reconocen no se porque...
Title: Re: CHIPMUNK en bennu
Post by: Prg on March 28, 2011, 11:40:10 PM
Quote from: FreeYourMind on March 28, 2011, 09:00:55 PM
Ya me empiezas a asustar, tu ejemplo se basa en una version mas reciente de chipmunk, la funcion 'infinityf()' no se reconoce.
Te has basado en una mas reciente a la ultima ?
La version compilada para Wiz/Caanoo es la 0.97, me imagino que el ejemplo es de la 0.98, si quieres te la vuelvo a compilar, pero esto seria para mañana :)

Los joy_init tampoco se reconocen no se porque...


Amigo, cuando puedas. No te preocupes.
Sí, el ejemplo usa la nueva versión... (Tengo la esperanza de que la nueva versión solucione los problemas... la esperanza muere al último XD ... aunque creo que no hay razón para que los solucione... je je)

Ahorita que hablas de los joy_init, creo que el ejemplo que me mostraste la vez pasada no lo traría... creo. En mi versión para pc de ese módulo se tiene que hacer el init.

ahora el valor infinito (antes una constante) se obtiene por la función infinityf para no tener que hacer el chequeo que antes se hacía. Extrañamente el valor de bennu y el de c de infinito no coincide. No se si será el compilador pero en bennu lo que es infinito, en c es un nan, y ya no coinciden.

bueno, cuando puedas  :)

saludos
Title: Re: CHIPMUNK en bennu
Post by: Danielo515 on April 06, 2011, 11:26:09 AM
No teneis ni idea de lo complicado que es para cualquier persona ajena a este hilo seguirlo. Cada vez que quiero descargar un ejemplo o la librería me tiro media hora navegando por las páginas hasta que encuentro algo.

Hace falta alguna explicación, y un ejemplo rabiosamente sencillo para que la gente lo pueda empezar a usar. Vamos, una pelota cayendo y una superficie, nada más, ni controles, ni movimiento con el ratón, nada solo un objeto que cae, para ver claro como se inicializa la librería y se le aplica a los cuerpos.

Además que con el ejemplo venga la librería correcta que funcione, porque muchos ejemplos no los puedo probar por incompatibilidad con la librería que estoy usando.

Se que pido mucho, pero será de gran ayuda para la comunidad.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 06, 2011, 12:17:55 PM
las descargas de este hilo se mantienen actualizadas en el primer post... ahi puedes bajar la ultima libreria que incluye ejemplos, y si mal no recuerdo tiene una documentacion simple (puede que me equivoque en este punto)
Title: Re: CHIPMUNK en bennu
Post by: Danielo515 on April 06, 2011, 02:03:04 PM
Es cierto splinter, no había caido, llevaba tanto tiempo navegando que ya no me acordaba de donde había sacado yo los ejemplos. El caso es que están muy poco comentados, y para mí deducir que hace cada cosa es costoso.

Algunas cosas las pillo facil, como cuando setea las variables en los procesos, pero a la hora de definir el comportamiento del motor en el proceso global me pierdo, no se que poner en mi proyecto.

Una duda que tengo es si esto valdría para la física de un juego tipo worms (con terreno deformable) o eso ya se le escapa, y en caso de que así se pudiera, ¿con que parámetros se debería definir el terreno?

Muchas gracias famigos.
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 07, 2011, 02:24:30 AM
No creo que te funcione para un juego tipo worms, ese juego yo lo haría con mapas de durezas.

Poco a poco comentaré los tutoriales y también pondré un tutorial más sencillo.

La documentación comenta cada una de las locales o globales posibles además de las constantes y las funciones.

Saludos
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on April 07, 2011, 08:14:45 AM
Prg he estado un poco liado este finde te actulizó los compilados, por cierto que cambiaste en la nueva versión ? Necesito de nuevo compilar la lib chipmunk o sólo el modulo bennu ?
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 07, 2011, 02:37:45 PM
Quote from: Prg on April 07, 2011, 02:24:30 AM
No creo que te funcione para un juego tipo worms, ese juego yo lo haría con mapas de durezas.

Poco a poco comentaré los tutoriales y también pondré un tutorial más sencillo.

La documentación comenta cada una de las locales o globales posibles además de las constantes y las funciones.

Saludos

yo si lo usaria para un juego tipo worms, para cuando los personajes caen, o para explosiones o para muchas cosas mas.
Title: Re: CHIPMUNK en bennu
Post by: josebita on April 07, 2011, 03:31:38 PM
El único problema sería el suelo, que hay que modelarlo de alguna forma y no sé si será fácil... aunque algo se podría inventar, me imagino...
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 07, 2011, 04:09:18 PM
Quote from: SplinterGU on April 07, 2011, 02:37:45 PM
Quote from: Prg on April 07, 2011, 02:24:30 AM
No creo que te funcione para un juego tipo worms, ese juego yo lo haría con mapas de durezas.

Poco a poco comentaré los tutoriales y también pondré un tutorial más sencillo.

La documentación comenta cada una de las locales o globales posibles además de las constantes y las funciones.

Saludos

yo si lo usaria para un juego tipo worms, para cuando los personajes caen, o para explosiones o para muchas cosas mas.

sip, el suelo sería el problema... aunque para todo hay trucos :)

Quote from: FreeYourMind on April 07, 2011, 08:14:45 AM
Prg he estado un poco liado este finde te actulizó los compilados, por cierto que cambiaste en la nueva versión ? Necesito de nuevo compilar la lib chipmunk o sólo el modulo bennu ?

si ya habías compilado la chipmunk de c para usar sólo flotantes entonces sólo necesitas compilar el módulo de bennu. Si  no la habías compilado para usar flotantes seguramente crasheará XD
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 07, 2011, 04:11:14 PM
no entiendo, si no puedes definir el suelo con esta libreria, entonces no sirve.
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 07, 2011, 04:34:31 PM
gracias :)

el problema es que el suelo está cambiando por las explosiones. Por lo general se define con líneas y formas geométricas.

En worms se va deformando el piso con cada explosión y con esta librería habría que calcular de nuevo las líneas de la parte deformada. Eso lo veo más sencillo de hacer con mapas de durezas, pero bueno. Depende del programador.
Title: Re: CHIPMUNK en bennu
Post by: Danielo515 on April 07, 2011, 05:27:39 PM
Ja ja ja, al final he creado discordia. Tal vez se podría hacer algunas funciones que dado un mapa de durezas la librería se encargara de "refrescar" las formas geométricas tan solo de los bordes, así se ahorraría muchoo calculo. puesto que los bordes no suelen ser tantos.

Lo suyo sería poder combinarlo, ya que es precisamente en estos ámbitos con terrenos deformables donde la librería gana mucho interés, ya no solo para juegos, sino incluso para simulaciones en los que tengas terrenos procedurales y puedas simular líquidos, caidas de objetos y otra serie de cosas que.. babas babas
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 07, 2011, 09:48:24 PM
a eso es lo que voy, no importa como se defina el juego y si se necesita actualizar o no, y como se haga esto... lo que apunto es que se puede hacer, y deberia hacerse para poder tener un juego con una buena fisica.

la pregunta es si no se puede hacer esto a partir de una dureza o mascara... me refiero a definir objetos o plataformas o lo que sea.

el motor soporta eso? no me refiero a la implementacion, solo al motor.
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 08, 2011, 02:37:19 AM
No te entendí muy bien.

El motor no genera los cuerpos a partir de mapas o durezas. Se podría hacer, pero como ya lo comentaba se necesita un algoritmo que pueda representar los contornos de los gráficos de forma poligonal.

El motor y la implementación lo que permiten es generar los cuerpos a partir de un arreglo con los puntos. Yo lo que hacía era usar puntos de control en los contornos y generar líneas  entre los puntos (las líneas forman parte de los cuerpos que colisionan en el motor (líneas, polígonos y círculos)). También genero un cuadro que envuelve todo el gráfico, un círculo o una linea.

Si se requiere presición se tiene que hacer manualmente. Previamente generar los puntos del polígono o los puntos para unir con lineas de colisión.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 08, 2011, 02:50:24 AM
perfecta la respuesta, eso preguntaba.

ahora una nueva, eso que decis de usar puntos de control (del grafico? o llamas puntos de control a otra cosa?) lo pusisten en la dll? porque si es asi, no deberia ser, ya que los puntos de control del grafico son de uso reservado del usuario, salvo el 0, que es el centro del grafico.
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 08, 2011, 03:25:53 AM
Lo de los puntos de control lo hice con un juego (El juego de 1AAAGirar2D). No forma parte de la librería, lo hice en código bennu para el juego.

Lo quiero hacer de nuevo para un juego que tengo pensado hacer estas vacaciones para un concurso en la universidad...

Tenía la idea de usar un algoritmo de representación de contornos Poligonal: Usar binarización (color<>0), erosión, resta para obtener los contornos y luego el algoritmos, pero no he tenido tiempo de buscar el algoritmo. Además me preocupa que pueda ser algo tardado. Quizá lo mejor sea dejar que el programador haga el cuerpo físico tal como está ahora.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 08, 2011, 03:34:13 AM
entonces esta perfecto. :)

si, no se que tan rapido seria.
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 24, 2011, 03:38:02 AM
Nueva versión:


07:42 p.m. 19/04/2011
-getOptimalInertia corregido
-Definición de masa corregido
-Comentados test, generada lista y nombres cambiados

10:28 p.m. 23/04/2011
-Test de generación de terreno mediante cpt

La nueva versión es la 0.9 y se encuentra al principio del tema.

saludos.
Title: Re: CHIPMUNK en bennu
Post by: josebita on April 24, 2011, 09:49:25 AM
¡Ah! genial. Mola lo del test de generación de terrenos.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on April 24, 2011, 03:05:35 PM
no lo probe aun, pero karma!
Title: Re: CHIPMUNK en bennu
Post by: l1nk3rn3l on April 24, 2011, 05:54:10 PM
muy bueno
Title: Re: CHIPMUNK en bennu
Post by: josebita on April 25, 2011, 09:38:45 AM
Dos cosas:
¿Podrías explicar un poco más lo de la generación de terrenos mediante gpt?
Lo otro es que me has bajado el número de versión, de 0.975 a 0.9 y no me deja subir la versión a los repositorios (me dice que ya hay una versión posterior subida).
Title: Re: CHIPMUNK en bennu
Post by: Prg on April 25, 2011, 04:12:09 PM
Me faltó un nueve, perdón XD

es la 0.99

Ok, comento y subo aquí (No comenté todo porque lo que viene en el test ya se había comentado en los test anteriores, y como no tenía tanto tiempo mejor sólo comenté lo nuevo. Pero comentaré este test) :

Primero, se necesita un cpt, que son los archivos de puntos de control que exportan los editores fpg. El terreno se genera a partir del punto 1, el cero es ignorado. Los puntos de control consecutivos  generan las líneas que harán las colisiones en el terreno, por ejemplo:

si tenemos 3 puntos,

p1(0,100)
p2(100,90)
p3(200,100)

Nuestro terreno estará formado por dos líneas, que parecerán un pico.

Para cortar la continuidad de terreno hay que dejar puntos de control sin definir, de tal forma que se cumpla que el valor de la cadena leída es "-1 -1", por ejemplo:

si tenemos 5 puntos,

p1(0,100)
p2(100,90)
p3(-1,-1)    //Cuando un punto de control no se define se le asigna el valor -1 -1, Lo he hecho con mi editor de puntos de control de mi "editor fpg", pero no había visto que esto no lo acepta el editor del bennupack, supongo que tendrán que poner un valor genérico y remplazarlo luego por el valor -1 -1, o también pueden modificar la función, al fin y al cabo es código bennu
p4(0,400)
p5(100,390)

Los puntos anteriores generan dos líneas, una del punto 1 al 2 y otra del punto 4 al 5

El código comentado es:

[code language="bennu"]import "mod_math"
   import "mod_draw"
   import "mod_map"
   import "mod_screen"
   import "mod_chipmunk"
   import "mod_video"
   import "mod_text"
   import "mod_proc"
   import "mod_key"
   import "mod_wm"
   import "mod_say"
   import "mod_regex"
   import "mod_string"
   import "mod_map"
   import "mod_grproc"
   import "mod_rand"
   import "mod_file"
   import "mod_sound"
   import "mod_timers"
   import "mod_time"
   import "mod_dir"
   import "mod_scroll"

global
   pelota;
   cpVect ot;
   handler;
   fondo;
   fpg;
private
   press;
   cpSegmentQueryInfo info ;
   float distancia;
   bl;
Begin
   set_mode(800,600,32);
   fondo=load_png("fondoHielo.png");
   fpg=load_fpg("graficos.fpg");
   start_scroll(0,0,fondo,0,0,0);       //Se inicia el scroll

       gphysics.gravity_Y=300;              //Define la gravedad a 300
   gphysics.damping=0.9;                //Disminuye la viscosidad a 0.9
   handler=COLLISIONHANDLERNEW(1,0);    //detecta donde colisionan los objetos con lphysics.collisionType 1 y 0. De tal forma que nos permitirá saber cuando nuestro protagonista toque el suelo

   generaTerreno("piso.cpt");           //Se genera el terreno
       prota(100,100);                      //Se genera el protagonista
       
       write(0,100,30,4,"Presiona espacio para ver el terreno físico");
   while (!key(_esc))
           if (key(_space))             //si presionas espacio
           pintaTerreno("piso.cpt");    //Pinta el terreno en el que se colisiona
           end
      frame;
   end
   let_me_alone();                      //Si se presiona escape, se finaliza todo
end

function generaTerreno(string ruta);         //Recibe una string con la ruta donde está el cpt
private
   float x0=-1,x1=-1,y0=-1,y1=-1;
   string cad;
   string cadenas[2];
   otro_os;
   cant;
   cont8;
begin
   otro_os=fopen(ruta,O_READ);          //abre el cpt
   if (not otro_os)                     //Si no pudo abrirlo retorna false
      return false;
   end
   x0=y0=x1=y1=-1;                      //inicializa las variables de la posición a -1
   cad=fgets(otro_os);                  //Lee encabezado
   cad=fgets(otro_os);                  //lee la cantidad de puntos de control
   cant=atoi(cad);                      //Almacena la cantidad de puntos de control en la variable cant
   cant--;
   cad=fgets(otro_os);                  //leer punto 0  e ignorarlo
   for (cont8=0;cont8<cant;cont8++)     //Para todos los puntos que faltan
      x1=x0;                       //guarda en x1 el valor de la última coordenada leída de x
      y1=y0;                       //y en y1 la última coordenada leída en y
      cad=fgets(otro_os);          //lee el siguiente punto
      if (cad=="-1 -1")            //si tiene -1 -1, reiniciar la línea
         x0=y0=x1=y1=-1;      //La línea se reinicia colocando las cuatro variables a -1
      else                         //De lo contrario
         split(" ",cad,&cadenas,2);   //Dividir la cadena en 2 usando el espacio
         x0=atoi(cadenas[0]);         //recoger el valor de x
         y0=atoi(cadenas[1]);         //recoger el valor de y
      end
      if (x1<>-1)                          //si la x1 está definida, entonces ya tenemos una línea
         z= addInanimateShape(type_line,x1,y1,x0,y0,0.0);       //se agrega al terreno la línea
      end
   end
   fclose (otro_os);                                                      //si ya se terminó de leer, se cierra el archivo
   return true;                                                           //y se retorna true
end


//Esta función pinta líneas con draw para ver si nuestro terreno quedó bien,
//su funcionamiento es el mismo que el de la función anterior, así que no lo comentaré

function pintaTerreno(string ruta);
private
   float x0=-1,x1=-1,y0=-1,y1=-1;
   string cad;
   string cadenas[2];
   otro_os;
   cant;
   cont8;
begin
   delete_draw(0);
   drawing_color(rgb(255,0,0));
   otro_os=fopen(ruta,O_READ);
   if (not otro_os)
      return false;
   end
   x0=y0=x1=y1=-1;
   cad=fgets(otro_os);
   cad=fgets(otro_os);
   cant=atoi(cad);
   cant--;
   cad=fgets(otro_os); //leer punto 0
   for (cont8=0;cont8<cant;cont8++);
      x1=x0;
      y1=y0;
      cad=fgets(otro_os);
      if (cad=="-1 -1")
         x0=y0=x1=y1=-1;
      else
         split(" ",cad,&cadenas,2);
         x0=atoi(cadenas[0]);
         y0=atoi(cadenas[1]);
      end
      if (x1<>-1)
         draw_line(x1-scroll.x0,y1-scroll.y0,x0-scroll.x0,y0-scroll.y0);
      end
   end
   fclose (otro_os);
   return true;
end

//Protagonista
process prota(x,y)
private
   id3;
   cpvect nPiso,vel,inter,aux,pos=0,-17;
   cpContactPointSet Ct;
   int x0,y0;
   sub;
   dat[]=0,-20,20;//se puede crear un arreglo con los parámetros para la creación del cuerpo físico y asignarse la dirección del arreglo a la variable local lphysics.params para crear el cuerpo de acuerdo a éstos. Los parámetros son los mismos que los que se usan en las funciones que hacen este trabajo y en el mismo orden (addCircleShape, por ejemplo).
begin
       file=fpg;
   graph=302;
   ctype=c_scroll;
   scroll.camera=id;

   lphysics.static=false;
   lphysics.mass=10;
   lphysics.inertia= cpMomentForCircle(lphysics.mass, 0, 20, cpv(0,-20,&aux)); //define el momento, este valor es muy importante
   lphysics.params=&dat;                     //parámetros para la creación del lphysics.shape: centro 0,-20 y 20 de radio.
   lphysics.elasticity=0;
   lphysics.friction=0;
   lphysics.collisionType=1;
   lphysics.ShapeType=TYPE_circle;
   FORCECREATEBODY(); //forza la creación del cuerpo físico inmediatamente para comenzar a usarlo
       cpv(0,-1,nPiso);   //el personaje comienza de pie
   loop

      if (key(_right))
         GetBody(lphysics.body,cp_c_v,&vel);      //Obtiene la velocidad del cuerpo
         cpvperp(&nPiso,&aux);                    //guarda en aux el vector perpendicular a nPiso (Normal al piso)
         cpvmult(&aux, 10,&inter);                //Multiplica aux por 10 y lo guarda en inter
         cpvadd(&vel, &inter,&inter);             //Suma a vel inter y lo guarda en inter
         inter.x=cpfclamp(inter.x, -120, 120);    //Restringe inter.x entre -120 a 120
         DEFBODYP(lphysics.body,CP_C_V,&inter);   //Define la velocidad del cuerpo igual a inter
         graph++;
         flags=1;

      end
      if (key(_left))
         GetBody(lphysics.body,cp_c_v,&vel);
         cpvperp(&nPiso,&aux);
         cpvmult(&aux, -10,&inter);               //Igual al anterior, pero multiplica aux por -10 para mover el proceso en la otra dirección
         cpvadd(&vel, &inter,&inter);
         inter.x=cpfclamp(inter.x, -120, 120);
         DEFBODYP(lphysics.body,CP_C_V,&inter);
         graph++;
         flags=0;
      end
      if (GETCOLLISIONINFO(handler,&ct))               //Si se toca el piso

         if (ct.points[0].normal.y>0.5)           //Se restringe qué inclinación del piso se considera para obtener las normales (Este vector es unitario)
            nPiso.x=-1.0*ct.points[0].normal.x;   //Se guarda la normal
            nPiso.y=-1.0*ct.points[0].normal.y;
         end
         sub=true;
      else
         sub=false;
      end

      angle=atan2(nPiso.y*1000.0,nPiso.x*1000.0)+90000;     //Le asigna un ángulo al personaje de acuerdo a al inclinación del piso
      if (flags==0)
         angle*=-1;                                    //Corrige los ángulos
      end
      if (sub and key(_up) )                                //si quieres saltar y estás tocando el piso
         GetBody(lphysics.body,cp_c_v,&vel);           //Se guarda la velocidad en vel
         cpvmult(&nPiso, 600.0,&aux);                  //Se multiplica la normal al piso por 600 (altura del salto)
                       cpvadd(&vel, &aux,&vel);                      //Se suma el resultado anterior a la velocidad actual
                       vel.y=cpfclamp(vel.y, -600, 600);             //Se limita la velocidad del salto
         DEFBODYP(lphysics.body,cp_c_v,&vel);          //y se hace saltar asignándole la velocidad almacenda en vel al cuerpos
         cpBodyActivate(lphysics.body);                //Cuando se hagan cambios a las propiedades de un cuerpos, es necesario llamar esta función
      end
      if (graph>309)
         graph=302;
      end
      if (y>600)
      y=100; x=100;
      end
      UpdateVelocity();                                     //Actualiza la velocidad del proceso para que disminuya con el paso del tiempo. sólo es necesario usar esta función cuando se modifican los valores del cuerpo directamente mediante funciones como DEFBODY* o setMass
      frame;

   end
end[/code]

El cpt tiene la forma:

QuoteCTRL-PTS
27
693 300
332 337
125 347
-1 -1
129 204
39 212
3 240
3 3
1383 14
1380 269
1334 245
1260 251
1178 301
1094 399
1024 463
862 466
830 534
639 532
-1 -1
742 213
636 216
-1 -1
589 469
508 468
-1 -1
460 405
382 407

Igual, al ser código bennu se puede usar cualquier criterio y cualquier modificación que se considere pertinente, esta es una propuesta y un método que yo uso.

En el ejemplo anterior se puede observar que el  movimiento se hace por medio de velocidades en lugar de usar incr_x. cualquier método funciona, pero se me hace más naturar usar velocidades. Eso sí, se complica el código. En los test encontrarán los dos métodos
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on May 02, 2011, 06:32:31 PM
Aqui tienes el output mister PRG.
Title: Re: CHIPMUNK en bennu
Post by: Prg on May 03, 2011, 01:44:24 AM
gracias amigo.

esos mensajes deben aparecer, se generan en la línea 3641 y 3642 del main.c

bueno, saludos.
Title: Re: CHIPMUNK en bennu
Post by: josebita on May 18, 2011, 11:19:02 AM
Prg, ¿estarías dispuesto a cambiar la licencia de la GPL a otra más liberal tipo la propia zlib para que pueda incluir tu mod_chipmunk en la versión para iOS?

Un saludo.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on May 18, 2011, 11:29:24 AM
Pero eso no compite a los creadores de la chipmunk original ?
Title: Re: CHIPMUNK en bennu
Post by: josebita on May 18, 2011, 11:33:49 AM
Dado que estamos usando chipmunk, yo diría que complementa.
Title: Re: CHIPMUNK en bennu
Post by: Windgate on May 23, 2011, 08:04:27 PM
El chipmunk para iOS sería la polla con cebolla. ¿El Bennu para iOS ofrece interactividad con el gravitómetro ese?
Title: Re: CHIPMUNK en bennu
Post by: josebita on May 23, 2011, 08:14:41 PM
Menuda frase más guapa que te ha quedao :)
Sí, parece que los acelerómetros funcionan muy bien:
http://bennugd-mobile.blogspot.com/2011/05/accelerometers-in-ios.html

PD: Prg no contesta... ¿Alguien sabe si anda de vacaciones o algo?
Title: Re: CHIPMUNK en bennu
Post by: Prg on May 23, 2011, 11:47:49 PM
perdón, salí de viaje 4 días, pero ya estoy de vuelta a la vida cotidiana (tareas, proyectos, etc.), je je.

No tengo ningún problema, sólo díganme qué hacer, qué necesitan que haga.

Free, no había podido revisar los txt, pero ahorita que los veo me doy cuenta que si hay diferencias en los valores de los archivos. Como se imprimen cada frame y estoy seguro que debieron pasar algunos frames antes de que eliminaras el rectángulo verde, entonces revisé las primeras líneas. Estas son las primeras líneas:

El de la portátil
Quote160 20 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
sin movimiento arriba comienzo 160 28 0
sin movimiento arriba 160 28 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
resorte comienzo 140 50 0
resorte 140 50 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
motor comienzo 200 90 0
motor 200 90 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
oscilacion comienzo 58 135 0
oscilacion 58 135 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
sin movimiento abajo comienzo 160 165 0
sin movimiento abajo 160 165 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
sin movimiento abajo 160 165 0 ( 0.000,  0.000) ( 0.000,  1.000) ( 1.000, -0.000)
oscilacion 58 135 0 ( 0.445,  0.000) ( 0.000,  1.000) ( 1.000,  0.000)
impulso 2.573447

El de la PC
Quotebola 160 20 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
sin movimiento arriba comienzo 160 28 0
sin movimiento arriba 160 28 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
resorte comienzo 140 50 0
resorte 140 50 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
motor comienzo 200 90 0
motor 200 90 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
oscilacion comienzo 58 135 0
oscilacion 58 135 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
sin movimiento abajo comienzo 160 165 0
sin movimiento abajo 160 165 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
sin movimiento abajo 160 165 0 ( 0.000,  0.000) ( 0.000,  0.000) ( 1.000, -0.000)
oscilacion 58 135 0 ( 0.445,  2.727) ( 0.000,  0.000) ( 1.000,  0.000)
impulso 0.450572

Ahora, aunque haya discrepancias en los valores, no entiendo el porqué de los problemas que se están dando en estas consolas.

Por otro lado, ya salió la nueva versión de Chipmunk, hace como un mes, pero aún no hay api de ayuda, así que antes de adaptarla necesito ver qué cambiar.

Otra cosa que quiero comentar es que adjunté nueva versión que corrige algunas cosas del tema de la liberación de recursos.

Además, en junio tengo un pequeño juego (4 niveles) de un juego de plataformas que usa Chipmunk, me gustó mucho el resultado. Lo presentaré en junio porque primero lo quiero presentar en la exposoftware de la Univ.

bueno, saludos.

Entonces, para concluir, hay nueva versión y además estoy de acuerdo en el cambio de licencia.

Saludos.


Title: Re: CHIPMUNK en bennu
Post by: josebita on May 24, 2011, 12:01:32 AM
Genial, mil gracias :)
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 03, 2011, 02:33:13 AM
Hola, subo un juego que preparé con la librería en las vacaciones pasadas. Ayer y hoy lo presenté (junto con otros 2 juegos) en la universidad permitiendo que las personas lo probaran.

El link de descarga es:

http://www.mediafire.com/?kgym2yv5g1uump6

hubo muchos problemas cuando lo subí, cualquier problema me avisan. El juego usa los cursores del teclado y el joystick y el botón 3 de éste.

Son 4 niveles, y 3 vidas, hay que usar los barriles para destruir los enemigos (abejas, changos, etc). Los gráficos y los sonidos los reconocerán de inmediato, son ripeados.

Para conseguir más vidas hay que recoger los globos o 100 bananas. Si lo sienten muy difícil pueden cambiar la variable vidas (línea 223) o incluso modificar la linea 224 cambiando de zona (1-4)

Espero les guste, Saludos.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 02:38:52 AM
Quote from: Prg on June 03, 2011, 02:33:13 AM
Hola, subo un juego que preparé con la librería en las vacaciones pasadas. Ayer y hoy lo presenté (junto con otros 2 juegos) en la universidad permitiendo que las personas lo probaran.

El link de descarga es:

http://www.mediafire.com/?kgym2yv5g1uump6

hubo muchos problemas cuando lo subí, cualquier problema me avisan. El juego usa los cursores del teclado y el joystick y el botón 3 de éste.

Son 4 niveles, y 3 vidas, hay que usar los barriles para destruir los enemigos (abejas, changos, etc). Los gráficos y los sonidos los reconocerán de inmediato, son ripeados.

Espero les guste, Saludos.

prg, hacia tiempo que no te veia, o por lo menos asi me parecio.

podrias incluir en el pack los modulos de linux y de windows en una carpeta dll dentro del directorio del juego (y dependencias), de esta forma podemos ejecutar el juego con el runtime que tenemos instalado de bennugd, pero si no disponemos de la chipmiunk.

gracias, ya doy un karma por el juego que no dudo esta bueno y cuando subas el modulo chipmunk te doy otro karma.
Title: Re: CHIPMUNK en bennu
Post by: l1nk3rn3l on June 03, 2011, 04:07:19 AM
le mirare...  descargando    ;D
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 03, 2011, 04:15:22 AM
je je
bueno, aquí está con las librerías y un bat para correr tanto en windows como en linux (al menos en mi ubuntu funcionó, espero que no sea porque tengo instalado bennu XD)

Todos contra mí con librerías:
http://www.mediafire.com/?8a86geyexh55gm8

Es la primera vez que comparto algo con las librerías de esta forma, no se si esté bien hecho todo. Se aceptan sugerencias en esto. saludos y gracias.

La descarga anterior también funciona sólo habría que agregar la última versión de chipmunk, al principio de el tema.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 06:30:50 AM
tampoco vi nunca una distribucion asi, pero se me ocurrio cuando quise ejecutar tu juego, de que forma podemos usar nuestro runtime pero con las libs no oficiales que no estan incluidas? asi que bueno, lo propuse, vamos a ver si funciona.

gracias.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 07:09:38 AM
es imposible jugarlo, si el rinoceronte no sube la primera pendiente, se queda con mucha fuerza hacia la izquierda, de hecho el movimiento default es la izquierda.

:(
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 03, 2011, 02:17:33 PM
Usa el bote que te lanza y cuando te lanze muévete hacia la derecha. No hay movimiento default, el hielo hace que resbales, pero esto se acaba en las otras zonas donde no hay hielo.

y si te refieres a la que está antes del bote, puedes pasarla caminando o saltando un poco (no recuerdo bien, al rato reviso y comento), aunque al saltar la pendiente puede arrojarte hacia atrás un poco, pero moviéndose siempre hacia adelante con las flechas debes poder pasarlo, te lo comento porque en la exposoftware hubo quienes lo llegaron incluso al nivel 3, así que de que se pasa esa pendiente se pasa :)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 02:55:19 PM
los primeros niveles de un juego deberian ser simples e ir poniendo dificultad progresiva...

en mi caso, el rinoceronte se mueve tambien por el techo, eso es intencional?
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 03, 2011, 04:46:09 PM
Quote from: SplinterGU on June 03, 2011, 02:55:19 PM
los primeros niveles de un juego deberian ser simples e ir poniendo dificultad progresiva...

en mi caso, el rinoceronte se mueve tambien por el techo, eso es intencional?
no, me das miedo (pero la abejita te mata, tu puedes abejita :) ).

Oye, pero ya pudiste pasar esa parte? ya pudiste subir esa pendiente?

subiré un video luego, ahorita no porque mi lap no me deja subir nada, no se por qué, me da errores raros.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 05:03:54 PM
que va, ni en este ni en el otro juego de las bolas que habia que girar el escenario, he podido pasar del primer nivel.

yo te sugiero que para tus proximas producciones los primeros niveles sean mas simples, y vayan aumentando a medida que el usuario le va tomando la mano al juego; es muy frustrante no poder pasar los primeros niveles y termina desalentando a jugarlos.

yo me he quedado con las ganas de jugar a ambos, no he pasado el primer nivel de ninguno de ellos y ahi los he dejado.
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 03, 2011, 07:33:19 PM
entiendo. Entonces te dejo un video en donde llego hasta el nivel  con 4 vidas y luego me salgo... je je

http://www.youtube.com/watch?v=E9_mB3cTY1Q

Luego subo un video de la pelotita con la forma de pasar el nivel 1 y dos, los otros ya son extrapolación.

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 07:48:43 PM
muy bueno el video, yo lo hacia desde el piso.

pero hay algo que veo cuando yo lo corro que no lo veo en tu video, en mi linux cuando lo corro veo una linea roja por la cual se ve se mueve el rino.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 03, 2011, 07:50:20 PM
el juego esta muy bueno, no se si le pusiste el tag de bennugd en el youtube, ponelo si podes.
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 03, 2011, 11:44:41 PM
ok  ;D
Title: Re: CHIPMUNK en bennu
Post by: Hokutoy on June 11, 2011, 06:11:24 AM
Quote from: SplinterGU on June 03, 2011, 07:48:43 PM
muy bueno el video, yo lo hacia desde el piso.

pero hay algo que veo cuando yo lo corro que no lo veo en tu video, en mi linux cuando lo corro veo una linea roja por la cual se ve se mueve el rino.

La linea roja es porque si le das a la tecla espacio el juego te dibuja el terreno (linea de puntos)... supongo que es una feature para chekear/debugear.
Lo malo es que no se borra... la arrastras durante toda la partida y no se actualiza a no ser que pulses otra vez espacio.

Definitivamente tengo que sacar tiempo para ponerme a hacer pruebas con chipmunk

PD: Si al juego All vs Me le pones un set_fps(50,0) para que vaya a 50 frames el juego gana muuuuucho.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 12, 2011, 10:26:17 PM
He compilado el modulo para la Pandora.

Pero me llevo una curiosa sorpresa, al usarlo, al compilar el prg en la pandora, el bgdc me deveuleve el siguiente error:

/media/mmcblk0p1/ChipMunkDemo/bgd-runtime/bgdc: cd: line 1: can't cd to /home/stuckie/Pandora/bennu/bennugd/core/bgdc/src
/media/mmcblk0p1/ChipMunkDemo/bgd-runtime/bgdc: eval: line 1: /usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gcc: not found

Decir que el autor del port de BennuGD a Pandora fue Stuckie, y se puede ver que estas rutas son suyas, por lo que deduzco que ha compilado bennu de alguna forma rara que peta si utilizamos modulos compilados por nosotros en su distro, porque este error es un error tipico de compilación con el gcc y no con el compilador de bennu, pues mi modulo se ha compilado correctamente y tengo ya un .so.

A ver si sabeis lo que puede ser ? Tema de rutas absolutas o algo parecido ?

Queria portar el juego de PRG a Pandora para ver el potencial del modulo, una pena...
Gracias.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 12, 2011, 11:45:49 PM
hace un

file /media/mmcblk0p1/ChipMunkDemo/bgd-runtime/bgdc

y decime que retorna
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 13, 2011, 12:47:51 AM
Pero lo hago donde y cuando ?

He hablado con el, me ha dicho que el podria compilar una version de bennu en un path comun que yo utilizará tambien para mi modulo, pero le he dicho que eso no tiene sentido, que no dependemos de las rutas unos de otros... algo mal o raro ha hecho al compilar, si quieres te pongo el makefile que el ha utilizado por si te sirve para ver algo.
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 13, 2011, 05:18:08 AM
en la consola del pandora.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 13, 2011, 10:27:34 AM
POSIX shell script text executable
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 13, 2011, 05:30:30 PM
Quote from: Hokutoy on June 11, 2011, 06:11:24 AM
Quote from: SplinterGU on June 03, 2011, 07:48:43 PM
muy bueno el video, yo lo hacia desde el piso.

pero hay algo que veo cuando yo lo corro que no lo veo en tu video, en mi linux cuando lo corro veo una linea roja por la cual se ve se mueve el rino.

La linea roja es porque si le das a la tecla espacio el juego te dibuja el terreno (linea de puntos)... supongo que es una feature para chekear/debugear.
Lo malo es que no se borra... la arrastras durante toda la partida y no se actualiza a no ser que pulses otra vez espacio.

Definitivamente tengo que sacar tiempo para ponerme a hacer pruebas con chipmunk

PD: Si al juego All vs Me le pones un set_fps(50,0) para que vaya a 50 frames el juego gana muuuuucho.

perdón, les tenía que explicar a los jueces cómo hacía el terreno y por eso está esa funcionalidad... XD

........

Sobre la compilación en pandora, tomaré nota del tema completo (creo que no puedo aportar mucho). Gracias por tomarse un tiempo en ello amigos :)
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 13, 2011, 05:37:02 PM
No te preocupes con Pandora PRG, es un tema ajeno a tu modulo, seguro que falla con cualquiera.
Yo me centraria en lo que tenemos pendiente, arreglar esas funciones que siguen fallando en las negritas.
Title: Re: CHIPMUNK en bennu
Post by: Yawin on June 14, 2011, 06:13:20 AM
Buenas, estaba yo, todo aburrido, mirando esa librería y, bueno, quería hacer una cosa, pero no se por donde empezar.

No se si coonoces el efecto "metaballs". Este efecto muestra una serie de bolas cuya superficie se distorsiona con la cercanía de las otras. Bueno, imagino que tendré que crear varios cuerpos con mucha gravedad que serían los centros, y muchos cuerpos con muy poca gravedad que sean las partículas de la superficie.

Pero no se qué funciones hay que emplear para ello.
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 14, 2011, 02:47:25 PM
la gravedad es global. Sólo se tiene una y es del mundo.

Lo que podrías usar es constraints de resortes entre las bolas pequeñas y la del centro.


Quote from: FreeYourMind on June 13, 2011, 05:37:02 PM
No te preocupes con Pandora PRG, es un tema ajeno a tu modulo, seguro que falla con cualquiera.
Yo me centraria en lo que tenemos pendiente, arreglar esas funciones que siguen fallando en las negritas.

El problema es que ya se me acabaron las ideas... ¿no hay una forma de probar en la pc con un emulador o algo así para ver qué puede ser el problema?
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 14, 2011, 03:56:36 PM
Con un emulador ? Pero si el dcb funciona tanto en pc como en las negritas, lo que cambia es el procesador, porque el modulo es igual en los 2...

Me gustaria que splinter me ayudara con el port para pandora, porque estoy curioso por ver si en Pandora tambien tenemos el mismo problema...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 14, 2011, 06:57:59 PM
no tengo pandora.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 14, 2011, 07:48:02 PM
pufff, mira que eres....

Si el problema no tiene que ver con la pandora, bennu se ha compilado en LINUX, y yo tambien he compilado el modulo en el PC tambien.
Has leido lo que dijé antes sobre las rutas ?
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 14, 2011, 08:02:27 PM
si, y te pedi unos datos que aun espero.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 14, 2011, 09:06:49 PM
Si les los hilos anteriores los encontraras (como de costumbre) xD
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 15, 2011, 02:04:44 AM
si seras!

no me llego la notificacion de ese mensaje... pero como me lo imaginaba, falla porque no es el ejecutable en si, es un script, lo que no se es si ese script es el que genera el compilador o es uno que distribuyo el autor del port.

intenta usar el binario real, el ejecutable real, adjuntalo como attach aca y lo veo.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 15, 2011, 06:10:56 AM
No he entendido nada....

Si es el ejecutable bgdc del runtime (del port a pandora que tienes en downloads) ...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 15, 2011, 08:03:47 AM
el compilador para el bgdi genera un script, el ejecutable real esta en la carpeta .libs, por eso te pide el path fijo.

lamento informarte que revise el paquete, y ese paquete esta mal, no esta el ejecutable bgdi, lo que esta es el script que genera el compilador, que es un wrapper del bgdi real, que esta en la carpeta .libs.

compruebalo tu mismo, abrelo con un editor de textos cualquiera.

tambien debo agregar que no tenia ni idea que estaba en downloads de la pagina oficial, la pagina oficial no la mantengo yo, ni siquiera tengo acceso a la seccion del hosting donde esta alojada.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 15, 2011, 10:22:43 AM
Se me ha caido el cielo encima xDDD

En el primer port esta bien, como el compilador no ha sufrido cambios voy a cambiarlo por el ultimo y hacer pruebas.
Se lo comunicaré al autor, entonces ha sido cosa suya no ?

Ha sido coincidencia, nunca habia compilado directamente en la Pandora, como ya ponia el dcb compilado nunca habia descubierto el error, vamos, que nadie del mundo Pandora se esterá tambien, estoy sólo en ese mundo, 'i'm the special one' xDDDDD
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 15, 2011, 10:34:59 AM
Ya funciona hhuhuhuhuhuhuhu, el modulo chipmunck tambien esta bien portado.


Pero tengo un error, PRG: Me sale que no conoce la variable 'infinity', pero he compilado la ultima version (la de Wiz), y el ejemplo es el mismo, a ver si me puedes dar un poco de luz, puede que me haya liado en alguna dependencia y no compilado la ultima.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 15, 2011, 01:08:35 PM
Bueno, ya he adaptado los 4 ejemplos a la Pandora y compilados en Pandora con su modulo chip_munk, pero ahora al ejecutarlos tengo 'Segment Fault' :(

Lo de infinity, he des-comentado en el código del modulo sus funciones (estaba comentado, aun me pregunto porque el ejemplo ha funcionado en wiz, yo lo miraré mejor)
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 15, 2011, 01:10:29 PM
Por favor PRG enviame el ultimo codigo que quiero compilar la version linux a pandora para ver si ya no tengo error (que no este adaptado a wiz o caanoo, o dime que es exactamente lo que cambiaste en la lib de los floats que ya no me acuerdo).
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 15, 2011, 02:20:19 PM
Quote from: FreeYourMind on June 15, 2011, 10:22:43 AM
Se me ha caido el cielo encima xDDD

En el primer port esta bien, como el compilador no ha sufrido cambios voy a cambiarlo por el ultimo y hacer pruebas.
Se lo comunicaré al autor, entonces ha sido cosa suya no ?

Ha sido coincidencia, nunca habia compilado directamente en la Pandora, como ya ponia el dcb compilado nunca habia descubierto el error, vamos, que nadie del mundo Pandora se esterá tambien, estoy sólo en ese mundo, 'i'm the special one' xDDDDD

el error es que no copio el binario real sino el script, el compilador siempre genera el script (autotools lo hace), pero se ve que esta ultima vez el autor no se dio cuenta y empaqueto el script en vez del binario.
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 16, 2011, 03:32:30 PM
Quote from: FreeYourMind on June 15, 2011, 10:34:59 AM
Ya funciona hhuhuhuhuhuhuhu, el modulo chipmunck tambien esta bien portado.


Pero tengo un error, PRG: Me sale que no conoce la variable 'infinity', pero he compilado la ultima version (la de Wiz), y el ejemplo es el mismo, a ver si me puedes dar un poco de luz, puede que me haya liado en alguna dependencia y no compilado la ultima.

ahm, tienes una versión vieja... infinity se cambió a infinityf(); (por cuestiones de representación del infinito). los ejemplos ya están actualizados en la última versión subida. Bájate esta versión del principio del tema.

deja busco el link para pasártelo (Este es el que debes compilar también para la wiz y las otras).

El link es este:

http://www.mediafire.com/?1fbtu3jnaq3h7bb

me dices cómo va.

saludos.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 16, 2011, 04:02:01 PM
Okis, lo voy a mirar, ahora estoy a punto de sacar otro bombazo para Pandora xD
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 16, 2011, 06:28:22 PM
Acabo de compilar la ultima version (ahora me he certificado que era la ultima), y por los ejemplos ya he visto que era un problema de los prg's :)

Pero de momento solo estoy probando en Pandora, y aunque se compilen los ejemplos bien, sigo teniendo el problema de 'Segment Fault' en todos ellos...

Tu el código de la lib no lo has cambiado cierto ? No lo sueles tocar ? (pasamela por pm si quieres para comparar los ficheros con los mios)
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 16, 2011, 07:09:21 PM
yo diria que sí, lo suele tocar... es el desarrollador del modulo, asi que imagino que lo toca. :D
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 16, 2011, 07:14:23 PM
No splinter no tiene porque, no estamos hablando del codigo del modulo, pero si del codigo de la lib chipmunck que este depende xD
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 16, 2011, 07:26:33 PM
si mal no recuerdo, la compilo para que use floats en vez de double o al revez, creo que tiene un flag para eso de compilacion.

no se, hay que preguntarle a prg o leerse todo el hilo, porque algo dijo al respecto.
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 17, 2011, 02:30:24 AM
hola.

Hay que compilarla para que use floats, yo para eso sólo agrego la línea
#define CP_USE_DOUBLES 0

al principio del archivo chipmunk_types.h

ya con eso funciona, de lo contrario si que debe dar un fallo de memoria.

espero se resuelva el problema.

saludos
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 17, 2011, 02:03:28 PM
Eso es lo que ya tiene:

//puesta por mí

#define CP_USE_DOUBLES 0

#ifndef CP_USE_DOUBLES
   // use doubles by default for higher precision
   #define CP_USE_DOUBLES 1
#endif
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 17, 2011, 02:18:16 PM
Lo he compilado con doubles
#define CP_USE_DOUBLES 1

y ahora en lugar de segmentation fault tengo el error 'bus error'.

Voy a probar en Wiz a ver...
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 17, 2011, 02:49:11 PM
Vale, ya tengo el veredicto final, resumen:

- Caanoo / Wiz: Estaba en la duda pero ya me he aclarado, esta es la misma version que compile antes y que por privado te dije que funcionaba pero que tenia crash en las plataformas lilas (la demo 1 que me preparaste para la prueba)

- Pandora: He cogido el ejemplo anterior que me funcionaba en Wiz para ver si venia el problema de algo en el prg, pero no, la misma versión del modulo para pandora no funciona, me da error 'Segment fault' al ejecutar cualquiera .dcb (y si genero la lib con doubles en lugar de floats el error es de 'bus error').

Este es el resumen, ya cuando saques nuevas versiones podré probar de nuevo, de momento dejó el tema en stand by...
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on June 17, 2011, 02:59:32 PM
lo del bus error, puede ser algun array estatico o algo que consuma toda la memoria de la pandora como para entrar el ejecutable en memoria.

llega a ejecutar algo? o simplemente da el error? puedes compilar el dcb con debug (-g) y ejecutar el mismo con (-d) y ver si al menos se ejecuta.
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 17, 2011, 03:05:30 PM
Da error de output en el fichero externo al ejecutar.
De momento no quiero hacer mas pruebas, estoy hasta los huevetes xD
Title: Re: CHIPMUNK en bennu
Post by: Prg on June 20, 2011, 09:35:50 PM
no has intentado compilar y correr los ejemplos oficiales de la libchipmunk? Se supone que usan openGL para pintar y la lib. Si se pudieran probar sabríamos si el problema está en la librería en c o en el módulo de bennu.
En caso de que esté en la libChipmunk pues entonces sería necesario pedir ayuda en el foro oficial.

El emulador que comentaba es para probar las librerías en él y ver la línea que da el problema, para poder rastrear el error. Lamentablemente con lo que me has comentado del error y las pruebas que estoy haciendo, no me doy cuenta de en dónde puede estar el problema, sobre todo porque funciona bien en pc tanto en windows como en ubuntu.

También quiero comentarte que ya tengo compilada la nueva versión de la libchipunk (la versión 6.0 beta) y ya ajusté el código de la mod_chipmunk a esta versión. Aún hay algunas cosas que quiero revisar como un mensaje que me da por consola en el modo debug (han habido muchísimos cambios y la ayuda no está actualizada). Pero antes de pasártela me gustaría saber si el error está en la libchipmunk o en la modchipmunk además de que aún hay cosas que no funcionan en esta nueva versión y quiero corregir los ejemplos de bennu para que implementen alguna de las opciones que suplen lo que ya no está.

Parece que la nueva versión ha optimizado muchas cosas...
Title: Re: CHIPMUNK en bennu
Post by: FreeYourMind on June 20, 2011, 09:58:56 PM
Tomate tu tiempo a finiquitar todo lo que tengas pendiente, despúes cuando todo este OK y completo, con sus ejemplos todos terminados, nos ponemos con los ports y pruebas en las consolas :)
Title: Re: CHIPMUNK en bennu
Post by: kim-elet-o on July 30, 2011, 10:40:39 AM
Prg no se si darte un beso en la boca, o invitarte a mujeres de moral distraida (mmmmmmh te dare un beso en la boca, que mi economia no esta para excesos...  :D :D :D), bueno al grano, hace tiempo que quiero hacer un pinball en bennu (es que las maquinas del millon o petacos me chiflan un monton), y hasta ahora el mayor problema era simular la fisica de la bola y de los elementos fisicos de la maquina, ya desesperado me he puesto a bucear en el foro, y Oooh Sorpresa!, me encuentro con tu joya que ademas viene de serie en el ppa de josebita, estoy que me salgo de feliz. un Karmazoo de parte mia, y gracias por todo el esfuerzo de portar el motor de fisicas a BennuGD.

:D :D :D :D :D :D :D
Title: Re: CHIPMUNK en bennu
Post by: Prg on August 11, 2011, 03:59:37 AM
Hola  :)

Olvidemos lo del beso XD

He comenzado, y casi terminado, el port a chipmunk 6, tengo muchos avances, faltan aproximadamente 2 o 3 funciones por ahí que no entiendo muy bien qué hacen y además necesité eliminar la funcionalidad de dormir los cuerpos con signal(s_freeze || s_sleep..

además se presenta un problema al dormir los objetos con sleep() (función oficial de chipmunk) cuando tocan otro objeto...

Por lo pronto comparto la nueva versión con la nueva versión de la libchipmunk, sobre los problemas que tengo preguntaré en el foro oficial de la librería.

mod_chipmunk de chipmunk 6.0.0
http://www.megaupload.com/?d=XSWK2R6V

saludos
Title: Re: CHIPMUNK en bennu
Post by: SplinterGU on August 11, 2011, 04:12:41 AM
karma... no entendi bien lo del avance.
Title: Re: CHIPMUNK en bennu
Post by: JaViS on August 11, 2011, 05:20:04 PM
Quote from: Prg on August 11, 2011, 03:59:37 AM
Hola  :)

Olvidemos lo del beso XD

He comenzado, y casi terminado, el port a chipmunk 6, tengo muchos avances, faltan aproximadamente 2 o 3 funciones por ahí que no entiendo muy bien qué hacen y además necesité eliminar la funcionalidad de dormir los cuerpos con signal(s_freeze || s_sleep..

además se presenta un problema al dormir los objetos con sleep() (función oficial de chipmunk) cuando tocan otro objeto...

Por lo pronto comparto la nueva versión con la nueva versión de la libchipmunk, sobre los problemas que tengo preguntaré en el foro oficial de la librería.

mod_chipmunk de chipmunk 6.0.0
http://www.megaupload.com/?d=XSWK2R6V

saludos

muchas gracias por el trabajo que estas haciendo, Se ve muy impresionante! :D KARMA!!
Title: Re: CHIPMUNK en bennu
Post by: Prg on August 11, 2011, 06:25:34 PM
Quote from: SplinterGU on August 11, 2011, 04:12:41 AM
karma... no entendi bien lo del avance.
es que esta nueva versión de Chipmunk trajo muchos cambios, y me tocó cambiar muchas funciones (y hacer otras que ya no estaban), entonces hay tres o cuatro funciones que aún me falta implementar o eliminar del api, estoy estudiando qué hacer con ellas, pero no se les extrañará (la mayoría se eliminó debido a que se mejoró internamente la librería para aumentar su velocidad en dispositivos móviles, y si no se eliminaron se cambió el tipo y cantidad de parámetros, así que estudio esto...).

saludos :)

---

Acabo de ver un video de física estilo Jelly, en la versión 6.0.1 ... XD

http://www.youtube.com/watch?v=McvG32qEoSo

revisaré también los cambios que se necesitan para esta versión...

También hay una versión multitouch para iphone

http://www.youtube.com/watch?v=m5nO1bcvyTY

Parece corriendo en un emulador, quizá sea esta la solució para compilar mod_chipmunk para las consolas...

Video de los constraints (qué son y qué forma tienen)

http://www.youtube.com/watch?v=ZgJJZTS0aMM&feature=related

Uso de acelerómetro en iphone y chipmunk

http://www.youtube.com/watch?v=1gqJQiaK82o&feature=related

Un último de deformación de terrenos..

http://www.youtube.com/watch?v=oacZwUGP11c&NR=1
Title: Re: CHIPMUNK en bennu
Post by: Windgate on August 19, 2011, 01:58:26 AM
Otro puntazo descomunal la librería de física 2D, hacía unas semanas que no me leía el foro entero, pero afirmo que más del 50% de las sugerencias para Bennu 2.0 están cubiertas :D
Title: Re: CHIPMUNK en bennu
Post by: josebita on August 19, 2011, 07:38:56 AM
Gracias por la actualización :)
Title: Re: CHIPMUNK en bennu
Post by: Prg on August 21, 2011, 06:35:17 PM
nueva versión... aproveché para cambiar algunas cosas internas, descubrí otras que haré más adelante...

http://www.megaupload.com/?d=HDY5MA5Q

01:21 p.m. 21/08/2011
-se agregan los callbacks
-se cambian los constraints de los procesos a listas ligadas
-se agregan las funciones de eliminación de cuerpos del handler
-se agregan los test 11 a 13 (ejemplos del uso de callbacks)
-se corrigen algunos bugs
-se actualiza a la versión 6.0.1 de chipmunk


faltan por hacer
-función para eliminar shapes manualmente
-Que al cambiar el valor de la local static, se transforme el cuerpo actual a estático.
-shapes internas en listas ligadas (fara facilitar la eliminación manual)

Probada en mi ubuntu y en windows. No se si tengo la última versión de bennu, creo que no. Espero no haya problemas, si los hay avisen y me bajo la última versión.

pd: Recomiendo el test13, muestra cómo crear callback (o algo parecido) para crear objetos unidos por constraints que se rompen (al estilo cuerdas que conectan objetos)
Title: Re: CHIPMUNK en bennu
Post by: josebita on August 21, 2011, 07:46:35 PM
Genial, justo hoy he empezado a integrar tu nueva versión en mi rama monolítica.
Title: Re: CHIPMUNK en bennu
Post by: l1nk3rn3l on August 21, 2011, 09:05:53 PM
gracias
Title: Re: CHIPMUNK en bennu
Post by: Prg on August 22, 2011, 03:52:24 PM
Se me había olvidado comentar.
Desde un callback no eliminen los constraints o los shapes. Normalmente para eso  se usa algo llamado postStepCallback, pero en bennu se obtiene el mismo resultado usando algo como:

[code language="bennu"]process bla(id2)
begin
frame;
//código para eliminar algo del motor
end
[/code]

véase el test 13 para más información

[code language="bennu"]process borraJoint(joint)
begin
frame
     RemoveConstraint(getConstraintFatherA(joint) <>0 ? getConstraintFatherA(joint) : getConstraintFatherB(joint),joint);// esta linea la agrego porque algunos constraints los uní al cuerpo estático del fondo, cuyo id (en los constraints) se maneja como 0.
end

function postSolve(int joint)
begin

// If the force is almost as big as the joint's max force, break it.
if(constraintGetImpulse(joint)/SpaceGetCurrentTimeStep() > 0.9*GETCONSTRAINTF(joint,CP_C_MAXFORCE));
   borraJoint(joint);
end
end[/code]


Otra nota
Los callbacks reciben como primer parámetro un id de una estructura. Esta estructura es memoria dinámica y sólo está al alcance dentro del callback y deja de estar al alcance cuando se ejecuta el callback (la primera vez). Con esto intento decir que no deben almacenar el id en una variable fuera del callback, lo que requieran deben obtenerlo con las funciones adecuadas y almacenarlo en alguna estructura o algunas variables, de lo contrario pueden estar accediendo a memoria que ya se liberó... ustedes saben lo que sucederá... XD

Las funciones que trabajan con el primer parámetro son:

{"GETARBITERCANTCONTACTPOINTS", "I", TYPE_INT, modArbiterGetNumContactPoints},
    {"ARBITERISFIRSTCONTACT", "I", TYPE_INT, modArbiterIsFirstContact},
    {"GETARBITERNORMAL", "IIPP", TYPE_INT, modArbiterGetNormal},
    {"GETARBITERPOINT", "IIPP", TYPE_INT, modArbiterGetPoint},
    {"GETARBITERDEPTH", "II", TYPE_FLOAT, modArbiterGetDepth},
    {"GETARBITERTOTALIMPULSEWITHFRICTION", "IPP", TYPE_INT, modArbiterTotalImpulseWithFriction},
    {"GETARBITERTOTALIMPULSE", "IPP", TYPE_INT, modArbiterTotalImpulse},

    {"SETARBITERSURFACEVELOCITY", "IFF" , TYPE_INT, modArbiterSetSurfaceVelocity},
    {"GETARBITERSURFACEVELOCITY", "IPP" , TYPE_INT, modArbiterGetSurfaceVelocity},
    {"SETARBITERFRICTION", "IF" , TYPE_INT, modArbiterSetFriction},
    {"GETARBITERFRICTION", "I" , TYPE_FLOAT, modArbiterGetFriction},
    {"SETARBITERELASTICITY", "IF" , TYPE_INT, modArbiterSetElasticity},
    {"GETARBITERELASTICITY", "I" , TYPE_FLOAT, modArbiterGetElasticity},
    {"MODARBITERPROCESSA", "I" , TYPE_INT, modArbiterProcessA},
    {"MODARBITERPROCESSB", "I" , TYPE_INT, modArbiterProcessB},

para más información pueden ver el test11 y test12


En breve (espero) la ayuda escrita actualizada... XD

Saludos
Title: Re: CHIPMUNK en bennu
Post by: josebita on October 18, 2011, 10:08:14 PM
Prg, estaba intentando compilar la nueva versión de tu módulo para mi PPA pero me he encontrado con problemas porque el binario compilado me suelta constantes violaciones de segmento, pero la versión .so que incluyes en el paquete me funciona bien....
¿Cómo compilas tú? ¿Hace falta algún flag de compilado en particular?.


PD: Es que el proyecto de codeblocks no me va, tampoco...
Title: Re: CHIPMUNK en bennu
Post by: peterpollito on October 18, 2011, 10:10:35 PM
impresionante la libreria cada vez avanza más.

Karma!
Title: Re: CHIPMUNK en bennu
Post by: Prg on October 21, 2011, 02:45:11 AM
Quote from: josebita on October 18, 2011, 10:08:14 PM
Prg, estaba intentando compilar la nueva versión de tu módulo para mi PPA pero me he encontrado con problemas porque el binario compilado me suelta constantes violaciones de segmento, pero la versión .so que incluyes en el paquete me funciona bien....
¿Cómo compilas tú? ¿Hace falta algún flag de compilado en particular?.


PD: Es que el proyecto de codeblocks no me va, tampoco...

¿Estás compilando con la nueva versión de chipmunk?

Por otro lado he añadido una nueva función, aunque aún no está terminada (deja muchísimos puntos extras y no se ha optimizado nada en cuento a coste computacional). Reconocimiento de cuerpos convexos de manera automática... Espero pronto poder subir una nueva versión.

Gracias peterpollito.

Saludos.
Title: Re: CHIPMUNK en bennu
Post by: Prg on November 21, 2011, 06:22:50 PM
Hola.

Nueva versión, compilada con la versión 6.0.2 de chipmunk.

Cambios:
-Generación automática de cuerpos convexos.
-obtención de los vértices del cuerpo convexo de un gráfico test16.
-Funciones para manejo de árbitros test12-test14
-Actualizada a la versión Chipmunk-6.0.2
-Corrección de un bug en la generación de arreglos dinámicos.
-Descripción de los test completada.
-Nuevos ejemplos.

Descripción de los test

Quotetest00        Pelota rebotando
                    addInanimateShape
                    lphysics.mass
                        lphysics.ELASTICITY
                        lphysics.friction
                        lphysics.ShapeType
                        forceCreateBody()
                        lphysics.inertia
                        GETOPTIMALINERTIA()
                        INTERSECTSBB(id2)       --> colisión
                        muerte de procesos con física


test01        Cuerpos sin gravedad estilo bomberman, Empujar objetos, Movimiento de personaje y Traspasar objetos.
                        gphysics.bias_coef
                        gphysics.damping
                        lphysics.static
                        lphysics.group
                        TYPE_CONVEX_POLYGON
                        cpMomentForCircle()
                        TYPE_CIRCLE
                        CP_NO_GROUP
                        TYPE_box

test02        Slew, cuerpos estáticos y Pirámide de dominós.
                        gphysics.iterations
                        gphysics.collision_slop
                        gphysics.sleepTimeThreshold
                        cpvadd()
                        Slew()

test03        Polígonos definidos por arreglo y lphysics.group
                  lphysics.params
                  TYPE_CONVEX_POLYGON

test04        Movimiento con el ratón, Joint, Colisión puntual, gphysics.interval, y uso de boundingbox (intersecciones y envoltura).
                  gphysics.SLEEPTIMETHRESHOLD
                  infinityf()
                  cpBBIntersects
                  cpBBmerge
                  DefConstraintF
                  CP_C_MAXFORCE
                  CP_C_BIASCOEF
                  RemoveConstraint
                  ShapeCacheBB
                  cpBB

test05        Varias pelotas que se pueden mover, piso formado por línea y función para obtener los shapes y constraints de un proceso, gphysics.bias_coef.
                  COLLISIONHANDLERNEW
                  SpaceSegmentQueryFirst
                  SegmentQueryHitPoint
                  SegmentQueryHitDist
                  GETCOLLISIONINFO
                  GETCONSTRAINTS
                  GETSHAPES

test06        phresolution, pin, joint, motor y resortes.
                  addPivotJoint
                  addSimpleMotor
                  addPinJoint
                  addDampedRotarySpring
                  infinityf

test07        Física de juego tipo plataformas, péndulos, objetos con centro distinto del (0,0), Movimiento por fuerzas
                  cpContactPointSet
                  cpvperp
                  cpvmult
                  cpvadd
                  DEFBODYP
                  CP_C_V
                  GETCOLLISIONINFO
                  cpfclamp

test08        Eliminar zona y eliminar todos los cuerpos físicos. Constraints
                  cleanSpace
                  WORLD2LOCAL
                  RemoveConstraint
                  cpMomentForPoly
                  addPinJoint
                  addSlideJoint
                  addPivotJoint
                  addGrooveJoint
                  addDampedSpring
                  addDampedRotarySpring
                  addRotaryLimitJoint
                  addRatchetJoint
                  addSimpleMotor
                  DefShapeI
                  CP_C_LAYERS
                  NOT_GRABABLE_MASK
                  addInanimateShape
                  COLLISIONHANDLERNEW
                 
test09        Uso de constraints, Modificación de propiedades de constraints, Procesos con más de un shape, Simulación de máquina TheoJansen.
                  cpMomentForSegment
                  ADDPIVOTJOINT2
                  ADDCIRCLESHAPE
                  defShapef
                  ADDPINJOINT
                  SETPINJOINTPROPERTIES
                  CP_C_DIST
                  DefShapeI
                  CP_C_LAYERS
                  NOT_GRABABLE_MASK
                  CP_C_E
                  CP_C_U
                  DefShapeF
                  cpvforangle
                  CM_PI
                  ADDSIMPLEMOTOR
                  SETSIMPLEMOTORPROPERTIES
                  DEFCONSTRAINTF
                  CP_C_MAXFORCE

test10        Generación de terrenos mediante .cpt
                  COLLISIONHANDLERNEW
                  addInanimateShape
                  cpMomentForCircle
                  cpvperp
                  cpvmult
                  cpvadd
                  GETCOLLISIONINFO
                  cpBodyActivate
                  cpContactPointSet

test11          Handlers de collision.  Omitir respuesta de cuerpos al colisionar (Útil para juegos de plataformas donde el personaje colisiona con el piso sólo cuando desciende y no cuando asciende (aquí revisaríamos la dirección de la normal de colisión para filtrar las colisiones)).
                  SPACEADDCOLLISIONHANDLER
                  SPACEREMOVECOLLISIONHANDLER
                  Ejemplo de handler presolve, postsolve, separate e inicia.

test12          Simulando objeto que cae en un líquido
                  addInanimateShape
                  SPACEADDCOLLISIONHANDLER
                  GETARBITERPOINT
                  MODARBITERPROCESSA
                  ResetForces
                  ApplyForce
                  DefBodyP
                  cpfclamp
                  lphysics.collisionType
                  updateVelocity

test13          Lisa de cuerpos colgados y destrucción de constraints al superar un umbral en la fuerza aplicada (Destrucción de uniones y resortes)
                  ADDSLIDEJOINT
                  DEFCONSTRAINTF
                  CONSTRAINTSETPOSTSOLVEFUNC
                  RemoveConstraint
                  getConstraintFatherA
                  getConstraintFatherB
                  CP_C_MAXFORCE
                  GETCONSTRAINTF
                  SpaceGetCurrentTimeStep
                  constraintGetImpulse

test14          Mover un cuerpo y hacer que se vaya frenando con el tiempo
                  APPLYIMPULSE
                  gphysics.damping

test15        Simulando una soga
                  APPLYIMPULSE
                  addPivotJoint2
                  WORLD2LOCAL

test16        Creación automática de cuerpos convexos
                         CALCULATECONVEXBODY

Link de descarga en el primer post.

Saludos.
Title: Re: CHIPMUNK en bennu
Post by: peterpollito on January 26, 2012, 11:14:40 AM
ya no va el link de la primera página Prg
Title: Re:CHIPMUNK en bennu
Post by: l1nk3rn3l on February 01, 2012, 07:59:06 PM

:)



http://www.mediafire.com/?yalpa69y4267bf1 (http://www.mediafire.com/?yalpa69y4267bf1)
Title: Re:CHIPMUNK en bennu
Post by: peterpollito on February 01, 2012, 09:13:12 PM
genial gracias.
Title: Re:CHIPMUNK en bennu
Post by: Prg on August 12, 2012, 09:14:56 PM
Hola!!

mmm... ¡cuánto tiempo desde la última visita?

Estuve un poco ocupado en mi último semestre de materias pero durante estas vacaciones escribí un poco de código para la librería y quiero mostrar un poco lo que he estado haciendo:

-Corregida la generación de convexHull, ahora se usa un algoritmo que viene en la nueva versión de Chipmunk...
-Se hacen pruebas de algoritmos que buscan una representación poligonal... El que estoy usando para esta versión (INESTABLE quizás) no es muy bueno, si alquien me puede aconsejar algún algoritmo que funcione mejor se le agradecería y si lo programa más (Estoy en tesis y comenzaré las prácticas en una semana, no me queda tanto tiempo).
-Se hacen pruebas de algoritmos de simulación de líquidos...  (regalo para Peter pollo, pero no se si le guste o si era lo que pedía)... El problema está en el algoritmo de pintado... estoy ahorita haciéndolo por fuerza bruta usando la función de metaballs, sin embargo es muy lento y no se hasta cuándo podré hacerlo de otra forma...

Entre los test se encuentran lo siguiente:

test17         simulación de soga.

test16        Creación automática de cuerpos convexos
                         CALCULATECONVEXBODY

test18        Creación de cuerpos a partir de gráfico  (Le pasas un gráfico y te devuelve una serie de puntos que formarán lineas para generar el terreno). El algoritmo usado no me gusta, se aceptan sugerencias. Si alguien quiere ver cómo funciona el algoritmo y le da flojera leerse el automGenTerr.c puede leer el código en matlab de la carpeta reduccion de bordes.

test19        Simulación y pintado de agua...  Ok, si alguien quiere ayudar a mejorar el algoritmo de pintado se aceptan sugerencias y ayuda en codificación. Hay código de matlab en la carpeta agua y código C en agua.c.  El link que me gustó para realizar el pintado es: http://www.niksula.hut.fi/~hkankaan/Homepages/metaballs.html y hay un código en pyton para entender el algoritmo...

link de descarga de la versión QUIZÁ INESTABLE de la librería con todos los cambios actuales y los ejemplos:

http://www.mediafire.com/?y32pmav2icp2202
Title: Re:CHIPMUNK en bennu
Post by: KeoH on August 12, 2012, 09:51:50 PM
Estupendo trabajo Prg, estoy deseando meterle mano a esta libreria xDD me gustaria empezar a practicar con ella pronto :)
Title: Re:CHIPMUNK en bennu
Post by: JaViS on August 13, 2012, 02:54:47 AM
Buenisimo


ya tengo muchas ganas de hacer un plataformas con esta libreria!
Title: Re:CHIPMUNK en bennu
Post by: Prg on August 19, 2012, 03:13:58 PM
Quote from: JaViS on August 13, 2012, 02:54:47 AM
Buenisimo


ya tengo muchas ganas de hacer un plataformas con esta libreria!

Si vas a hacer plataformas te recomiendo que antes revises los callback (test 11).

En los plataformas es común que puedas acceder a pisos que están sobre tí solo saltando pero cuando ya estás en el piso no puedes bajar, o lo haces mediante la combinación de algunas teclas. Estos filatrados de colisiones se pueden realizar mediante el uso de callbacks de forma muy sencilla.

Saludos
Title: Re:CHIPMUNK en bennu
Post by: FreeYourMind on September 24, 2012, 08:17:52 PM
Hola Prg.

Me gustaria saber como has creado el .cpt del ejemplo 10, o sea, como has mapeado/obtenido las coordenadas de las durezas del mapa ?

La libreria no puede funcionar por ejemplo pasando un mapa de durezas para crear una superficie y que ella detecte el color y a partir de ahí ya haga las colisiones entre objetos con esta superficie ? O es necessario tener un fichero .cpt con puntos de control ?

muchas gracias
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on January 13, 2013, 02:29:56 AM
Hola, he estado probando todos los ejemplos que trae la librería y me han encantado, pienso que estaría muy muy bien mantener este modulo como oficial, da mucho de si para un lenguaje como BennuGD simplificando al máximo muchas cosas.


Muchas gracias al autor por compartirla, está siendo uno de mis entretenimientos principales estos días, mola mucho.

Title: Re:CHIPMUNK en bennu
Post by: kim-elet-o on January 13, 2013, 07:28:54 PM
Hola, estoy por aqui de nuevo a las andadas.

Quiero probar Chipmunk para Bennugd,  mi sistema operativo es Ubuntu 12.04, estoy intentando compilar los ejemplos en prg con el compilador de BennuGD, y al hacerlo me salta el error de que no encuentra la libreria mod_chipmunk a pesar que esta en el directorio donde se encuentran dichos ejemplos, he probado de ponerle rutas relativas y absolutas, en version windows y linux, y sigue dando error.

Hay que poner la libreria en algun lugar determinado? se puede esta instalar mediante el ppa que mantiene Josebita?, si es asi como se hace?. Gracias de antemano.


Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on January 13, 2013, 09:03:24 PM
dependencias y/o nombre de la .so no puede ser cambiado.
Title: Re:CHIPMUNK en bennu
Post by: josebita on January 17, 2013, 12:17:07 AM
Quote from: kim-elet-o on January 13, 2013, 07:28:54 PM
Hola, estoy por aqui de nuevo a las andadas.

Quiero probar Chipmunk para Bennugd,  mi sistema operativo es Ubuntu 12.04, estoy intentando compilar los ejemplos en prg con el compilador de BennuGD, y al hacerlo me salta el error de que no encuentra la libreria mod_chipmunk a pesar que esta en el directorio donde se encuentran dichos ejemplos, he probado de ponerle rutas relativas y absolutas, en version windows y linux, y sigue dando error.

Hay que poner la libreria en algun lugar determinado? se puede esta instalar mediante el ppa que mantiene Josebita?, si es asi como se hace?. Gracias de antemano.
De momento la chipmunk no está en mi PPA, aunque estoy en ello.
Hasta entonces, para que en Linux te funcione con la librería en el mismo directorio, prueba a establecer la variable de entorno LD_LIBRARY_PATH al directorio donde tengas la ".so", a ver si funciona.
Title: Re:CHIPMUNK en bennu
Post by: kim-elet-o on January 17, 2013, 07:24:38 PM
Gracias Josebita por tu trabajo, voy a probar lo de la variable de entorno, haber que tal.

Perfecto, funciona, muchisimas gracias, este fin de semana me pondre manos a la obra.
Title: Re:CHIPMUNK en bennu
Post by: Kalas on January 18, 2013, 04:21:42 PM
Buenas!!! Disculpen la pregunta tan anticuada, aun soy un novato -3-  pero siempre me queda dudas, en el tuto de oskar esto de  kiere decir que chipmunk aun en este año es software libre? esque se ajusta mucho al motor que quiero pero prefiero que las cosas que van al mismo estilo de bennugd :D
Title: Re:CHIPMUNK en bennu
Post by: Prg on January 18, 2013, 09:54:22 PM
La librería en C de chipmunk tiene dos versiones. Una es versión free y la otra es pro y es de paga. Aquí se usa la free que viene con la siguiente licencia (Es código abierto y gratis)

Quote
Copyright (c) 2007 Scott Lembcke and Howling Moon Software

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


La parte que yo escribí para adaptarla a Bennu es también gratis y código abierto. De licencias no se mucho y lo he liberado así:

Quote*  Copyright (c) 2010-2011 Prg orlando8nov@yahoo.com.mx
*
*  This file is part of mod_chipmunk, a Chipmunk physics binding for BennuGD.
*
*  This software is provided 'as-is', without any express or implied
*  warranty. In no event will the authors be held liable for any damages
*  arising from the use of this software.
*
*  Permission is granted to anyone to use this software for any purpose,
*  including commercial applications, and to alter it and redistribute it
*  freely, subject to the following restrictions:
*
*     1. The origin of this software must not be misrepresented; you must not
*     claim that you wrote the original software. If you use this software
*     in a product, an acknowledgment in the product documentation would be
*     appreciated but is not required.
*
*     2. Altered source versions must be plainly marked as such, and must not be
*     misrepresented as being the original software.
*
*     3. This notice may not be removed or altered from any source
*     distribution.
*
*/

Que yo sepa no debes tener ningún problema.

Saludos


Title: Re:CHIPMUNK en bennu
Post by: Kalas on January 20, 2013, 12:00:10 AM
Muchas gracias!! apenas me introduzco a este mundo de bennu que realmente esta genial aunque antes ya habia empezado en fenix :D
Title: Re:CHIPMUNK en bennu
Post by: master on January 26, 2013, 04:34:14 AM
Estoy probando la PhysicsMotionAPI y me doy cuenta que en linux(ubuntu) la mod_chipmunk esta desactualizada o algo no funciona como debería, ya que los ejemplos no funcionan como muestra en los videos (en windows si que funcionan), y al intentar correr el ejemplo 4 y 6 me manda el siguiente mensaje:

APIentity.prg:253: error: Incorrect number of parameters. Function: REMOVECONSTRAINT MinParams: 2. ( token error: "(" ).


Al parecer hay un problema con los parametros de "Removeconstraint" que en la versión de windows no sucede.

Otra cosa es que debajo de la pelota que mueve el usuario, hay una linea que no se quita y gira con la pelota (como una tangente)
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on January 26, 2013, 02:14:25 PM
Si mal no recuerdo la función que te da error en la ayuda que redactó Prg explicaba que los parámetros son


primero: el ID del proceso al que pertenece el contraint o joint.
segundo: el ID del constraint o joint en si mismo.


modifica la función  Physics_entity_kill_joint() en el archivo APIentity.prg de esta manera:



function Physics_entity_kill_joint( int id_, int * id_joint );
begin
   RemoveConstraint( id_, *id_joint );      // borrar constraint..
   *id_joint = 0;                  // resetear variable que apuntaba al constraint..
   return(0);
end


Y ahora en vez de pasarle unicamente el id del joint pasale primero el ID del proceso al que pertenece el joint y como segundo parámetro el ID de joint, debería funcionarte bien.
En cualquier caso, la versión sin el ID del proceso es mas interesante por que es mas automática jeje, haber si pasa por aquí Prg y comenta algo sobre el tema.  ;)
Title: Re:CHIPMUNK en bennu
Post by: Prg on January 29, 2013, 06:38:48 PM
Quote from: master on January 26, 2013, 04:34:14 AM
Estoy probando la PhysicsMotionAPI y me doy cuenta que en linux(ubuntu) la mod_chipmunk esta desactualizada o algo no funciona como debería, ya que los ejemplos no funcionan como muestra en los videos (en windows si que funcionan), y al intentar correr el ejemplo 4 y 6 me manda el siguiente mensaje:

APIentity.prg:253: error: Incorrect number of parameters. Function: REMOVECONSTRAINT MinParams: 2. ( token error: "(" ).


Al parecer hay un problema con los parametros de "Removeconstraint" que en la versión de windows no sucede.

Otra cosa es que debajo de la pelota que mueve el usuario, hay una linea que no se quita y gira con la pelota (como una tangente)

No he podido compilar la versión de linux de la librería, por eso la librería está desactualizar en estos SO. Si alguien nos ayuda a compilar esto se resolvería... También podría instalar bennu para linux en mi pc, pero la versión de ubuntu que tengo ya es antigua y cuando quiero instalar bennu me aparecen algunos errores que no había podido resolver hace algunos meses... No he probado recientemente...

Por otro lado, he agregado el cambio que me pediste Erksone. He tardado porque me tocó acomodar todo el entorno de compilación de bennu y también aproveché para compilar con la nueva versión de chipmunk...

Te dejo el link de la librería en el primer mensaje del tema.

Saludos

Pd: La creación automática de terrenos y el ejemplo de agua no están funcionando. Los demás los he probado y funcionan bien.

Title: Re:CHIPMUNK en bennu
Post by: Erkosone on January 29, 2013, 06:45:54 PM
Vaya!


Muchas gracias por el añadido!


Voy a probarlo.
Title: Re:CHIPMUNK en bennu
Post by: josebita on January 30, 2013, 09:12:49 AM
Quote from: master on January 26, 2013, 04:34:14 AM
Estoy probando la PhysicsMotionAPI y me doy cuenta que en linux(ubuntu) la mod_chipmunk esta desactualizada o algo no funciona como debería, ya que los ejemplos no funcionan como muestra en los videos (en windows si que funcionan), y al intentar correr el ejemplo 4 y 6 me manda el siguiente mensaje:

APIentity.prg:253: error: Incorrect number of parameters. Function: REMOVECONSTRAINT MinParams: 2. ( token error: "(" ).


Al parecer hay un problema con los parametros de "Removeconstraint" que en la versión de windows no sucede.

Otra cosa es que debajo de la pelota que mueve el usuario, hay una linea que no se quita y gira con la pelota (como una tangente)
¿Con qué versión?
En ppio la versión que está en mi PPA debería ser la última que hay disponible, salvo que me equivocara.
Title: Re:CHIPMUNK en bennu
Post by: Prg on January 30, 2013, 11:57:46 PM
Hola. El día de hoy me puse a programar lo de aproximación poligonal. Ha quedado algo muy bueno así que he preparado algunos videos:


https://www.youtube.com/watch?v=FAc4jzqIm5M

En este video primero pruebo varios umbrales y muestro el resultado al aplicar el algoritmo. Después modifico el mapa del terreno y muestro el resultado.


https://www.youtube.com/watch?v=Pn-6ycGEfrk

Este video es el test de la simulación de agua. El pintado de agua es muy caro, así que actualmente no está listo para usarse en un juego.

https://www.youtube.com/watch?v=tvtm_bjht7k

Este video es un test de juego con sonidos y física. Es parte de un proyecto que hice hace tiempo para mi Servicio Social en mi universidad.

También comparto el link de descarga de esta versión:
http://www.mediafire.com/?r4yjff30tysofa9
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on January 31, 2013, 12:10:07 AM
puf! he quedado con la boca abierta eso del agua es genial...

pregunta, porque el 3er video el que parece un angrybird, los objetos se mueven como en camara lenta, como si estuvieran en un lugar con poca gravedad? a pesar de que la bola cuando la arrastras se mueva a velocidad rapida? puedes poner un test con una gravedad mas realista (si es que es la gravedad, claro)?
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on January 31, 2013, 05:35:41 AM
El curro que has metido en la parte de vectorizar un grafico es flipante, realmente bueno, gracias por compartirlo con la comunidad y gracias por compartir el source, es algo muy interesante.
Title: Re:CHIPMUNK en bennu
Post by: gecko on January 31, 2013, 09:10:23 AM
impresionante! que buena onda ver andar bennu asi!
Title: Re:CHIPMUNK en bennu
Post by: peterpollito on January 31, 2013, 11:52:13 AM
Simplemente brutal.
Title: Re:CHIPMUNK en bennu
Post by: josebita on January 31, 2013, 08:45:46 PM
Prg, ¿contra qué versión estás compilando ésta última mod_chipmunk?

Quiero actualizar la mod_chipmunk que viene con Android y necesitaré compilar la Chipmunk tb. Veo que la última disponible es la 6.1.3
Title: Re:CHIPMUNK en bennu
Post by: Prg on January 31, 2013, 08:57:51 PM
Quote from: SplinterGU on January 31, 2013, 12:10:07 AM
puf! he quedado con la boca abierta eso del agua es genial...

pregunta, porque el 3er video el que parece un angrybird, los objetos se mueven como en camara lenta, como si estuvieran en un lugar con poca gravedad? a pesar de que la bola cuando la arrastras se mueva a velocidad rapida? puedes poner un test con una gravedad mas realista (si es que es la gravedad, claro)?
Splinter, subí la gravedad a 500, la anterior era 50. También le puse más peso a la pelota y modifiqué un poco las fuerzas de los objetos.

Te paso el video

http://www.youtube.com/watch?v=GYBUKxIh4TE (http://www.youtube.com/watch?v=GYBUKxIh4TE)

Quote from: josebita on January 31, 2013, 08:45:46 PM
Prg, ¿contra qué versión estás compilando ésta última mod_chipmunk?

Quiero actualizar la mod_chipmunk que viene con Android y necesitaré compilar la Chipmunk tb. Veo que la última disponible es la 6.1.3

Chipmunk-6.1.2 . No sabía que había 6.1.3 ...  Deja reviso esto y si es necesario compilamos con esta otra. ¿Chipmunk está en android? He probado tu packager para android, me ha gustado mucho, pero el ratón no me ha funcionado... luego te comentaré en el hilo correspondiente, pero he esperado porque se que aún trabajas en ello, no quiero preguntar por algo que aún no está implementado... La mod multi no la encontré en windows... Bueno, Dejar reviso esto.


Saludos :)

pd: ya revisé... en la página viene hasta la  6.1.2 ... Este es el link http://chipmunk-physics.net/downloads.php
Title: Re:CHIPMUNK en bennu
Post by: josebita on January 31, 2013, 09:14:44 PM
Quote from: Prg on January 31, 2013, 08:57:51 PM
Quote from: josebita on January 31, 2013, 08:45:46 PM
Prg, ¿contra qué versión estás compilando ésta última mod_chipmunk?

Quiero actualizar la mod_chipmunk que viene con Android y necesitaré compilar la Chipmunk tb. Veo que la última disponible es la 6.1.3

Chipmunk-6.1.2 . No sabía que había 6.1.3 ...  Deja reviso esto y si es necesario compilamos con esta otra. ¿Chipmunk está en android? He probado tu packager para android, me ha gustado mucho, pero el ratón no me ha funcionado... luego te comentaré en el hilo correspondiente, pero he esperado porque se que aún trabajas en ello, no quiero preguntar por algo que aún no está implementado... La mod multi no la encontré en windows... Bueno, Dejar reviso esto.


Saludos :)

pd: ya revisé... en la página viene hasta la  6.1.2 ... Este es el link http://chipmunk-physics.net/downloads.php (http://chipmunk-physics.net/downloads.php)
Si la bajas pone en el fichero descargado pone 6.1.3, pero en la descarga pone 6.1.2, ¡qué lío!

Y sí, las versiones de Bennu para Android que ya hay liberadas (las que vienen con versiones anteriores del packager) vienen con una versión anterior de la mod_chipmunk integrada por defecto.
Las librerías no oficiales que vienen con mi BennuGD para Android son: mod_chipmunk, mod_multi y mod_curl, lo demás es estándar.
Quisiera actualizar la mod_chipmunk del PPA y la que viene con Android a la última, porque la verdad es que merece la pena.

Sobre la mod_multi en Windows, imagino que tampoco has buscado mucho :)
http://code.google.com/p/bennugd-monolithic/downloads/detail?name=bennugd-module-multi-fake_win32.7z&can=2&q= (http://code.google.com/p/bennugd-monolithic/downloads/detail?name=bennugd-module-multi-fake_win32.7z&can=2&q=)

Y ahora mismo estoy haciendo algunos cambios a SDL/BennuGD pero las cosas que traerá la nueva versión son:
* Soporte nativo para joysticks por bluetooth y USB (OUYA y similares). Pixel tiene por ahí una copia del ripollés con soporte para joysticks.
* Soporte nativo para ratones. La idea es que el usuario pueda -si quiere- distinguir el ratón del touch.
* Arreglos para el problema de las GPU Adreno (¿?)
* Quizás un nuevo módulo para acceso a sensores. De esa forma podréis acceder a los datos de todos los sensores del teléfono: acelerómetros, giroscopios, magnetómetro (brújula), GPS... El API probablemente será similar al de los joysticks. Tengo que escribir un nuevo API para sensores para SDL, así que puede que salga y puede que no, pero creo que sería muy interesante.
Title: Re:CHIPMUNK en bennu
Post by: Prg on January 31, 2013, 10:41:52 PM
Tienes razón... ya revisé y sí hay nueva versión. Los cambios son pocos:

CHANGES SINCE 6.1.2:
* BUG: Fixed a couple of very specific but fatal bugs that occur when sleeping is enabled and filtering collisions.
* BUG: Fixed an issue with cpvslerp() between very similar vectors.
* BUG: Fixed an issue with grab friction in ChipmunkMultiGrab. (Pro only)
* MISC: Implemented the cpConstraintGetImpulse() functionality for spring joints.
* MISC: Added more functions to chipmunk_ffi.h

Qué te parece si compilo con esta versión, doy una revisada que no haya problemas y subo esta versión.

Gracias por la mod_multi. je je je.. No la había visto... Tu packager está genial...

Ok...
Compilada...

http://www.mediafire.com/?5uadq5zljhurzqv

Agregué:

Quotevoid cpBodyActivateStatic(cpBody *body, cpShape *filter) – Similar in function to cpBodyActivate(). Activates all bodies touching body. If filter is not NULL, then only bodies touching through filter will be awoken.
void cpBodySleepWithGroup(cpBody *body, cpBody *group)
When objects in Chipmunk sleep, they sleep as a group of all objects that are touching or jointed together. When an object is woken up, all of the objects in it's group are woken up. cpBodySleepWithGroup() allows you group sleeping objects together. It acts identically to cpBodySleep() if you pass NULL as group by starting a new group. If you pass a sleeping body for group, body will be awoken when group is awoken. You can use this to initialize levels and start stacks of objects in a pre-sleeping state

quedaron así:

    {"ACTIVATESTATIC" , "II",   TYPE_INT, modActivateStatic},  parámetros:
id -> proceso que se activará
shape-> lphysics.shape que se usará como filtro, 0 si cualquier shape del proceso...
    {"SLEEPWITHGROUP" , "II",   TYPE_INT, modSleepWithGroup },
recibe dos id de procesos...

Nota:
Para quienes descargaron La versión anterior de mod_chipmunk, pueden seguir con ella. Esta tiene cambios mínimos y sólo se adjunta aquí para que la versión de linux (de Josebita) y la de windows estén a la par...

Saludos

Title: Re:CHIPMUNK en bennu
Post by: josebita on January 31, 2013, 11:39:12 PM
Quote from: Prg on January 31, 2013, 10:41:52 PM
Tienes razón... ya revisé y sí hay nueva versión. Los cambios son pocos:

CHANGES SINCE 6.1.2:
* BUG: Fixed a couple of very specific but fatal bugs that occur when sleeping is enabled and filtering collisions.
* BUG: Fixed an issue with cpvslerp() between very similar vectors.
* BUG: Fixed an issue with grab friction in ChipmunkMultiGrab. (Pro only)
* MISC: Implemented the cpConstraintGetImpulse() functionality for spring joints.
* MISC: Added more functions to chipmunk_ffi.h

Qué te parece si compilo con esta versión, doy una revisada que no haya problemas y subo esta versión.

Gracias por la mod_multi. je je je.. No la había visto... Tu packager está genial...

Ok...
Compilada...

http://www.mediafire.com/?5uadq5zljhurzqv

Agregué:

Quotevoid cpBodyActivateStatic(cpBody *body, cpShape *filter) – Similar in function to cpBodyActivate(). Activates all bodies touching body. If filter is not NULL, then only bodies touching through filter will be awoken.
void cpBodySleepWithGroup(cpBody *body, cpBody *group)
When objects in Chipmunk sleep, they sleep as a group of all objects that are touching or jointed together. When an object is woken up, all of the objects in it's group are woken up. cpBodySleepWithGroup() allows you group sleeping objects together. It acts identically to cpBodySleep() if you pass NULL as group by starting a new group. If you pass a sleeping body for group, body will be awoken when group is awoken. You can use this to initialize levels and start stacks of objects in a pre-sleeping state

quedaron así:

    {"ACTIVATESTATIC" , "II",   TYPE_INT, modActivateStatic},  parámetros:
id -> proceso que se activará
shape-> lphysics.shape que se usará como filtro, 0 si cualquier shape del proceso...
    {"SLEEPWITHGROUP" , "II",   TYPE_INT, modSleepWithGroup },
recibe dos id de procesos...

Nota:
Para quienes descargaron La versión anterior de mod_chipmunk, pueden seguir con ella. Esta tiene cambios mínimos y sólo se adjunta aquí para que la versión de linux (de Josebita) y la de windows estén a la par...

Saludos


Dame un día o dos para que la suba al PPA. ¿Hay que cambiar alguna cabecera como había que hacer antes? Es que para el PPA no puedo compilar con el codeblocks y compilo con un script de bash.

En fin, muchas gracias y ánimo con la librería.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 01, 2013, 12:51:10 AM
En lugar de cambiar la cabecera compila con un define así:
CP_USE_DOUBLES=0

creo que se debe hacer

-DCP_USE_DOUBLES=0 o algo así...

Tanto la libchipmunk como la mod_chipmunk deben llevar este define así. Esto era lo que hacía la cabecera... je je je
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 01, 2013, 09:12:11 AM
Quote from: Prg on February 01, 2013, 12:51:10 AM
En lugar de cambiar la cabecera compila con un define así:
CP_USE_DOUBLES=0

creo que se debe hacer

-DCP_USE_DOUBLES=0 o algo así...

Tanto la libchipmunk como la mod_chipmunk deben llevar este define así. Esto era lo que hacía la cabecera... je je je
Ah, ok.
Se hace así, sí.

En cuanto lo suba al PPA aviso.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 01, 2013, 06:20:54 PM
Quote from: Erkosone on January 31, 2013, 05:35:41 AM
El curro que has metido en la parte de vectorizar un grafico es flipante, realmente bueno, gracias por compartirlo con la comunidad y gracias por compartir el source, es algo muy interesante.

Erksone, ayer pensaba que quizá puedas usar el algoritmo del test 18 para tu editor de terrenos. mod_chipmunk genera una lista con los vértices y los almacena en un arreglo, luego desde código bennu se generan los terrenos. Tú puedes aprovechar eso para tu editor.

La ventaja de tu editor sería almacenar en un archivo fuente los puntos, permitir edición y ajustes extras y además podrías agregar objetos que se cargaran como procesos en el juego, asignarles propiedades físicas: fricción, elasticidad, masa, estado (dormidos, despiertos), coordenadas, gráfico, ángulo, etc.

Con ese editor sí que sería muy sencillo hacer un juego... je je

No he visto bien tu proyecto, sólo he leído algunos de los mensajes que lo describen, pero creo que algo de esto te podría servir.
Saludos
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 02, 2013, 12:52:31 AM
Me columpié: BennuGD para Android -aún- no incluye la mod_chipmunk por defecto.

Pero la próxima versión binaria que saque la incluirá.
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 02, 2013, 04:06:45 AM
Quote from: Prg on February 01, 2013, 06:20:54 PM
Quote from: Erkosone on January 31, 2013, 05:35:41 AM
El curro que has metido en la parte de vectorizar un grafico es flipante, realmente bueno, gracias por compartirlo con la comunidad y gracias por compartir el source, es algo muy interesante.

Erksone, ayer pensaba que quizá puedas usar el algoritmo del test 18 para tu editor de terrenos. mod_chipmunk genera una lista con los vértices y los almacena en un arreglo, luego desde código bennu se generan los terrenos. Tú puedes aprovechar eso para tu editor.

La ventaja de tu editor sería almacenar en un archivo fuente los puntos, permitir edición y ajustes extras y además podrías agregar objetos que se cargaran como procesos en el juego, asignarles propiedades físicas: fricción, elasticidad, masa, estado (dormidos, despiertos), coordenadas, gráfico, ángulo, etc.

Con ese editor sí que sería muy sencillo hacer un juego... je je

No he visto bien tu proyecto, sólo he leído algunos de los mensajes que lo describen, pero creo que algo de esto te podría servir.
Saludos


Hola Prg, he mirado el ejemplo que usa el generador de terrenos, el algoritmo es tuyo? podrías explicarlo?
Yo tengo uno para vectorizar sprites que estoy integrando en el api que he montado, pero sería interesante escuchar como funciona el tuyo, no en código si no en pseudo código o con una explicación de los pasos que siges para lograrlo, en cuanto tenga implementado el mio en el api si quieres podemos compartir conocimientos para ver la forma mas optima de hacerlo, aunque viendo el resultado en velocidad del tuyo está claro que es bastante bueno.


Lo que estoy montando yo es algo un poco distinto pero similar en esencia, consta de 2 funciones, la primera y mas importante es esta:
Physics_sprite_calculate_shape( int file, int graph );
Esta función crea la lista de vectores para un gráfico pasado como parámetro y la almacena en la propia lista de C_Point del gráfico para usarse posteriormente.


La segunda la montaré mas adelante cuando tenga esta completamente funcional, es la que crea el shape para el proceso y esto tengo que investigarlo mas a fondo ;)
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 02, 2013, 08:00:12 PM
Ya deberíais tener la última mod_chipmunk disponible en mi PPA. Avisad si encontrais algún problema.
Title: Re:CHIPMUNK en bennu
Post by: master on February 03, 2013, 01:29:32 AM
Estaría bien hacer el port de la versión actual a caanoo y wiz, yo tengo caanoo, pero no se como se hace.

me imagino que se debe tener el SDK y el entorno de desarrollo, pero no se como se hace, ni como se debe compilar
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 03, 2013, 02:46:50 AM
Quote from: josebita on February 02, 2013, 08:00:12 PM
Ya deberíais tener la última mod_chipmunk disponible en mi PPA. Avisad si encontrais algún problema.

Gracias :)

Erksone, claro que te comentaré el algoritmo. De hecho ya lo hice a grandes rasgos en tu hilo.

De forma específica es así:

-Calculo los bordes, uso un sistema similar a la morfología matemática, pero lo acelero un poco más:

for(i=1;i<anc;i++){
            for (j=1;j<alt;j++){
                gr_put_pixel( map, i,  j ,I(mapa1, i,j) && !( I( mapa1, i,j-1 ) &&
                                                              I( mapa1, i-1,j ) && I( mapa1, i+1,j ) &&
                                                              I( mapa1, i,j+1 )
                                                            )
                             );
            }
        }



-Limpio los bordes para dejarlos 8-conexos, eliminando en lo posible los vecinos en las verticales y horizontales innecesarios (uso unas máscaras y a chi para ello)

for(i=1;i<anc;i++){
            for (j=1;j<alt;j++){
                if (gr_get_pixel( map, i,j )==1){
                    chi= (gr_get_pixel( map,i+1,j)!=gr_get_pixel( map,i,j-1))+ (gr_get_pixel( map,i,j-1)!=gr_get_pixel( map,i-1,j))+ (gr_get_pixel( map,i-1,j)!=gr_get_pixel( map,i,j+1))+ (gr_get_pixel( map,i,j+1)!=gr_get_pixel( map,i+1,j))+
                         2*(
                            ((!gr_get_pixel( map,i+1,j))&gr_get_pixel( map,i+1,j-1)&(!gr_get_pixel( map,i,j-1)))+((!gr_get_pixel( map,i,j-1))&gr_get_pixel( map,i-1,j-1)&(!gr_get_pixel( map,i-1,j)))+((!gr_get_pixel( map,i-1,j))&gr_get_pixel( map,i-1,j+1)&(!gr_get_pixel( map,i,j+1)))+((!gr_get_pixel( map,i,j+1))&gr_get_pixel( map,i+1,j+1)&(!gr_get_pixel( map,i+1,j)))
                            );
                    if (chi==2 &&
                        (   (gr_get_pixel( map,i-1,j)==1 && gr_get_pixel( map,i,j+1)==1) ||
                            (gr_get_pixel( map,i-1,j)==1 && gr_get_pixel( map,i,j-1)==1) ||
                            (gr_get_pixel( map,i+1,j)==1 && gr_get_pixel( map,i,j+1)==1) ||
                            (gr_get_pixel( map,i+1,j)==1 && gr_get_pixel( map,i,j-1)==1)
                         )
                        )
                    gr_put_pixel( map, i,  j ,0);
                }

            }
        }


-Luego recorro cada borde encontrado, almacenando sus coordenadas en arreglos dinámicos. 

Tengo una función de calculo de centroide,  una de cálculo de distancia euclidiana y una de cálculo de distancia de un punto a una recta.

Reviso si el primero punto de la lista y el último están cerca (menos a 5 pixeles de distancia manhattan).

INLINE int iguales(cpVect *a, cpVect *b,float c){
    return (fabs(a->x - b->x)+fabs(a->y - b->y))<c;
}

Si la distancia es menor a 5, considero que los bordes son figura cerrada, si no es así es una linea.

-------Figura Cerrada
Calcular centroide
Seleccionar el punto con mayor distancia al centroide como primer punto de la aproximación.
Selecicionar el punto más alejado al anterior como el segundo.
Considerar una recta cuyos puntos extremos sean estos dos.
Seleccionar el punto con mayor distancia a la izquierda de la recta hacia esta. Si es mayor a un umbral agregar a la aproximación poligonal.
Seleccionar el punto con mayor distancia a la derecha de la recta. Proceder igual.
Si se agregan nuevos puntos, generar nuevas rectas entre ellos (tendríamos ya un cuadrilátero que une los cuatro puntos). Calcular distancias nuevamente pero ahora sólo por los puntos adyacentes externos (viene explicado en el pdf que te pasé). El algoritmo termina cuando ya no hay recta que tenga puntos adyacentes que superen el umbral.


-------Figura abierta
Se consideran los primeros dos puntos los extremos de la lista.
Se genera una recta entre estos dos puntos y se procede como en el caso anterior.


Para finalizar...
Los puntos se agregan a una nueva lista y se exportan...

Esto es el algoritmo...

Saludos
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 03, 2013, 04:43:34 AM
Hijo como mola, veo que tienes bastante claro el tema trigonométrico, da gusto tener gente así por aquí.
Muchas gracias por la explicación, siempre da ideas escuchar los métodos de los demás ;)
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 03, 2013, 10:34:44 AM
para recorrer el mapa si lo vas a hacer en sentido vertical y horizontal, barriendo filas 1 a 1 (o columnas) no usar gr_get_pixel, sino acceder directamente al buffer de video.... ir procesando 1 fila a la  vez, en lugar de 1 columna y recorrer todas las filas, esto sera mas rapido.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 03, 2013, 04:12:11 PM
Quote from: SplinterGU on February 03, 2013, 10:34:44 AM
para recorrer el mapa si lo vas a hacer en sentido vertical y horizontal, barriendo filas 1 a 1 (o columnas) no usar gr_get_pixel, sino acceder directamente al buffer de video.... ir procesando 1 fila a la  vez, en lugar de 1 columna y recorrer todas las filas, esto sera mas rapido.
Sip, tienes razón. gr_get_pixel tiene multiplicaciones, la suma del desplace y las revisiones de los límites. Acceder al buffer directamente me permitirá usar sólo suma para moverme, sin ningúna revisión, aunque el tema de la profundidad me tocará trabajarlo a mí, pero seguro se optimizará muchísimo más con alguna variable de avance inicializada al principio en el caso de 8, 16 y 32 bits; el caso de gráficos de 1bit requerirá un código extra...
Haré el cambio la próxima vez que entregue versión. Viendo que todo funciona hay que optimizarlo :)

Muchas Gracias por la sugerencia :)
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 03, 2013, 05:18:37 PM
Acabo de probar la mod_chipmunk de mi PPA y parece que va bastante bien; incluso la simulación del agua funciona a bastante buen ritmo en mi portátil :)
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 03, 2013, 05:30:27 PM
Supongo que estás en linux, podrías probar si el ultimo ejemplo que acompaña el API que he colgado funciona correctamente en linux?
Supongo que si, pero tengo curiosidad ya por asegurarme.


Bueno.. si tienes tiempo  ;D
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 03, 2013, 06:28:51 PM
Quote from: Erkosone on February 03, 2013, 05:30:27 PM
Supongo que estás en linux, podrías probar si el ultimo ejemplo que acompaña el API que he colgado funciona correctamente en linux?
Supongo que si, pero tengo curiosidad ya por asegurarme.


Bueno.. si tienes tiempo  ;D
Si es el test20, aquí lo tienes:
http://www.youtube.com/watch?v=ClauPLL1ba0&feature=youtu.be

He grabado el vídeo con lo primero que tenía a mano (VLC) y se ve un poco raro, pero en vivo va muy bien.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 03, 2013, 07:05:02 PM
Quote from: josebita on February 03, 2013, 05:18:37 PM
Acabo de probar la mod_chipmunk de mi PPA y parece que va bastante bien; incluso la simulación del agua funciona a bastante buen ritmo en mi portátil :)

El problema del agua es el pintado.
El algoritmo de simulación se basa en partículas bajo el sistema SPH y es rápido, pero el pintado usa una función de cálculo de campo eléctrico y es muy caro. Hay métodos de aceleración de este algoritmo (aseguran acelerarlo 200 veces), pero lo intenté programar y a mí no me funcionó; no tenía mucho tiempo de programarlo así que no revisé que todo estuviera bien...

Está en pruebas y todavía no esá listo para usarse...

Me alegro que funcione todo bien en linux... Excelentes noticias. Gracias por compilarlo y probarlo.
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 03, 2013, 07:10:54 PM
Quote from: Prg on February 03, 2013, 07:05:02 PM
Me alegro que funcione todo bien en linux... Excelentes noticias. Gracias por compilarlo y probarlo.
Nada, según vayas subiendo versiones nuevas de la mod_chipmunk las iré subiendo a mi PPA. Creo que la librería es tremendamente interesante y merece la pena el trabajo para que la gente la pueda usar de forma cómoda.
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 03, 2013, 08:15:42 PM
no habia visto tu video nuevo... pregunto, por que la gravedad a 500? no se puede poner la gravedad en valores realistas? por ejemplo, 9,78 mt/s y se comportaria como la gravedad de la tierra?
por otro lado, la pelota veo que no se mueve mucho? como se calcula la masa de un cuerpo? la pones tu? porque o la pelota tiene mucha masa o la catapulta poco peso...

la prueba esta genial, pero no lo veo muy realista... me hace dudar esto sobre la chipmunk.
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 03, 2013, 08:46:40 PM
No dudes de la lib Splinter ;)


Las masas las pone el usuario por que es un valor que no se puede automatizar, ya que proviene del tipo de material, la densidad del mismo y la estructura molecular del propio material, un objeto de "hierro" no tiene la misma masa que un objeto de forma exactamente igual pero de "espuma" o de "paja".


Todo depende de la aproximación que haga el usuario sobre la masa "y su centro de gravedad" a un objeto cualquiera, con diferentes valores de masa se pueden apreciar comportamientos en la simulación completamente distintos.


Normalmente solemos usar valores de masa al tun tun así a la brava o por aproximación de "lo que a nosotros nos parece correcto.


Existen varias formulas de física clásica que pueden calcular una aproximación muy exacta sobre el "AREA" de un polígono, pero la cosa no es tan simple.. pues con un CG "centro de gravedad" mal ubicado produce efectos muy adversos en el objeto y es casi inutil su uso.




Para las figuras geométricas regulares si que se puede crear una función que devuelva un valor de masa bastante correcto, la función debería calcular el "AREA" de la figura y aplicar una simple multiplicación dependiendo de la densidad molecular del material del que desea que devuelva el valor de masa..


Un ejemplo:


Shape: TYPE_BOX
Sprite Size: 50x50 pixel.
Area = width * heigth;
Mass = Area * molecularDensity_;


Donde la variable molecularDensity_ adopta por ejemplo los siguientes valores prefabricados:
ACERO_ = 0.98;
HIERRO_ = 0.90;
PIEDRA_ = 0.83;
PLASTICO_ = 0.72;
MADERA_ = 0.76;
ESPUMA_ = 0.30;
LOW_DENSITY_MATERIAL_ = 0.11;


Entonces tenemos que la función resultante para un calculo aproximado de la masa de un objeto en la simulación podría ser esta:


function Get_Shape_Mass( file, graph, int material_ );
begin
ancho = map_info(file,graph,g_width);
alto = map_info(file,graph,g_heigth);
area = ancho * alto;
masa = area * material_;
return(masa);
end


Si se crea una tabla de calidad se podría hasta añadir a la mod_chipmunk XD.. esto facilitaría todavía mas si cabe su uso, casi que estoy por añadirlo a la PhysicsMotionAPI  ;D
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 03, 2013, 09:21:31 PM
Quote from: SplinterGU on February 03, 2013, 08:15:42 PM
no habia visto tu video nuevo... pregunto, por que la gravedad a 500? no se puede poner la gravedad en valores realistas? por ejemplo, 9,78 mt/s y se comportaria como la gravedad de la tierra?
por otro lado, la pelota veo que no se mueve mucho? como se calcula la masa de un cuerpo? la pones tu? porque o la pelota tiene mucha masa o la catapulta poco peso...

la prueba esta genial, pero no lo veo muy realista... me hace dudar esto sobre la chipmunk.

La masa la defino yo. Le di 30 kg a la pelota y 1 kg al bloque.
La fuerza de los resortes de la  catapulta también los puse yo.

Lo que pasa es que depende de cúanto mide un pixel en la realidad. En mi caso si digo que un pixel mide 1.962cm, la gravedad que uso es de  9.81 m/s^2

Cada bloque mide 40 pixeles de longitud, así que en la realidad medirían:
40px*1.962cm=78.48 cm
500px*1.962cm=981 cm -> 9.81 m

Aunque los bloques están grandes y su peso es poco, imaginemos un material similar al hielo seco, un poco más pesado...

Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 03, 2013, 10:08:07 PM
Quote from: Erkosone on February 03, 2013, 08:46:40 PM
No dudes de la lib Splinter ;)


Las masas las pone el usuario por que es un valor que no se puede automatizar, ya que proviene del tipo de material, la densidad del mismo y la estructura molecular del propio material, un objeto de "hierro" no tiene la misma masa que un objeto de forma exactamente igual pero de "espuma" o de "paja".


Todo depende de la aproximación que haga el usuario sobre la masa "y su centro de gravedad" a un objeto cualquiera, con diferentes valores de masa se pueden apreciar comportamientos en la simulación completamente distintos.


Normalmente solemos usar valores de masa al tun tun así a la brava o por aproximación de "lo que a nosotros nos parece correcto.


Existen varias formulas de física clásica que pueden calcular una aproximación muy exacta sobre el "AREA" de un polígono, pero la cosa no es tan simple.. pues con un CG "centro de gravedad" mal ubicado produce efectos muy adversos en el objeto y es casi inutil su uso.




Para las figuras geométricas regulares si que se puede crear una función que devuelva un valor de masa bastante correcto, la función debería calcular el "AREA" de la figura y aplicar una simple multiplicación dependiendo de la densidad molecular del material del que desea que devuelva el valor de masa..


Un ejemplo:


Shape: TYPE_BOX
Sprite Size: 50x50 pixel.
Area = width * heigth;
Mass = Area * molecularDensity_;


Donde la variable molecularDensity_ adopta por ejemplo los siguientes valores prefabricados:
ACERO_ = 0.98;
HIERRO_ = 0.90;
PIEDRA_ = 0.83;
PLASTICO_ = 0.72;
MADERA_ = 0.76;
ESPUMA_ = 0.30;
LOW_DENSITY_MATERIAL_ = 0.11;


Entonces tenemos que la función resultante para un calculo aproximado de la masa de un objeto en la simulación podría ser esta:


function Get_Shape_Mass( file, graph, int material_ );
begin
ancho = map_info(file,graph,g_width);
alto = map_info(file,graph,g_heigth);
area = ancho * alto;
masa = area * material_;
return(masa);
end


Si se crea una tabla de calidad se podría hasta añadir a la mod_chipmunk XD.. esto facilitaría todavía mas si cabe su uso, casi que estoy por añadirlo a la PhysicsMotionAPI  ;D

me imagine que no era automatico, pero como en algun momento me parecio leer algun comentario que hablaba de valores automaticos creo que para esto, pregunte, pero quizas me parecio y no fue asi.

por otro lado, esa iba a ser mi sugerencia, tener una variable local que defina el tipo de material.


Quote from: Prg on February 03, 2013, 09:21:31 PM
Quote from: SplinterGU on February 03, 2013, 08:15:42 PM
no habia visto tu video nuevo... pregunto, por que la gravedad a 500? no se puede poner la gravedad en valores realistas? por ejemplo, 9,78 mt/s y se comportaria como la gravedad de la tierra?
por otro lado, la pelota veo que no se mueve mucho? como se calcula la masa de un cuerpo? la pones tu? porque o la pelota tiene mucha masa o la catapulta poco peso...

la prueba esta genial, pero no lo veo muy realista... me hace dudar esto sobre la chipmunk.

La masa la defino yo. Le di 30 kg a la pelota y 1 kg al bloque.
La fuerza de los resortes de la  catapulta también los puse yo.

Lo que pasa es que depende de cúanto mide un pixel en la realidad. En mi caso si digo que un pixel mide 1.962cm, la gravedad que uso es de  9.81 m/s^2

Cada bloque mide 40 pixeles de longitud, así que en la realidad medirían:
40px*1.962cm=78.48 cm
500px*1.962cm=981 cm -> 9.81 m

Aunque los bloques están grandes y su peso es poco, imaginemos un material similar al hielo seco, un poco más pesado...



ahi si que la complicaste o la chipmunk la veo super compleja... vamos, yo pongo gravedad del entorno 9.81, y masa de mi cuerpo N, y la chipmunk deberia hacer el resto, no me parece logico ni facil tener que estar calculando en base al tamaño y demas, cual es la gracia de la chipmunk si no puede hacer eso? bueno, quizas yo lo estoy viendo desde un punto de vista equivocado.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 03, 2013, 10:52:51 PM
Quote from: SplinterGU on February 03, 2013, 10:08:07 PM
Quote from: Erkosone on February 03, 2013, 08:46:40 PM
No dudes de la lib Splinter ;)


Las masas las pone el usuario por que es un valor que no se puede automatizar, ya que proviene del tipo de material, la densidad del mismo y la estructura molecular del propio material, un objeto de "hierro" no tiene la misma masa que un objeto de forma exactamente igual pero de "espuma" o de "paja".


Todo depende de la aproximación que haga el usuario sobre la masa "y su centro de gravedad" a un objeto cualquiera, con diferentes valores de masa se pueden apreciar comportamientos en la simulación completamente distintos.


Normalmente solemos usar valores de masa al tun tun así a la brava o por aproximación de "lo que a nosotros nos parece correcto.


Existen varias formulas de física clásica que pueden calcular una aproximación muy exacta sobre el "AREA" de un polígono, pero la cosa no es tan simple.. pues con un CG "centro de gravedad" mal ubicado produce efectos muy adversos en el objeto y es casi inutil su uso.




Para las figuras geométricas regulares si que se puede crear una función que devuelva un valor de masa bastante correcto, la función debería calcular el "AREA" de la figura y aplicar una simple multiplicación dependiendo de la densidad molecular del material del que desea que devuelva el valor de masa..


Un ejemplo:


Shape: TYPE_BOX
Sprite Size: 50x50 pixel.
Area = width * heigth;
Mass = Area * molecularDensity_;


Donde la variable molecularDensity_ adopta por ejemplo los siguientes valores prefabricados:
ACERO_ = 0.98;
HIERRO_ = 0.90;
PIEDRA_ = 0.83;
PLASTICO_ = 0.72;
MADERA_ = 0.76;
ESPUMA_ = 0.30;
LOW_DENSITY_MATERIAL_ = 0.11;


Entonces tenemos que la función resultante para un calculo aproximado de la masa de un objeto en la simulación podría ser esta:


function Get_Shape_Mass( file, graph, int material_ );
begin
ancho = map_info(file,graph,g_width);
alto = map_info(file,graph,g_heigth);
area = ancho * alto;
masa = area * material_;
return(masa);
end


Si se crea una tabla de calidad se podría hasta añadir a la mod_chipmunk XD.. esto facilitaría todavía mas si cabe su uso, casi que estoy por añadirlo a la PhysicsMotionAPI  ;D

me imagine que no era automatico, pero como en algun momento me parecio leer algun comentario que hablaba de valores automaticos creo que para esto, pregunte, pero quizas me parecio y no fue asi.

por otro lado, esa iba a ser mi sugerencia, tener una variable local que defina el tipo de material.


Quote from: Prg on February 03, 2013, 09:21:31 PM
Quote from: SplinterGU on February 03, 2013, 08:15:42 PM
no habia visto tu video nuevo... pregunto, por que la gravedad a 500? no se puede poner la gravedad en valores realistas? por ejemplo, 9,78 mt/s y se comportaria como la gravedad de la tierra?
por otro lado, la pelota veo que no se mueve mucho? como se calcula la masa de un cuerpo? la pones tu? porque o la pelota tiene mucha masa o la catapulta poco peso...

la prueba esta genial, pero no lo veo muy realista... me hace dudar esto sobre la chipmunk.

La masa la defino yo. Le di 30 kg a la pelota y 1 kg al bloque.
La fuerza de los resortes de la  catapulta también los puse yo.

Lo que pasa es que depende de cúanto mide un pixel en la realidad. En mi caso si digo que un pixel mide 1.962cm, la gravedad que uso es de  9.81 m/s^2

Cada bloque mide 40 pixeles de longitud, así que en la realidad medirían:
40px*1.962cm=78.48 cm
500px*1.962cm=981 cm -> 9.81 m

Aunque los bloques están grandes y su peso es poco, imaginemos un material similar al hielo seco, un poco más pesado...



ahi si que la complicaste o la chipmunk la veo super compleja... vamos, yo pongo gravedad del entorno 9.81, y masa de mi cuerpo N, y la chipmunk deberia hacer el resto, no me parece logico ni facil tener que estar calculando en base al tamaño y demas, cual es la gracia de la chipmunk si no puede hacer eso? bueno, quizas yo lo estoy viendo desde un punto de vista equivocado.

Es que el mundo real y el dibujado siempre llevan una escala. 1 m no es igual a 1 pixel.

Si en la gravedad pongo 9.81, ella entiende que debe mover 9.81 pixeles por segundo como aceleración. Si así fuera los objetos de menos de 1 m no se podrían dibujar (Serían menos de un pixel). Nuestros cálculos siempre deben llevar el factor de escala, a menos que hagamos coincidir un metro con 1 pixel.
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 04, 2013, 12:39:37 AM
También piensa, Splinter, que la librería está hecha para cosas más juegos con físicas complejas. No tiene mucho sentido utilizar una librería como ésta en caso de que tu juego sea muy simple pero si quieres utilizar físicas complejas la librería te ayuda.

Un ejemplo: un coche de carreras en el aire un coche que se comporte de manera realista mantendrá el momento cinético del conjunto ruedas+cuerpo encabritando o picando cuando el jugador frene las ruedas o las acelere. Cuando uno quiere ocuparse de esas sutilezas, empieza a ser importante que una librería como ésta te ayude.

Yo el tema de ajustes las propiedades físicas lo veo un poco como ajustar músicas/gráficos en un juego: se puede hacer que el juego funcione con cualquier cosa que se tenga a mano pero si si quiere que el juego sea realmente vistoso hay que dedicarle un tiempo a pensarlo todo.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 04, 2013, 12:53:20 AM
En otro hilo hablamos de los cuerpos que Chipmunk podía generar. Hablaré un poco al respecto.

Cuando asignamos a un proces un gráfico, le podemos pedir que le asigne un cuerpo a éste; lo podemos generar manualmente mediante una lista de parámetros usando una variable del proceso y un arreglo o podemos usar unas funciones que agregan estos cuerpos al proceso (son 3 métodos).

Si le pedimos que lo genere manualmente la librería puede generar los siguientes cuerpos:

Círculos
Toma el ancho y el alto y los promedia, ese será el diámetro.
El centro lo hace así:

cx=-(px-(map->width/ 2))*c;
cy=-(py-(map->height/2))*c;

con px y py las coordenadas del punto de control 0 y c el factor de escala del gráfico normalizado.
Quote
        if ( map->ncpoints > 0 )
        {
            if ( map->cpoints[0].x != CPOINT_UNDEFINED ){
                px= map->cpoints[0].x ;
            }else{
                px= map->width / 2 ;
            }
            if ( map->cpoints[0].y != CPOINT_UNDEFINED ){
                py= map->cpoints[0].y ;
            }else{
                py= map->height / 2 ;
            }
        }
        else
        {
            px= map->width / 2 ;
            py= map->height / 2 ;

        }

Vacío
Si tenemos un cuerpo vacío no hace nada. Útil para el ratón, que no debe mover objetos al colisionar con ellos.

Caja
Genera un rectángulo con las dimensiones del gráfico

Linea
Calcula la longitud de la linea (el ancho si mide más al alto, de lo contrario el alto)
calcula el grosor (la otra magnitud)
Y genera una linea de bordes circulares desde los extremos
Actualmente los bordes circulares quedan fuera del gráfico, por tal motivo si se requieren lineas gruesas es mejor usar cajas.

Cuerpos convexos
Procesa el gráfico y le ajusta un cuerpo convexo. Triángulos, cuadros, pentágonos, hexágonos, ... ,polígonos regulares y polígonos irregulares convexos.
Uno a todo el gráfico.

Son todos los cuerpos que la librería detecta automáticamente para los procesos, sin embargo existe una nueva característica:

Aproximaciones poligonales. (Test 18)

La función es:

mundo=generateAproxPoly(0,terreno,umbral); //file,graph,umbral de tolerancia

Esta función retorna una lista con listas de puntos a partir de un gráfico y un umbral.

Cada lista que forma a la lista principal es un objeto detectado en el gráfico o un hueco. A partir de estas listas se pueden generar procesos con la forma detectada y dormirlos para hacer objetos físicos que caen al tocarlos o cosas así (requeriría más procesmaiento a las listas).

También se puede hacer el mundo, el scroll, el screen. Esto es lo que hace el video. El código requerido para hacer esto está en el test antes mensionado y es muy sencillo.

function pLinea(cpVect * c1,cpVect *c2)
begin
  draw_line(c1.x,c1.y,c2.x,c2.y);
  z=addInanimateShape(type_line, c1.x,c1.y,c2.x,c2.y, 1);
  DefShapeI(z,CP_C_LAYERS,NOT_GRABABLE_MASK);
     
end

function genTerr(int l)
private
    cantL, cantP,objeto,i;
    cpVect * c1;
    cpVect * c2;
    int ln;
begin
       cantL=cantElement(l);
       for (z=0;z<cantL;z++)
           objeto=getElement(l,z);
           cantP=cantElement(objeto);
             for (i=0;i<cantP-1;i++)
                  c1=getElement(objeto,i);
                  c2=getElement(objeto,i+1);
                 pLinea(c1,c2);
                 ln++;
                 draw_fcircle(c1.x,c1.y,4);
             end
             draw_fcircle(c2.x,c2.y,4);
       end
       say("lineas generadas = "+ ++ln);
end


solo se le pasa la lista que retorna la función.
Espero en un futuro hacer una función que ya haga el terreno (actualmente sólo nos retorna la lista de puntos, pero poco falta para hacerlo), y otra que permita modificar la lista, pasándole un recuadro de la parte modificada del gráfico (las coordenadas de las esquinas del recuadro en el gráfico).

Por qué decidí que retornara la lista ya. Porque es mucho más flexible, nos da mayores posibilidades.
Además se almacena en memoria para no calcularlo cada vez.

También se puede generar la aproximación y asignar cada una de las lineas al cuerpo de un proceso con las siguientes funciones
{"ADDCIRCLESHAPE" , "FFF",   TYPE_INT, modaddCircleShape},
    {"ADDSEGMENTSHAPE" , "FFFFF",   TYPE_INT, modaddSegmentShape},
    {"ADDPOLYSHAPE" , "FFIP",   TYPE_INT, modaddPolyShape},

ADDCIRCLESHAPE(x,y,radio)
ADDSEGMENTSHAPE(x1,y1,x2,y2,radio) //radio=grosor/2
ADDPOLYSHAPE(x,y,c,p) //c=cantidad de puntos p=puntero a lista de puntos

La x,y es el desplazamiento que se le aplicará a las coordenadas o el radio para ajustarlo al punto de control 0

Cuando ya no se use la aproximacion (las listas), se pueden borrar con la funcion deleteAproxPoly(mundo);

Con lo anterior concluimos que aunque no se calcula automáticamente el cuerpo cóncavo, se puede calcular de forma más o menos sencilla. Una vez calculado se almacena y luego se usa en cada proceso que lo requiera, sin necesidad de volver a calcular la aproximación poligonal.

El segundo método que es usando una lista de parámetros para la creación lo comentaré posteriormente, su funcionamiento se puede ver en el test03




Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 04, 2013, 12:58:41 AM
Quote from: Prg on February 03, 2013, 10:52:51 PM
Quote from: SplinterGU on February 03, 2013, 10:08:07 PM
Quote from: Erkosone on February 03, 2013, 08:46:40 PM
No dudes de la lib Splinter ;)


Las masas las pone el usuario por que es un valor que no se puede automatizar, ya que proviene del tipo de material, la densidad del mismo y la estructura molecular del propio material, un objeto de "hierro" no tiene la misma masa que un objeto de forma exactamente igual pero de "espuma" o de "paja".


Todo depende de la aproximación que haga el usuario sobre la masa "y su centro de gravedad" a un objeto cualquiera, con diferentes valores de masa se pueden apreciar comportamientos en la simulación completamente distintos.


Normalmente solemos usar valores de masa al tun tun así a la brava o por aproximación de "lo que a nosotros nos parece correcto.


Existen varias formulas de física clásica que pueden calcular una aproximación muy exacta sobre el "AREA" de un polígono, pero la cosa no es tan simple.. pues con un CG "centro de gravedad" mal ubicado produce efectos muy adversos en el objeto y es casi inutil su uso.




Para las figuras geométricas regulares si que se puede crear una función que devuelva un valor de masa bastante correcto, la función debería calcular el "AREA" de la figura y aplicar una simple multiplicación dependiendo de la densidad molecular del material del que desea que devuelva el valor de masa..


Un ejemplo:


Shape: TYPE_BOX
Sprite Size: 50x50 pixel.
Area = width * heigth;
Mass = Area * molecularDensity_;


Donde la variable molecularDensity_ adopta por ejemplo los siguientes valores prefabricados:
ACERO_ = 0.98;
HIERRO_ = 0.90;
PIEDRA_ = 0.83;
PLASTICO_ = 0.72;
MADERA_ = 0.76;
ESPUMA_ = 0.30;
LOW_DENSITY_MATERIAL_ = 0.11;


Entonces tenemos que la función resultante para un calculo aproximado de la masa de un objeto en la simulación podría ser esta:


function Get_Shape_Mass( file, graph, int material_ );
begin
ancho = map_info(file,graph,g_width);
alto = map_info(file,graph,g_heigth);
area = ancho * alto;
masa = area * material_;
return(masa);
end


Si se crea una tabla de calidad se podría hasta añadir a la mod_chipmunk XD.. esto facilitaría todavía mas si cabe su uso, casi que estoy por añadirlo a la PhysicsMotionAPI  ;D

me imagine que no era automatico, pero como en algun momento me parecio leer algun comentario que hablaba de valores automaticos creo que para esto, pregunte, pero quizas me parecio y no fue asi.

por otro lado, esa iba a ser mi sugerencia, tener una variable local que defina el tipo de material.


Quote from: Prg on February 03, 2013, 09:21:31 PM
Quote from: SplinterGU on February 03, 2013, 08:15:42 PM
no habia visto tu video nuevo... pregunto, por que la gravedad a 500? no se puede poner la gravedad en valores realistas? por ejemplo, 9,78 mt/s y se comportaria como la gravedad de la tierra?
por otro lado, la pelota veo que no se mueve mucho? como se calcula la masa de un cuerpo? la pones tu? porque o la pelota tiene mucha masa o la catapulta poco peso...

la prueba esta genial, pero no lo veo muy realista... me hace dudar esto sobre la chipmunk.

La masa la defino yo. Le di 30 kg a la pelota y 1 kg al bloque.
La fuerza de los resortes de la  catapulta también los puse yo.

Lo que pasa es que depende de cúanto mide un pixel en la realidad. En mi caso si digo que un pixel mide 1.962cm, la gravedad que uso es de  9.81 m/s^2

Cada bloque mide 40 pixeles de longitud, así que en la realidad medirían:
40px*1.962cm=78.48 cm
500px*1.962cm=981 cm -> 9.81 m

Aunque los bloques están grandes y su peso es poco, imaginemos un material similar al hielo seco, un poco más pesado...



ahi si que la complicaste o la chipmunk la veo super compleja... vamos, yo pongo gravedad del entorno 9.81, y masa de mi cuerpo N, y la chipmunk deberia hacer el resto, no me parece logico ni facil tener que estar calculando en base al tamaño y demas, cual es la gracia de la chipmunk si no puede hacer eso? bueno, quizas yo lo estoy viendo desde un punto de vista equivocado.

Es que el mundo real y el dibujado siempre llevan una escala. 1 m no es igual a 1 pixel.

Si en la gravedad pongo 9.81, ella entiende que debe mover 9.81 pixeles por segundo como aceleración. Si así fuera los objetos de menos de 1 m no se podrían dibujar (Serían menos de un pixel). Nuestros cálculos siempre deben llevar el factor de escala, a menos que hagamos coincidir un metro con 1 pixel.


a mi me parece que la relacion pixels/distancia deberia ser abstraida en otra variable...

Quote from: josebita on February 04, 2013, 12:39:37 AM
También piensa, Splinter, que la librería está hecha para cosas más juegos con físicas complejas. No tiene mucho sentido utilizar una librería como ésta en caso de que tu juego sea muy simple pero si quieres utilizar físicas complejas la librería te ayuda.

Un ejemplo: un coche de carreras en el aire un coche que se comporte de manera realista mantendrá el momento cinético del conjunto ruedas+cuerpo encabritando o picando cuando el jugador frene las ruedas o las acelere. Cuando uno quiere ocuparse de esas sutilezas, empieza a ser importante que una librería como ésta te ayude.

Yo el tema de ajustes las propiedades físicas lo veo un poco como ajustar músicas/gráficos en un juego: se puede hacer que el juego funcione con cualquier cosa que se tenga a mano pero si si quiere que el juego sea realmente vistoso hay que dedicarle un tiempo a pensarlo todo.

sigo sin ver la practicidad de este argumento...

creo que deberia ser mas simple, defino cuerpos, con su masa, entorno con su gravedad, defino relacion pixel/distancia, y aplico fuerzas... y todo en parametros realisticos... si tengo que poner 500 para decir 9.8, pues no es algo realista... y un motor de fisica entiendo que la idea es ser realista, sino para que la fisica? lo curramos por codigo y listo.
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 04, 2013, 01:23:42 AM
gracias prg por la explicacion, muy buena...

con respecto a lo que yo decia... quizas lo dije mal.. :)

estaria bueno incluir lo que dije, y meter estas cosas, asi podemos trabajar con valores realistas y que el motor calcule a sus valores internos, con esto me refiero relacion pixel/distancia, gravedad, etc.
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 04, 2013, 06:21:06 AM
Lo que Josebita quiere decir en realidad es lo mismo que dice Prg Splinter y lo mismo que pienso yo también, basicamente es esto:


Vale, partimos de la base en que la gravedad es '9.8f' bien.. pero..


Para una resolución de 320x200 esa gravedad es muy alta.. sinembargo para una resolución full HD es quizá demasiado pequeña.. por que? justo por lo que explica Prg, por que la gravedad es una aceleración, y tu lo estás planteando desde el punto de vista de un espectador con visión "global", pero si lo miras desde una ventana la cosa cambia..  que ventana?? la pantalla de un dispositivo ya sea un PC, un mac.. un mobile..


Si la ventana es muy chica lo que vas a ver es un objeto callendo a una velocidad elevadísima.. pero si lo ves desde una ventana muy grande "con mas campo de visión" lo vas a ver mucho mas lento.. por que? por que tu como espectador tienes consciencia de que el entorno es muchisimo mas amplio y en consecuencia el feelig que recibes es como de mayor suavidad y menor velocidad, aunque realmente sea la misma gravedad.


Esto si se piensa detenidamente y se practica un poco es muy sencillo de evidenciarlo en un juego o en cualquier tipo de simulación física realista computerizada, mira:


Pantalla de 320x200, aplicamos física.. aplicamos gravedad de 9.8f.. vale.. los objetos caen a la velocidad del rayo.. por que? por que no vemos mas allá de una zona muy reducida del mundo.. en consecuencia tenemos que vajar todas las velocidades para que el juego fluya mas lento.. y todo se complica por este motivo..


Ahora nos ponemos a programar lo mismo para otra resolución.. por ejemplo de 1080p, vale.. aplicamos física.. aplicamos gravedad de 9.8f.. que leches?? ahora los objetos caen lentos.. no, caen a la misma velocidad.. pero tu como espectador eres consciente de que el espacio es mayor.. y en consecuencia recibes un feeling completamente distorsionado del anterior..


Conclusión?
Simplemente un buen motor de física debe ser completamente customizable, es cierto que cuanto mas abstraiga de calculos complejos mejor que mejor.. pero el programador ha de ser consciente en todo momento de lo que quiere presentar en pantalla.. y de cual es el feeling que quiere transmitir..
Por esto un motor de física no puede abstraer nunca de los jamases de algo tan importante como es la gravedad, por que aunque parezca raro.. la gravedad va fuertemente ligada a todos los calculos del engine.. ya que es una aceleración que ha de sumarse en todos los calculos justo antes de comenzarlos, y en consecuencia afectará de forma directa a los resultados.


Supongo que después de esta chapa ya ves la cosa desde otro punto de vista, puedes setear la gravedad a 9.8f y crear todo lo que quieras con valores reales de masa y bla bla bla.. en cuanto cambies de resolución has perdido lo que a los que nos apasiona la física llamamos "momentum", osea.. que el juego cambia radicalmente.
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 04, 2013, 06:27:15 AM
El ejemplo mas claro y simple.. tienes un coche teledirigido a gasolina XD..


Te lo bajas a la plaza de tu barrio para hacerlo correr.. que bien.. el coche acelera.. pero oye.. que lejos está ese arbol.. voy a tratar de dar vueltas a el XD..


Ahora te subes el coche y te encierras con el en el WC XD.. "si no mueres asfixiado por los humos antes.." te darás cuenta de que con la misma aceleración el coche parece que tiene mil veces mas velocdiad..


Por que?


Por que lo que cambia no es el coche, ni la potencia del mismo, ni tan siquiera la aceleración del cochecillo.. lo que cambia es el espacio o mejor dicho "la sensación espacial del espectador".


Conclusión?
En la calle parece que el coche es una chufa y que no corre..
En casa parece que es un Parche carrera de 900 CV ;)
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 04, 2013, 07:01:51 AM
no necesariamente... la relacion de la distancias/pixels tiene que ser otra variable... y el motor hacer los calculos y saber que gravedad 9,78 con la relacion que pixels por metro, es 500... no que si yo quiero tener una gravedad de 9,78, tener que hacer calculos para saber cuanto es...

resumen, el motor debe conocer cuantos pixels es 1 metro (o 1 cm o la distancia que sea)... y en base a eso, y sabiendo la gravedad que el usuario define para el entorno, el motor debe calcular los valores que necesite de gravedad interna...

se supone que el motor te abstrae de la complejidad de la fisica, si para usarlo, tengo que hacer calculos complejos para saber que gravedad es para simular la tierra en base a cuantos pixeles representa 1 metro... entonces no es muy practico el motor...

y que tal si yo defino todo, y luego hago un zoom de todo el ambiente? (imagino un angry bird cuando agranda el plano de vision) tengo que recalcular todo de nuevo? que tal si simplemente indico el zoom que estoy usando y el motor hace el resto de los ajustes?

vamos que esto tiene que ser simple...

seguramente no se entiendo lo que digo...

pero para mi esto deberia ser... defino gravedad (con los mismos valores de la realidad), defino relacion base 1pixel/X metros (o al reves, da igual) y luego manejo el resto con zoom (ambient_size?), etc...
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 04, 2013, 07:15:02 AM
nono, mira.. lo sigues mirando desde el punto de vista global "siempre con al misma resolución" pero con zoom diferentes..


El problema no es el zoom, si acercas la imágen se verá todo mas rápido vale, y si la alejas se verá mas lento vale.. esto es así en la realidad y en todos los motores de física, PERO..


Si cambias la "resolución" que muestra la escena la cosa se deforma por que todas las distancias cambian..


La cosa peliaguda es la resolución, no el zoom.




Te hago un simil con la función ADVANCE() del motor de bennuGD para 2D..
- Tengo una resolución de 320x200, en mi juego el personaje avanza con:  ADVANCE(2);


Vale.. todo es coherente y el juego va como debe..


Ahora cambio la 'resolución' de la pantalla a 1600x1050 y amplio todos los gráficos..
"sigo usando el ADVANCE(2)" pero que sucede.. que ahora el personaje se mueve como el pedo de lento.. usando la misma velocidad.


El problema no es ni los zoom ni nada de esto, es la resolución en la que muestras el juego, todo viene por esto que parece tan simple pero que en realidad no lo es para nada.
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 04, 2013, 02:32:08 PM
zoom o resolucion da igual... para lo que digo...

si haces zoom, no tiene por que cambiar la velocidad, no estoy diciendo haciendo camara rapida o lenta... esto debe adaptarse solo...

realmente no se como explicarlo, esto tiene que ser simple, y evitar al usuario hacer miles de calculos cuando quien debe hacer los calculos es el motor... yo tengo que ver esto de forma global, no tienes que tener parte de los calculos a cargo del motor y parte a cargo tuyo, cuando el motor lo puede manejar perfectamente... yo no digo que el motor no sirva, sino que ya que estan trabajando con capas de abstraccion mas profundas, piensen en esto e incluyan funcionalidades para abstraer mas las cosas y que se vea y maneje de forma normal y conocida...

la idea no es que para simular la gravedad normal (por ejemplo, de la tierra) tenga que estar probando a ojo o incluso teniendo que aprender formulas que seguramente con el tiempo olvidaremos, si tranquilamente todo esto se puede manejar simplemente desde el motor.
Title: Re:CHIPMUNK en bennu
Post by: Prg on February 04, 2013, 07:19:09 PM
He entendido la ventaja de esta variable y no se me había ocurrido...

Agregaré la variable de resolución, si alguien quiere trabajar como antes la variable tendrá el valor de 1 (por defecto) y nada se reescalará, si necesita otro valor, lo asignan y listo.  ;D

:'( Me pondrán a trabajar buscando las funciones que trabajan con fuerzas para reescalar sus parámetros
:'( :'( También las que trabajan con distancias y generar una que reciba en metros (Unidad estandar) y otra en pixeles
;D ;D ;D Lo que sí dejaré son la información de los árbitros, si la modifico daño el motor, pues él trabaja con ella, pero haré una función que dado el valor que le pases lo transforme a las unidades adecuadas y lo retorne.

Lo del zoom ya le toca al dibujado de Bennu, como se mantienen los tamaños de objetos (el objeto mide los mismo pixeles, solo que se amplió el dibujado, algo al estilo scale_resolution) y sólo se modifica el pintado no hay problema (así como lo estoy viendo yo).

La nueva variable se agrega para futuras versiones, así como la función que mencioné, y se agrega la lista de cosas por hacer.

Saludos amigos.
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 04, 2013, 08:35:26 PM
Miedo me da esto jeje.. pero mucho animo con ello.


Yo mas que cambiar el core de la librería lo que si que haría es enfocar los esfuerzos por fusionarla con el core de bennuGD, la primera cosa que haría sería integrar el sistema de colisiones de la chipmunk "hyper velóz" con bennu y sus process y eliminar el sistema actual por colisión entre mapas que es infinitamente mas lento.


Integraría "si yo pudiese claro.." los TYPE de los procesos con los collision_type de la chipmunk para dejar de forma automática a bennuGD el manejo de los handles de colisión y poder usar la nomenclatura actual tipo:


if( collision ( TYPE raton) )  pero manejado por la lib de física en vez de por el sistema actual.




Eso sería grandioso para el lenguaje, ganaría en rendimiento algo inimaginable, ojo! que no digo que lo que hace ahora bennu esté mal, está genial, pero la chipmunk es tremendamente mas eficiente y permitiría rendimientos en los juegos mucho mas elevados ;)


Lo comento por que ya la tienes integrada a medias, y si antes de trastearla de esta manera te propones integrarla de forma radical al core de bennu puede resultar algo barbaro, imagínate un bennu con todas las variables locales como ahora las comocemos "en formato INT" pasadas a FLOAT ya de forma nativa aprobechando que la chipmunk maneja estas variables también pero en coma flotante con muchisima mas precisión.


Ahun así, mucho animo con el trabajo que te propones hacer, es realmente interesante.
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 04, 2013, 09:38:02 PM
pero las colisiones de chipmunk no son pixel perfect... en bennugd tambien tienes colisiones no pixel perfect... aunque por el tema de size y rotaciones se complica un poco la logica, pero tener mas rapidas tiene.
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 05, 2013, 06:07:33 AM
Tienes razón, las pixel perfect aveces son casi imprescindibles, pero las vectoriales ahorran mucho calculo y son bastante aproximadas, creo que este es un tema interesante para debatir por que muchos motores están adoptando esta técnica para las colisiones y no ya no se si es por que aprobechan el trabajo de las lib de física que ya está hecho o por que realmente son mejores en todo.. me gustaría escuchar opiniones sobre el tema, haber que opinan los demás por que es un tema interesante.
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 05, 2013, 08:20:01 AM
como te dije en el otro hilo, tienes collision_box y collision_circle (por ahora basicas, luego la idea es hacerlas crecer y con este crecimiento tambien simplicar su logica)

:)
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 05, 2013, 03:44:29 PM
mm... en eso no había pensado.. collision circle aplicando un ajuste al radio es muy interesante ciertamente.
Gracias por la información Splinter  ;)




Por cierto, alguien necesita un tutorial sobre como se crean correctamente explosiones con la mod_chipmunk?
Lo digo por que es algo que hace falta en algunos juegos y veo que mucha gente lo pregunta por los foros de chipmunk y cada cual lo hace como cree que es.. pero no veo ningún tutorial sobre una forma coherente de hacerlo.. yo me he puesto con este tema ayer y hoy y me ha costado unas cuantas horas.. pero al final lo he logrado y funciona a la perfección..
Aunque parece algo obvio.. supongo que mas de uno agradecerá un vídeo tutorial sobre el tema, creo que voy a montarlo.. así no se me olvida a mi también jeje..
Title: Re:CHIPMUNK en bennu
Post by: SplinterGU on February 05, 2013, 04:09:52 PM
creo que actualmente las funciones collision_box y collision_circle trabajan calculando el radio en base al tamaño del grafico (no del contenido), pero bueno, no pretende ser una colision perfecta, asi que cumple con la funcion... mi idea a futuro era agregar cosas como el radio y otras cosas mas.

pero no recuerdo, quizas ya soporta radio.
Title: Re:CHIPMUNK en bennu
Post by: josebita on February 06, 2013, 07:43:49 PM
PSST: https://www.dropbox.com/s/d5lil63z59u0d88/chipmunk_test-debug.apk (https://www.dropbox.com/s/d5lil63z59u0d88/chipmunk_test-debug.apk)


[Edito] Adjunto los fuentes del ejemplo. Es el test20.prg que viene con mod_chipmunk pero un poquito maqueado para que funcione en el móvil (resoluciones y eso)
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 08, 2013, 03:41:32 PM
Prg tengo una pregunta sobre la chipmunk, al usar 'cleanspace()' hay que hacer algo antes? lo comento por que al hacerlo me peta el programa diciendo por consola que hay un error en los simpleMotor, no se si tengo que hacer algo antes de parar la escena?
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on February 08, 2013, 03:53:45 PM
Me autorespondo por lerd y no haber leído antes de preguntar..


Hay que usar let_me_alone() antes de limpiar..
Title: Re:CHIPMUNK en bennu
Post by: fulgorelizz on February 26, 2013, 04:21:03 PM
lphysic.mass se comporta de forma global!! ... al cambiar el lphysic de algun proceso, los procesos externos a este actualizan tambien su lphysic.mass!!
Title: Re:CHIPMUNK en bennu
Post by: Prg on March 06, 2013, 05:44:57 PM
Hola. No veo ese comportamiento. ¿Podrías poner un pequeño ejemplo?

Gracias
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on June 09, 2013, 02:37:22 PM
Hola Prg, quería compartir algo contigo, he estado integrando tu función de generación de terrenos con mi PhysicsMotionAPI para que la gente pueda generar un terreno simplemente con:


Physics_scenario_terrain_Build( file, graph, umbral );


Y he visto un problema en el algoritmo que genera la lista de polígonos, bueno, en el que genera la lista de vectores de un polígono mejor dicho, el algoritmo en si mismo es genial, no puedes imaginarte cuanto te agradezco esta parte del trabajo que has hecho, es una pasada en serio, me encanta.


Pero..


El problema viene en un juego tipo plataformas como un mario o un sonic o juegos así, las plataformas tienen que ser planas y tu generador de terrenos las hace "casi" planas, con lo de planas me refiero a que en el segmento donde va a caer un personaje, si no es PERFECTAMENTE HORIZONTAL el personaje o lo que sea se va desplazando hacia un lado por que hay una pequeña pendiente.


He logrado solucionarlo después de pegarme un buen rato analizando como habías montado la función del generador de terrenos ;)


Te paso la nueva función genTerr() para que le des un vistazo, no quería dejarlo simplemente en "vale, lo he arreglado, ya está..", te lo comparto por que es un dato curioso que seguramente querrás modificar en el pack de ejemplos que tienes publicado ;)


Lo que he añadido es una variable llamada "INT CORRECTION_" que se usa en un blucle tipo for, la variable va de cero a 3, y lo que hace el bucle es comparar si la diferencia en Y de ambos vectores tiene una diferencia menor de 3, si es así los iguala para generar un plano horizontal perfecto.


Es una pequeña corrección a tu algoritmo de escaneo de vectores en polígonos que me parece buenísimo pero he creído que con esto ya es mas que buenísimo, ahora es perfecto  ;D



function genTerr(int l)
private
   cantL, cantP,objeto,i;
   cpVect * c1;
   cpVect * c2;
   int ln;
   int correction_;
begin
   cantL=cantElement(l);
   for (z=0;z<cantL;z++)
      objeto=getElement(l,z);
      cantP=cantElement(objeto);
      for (i=0;i<cantP-1;i++)
         c1=getElement(objeto,i);
         c2=getElement(objeto,i+1);
         if(c1.y < c2.y)
            for( correction_=0; correction_<3; correction_++ )
               if(c1.y == c2.y - correction_)
                  c1.y = c2.y;
                  break;
               end
            end
         else
            for( correction_=0; correction_<3; correction_++ )
               if(c2.y == c1.y - correction_)
                  c2.y = c1.y;
                  break;
               end
            end
         end
         pLinea(c1,c2);
         ln++;
         draw_fcircle(c1.x,c1.y,4);
      end
      draw_fcircle(c2.x,c2.y,4);
   end
   say("lineas generadas = "+ ++ln);
end




Gracias por este trabajo que has hecho, es una pasada poder disfrutar de ChipMunk en bennuGD amigo  ;)
Title: Re:CHIPMUNK en bennu
Post by: emov2k4 on August 07, 2013, 07:17:00 PM
Alguien me puede ayudar, quiero hacer un juego en TOP-DOWN utilizando Chipmunk , pero al no ponerle gravedad igual quedan flotando los graficos... saludos
Title: Re:CHIPMUNK en bennu
Post by: Erkosone on August 08, 2013, 04:14:36 AM
Pero que es exactamente lo que quieres hacer? algún vídeo demostrativo?
Title: Re:CHIPMUNK en bennu
Post by: emov2k4 on August 08, 2013, 02:07:17 PM
Estimado ,gracias por responder... ya encontré la solución, utilicé el demo de bomberman.  saludos

Title: Re:CHIPMUNK en bennu
Post by: emov2k4 on February 20, 2014, 03:50:05 PM
Estimados,
Tengo un proceso que comienza en eje x -50 , en el PC me lo muestra bien..., pero al portar a android el eje me lo muestra en 0

mirar acá código
http://forum.bennugd.org/index.php?topic=3813.0 (http://forum.bennugd.org/index.php?topic=3813.0)

Saludos