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

Proyectos en Desarrollo.

Re: [GAME]: PYP - ProYect Pinball

Postby Geca » Wed Jul 21, 2010 11:54 pm

Ya lo he probado !!!!
Esta muy chulo, ya casi tienes un efecto en la bola perfecto, en mi opinión tienes que ajustar sólo las curvas porque se comporta como si fuera un paraquedista, o sea, la curva no tiene que ser tan acentuada. Te falta pulir algunas colisiones (la bola se atasca en movimiento repetitivo donde la gravedad acaba por no afectar la bola y no provoca que salga de ese movimiento constante).

Sin duda, para quien iba a desistir, has hecho un trabajo impresionante en tiempo record. Molan tus Bumpers. ;)
Animo que estoy deseoso de jugar a la versión final.
User avatar
Geca
 
Posts: 637
Joined: Fri Feb 20, 2009 1:35 pm
Location: Madrid

Re: [GAME]: PYP - ProYect Pinball

Postby CicTec » Thu Jul 22, 2010 1:36 am

Pues he corregido el bug que tenia el compilador (esta tambien en la 5.7 actual).
El PRG me seguia dando errores de compilacion raros y no entendia el porque hasta que me di cuenta que tienes esto en el CFG:
Code: Select all
free_sintax=1                   ; No hay sintaxis libre

Para usar la sintax libre, asi que para compilar bien tuve que usar:
Code: Select all
compiler_options _extended_conditions, _free_sintax;

De todas formas te recomiendo no usar en absoludo esta opcion, porque vas a tener solo limitaciones y posible problemas, de hecho si la desactivas veras que tu codigo tiene errores.

Sobre el juego, pues lo he probado:
- La grafica es muy chula
- El movimiento de la bola me parece que esta bastante bien conseguido en principio, hay que ir corrijiendo cuando a veces se encaja

Por lo demas lo veo por muy buen camino, animo. :)
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: [GAME]: PYP - ProYect Pinball

Postby SimulatorOne » Thu Jul 22, 2010 2:26 am

Geca:
Cuala version te gusto mas?
-La que se ve con esa flecha roja(utiliza angulos y xadvance)
-o La que no se ve esa flecha(calcula solo X,Y sin usar angulos)

Yo ahora me echo un tablero totalmente cuadrado, para hacer pruebas rapidas.
Image
De momento estoy probando de programar en X Y sin usar Angulos y Advance...
Esta vez parece que se desliza la bola en el suelo, y rebota en el suelo de forma casi real...
La pared parece que funciona... pero de momento no me confio...
El techo no lo se....

Hola Cictec

Modifique el archivo de gemix.cnf, y lo deje de serie este parametro: free_sintax=0
Y descubri que solo hay un error de compilacion por que dice que me deje (;) el punto y coma :P
En un BO++ ,en la linea 291 del editor.rpg

Solo me a dado ese error.
Y...
Realmente recomiendas que situe en la cabezera del progarama PYP.prg el compiler_options _extended_conditions;??
:/
Tendria que ponerlo en todos mis proyectos y revisar mi codigo de free_sintax....

Me gustaria saber esas limitaciones que tiene free_sintax.
Yo e leido que puedes omitir poner los ; al final de los comandos
y los parentesis en los IF(condicion) son opcionales...


-----------------------------------------------------------------------------------------------------------------------------
Me gustaria explicar mi teoria de fisicas algoritmicas de mi bola:
Lo hago de forma ordenada hasta el frame final.


1-Crea la bola,con grafico y cordenadas,donde esta el primer oyo(aun no hay lanzadera)
Loop
2-guardamos las cordenadas antiguas X,Y
x3=x;//guarda la antigua posicion
y3=y;

3-comprueba si Y_G(fuerza vertical) esta a menos de < 35, Incrementa la fuerza vertical, hasta llegar al maximo de 35
if(y_g<35);y_g++;end
if(y_g>35);y_g--;end

4-Actualiza las nuevas cordenadas X,Y aplicando las fuerzas G: Y_G y X_G
X+=X_G;
Y+=Y_G;

5-calculando la distancia de desplazamiento entre las cordenadas antiguas(x3,y3) y las actuales X,Y.
if(fget_dist(x3,y3,x,y)>0);//calcula la distancia del destino
x2=x;//guarda la nueva cordenada
y2=y;//guarda la nueva cordenada
x=x3;//posiciona la antigua posicion
y=y3;//posiciona la antigua posicion

repeat;//bulce basico, para avanzar a nivel de pixel la bola, hasta colisionar con algun objeto, o cuando llege a su destino.
angle=fget_angle(x,y,x2,y2);//calcula el angulo del destino

5.1-Este processo de calculo, hace medir a nivel de pixel si a topado con algun objeto de la pantalla
advance(1);
5.2-Cada vez que avanza(Advance) 1pixel, vuelve a escanear los posibles objetos colisionados (pueden haver mas de uno a la vez! solapados)
frame(0);//esto sirve para resetear el escaneo de colisiones de objetos.
repeat
if(bo=collision(type PIEZA_TABLERO));
tipo_piz=bo.tipo_piz;
5.2.1- a colisionado con un objeto de tipo: oyo o oyo lanzador, ejecutara sus comandos y saldra de este bucle
if(tipo_piz==0 or tipo_piz==1);//oyo, oyo lanzador
if(get_dist(bo)<=9);
bo[3]=1;
if(id_oyo_salido<>bo);
id_oyo_salido=bo;
bo[9]=2;break;
end
end

5.2.2- a colisionado con una pared, ejecuta sus comandos y sale del bucle
if(tipo_piz==2 or tipo_piz==3 OR bo.tipo_piz==5);//paredes Y FLIPERS
bo[1]=0;bo[2]=0;
if(x_g>0 and hay_pared_comp(X,Y,0));// derecha >>
5.2.2.1- comprueba que si se mueve a +X_G>> y que si hay un muro a la derecha= se invierte -X_G a negativo
x_g=-x_g;bo[1]=1;sound(SONIDO_WAV[10]);
end
if(x_g<0 and hay_pared_comp(X,Y,1)and bo[1]==0);// izquierda <<
5.2.2.2- comprueba que si se mueve a -X_G<< y que si hay un muro a la izquuierda= se invierte +X_G a positivo
x_g=abs(x_g);sound(SONIDO_WAV[10]);
end
if(y_g>3 and hay_pared_comp(X,Y,2));// caiendo
5.2.2.3- comprueba que si se mueve a +Y_G abajo y que si hay suelo abajo= se invierte -Y_G a negativo,para subir
y_g=-y_g+2;bo[2]=1;sound(SONIDO_WAV[10]);
end
if((y_g==0 or y_g==2 or y_g==1 or y_g==3) and hay_pared_comp(X,Y,2) and bo[2]==0);// caiendo
5.2.2.4- comprueba que si esta a 0=> <=3 : Y_G, mas si hay suelo, lo pondra a 0 fuerza Y_G esta en el suelo
y_g=-1;bo[2]=1;
end
if(y_g<0 and hay_pared_comp(X,Y,3)and bo[2]==0);// subiendo
5.2.2.5- comprueba que si se mueve a -Y_G subiendo y que si hay un techo arriba= se invierte +Y_G a positivo, para caer
y_g=abs(y_g);sound(SONIDO_WAV[10]);
end
bo[9]=1;advance(-1);//retrocede 1 pixel, para que no se solape la bola
break;
end

5.2.3- a colisionado con bomber, ejecuta sus comandos dando puntos y sale del bucle
if(tipo_piz==4);//bomber
bo[4]=1;
if(id_bomber<>bo);
... Aun no programado en modo X,Y
id_bomber=bo;
puntuacion+=50;
bo[9]=1;advance(-1);sound(SONIDO_WAV[12]);
break;
end
end

end
until(not bo);

5.3-Cuando termina de escanear, comprueba que si a llegado a su destino(cordenada final) o si bo[9] lo a activado algun objeto colisionado para salir del bucle.
until(fget_dist(x,y,x2,y2)=<1 or bo[9]>0);
5.3-Mira si a dejado de colisionar con un oyo o con un bomer, para borrar el id del antiguo, y ajusta el angulo a 0.
if(bo[3]==0);id_oyo_salido=0;end
if(bo[4]==0);id_bomber=0;end
angle=0;
end

6- Comprueba si se piso un oyo nuevo, para que se meta y ejecute sus comandos
if(bo[9]==2 and id_oyo_salido>0);
...comandos...
end

7- Actualiza las cadenas de texto para ver las cordenadas + la fuerza G, y actualiza las cordenadas de la sombra.
TEXTO_TEMP="X:"+itoa(x)+" Y:"+itoa(y);
TEXTO_TEMP2="X:"+itoa(x_g);
TEXTO_TEMP3="Y:"+itoa(y_g);
ID_SOMBRA.x=x+desp_xy_som;
ID_SOMBRA.y=y+desp_xy_som;

8- muestra el grafico en pantalla con sus cordenadas.
FRAME;
9- comprueba el bucle final,si la bola se a salido del tablero, y resta una vida
until(out_region(id,0) and (x<-16 or x>TABLERO_SAV.tamano_tablerox+16 or y<-16 or y>TABLERO_SAV.tamano_tableroy+16));
VIDAS_BOLA--;sound(SONIDO_WAV[9]);


Fin!
Last edited by SimulatorOne on Thu Jul 22, 2010 3:16 am, edited 1 time in total.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: [GAME]: PYP - ProYect Pinball

Postby CicTec » Thu Jul 22, 2010 2:52 am

simulatorone wrote:Hola Cictec

Modifique el archivo de gemix.cnf, y lo deje de serie este parametro: free_sintax=0
Y descubri que solo hay un error de compilacion por que dice que me deje (;) el punto y coma :P
En un BO++ ,en la linea 291 del editor.rpg

Solo me a dado ese error.
Y...
Realmente recomiendas que situe en la cabezera del progarama PYP.prg el compiler_options _extended_conditions;??
:/
Tendria que ponerlo en todos mis proyectos y revisar mi codigo de free_sintax....

Me gustaria saber esas limitaciones que tiene free_sintax.
Yo e leido que puedes omitir poner los ; al final de los comandos
y los parentesis en los IF(condicion) son opcionales...

Hola,

_extended_conditions puedes dejarlo en el CFG, incluso es bastente util y frequente su uso, pero te consejo de poner tambien la opcion en el PRG, porque sino si vas a dejar el PRG publico y la gente no tiene seteada esta opcion como tu, no le compilara el programa.

_free_sintax te recomiendo de no usarlo, aqui hay algunas limitaciones:
El uso de una sintaxis libre (con _free_sintax) también tiene sus peligros. Ya que que los saltos de línea y espacios en blanco carecen de significado, y pueden producirse interpretaciones indebidas en algunos casos. Por ejemplo, en la sentencia: IF derecha ++x END, el compilador interpretará que el símbolo ++ es el postincremento de derecha, en lugar del preincremento de x (aunque el símbolo este unido a esta última variable). Otro caso similar podría pasar al utilizar punteros al estilo C, con estas dos asignaciones consecutivas: a=1 *ptr=2, el compilador las interpretaría como: a=(1*ptr)=2 (aunque estuvieran en lineas diferentes). Aunque en general, si no se utilizan preincrementos o punteros al estilo C, no habrán problemas con la sintaxis libre (y también se pueden utilizar paréntensis o puntos y coma en puntos concretos, para solucionar estos pequeños problemas).

Y mas en el futuro introduciendo nuevas features en el lenguaje potran salir mas limitaciones, asi que te recomiendo de no usarla.
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: [GAME]: PYP - ProYect Pinball

Postby SimulatorOne » Thu Jul 22, 2010 3:23 am

Ok, lo tendre encuenta.

Yo es que programo a la antigua Div2.
poniendo () y ; siempre y siempre. ya es mania y costumbre.

pero si seguire usando if(id_ob=collision(type objeto)); cosa así
por que si no...
quedaria así:

id_ob=collision(type objeto);
if(id_ob>0);
o
if(exists(id_ob));
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: [GAME]: PYP - ProYect Pinball

Postby Dluk » Thu Jul 22, 2010 3:31 am

Lo acabo de probar y pinta bien. El PRG PYP-1 me pareció mejor, aunque a veces me pasa que la bola queda trabada en un ángulo de pared o que rebota siempre de la misma forma, pero el algoritmo funciona muy realista, supongo que con unos retoques quedará perfecto ^^

Saludos
Image
"El destino es como un juego... ¿No? Y ahora, esperas mi último movimiento"

Kain - Legacy of Kain: Soul Reaver
User avatar
Dluk
 
Posts: 2423
Joined: Sun Jan 04, 2009 3:51 pm
Location: En el campo de batalla

Re: [GAME]: PYP - ProYect Pinball

Postby Geca » Thu Jul 22, 2010 9:34 am

Pues la version que me gusta más ha sido la unica en la cual la bola ha podido llegar al fondo y tocar los flipers (ya no se cual era).
Pero no creo que sea un problema de usar una cosa u otra, pero si de la programación y comportamiento que tengas en cada una.
Vamos ni he mirado tu codigo lo empecé a hacer pero rapidamente desisti, que no entiendo nada (que malo soy ;)).

De todos modos lo mas complicado ya lo tienes de sobra, ahora es hacer pequeños ajustes y terminar todas las opciones y features.
User avatar
Geca
 
Posts: 637
Joined: Fri Feb 20, 2009 1:35 pm
Location: Madrid

Re: [GAME]: PYP - ProYect Pinball

Postby SimulatorOne » Thu Jul 22, 2010 12:17 pm

Yo cuando dije de que lo dejo el proyecto, de que no podia seguir mas, era cuando me quede así.
con las 2 versiones, que estais probando.

Y se que no esta bien echo... se ve muy artificial,y poco preciso.

Demomento estoy experimentando con cordenadas X,Y. de la manera como si fuera un juego de plataformas.
Estoy investigando el tema de las colisiones en las paredes, para que me lo compruebe de manera perfecta.

Lo que si uso; un sistema para evitar que la bola se traviese con las piezas del tablero, usando el mismo sistema que tiene mi juego de Pista Motors, entre los coches. si que hace trabajar gemix con esas comprobaciones,pero es muy muy preciso.
Que por mucha velocidad que vallala bola,NUNCA atravesara un murito de 5 pixeles de grosor!!

Gracias a esto:
"Una sentencia FRAME(0), que complete un 0% de la siguiente visualización, puede tener sentido en este caso:
- puede ser una forma de inicializar funciones como get_id() o collision(), pues éstas devuelven unos determinados valores para cada imagen; si se quiere volver a obtener valores de nuevo, se puede ejecutar una sentencia FRAME(0) que estas funciones interpretarán como una nueva imagen."



Y e tenido difcultades a usar 60FPS, ya que era incapaz de calcular bien las cordenadas y e tenido problemas,ademas parecia mas inreal el movimiento de la bola.
Es decir, que cuando incrementa la velocidad en 1pixel, en 60FPS lo considero rapido :/ no hay menos de un pixel!!

Poniendolo a 30,funciona mejor, y parece mas suave(trankilo)
Se que los 60FPS es lo mejor... pero no me calcula bien las velocidades..

pero podria usar Frame(200); en el buble de la bola.en vez de cambiar a 30FPS...
Last edited by SimulatorOne on Thu Jul 22, 2010 12:47 pm, edited 1 time in total.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: [GAME]: PYP - ProYect Pinball

Postby CicTec » Thu Jul 22, 2010 12:41 pm

Para simular "menos de un pixel" prueba con resolution, mira el tutorial2 o el tutorial5 que vienen en DIV2, te podria ayudar.
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Re: [GAME]: PYP - ProYect Pinball

Postby kozka » Thu Jul 22, 2010 1:08 pm

para simular menos de un pixel.... juega con valores altos si x era 10 multiplicalo por 1000 tendras 10000 para restar multiplicar y tal
a la hora de mandarlo a pantalla dividelo otra vez por mil
es un truco sucio pero funciona
User avatar
kozka
 
Posts: 2111
Joined: Sun Feb 01, 2009 9:36 pm

PreviousNext

Return to Proyectos WIP

Who is online

Users browsing this forum: No registered users and 22 guests