[GAME] Soldier

Proyectos en Desarrollo.

Re: [GAME] Soldier

Postby GINO » Tue Feb 21, 2012 4:03 pm

Ya he hecho el punto 3 aunque me temo que es algo lento, dejo captura y descarga. Este ejemplo pinta el polígono con lineas, habría que hacerse una rutina de relleno de polígonos, pero bueno es un problema un poco aparte, lo mas difícil supongo que era esto.
Image
Uso:
Se pone al empezar cos_initialize y al acabar cos_quit ya que esto usa memoria dinámica y punteros y tiene que liberar, etc.

- cos_initialize(int radius_x, int radius_y, int increment_angle)
Esta función precalcula los puntos de todo el circulo de visión alrededor del sujeto, así nos ahorramos hacerlo después a cada momento.
---- radius_x y radius_y indican los radios del circulo de visión alrededor del sujeto. Para vista top-down normalmente deberían ser iguales (haciendo un circulo), pero se puede poner por ejemplo que radius_y sea la mitad de radius_x para simular un circulo en isométrico, u otros radios a gusto de cada uno.
---- increment_angle indica cada cuantos grados de quiere poner un punto precalculado, a menos grados más puntos habrá, por lo tanto más precisión pero menos rapidez de calculo.

- cos_quit
Esta función libera recursos. Si se quiere volver a usar los métodos despues de llamar a esta función hay que volver a usar cos_initialize.

- cos_generate_full_cone(cos_polygon * polygon, int sight_angle, int sight_range)
Esta función genera el cono sin tener en cuenta las durezas. Rellena la estructura cos_polygon pasada como parametro con los puntos necesarios. El procedimiento es simple:
---- Se crea un triangulo (se meten 3 vértices al polígono uno es dd esta el sujeto y 2 más del lado opuesto del cono). Esto se hace teniendo en cuenta 'sight_angle' que indica a que ángulo está mirando el sujeto, y 'sight_range' que indica que apertura tiene el campo de visión.
---- Luego entre los 2 puntos alejados del punto del sujeto se insertan los puntos precalculados pertinentes.

- cos_correct_full_cone(cos_polygon * polygon, int fpg_handle, map_handle, int cx, int cy, int color)
Coge un polígono que normalmente debería estar formado con la función anterior 'cos_generate_full_cone' y modifica sus puntos según las durezas del mapa indicado y su color. Hay que indicar también las coordenadas donde estaría el sujeto dentro del mapa.
El resultado es el polígono modificado por las durezas, la precisión viene dada por la función 'cos_initialize'

- cos_draw_polygon(cos_polygon * polygon, int cx, int cy, int color)
Función helper a modo de ejemplo que pinta una estructura de tipo 'cos_polygon' a pantalla uniendo sus puntos con lineas.
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

Re: [GAME] Soldier

Postby Nightwolf » Tue Feb 21, 2012 4:04 pm

Madre mia esta genial.... Bravo por Gino :)
User avatar
Nightwolf
 
Posts: 3032
Joined: Tue Oct 07, 2008 3:26 pm
Location: Aquí mismo.

Re: [GAME] Soldier

Postby kozka » Tue Feb 21, 2012 4:39 pm

pues esta muy bien gino , afer quien descifra ese codigo XDD sin tener el gen extra de gino xd
gran aporte :claphands:
User avatar
kozka
 
Posts: 2111
Joined: Sun Feb 01, 2009 9:36 pm

Re: [GAME] Soldier

Postby PAMERCO » Tue Feb 21, 2012 6:26 pm

Aggg, y yo fuera de casa... a ver si llego pronto para verlo. Por cierto me pones que es un poco lento, y por la captura veo que los FPS son 24, supongo que esta por defecto a 24 verdad? Veremos si no se ralentiza y como me va incluyendolo.... gracias GINO, por el curro.
Ahora lo que veo es que los angulos que se generan son concavos, y los algoritmos de relleno de poligonos recomiendan huir de este tipo de poligonos, por que es mas lento de rellenar, y recomiendan subdividir el poligono en triangulos necesarios para ganar velocidad...
Sigo con lo mismo, si conoceis algun sistema rapido para el relleno del poligono... ya perfecto
reto navidad 2011 santa´s nightmare
http://www.hot-ice-enterprise.com
primer juego comercial http://www.gemixstudio.com/forums/viewtopic.php?f=128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
PAMERCO
 
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

Re: [GAME] Soldier

Postby GINO » Tue Feb 21, 2012 6:37 pm

Pues el tema de rendimiento habrá que probar bien a ver como va. La cosa es no tener muchos conos, por ejemplo, si no se van a mostrar en pantalla ya ni calcular (sabes si puede mostrarse o no porque sabes el radio del circulo de visión). También el commandos no me acuerdo si te dejaba tener varios conos a la vez o solo uno. Pero de todas formas es cuestión de probar.

Yo creo que con el scanline polygon fill es de sobra. Lo de dividir y tal es mas para otras cosas mas complejas. Pero si tienes que andar dividiendo el polígono en realtime a cada frame en triángulos, estamos en la misma. Yo usaría el algoritmo estándar ese de scanline. De todas formas ya que me he puesto y dada la complejidad de algunos cálculos creo que voy a seguir esta 'librería prg' añadiendo más cosas para que se pueda usaren cualquier juego de forma fácil. Por ahora ya he añadido el tema de hacer el cono plano en vez de redondeado, a gusto del que lo use. Acabaré haciendo también eso de rellenar. Al tema de crear el polígono ya está completo, solo quedaría optimizarlo donde se pueda.
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: [GAME] Soldier

Postby negamartin » Tue Feb 21, 2012 7:14 pm

Pero si quieren hacer una colisión triangular, simplemente usen el método de koska, y una vez que encuentras el objetivo, usas esa colisión rara de erkos con lineas, para ver si la linea colisiona con un obstáculo...
User avatar
negamartin
 
Posts: 344
Joined: Thu Dec 30, 2010 8:56 pm
Location: Si sale CONECTADO, estoy en el computador XD

Re: [GAME] Soldier

Postby PAMERCO » Tue Feb 21, 2012 8:15 pm

gino, no veo el poligono.....
he añadido cos_initialize(200, 100, 2000); en el begin principal, la primera vez lo habia añadido mal y me dio error de win, lo puse en el pricipal y perfect.

en el proceso araña, creo un proceso nuevavision(x,y);

Code: Select all
process nuevavision(x,y)
private
   int aperture;
   cos_polygon cone_polygon;
begin
   ctype=c_scroll;
   angle = father.angulo;
   aperture = 45000;
   while (!must_quit)
   x=father.x;
   y=father.y;
      cos_generate_full_cone(&cone_polygon, father.angulo, aperture);
      cos_correct_full_cone(&cone_polygon, 0, durezas, x, y, rgb(255, 255, 255));
      cos_draw_polygon(&cone_polygon,x,y, 22500);
   //   angle += rand(100, 200);
   //   advance(2);
      frame;
   end
   cos_clear_polygon(&cone_polygon);
end


al proceso nuevavision, le paso las coordenas x,y del padre ( proceso araña )
angulo, es una variable local , que controla el angulo hasta el siguiente punto de paso de la estructura que calcula path_find, para adaptar los graficos max y min del proceso y hacer la animacion, pero no es el angle del proceso, que no cambia.
por eso en la funcion cos_generate_full_cone, le paso father.angulo, (el angulo hasta el punto de paso ), creo que esta bien, sin embargo el poligono, no se ve.... nada de nada.
reto navidad 2011 santa´s nightmare
http://www.hot-ice-enterprise.com
primer juego comercial http://www.gemixstudio.com/forums/viewtopic.php?f=128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
PAMERCO
 
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

Re: [GAME] Soldier

Postby GINO » Tue Feb 21, 2012 9:12 pm

Lo que pasa es que la rutina 'cos_draw_polygon' es helper para poder visualizar el polígono, pero usa put_line, por lo que pinta en screen. Lo que puedes hacer es tener un mapa aparte que sea de ancho radius_x * 2 y de alto radius_y * 2 y modificar la rutina para que pinte en ese mapa el cono, luego usas el mapa en este mismo proceso como gráfico, le pones alpha, etc.
El tema de pintar es lo de siempre, o en screen o en un gráfico, y si usas scroll en screen como que no porque lo tapa. Lo iré incorporando también.
Por cierto, esto lo hice pintando los triángulos, ahora haré usando el algoritmo de polígono, y veremos cual es más rápido:
Image
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: [GAME] Soldier

Postby kozka » Tue Feb 21, 2012 9:20 pm

uo has conseguido pintarlos..

GINO mete tambien el tema que en vez del pixel ese verde recoja la informacion de un grafico circular por ejemplo degradado o algo
para que quede mas bonito :)

mola el tema este
User avatar
kozka
 
Posts: 2111
Joined: Sun Feb 01, 2009 9:36 pm

Re: [GAME] Soldier

Postby PAMERCO » Tue Feb 21, 2012 9:25 pm

qque buena pinta tienen esos poligonos rellenos....

y te va a 62fps, a 32bits 800X60??....

lento??
reto navidad 2011 santa´s nightmare
http://www.hot-ice-enterprise.com
primer juego comercial http://www.gemixstudio.com/forums/viewtopic.php?f=128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
PAMERCO
 
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

PreviousNext

Return to Proyectos WIP

Who is online

Users browsing this forum: No registered users and 4 guests