[GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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:
Pared de 0/180 grados (sirven para pared Hotrizontal de 0 o 180 gradios)

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:

seguidamente de estos ejemplos:

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:
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
pues uso 16 colores para cada Angulo de pared, si 16 Colores = 16 Angulos de pared solidos.
ver imagen:
- Hidden content: Show
Pared de 0/180 grados (sirven para pared Hotrizontal de 0 o 180 gradios)
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:
seguidamente de estos ejemplos:
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:
no hay prisa, ademas que me gusta probar de todo aun que sea una locura, de momento voy avanzando muy poco a poco.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.
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.
- GINO
- Posts: 2823
- Joined: Thu Jul 31, 2008 10:25 pm
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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á.
- kozka
- Posts: 2111
- Joined: Sun Feb 01, 2009 9:36 pm
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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.
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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.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á.
Ya lo use para el juego de plataformas Sonic(Rosie)
El juego, como la version anterior, tendra su editor de tableroskozka 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 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.
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
curiosidades
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:

es muy muy antiguo y las fisicas son muy buenas XDDD y tambien es un editor.
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:

es muy muy antiguo y las fisicas son muy buenas XDDD y tambien es un editor.
- Nowy
- Posts: 599
- Joined: Sat Oct 04, 2008 11:14 am
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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 ?
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
he decidido por usar mapa de colores, cada color indica un grado en concreto de la pared.Nower wrote:rebote usando varios puntos de colision ?
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
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
He encontrado un juego para android:
https://play.google.com/store/apps/deta ... are.bouncy

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?
https://play.google.com/store/apps/deta ... are.bouncy
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?
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
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.
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.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
![[RETO]: [MINI CONCURSO] Winter GAMES 2011 [JUEGO]: Rosie ~ The Rascal [RETO]: [MINI CONCURSO] Winter GAMES 2011 [JUEGO]: Rosie ~ The Rascal](../space/silver_medal.png)