Page 12 of 14

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Thu Sep 06, 2012 4:01 pm
by erkosone
Madre mia.. vas a tirar 1 semana o 2 semanas hasta que esto te funcione.. para que luego ni sea realista, y lo mas grave será cuando quieras cambiar algún parámetro y se desajuste todo, te habla la voz de la experiencia.. mas vale querer abarcar poco y seguro que no mucho y a parches.

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sat Sep 08, 2012 11:43 am
by SimulatorOne
Al final he decidido por usar mapa de durezas para las paredes y asi poder programar las colisiones, rebotes y inercias de la bola contra las paredes solidas.

pues uso 16 colores para cada Angulo de pared, si 16 Colores = 16 Angulos de pared solidos.
ver imagen:
Hidden content: Show
[img]http://www.gemixstudio.com/forums/download/file.php?mode=view&id=3758[/img]
Cada color es para indicar un Angulo en conctreto de esa pared contra colisiona la bola.

Pared de 0/180 grados (sirven para pared Hotrizontal de 0 o 180 gradios)
Image

Calculando el Angulo de la pared + el Angulo de trayectoria de la Bola
Da como resultado un Rebote en la direcion correcta como se muestra en este dibujo:
Image
seguidamente de estos ejemplos:
Image

He estado haciendo un test concretamente para calcular esos Angulos... de entrada y de salida, contra la pared de X angulo.
un test:
[Codebox=gemix file=Untitled.gemix]Program test_ANGLESI;
GLOBAL
string TX1,TX3,TX4;
FLOAT XSP,YSP,XSPP,YSPP,XSPS,YSPS,ANGLEI,ANGLEIB,ANGLES;

Begin
set_mode(320,200,8,0,2,0);

x=160;y=100;
WRITE(0,0,0,0,TX1);
WRITE(0,0,10,0,TX3);
WRITE(0,0,20,0,TX4);ANGLEI=90000;
LOOP


IF(KEY(_i));ANGLE+=1000;END
IF(KEY(_u));ANGLE-=1000;END

XSPP= COS(ANGLE)*75; //con Angulo + Distancia se puede saber la cordenada X
YSPP=-(SIN(ANGLE)*75);//con Angulo + Distancia se puede saber la cordenada Y

IF(KEY(_t));ANGLEI+=1000;END
IF(KEY(_y));ANGLEI-=1000;END

XSP= COS(ANGLEI)*75; //con Angulo + Distancia se puede saber la cordenada X
YSP=-(SIN(ANGLEI)*75);//con Angulo + Distancia se puede saber la cordenada Y

ANGLES=(ANGLE*2)-ANGLEI+PI;

XSPS= COS(ANGLES)*75; //con Angulo + Distancia se puede saber la cordenada X
YSPS=-(SIN(ANGLES)*75);//con Angulo + Distancia se puede saber la cordenada Y

CLEAR_SCREEN();
PUT_LINE(x,y,x+XSP,y+YSP,22);//pintamos
PUT_LINE(x,y,x+XSPS,y+YSPS,39);//pintamos

PUT_LINE(x,y,x+XSPP,y+YSPP,55);//pintamos
PUT_LINE(x,y,x-XSPP,y-YSPP,77);//pintamos

TX1="ANGLE:"+ITOA(ANGLE)+" I:"+ITOA(ANGLEI)+" S:"+ITOA(ANGLES);
TX3="I.XY:"+FTOA(XSP)+","+FTOA(YSP);
TX4="S.XY:"+FTOA(XSPS)+","+FTOA(YSPS);
Frame;
END
End[/Codebox]

mas este otro test:
[Codebox=gemix file=Untitled.gemix]Program test_ATSAN;
GLOBAL
string TX1,TX2;
FLOAT XSP,YSP,XSPr,YSPr,FANGLE,VEL;

Begin
set_mode(320,200,8,0,1,0);
SET_FPS(60,0);

x=160;y=100;
WRITE(0,0,0,0,TX1);
WRITE(0,0,10,0,TX2);

LOOP

XSP=MOUSE.X-X;
YSP=MOUSE.Y-Y;

VEL=sqrt(XSP*XSP + YSP*YSP);//averiguamos la distancia de esas cordenadas

FANGLE=atan2(XSP,YSP)-90000;//averiguamos el angulo

XSPr= COS(FANGLE)*VEL; //con Angulo + Distancia se puede saber la cordenada X
YSPr=-(SIN(FANGLE)*VEL);//con Angulo + Distancia se puede saber la cordenada Y

CLEAR_SCREEN();
PUT_LINE(x,y,x+XSPr,y+YSPr,22);//pintamos

TX1="CORD.XY:"+FTOA(XSP)+","+FTOA(YSP)+" ANGLE:"+FTOA(FANGLE);
TX2="PRIN.XY:"+FTOA(XSPr)+","+FTOA(YSPr)+" VELOCIDAD:"+FTOA(VEL);

Frame;
END
End[/Codebox]

Todo esto para crear ,probar e intentar resolver ese famoso rebote e inercia de la bola...
Os dejo con el Test Nº3: PYP - Test3.rar
es una mezcla de los 2 primeros: grafico bonitos + test sencillo de rebote/colision
mas abajo dejo 3 capturas...

La novedad de este test, es que NO uso Collision/Overlap, solo MAP_GET_PIXEL y nada mas.
y tiene 7 Test(con la Pared con Angulos diferentes, 8 angulos diferentes)

Controles: Enter para lanzar la bola, Espacio para Pasar Siguiente Test(0-7)
J = Hace un salto de una velocidad de Y=-5 hacia arriba
M = Hace un Super Salto hacia abajo, con una velocidad de Y=20 Hacia abajo (Rebotando fuerte en la pared)
N = Hace un Hiper Salto hacia abajo, con una velocidad de Y=40 Hacia abajo (Rebotando muy fuerte en la pared)


Actualmente debo controlar los rebotes en disferentes angulos de la Pared y Bola:
Image
erkosone wrote:Madre mia.. vas a tirar 1 semana o 2 semanas hasta que esto te funcione.. para que luego ni sea realista, y lo mas grave será cuando quieras cambiar algún parámetro y se desajuste todo, te habla la voz de la experiencia.. mas vale querer abarcar poco y seguro que no mucho y a parches.
no hay prisa, ademas que me gusta probar de todo aun que sea una locura, de momento voy avanzando muy poco a poco.
ya que en el juego antiguamente ha sido el principal problema de la fisica del juego.
Y esta vez voy directo al problema y superar las dificultades mas dificiles.
y de momento no quiero controlar TODO el juego solo con un Processo MAIN/JEFE se que es mas rapido en performance...

Lo malo de usar Mapa de durezas es que consume memoria RAM, contra mas grande sea el tablero del pinball, mas memoria ram consume. es lo que hay u_u

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sat Sep 08, 2012 2:11 pm
by GINO
Creo que es la mejor solución Simu, además que te simplifica el código muchísimo y el resultado final nadie va a saber si está hecho así o asá.

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sat Sep 08, 2012 7:53 pm
by kozka
opino lo mismo que gino , te evitara tener que tapar otros errores de intentar hacerlo megarealista y el resultado al final aparte de ser el mismo sera mas limpio. lo unico hacer las pantallas te requerira ahcer algun tipo de editor o algo pero mas o menso creo que lo tienes ya apañao.

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sun Sep 09, 2012 2:31 pm
by SimulatorOne
GINO wrote:Creo que es la mejor solución Simu, además que te simplifica el código muchísimo y el resultado final nadie va a saber si está hecho así o asá.
Si, lo he visto mas sencillo, por mapa de durezas, ya que es una tecnica muy antigua(Div) que aun que parezca primitiva y un derroche de memoria ram, resulta mas sencillo a la hora de programarlo.
Ya lo use para el juego de plataformas Sonic(Rosie)
kozka wrote:lo unico hacer las pantallas te requerira ahcer algun tipo de editor o algo pero mas o menso creo que lo tienes ya apañao.
El juego, como la version anterior, tendra su editor de tableros ;)
el unico limite es la memoria ram y la potencia de tu CPU, del tamaño del tablero, de momento el numero de piezas en el tablero es ilimitado, el juego original de la megadrive tiene tope de 256 piezas,por tablero. y las dimensiones del tablero son fijas.

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sun Sep 09, 2012 5:52 pm
by SimulatorOne
curiosidades :P

Capturas/info del juego que me baso:
http://www.mobygames.com/game/genesis/v ... creenshots

y luego del mismo creador del juego, hizo uno muy antiguo el primero:
Image


es muy muy antiguo y las fisicas son muy buenas XDDD y tambien es un editor.

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sun Sep 09, 2012 8:13 pm
by Nowy
no he leido el post al 100% lo lei por el aire pero viendo los esquemas y eso, no te es mas rentable usar un algoritmo de rebote usando varios puntos de colision ?

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Sun Sep 09, 2012 9:08 pm
by SimulatorOne
Nower wrote:rebote usando varios puntos de colision ?
he decidido por usar mapa de colores, cada color indica un grado en concreto de la pared.

la pared no le dice a la bota en que direcion fija y concreta debe ir, si no entre la direcion de la bola + el angulo de la pared, obtiene la direcion de rebote correcta.

si uso collision o overlap es muchisimo mas lento, que usar MAP_GET_PIXEL

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Tue Sep 11, 2012 12:28 am
by SimulatorOne
He encontrado un juego para android:
https://play.google.com/store/apps/deta ... are.bouncy

Image

es un Pinball Vectorial, y leyendo dice que esta echo con el motor BOX2D.

mas info: http://dozingcatsoftware.com/VectorPinball/
y aqui tienen un ZIP con el proyecto open-source: https://github.com/dozingcat/Vector-Pinball

El problema que no entiendo el codigo Java, pero quizas encuentre partes de codigo,matematicas y tal. utiles...
Creen que me puede servir? me pueden echar una mano? o estoy perdiendo el tiempo mirando esto?

Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]

Posted: Tue Sep 11, 2012 9:29 am
by erkosone
No te sirve, por que las matemáticas están en el motor de física, y aunque consigas el source code del box2D es un motor que tiene en cuenta muchas cosas y es bastante largo de seguir, y si no sabes java pues mejor ni lo intentes.

Pero te repito que hacer algo realista basado en un ejemplo de los que circula por la red tiene muy poco trabajo, te animo a que lo intentes.