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

Proyectos en Desarrollo.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

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

Post 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.
User avatar
SimulatorOne
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona
Contact:

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

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
GINO
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm
Contact:

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

Post 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á.
User avatar
kozka
Posts: 2111
Joined: Sun Feb 01, 2009 9:36 pm

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

Post 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.
User avatar
SimulatorOne
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona
Contact:

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

Post 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.
User avatar
SimulatorOne
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona
Contact:

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

Post 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.
User avatar
Nowy
Posts: 599
Joined: Sat Oct 04, 2008 11:14 am
Contact:

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

Post 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 ?
User avatar
SimulatorOne
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona
Contact:

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

Post 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
User avatar
SimulatorOne
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona
Contact:

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

Post 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?
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

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

Post 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.
Post Reply

Return to “Proyectos WIP”