[GAME]: Platform Game (untitled)

Proyectos en Desarrollo.

[GAME]: Platform Game (untitled)

Postby erkosone » Fri Apr 10, 2009 5:45 am

Buenas de nuevo, ya tengo algo "DECENTE" para poder enseñar jeje, es un plataformas Arcade, vamos de los "mata mata" de toda la vida, en cuanto un amigo dibuje los Sprites finales los sustituire y la portada tambien, pues no va a ir de megaman seguramente, me ha costado pero ya tengo el motor terminado, ahora solo es cuestion de ir perfeccionandolo y pulirlo un poquito mas.
Me gustaria que comentaseis que os parece sobre todo los movimientos del personaje que es lo que quiero terminar de pulir, si lo veis fluido y tal, weno ahi va..

Tareas completadas:
-------------------------
Colisiones ( Suelo, y paredes ) falta el techo por hacer..
Inercia completada en eje X. "La inercia afecta a la velocidad de la animacion de correr del personaje y al Scroll".
Gravedad completada.
Salto (falta darle una animacion..)
Disparo (Basico y sin animacion del personaje por ahora..)
Scroll (completado).

CONTROLES TECLADO:
---------------
_LEFT _RIGHT para moverse.
_UP para saltar.
_SPACE para disparar.

CONTROLES JOISTICK:
---------------------------
JOY.LEFT JOY.RIGHT para moverse. "paradojicamente funciona con el analogico y no con el digital"
JOY.BUTTON3 para saltar.
JOY.BUTTON2 para disparar.


Haber que os parece la "JUGABILIDAD"??
COMPLETO AL 90% STAGE1, EN BREVE + STAGES Y MAS DIFICULTAD "falta retocar algunas cosas.."
P:D: EL BOSS DEL STAGE1 NECESITA 5 GOLPES DE ENERGIA PARA SER GANADO, ESTOS GOLPES SE ACEN CON ALT Y DESPUES ESPACIO Y CON JOY2 Y LUEGO JOY4. ESTE ATAQUE RESTA ALGO DE VIDA PERO SE PUEDE RECURAR CON LOS CORAZONES QUE HAY POR EL STAGE. LAS GEMAS Y LOS CORAZONES AL FINALIZAR CADA STAGE DAN BONUS DE PUNTOS.
You do not have the required permissions to view the files attached to this post.
Last edited by erkosone on Mon Apr 13, 2009 1:47 pm, edited 1 time in total.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Mi primer Plataformas en GEMIX.

Postby CicTec » Fri Apr 10, 2009 12:52 pm

Yo la animacion la veo bastante bien, fluida, la inercia tambien, lo unico que hay que mejorar es por ejemplo cuando el prota salta mientra esta en el aire si tenemos la tecla para avanzar pulsada se vee correr el personaje, digamos que no queda bien, para lo demas esta, ya tiene una buena mecanica el motor.

Animo con ello, a ver cuando tenemos ya la primera demo definitiva del juego :)
User avatar
CicTec
 
Posts: 16554
Joined: Thu Jul 31, 2008 10:18 pm

Re: Mi primer Plataformas en GEMIX.

Postby TYCO » Fri Apr 10, 2009 1:14 pm

Sigue con él. Cuando está parado el personaje... queda un poco raro jeje, parece que quiere correr y no puede. Lo demás está bien, habra que esperar un poco más a ver algo jugable.
Todo Modo Gráfico tiene por detrás una Línea de Comandos.

Proyecto: SnowCraft Remake (100%).
Proyecto: Bomb a Bomb Remake (100%).
Proyecto: Rally Mortal (87%).

[RETO]: 20lineas - [JUEGO]: eLaberinto[CONCURSO]: EL JUEGO DEL VERANO 2011 - [JUEGO]: PlayaBall
User avatar
TYCO
 
Posts: 3584
Joined: Tue Sep 02, 2008 7:38 pm

Re: Mi primer Plataformas en GEMIX.

Postby Dluk » Fri Apr 10, 2009 3:20 pm

Si lo de "no irá de Megaman" lo decís porque yo estoy haciendo un Megaman, mirá que no me enojo (Enserio, sos libre de usar los Sprites que quieras).

No evalúe las animaciones porque vos pediste opinión del motor. Y bueno, el motor me parece bárbaro. Lo que te recomiendo que le agregues es una cámara "independiente", es decir, una cámara que no sea el personaje. De esa forma, el mapa avanzará/retrocederá o subirá/bajará cuando el personaje esté un poco más allá del centro (Como en varios juegos de plataformas).

Otra cosa, a veces se me ralentiza un poco. He abierto el .PRG que incluiste para ver porqué, pero no encontré motivo aparente.

Así que bueno, el motor está bárbaro, felicidades :y:

Saludos

P.D.: Esperando la Demo :P
Image
"El destino es como un juego... ¿No? Y ahora, esperas mi último movimiento"

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

Re: Mi primer Plataformas en GEMIX.

Postby erkosone » Sat Apr 11, 2009 8:45 am

Buenas de nuevo, ya tengo algo mas completo el motor del juego, he detectado algun problema y lo he solucionado, pero ahora me surge otro problema añadido..

El efecto climatico que he elegido para la STAGE 1 es la tipica nieve de toda la vida, el problema es que se ralentiza algo, pues son 1000 copos de nieve como maximo callendo a la vez, aunque solo sean graficos de 4X4 pixels, ¿Es normal que se ralentice tanto? o existe alguna manera mejor para pder dar este efecto, el problema es que si huso un scroll con una nieve ya dibujada no puedo hacer que los copos de nieve cuando caen encima del personaje se queden ahi, da un efecto chulisimo pero me ralentiza le juego lo suficiente para que se note..

Alguien puede hehcarme una mano?
Porfabor hechadle un vistazo haber si se puede hacer de otra forma que no carge tanto a la CPU, en el PROCESS LEVEL1(); invoco a todos los procesos de esa STAGE, includio uno llamado "NIEVE();"
El process NIEVE(); es el que llama al proceso COPO_NIEVE(); mientras no tenga su contador mayor que 1000.

CONTROLES:
===========
CURSORES CURSOR ARRIBA SALTA.
ALT ATACA ATL Y LUEGO ESPACIO SUELTA UN ATAQUE ESPECIAL
CONTROL ATAQUE ESPECIAL QUE AHUN NO ESTA BLOQUEADO, EN UN FUTURO ESTA CONDICIONADO A RECOGER UNA CAPSULA.

CON EL JOISTICK:
===============
PALANCA ANALOGICA PARA IZQUIERDA Y DERECHA, EN UN FUTURO SERA CONTROL ANALOGICO DE VERDAD SIN POSIBILIDAD DE TECLADO.
BOTONES 1 2 3 4 PARA SALTAR, ATACAR, ATAQUE ESPECIAL Y ATAQUE SUPER ESPECIAL.

Gracias de antemano chicos, sois de mucha ayuda.
(HAY DOS EJECUTABLES, EL QUE SE LLAMA xxxx_xxxxx_SEGURIDAD NO VALE, me he despistado y se ha colado, EL EJECUTABLE ES "GAME3_CDIV.EXE"
You do not have the required permissions to view the files attached to this post.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Mi primer Plataformas en GEMIX.

Postby CicTec » Sat Apr 11, 2009 10:54 am

A mi el juego va bien, pero veo que tiene un consume de CPU del 25-32%, por empezar puedes optimizar lo siguiente:

1 - crear 2 variables globales ID_PERSONAJE y PERSONAJE_ANDANDO que sirviran para el proceso nieve, la primera fase es asignar a la variable ID el codigo identificativo del personaje:
Code: Select all
ID_PERSONAJE = PERSONAJE();

El paso seguiente es modificar el proceso personaje para poner el estado de la variable andando:
Code: Select all
IF(KEY(_LEFT)OR (GET_JOY_POSITION(0)<-300))
    FLAGS=1;
    PERSONAJE_ANDANDO = TRUE;
ELSE
    PERSONAJE_ANDANDO = FALSE;
END
IF(KEY(_RIGHT)OR (GET_JOY_POSITION(0)>300))
    FLAGS=0;
    PERSONAJE_ANDANDO = TRUE;
ELSE
    PERSONAJE_ANDANDO = FALSE;
END

Lo de asignar el codigo ID y la variable andando esta todo en el proceso COPO_NIEVE que es lo seguiente:
Code: Select all
IF((COLLISION(TYPE PERSONAJE)));ELSE X+=RAND(-3,3);X-=2;Y++;END

Tal como esta esa linea, consuma bastante de rendimiento, el motivo es simple...
En primer lugar COLLISION por su nadura es una funcion lenta y llamarla con la forma TYPE process lo es aun mas, porque tiene que rastrear toda la lista de procesos, averiguar si es del tipo pasado como parametro y comprobar la colision, en este caso hay ya 1000 procesos nieve, el prota y algo mas, eso porta a rastrear cada vez mas de 1000 procesos y como se puede entender la performance queda menos...
Entonces pasandole el ID directo evita de rastrear la lista y comprueba directamente la colision porque el prota es siempre 1, eso ya gana muchisimo de rendimiento en tu caso, visto la gran cantidad de los procesos en el juego.
En segun lugar tal como quieres programar el juego, la nieve tiene que pararse por encima del personaje SOLO cuando este ultimo esta parado, entonces no tiene sentido que a cada iteracion se haga una llamada a COLLISION para averiguar eso (por ejemplo cuando el personaje esta en movimiento), entonces el codigo anterior puede ser reescrito asi:
Code: Select all
IF(PERSONAJE_ANDANDO)
    X+=RAND(-3,3);X-=2;
    Y++;
ELSEIF(!COLLISION(ID_PERSONAJE))
    X+=RAND(-3,3);X-=2;
    Y++;
END


2 - otra optimizacion por hacer es a nivel de restauro interno del motor del juego, es decir, sabemos que el juego tiene un scroll a pantalla completa en el cual se pintan encima de ello todos los otros graficos del juego...
Por default Gemix utiliza el sistema RESTORE_TYPE = COMPLETE_RESTORE eso significa que a cada frame el motor interno limpia el buffer de pantalla y luego repinta todos los graficos para le nuevo frame, (si estuviese en NO_RESTORE, se podria ver como los graficos dejan rastros del frame anterior), entonces al tener un scroll a pantalla completa y todos los graficos que se ponen encima, no tiene sentido que el sistema limpie el buffer a cada frame, le digamos de ahorrar esa operacion, ganando otro rendimiento:
Code: Select all
RESTORE_TYPE = NO_RESTORE;
START_SCROLL(0,GRAFICOS,32,31,0,0);

Hay pero que tener cuidado, porque cuando el nivel acaba y se deja el sistema de scroll, hay que reponer el sistema al estado anterior (COMPLETE_RESTORE) para no tener problemas de rastros, para el funcionamento de RESTORE_TYPE mira la DOC de DIV2.

3 - bajar los FPS de 60 a 40 (que sobran)


Con esas optimizaciones ya el consume de CPU en mi maquina ha bajado al 15-18% , todavia hay otros puntos que hay que verificar bien en la proyectacion del juego:

1- el codigo del proceso PERSONAJE:
Code: Select all
IF((MAP_GET_PIXEL(GRAFICOS,34,X,Y)==15539236))TOCOSUELO=TRUE;ELSE TOCOSUELO=FALSE;END            //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-1)==15539236))Y-=0;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-2)==15539236))Y-=1;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-3)==15539236))Y-=2;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-4)==15539236))Y-=3;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-5)==15539236))Y-=4;TOCOSUELO=TRUE;END      //       COMPRUEVO LA COLISION CON EL SUELO TENIENDO EN CUENTA LA GRAVEDAD.
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-6)==15539236))Y-=5;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-7)==15539236))Y-=6;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-8)==15539236))Y-=7;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-9)==15539236))Y-=8;TOCOSUELO=TRUE;END      //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-10)==15539236))Y-=9;TOCOSUELO=TRUE;END     //
IF(TOCOSUELO==FALSE && (MAP_GET_PIXEL(GRAFICOS,34,X,Y-11)==15539236))Y-=10;TOCOSUELO=TRUE;END    //



IF((MAP_GET_PIXEL(GRAFICOS,34,X+60,Y-10)==7287192))TOCOPARED_DERECHA=TRUE;ELSE TOCOPARED_DERECHA=FALSE;END
IF((MAP_GET_PIXEL(GRAFICOS,34,X-60,Y-10)==7287192))TOCOPARED_IZQUIERDA=TRUE;ELSE TOCOPARED_IZQUIERDA=FALSE;END

se puede optimizar mas ?, la respuesta es SI, porque llamar a cada iteracion 13 veces MAP_GET_PIXEL con datos casi iguales entre ellos no es optimal...

2 - el juego necesita una resolucion de 800x600 ? si la respuesta es si, hay que tener una buena razon, porque con 640x480 podria sobrar.

3 - la grafica del juego impone el utilizo de 32bits ? o puede sobrar con 16bits (es suficiente mirar juegos como survivor o boxland de BigHead, para averiguar que el efecto grafico es mas que suficiente en esos casos.

Intenta verificare de nuevo el motor del juego para optimizarlo mejor posible y no dudes en preguntar si hay problemas, intentaremos ayudar siempre con la experiencia que tenemos acumulada luego años y años de programacion :)
User avatar
CicTec
 
Posts: 16554
Joined: Thu Jul 31, 2008 10:18 pm

Re: Mi primer Plataformas en GEMIX.

Postby Dluk » Sat Apr 11, 2009 1:38 pm

Jajaja, ¿Cambiamos de Megaman a Tales of? Tengo varios Sprites de los Tales, por si te interesan (Igual, por lo que entendí, estás buscando algún Spriter para hacer un plataformas 100% original... ¿No?)

Un consejo para hacer más rápida la ejecución (Además de todos los que te dió CicTec, que son escenciales): He visto que usás muchos procesos que no se usan para mostrar imágenes (Es decir, jamás les asignás un valor a file y a graph). ¿No será posible reemplazar estos PROCESS por FUNCTIONS? El consumo del Megaman se me iba a las nubes cuando detectaba colisiones con las durezas utilizando PROCESS. Quizá te ayude un poco.

Y nunca he hecho un efecto de copos de nieve, pero quizá sea mejor meterlos en c_screen en vez de en c_scroll. Hasta quizá te basten muchos menos copos.

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: 2422
Joined: Sun Jan 04, 2009 3:51 pm
Location: En el campo de batalla

Re: Mi primer Plataformas en GEMIX.

Postby erkosone » Sat Apr 11, 2009 8:33 pm

Pues si Dluk, si me hicieras ese fabor me ahorraria mucho curro grafico, te lo agradeceria si lo cuelgas en este hilo mismo, gracias por la ayuda, esta misma noche vere que tal emjora el codigo, la verdad suena bien lo de ctype=c_screen; tengo que mirar que tal puede quedar, pues el efecto qeu busco es el de que todo el paisalje este nevado, si veo que mejora considerablemente me currare alguna interaccion con el entorno y la nieve.
Esto ya empieza a tomar forma jeje, bien!
Espero esos Sprites Dluk!
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Mi primer Plataformas en GEMIX.

Postby Dluk » Sat Apr 11, 2009 8:42 pm

Acá los tiene, estimado.

Te comento que tenía pensado hacer un Tales of (No como juego de plataforma, sino un RPG) cuando tenga más experiencia, usando varios de los personajes que te paso, es por eso que tengo tantos y, además, estoy en constante búsqueda de más, así que si encuentro algún otro te lo paso por acá o por PM.

Saludos ^^
You do not have the required permissions to view the files attached to this post.
Image
"El destino es como un juego... ¿No? Y ahora, esperas mi último movimiento"

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

Re: Mi primer Plataformas en GEMIX.

Postby erkosone » Sat Apr 11, 2009 9:39 pm

Gracias tio! Thales of Phantasia es uno de los tesoros de los juegos RPG.

P:D: Por cierto "CicTec", dios que barbaridad de cambio de rendimiento, BRUTAL!, solo con definir un identificador para el personaje y usarlo en las colisiones de la nieve ha mejorado el rendimiento una pasada!
Pordios, jamas pense que se pudiera notar TANTISIMO una sola linea de codigo cambiada, apartir de ahora lo usare siemre en todo con ID´s, es BRUTAL! puedo aumentar la nieve una cantidad de copos muy elevada y sige ahi, aguantando como n campeon el GEMIX jeje, que BARBARIDAD!
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Next

Return to Proyectos WIP

Who is online

Users browsing this forum: No registered users and 10 guests