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

Proyectos en Desarrollo.

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

Postby erkosone » Thu Sep 06, 2012 4:01 pm

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
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

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

Postby SimulatorOne » Sat Sep 08, 2012 11:43 am

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
Image

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:
Source Code (Gemix) [ Download ] [ Hide ]
  • 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


mas este otro test:
Source Code (Gemix) [ Download ] [ Hide ]
  • 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


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

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

Postby GINO » Sat Sep 08, 2012 2:11 pm

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
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

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

Postby kozka » Sat Sep 08, 2012 7:53 pm

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

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

Postby SimulatorOne » Sun Sep 09, 2012 2:31 pm

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

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

Postby SimulatorOne » Sun Sep 09, 2012 5:52 pm

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

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

Postby Nowy » Sun Sep 09, 2012 8:13 pm

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
Nowy
 
Posts: 598
Joined: Sat Oct 04, 2008 11:14 am
Location: Tenerife

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

Postby SimulatorOne » Sun Sep 09, 2012 9:08 pm

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

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

Postby SimulatorOne » Tue Sep 11, 2012 12:28 am

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

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

Postby erkosone » Tue Sep 11, 2012 9:29 am

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

PreviousNext

Return to Proyectos WIP

Who is online

Users browsing this forum: No registered users and 12 guests