Infundiendo el mal en el mundo

Started by Drumpi, December 14, 2009, 12:56:22 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola a todos:

Que raro verme por aqui ¿no? Bueno, voy al lio que si no me enrollo.
Como sabreis estoy liado con un juego de plataformas, y como es lógico usando mi motor de scroll tileado. Bien, llega la hora de poner enemigos en el escenario y no sé cómo hacerlo.
Una opción es añadirlos al mapa de durezas, lo bueno es que se generan a medida que el personaje avanza, la pega es que no les puedo dar datos extra, como por ejemplo la dirección que deben seguir, y si dependen de otros tiles, estos los tengo que añadir a la detección de durezas (imaginad que en un mapa de durezas normal el prota se encuentra con un color nuevo que no conoce).
Otra es poner a todos los enemigos directamente al cargar el nivel, ineficiente, pero eficaz (salvo que los enemigos deben estar inactivos hasta que se acerque el personaje).
Otra sería que al cargar el nivel se leyesen esas durezas especiales de los enemigos y se guarden en una lista, y luego se modifique el mapa de durezas para borrarlos de él.

No se, son ideas muy vagas, a ver si me podeis echar una mano con esto, que se que hay más de uno que ya ha trabajado con este problema antes.
Gracias.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Yo optaba por generarlos al cargar el nivel, pasando su posición como parámetro y dándoles respuesta a las durezas. Eso por supuesto en PC, en la Wiz necesitarás algo así como un proceso "generador_de_enemigos" que se encargue de crearlos cuando están suficientemente cerca del protagonista, por ejemplo a 100 píxeles más allá de la parte visible de la pantalla.

Asociarlos a los tiles... Es otra opción... Pero no sé decirte ya que todavía no he tenido el placer de usar el motor de tiles :(
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

puedes ponerlos con puntos de control, ya sea en archivos ptc o en el mapa de durezas XD, y no activarlos hasta que esten dentro de la region (not out_region)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

Nunca había oído hablar de los archivos ptc... Si es que se podría hacer una titulación superior de 5 años basada en Bennu xD
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Futu-block

se puede crear un área de accion del personaje (el prota del juego) que al colisionar con los enemigos o ciertos puntos aparezca un enemigo??

Windgate

Mediante código es fácil, puedes tener una comprobación activa en el protagonista (O en otra parte) que al detectar colisión (Función collision ( ) ) o bien al estar cerca de unas coordenadas determinadas invoque un enemigo... Si eso es lo que preguntas :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

Es el problema grave, que el rendimiento disponible no es muy ámplio, y debo tener el número de procesos activos al mínimo.
De momento he creado un sistema para debug que parece que funciona, y es que había olvidado por completo que dispongo de DOS mapas de tiles: lo que hago es que en el mapa visible indico qué enemigo hay que crear, y luego, en la misma posición en el mapa de durezas, puedo añadir un dato extra.
He tenido que modificar el motor detector de durezas, para que tomase las nuevas durezas como espacios vacíos (no ha sido tan traumático después de todo, parece que este código está muy bien ordenadito).
También he tenido que tocar parte del motor de scroll tileado, indicando que si ve gráficos superiores al 150, que no genere un tile, sino que llame a una función que sabrá qué hacer con ese valor según el nivel (si generar un enemigo, un tile, una animación... y luego si tiene que eliminarla). Una vez más, parece que voy aprendiendo a ordenar código, porque han sido pocas lineas en una zona bien localizada.

Mientras genero enemigos, voy a usar este sistema, pero no dudo que en un futuro tendré que haceros caso y tener el proceso guia y generador de enemigos.

Por cierto ¿los PTC no son una herramienta para trabajar con FPGEdit? porque no me suena nada similar ni en Fenix ni en Bennu.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

Quote from: Windgate on December 14, 2009, 08:37:25 PM
Mediante código es fácil, puedes tener una comprobación activa en el protagonista (O en otra parte) que al detectar colisión (Función collision ( ) ) o bien al estar cerca de unas coordenadas determinadas invoque un enemigo... Si eso es lo que preguntas :P

no se, todavia no he llegado ahí, todo se andará

¿tambien se puede medir de alguna manera cuanto avanza un personaje?? por si combiene poner en unas coordenadas determinadas que aparezca un enemigo...

-totallity in white-

Windgate

Se puede medir cuánto avanza un personaje, porque TÚ serás quien le diga cuanto tiene que avanzar... El PC hará exactamente lo que tú le digas, y aun cuando uses valores aleatorios siempre podrás almacenarlos en alguna variable para poder consultar cuánto valen.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

Yo si puedo hacerlo fácilmente usando este sistema que dije antes:
Pongo un tile en el mapa visible, pero en lugar de mostrar un gráfico (al ser un valor superior a 150, porque lo digo en código) generaría un proceso que controlase la cámara a un punto fijo, crease unos muros invisibles (modificando el mapa de durezas) y generaría los enemigos, y ahi seguiría hasta que no quedase ninguno, levantamos los muros invisibles y devolvemos el control de la cámara al prota.

Tambien se puede hacer por colisión, claro, incluso por posición: para algo en la estructura scroll de bennu tenemos los valores x0 e y0 (o las locales X e Y del proceso target)... y si hablamos de mi motor de scroll tileado (yo vengo a hablar de mi scroll) también puedes consultar las coordenadas. De los que os montéis vosotros ya no puedo decir nada.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)