Karoshi MSX Community
05 de Julio de 2021, 07:35:22 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Buscando consejo  (Leído 2742 veces)
0 Usuarios y 1 Visitante están viendo este tema.
burguera
Visitante
« : 05 de Octubre de 2006, 11:09:20 pm »

Tengo unas dudillas diversas, variadas y surtidas que quería comentaros. En primer lugar, estoy intentando hacer un juego de plataformas (en menudo berenjenal me he metido, sobretodo porque todo parece poco después de haber visto The Cure). Decir también que estoy tirando de la BIOS.

Tengo la parte de gestión del mapeado bastante avanzada (aunque no tengo ningún mapeado creado aún, eso cuando tenga el motor en mejor estado).  Siguiendo el consejo de Robsy, defino unos objetos con el formato ANCHO,ALTO,TILES. Además, tengo definidas propiedades para los tiles. Por ejemplo,
los tiles del 0 al 120 son tiles sólidos (el jugador no podrá atravesarlos), del 120 al 200 son tiles de decorado (el jugador puede atravesarlos) y del 200 al 255 son tiles sólidos que, además, dañan al jugador si los toca. Así, una pantalla está compuesta por una lista de objetos y las coordenadas en que deben dibujarse. No hago ningún tipo de comprobación de límites, para ganar velocidad, ya me encargaré a la hora de crear el mapeado de que los objetos no se me salgan del buffer de pantalla. Cuando este buffer se ha modificado (mantengo un "dirty bit" para saberlo), se hace el volcado (después del v-blank) a VRAM. Hasta aquí, ¿os parece correcto?

Por otro lado está la cuestión del fondo de la pantalla. Lo que dibujo "por debajo" de los objetos. Para poner detallitos (ventanas, antorchas, ...) pensaba usar objetos como los que he dicho antes con la propiedad de que el jugador pueda atravesarlos. Y para rellenar el resto, cada pantalla tiene asociado un patrón de 3x3 caracteres con el que se rellena antes de dibujar los objetos. Lo de 3x3 parece raro, pero mi zona de juego es de 30x15, y así cuadra la cosa. Más adelante,
en función del espacio que me quede en ROM, seguramente comprimiré todos estos datos. ¿Que os parece? ¿Alguna recomendación para poder poner fondos "complejos" (que no sean una simple trama, sinó un dibujo complejo como la primera fase de The Cure)

Finalmente, me estoy poniendo con los sprites ahora mismo. Tengo mi buffer en RAM con los atributos de los sprites, sobre el que trabajo, y, llegado el v-blank hago el volcado a VRAM. En un principio había pensado poner un "dirty bit" asociado a cada sprite, de tal forma que al modificar un sprite en RAM, el dirty bit correspondiente se pone a uno, y la rutina de volcado a VRAM sólo vuelca si el dirty bit está a uno, y, después de volcar lo pone a cero. La duda es la siguiente: por un lado, poner el dirty bit evita transferencias repetidas de atributos de sprites a VRAM. Pero por otro lado, usar este bit me obliga a transferir los datos de cada sprite con un LDIRVM para cada uno, mientras que si transfiero siempre todos los atributos, con un solo LDIRVM es suficiente. Tratandose de un juego de plataformas, supongo que habrá unos diez sprites a lo sumo en pantalla, es decir, 40 bytes a transferir. ¿Que opción os parece mejor?

Y ya para terminar, tratandose de un juego de plataformas donde el personaje debería poder andar, correr, saltar, ... ¿como gestionaríais todas estas acciones? ¿con una máquina de estados? Vi la demo del "enemator" (http://retrodevelopment.wordpress.com/) y su idea es usar una máquina de estados. ¿Cómo lo hacéis por aquí?

Disculpad la parrafada, al menos me he desahogado. A ver a quien, sinó, le cuento todo esto sin que deje de dirigirme la palabra de por vida ;-)
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #1 : 06 de Octubre de 2006, 12:49:39 am »

Te he enviado un paquetito para que vayas viendo como es un motor básico para un juego de plataformas muy elemental. En cuanto a lo que cuentas de generación de pantallas me parece correcto. Pero claro, dependerá de la complejidad que quieras darle. Respecto a la calidad de imagen de la primera fase de THE CURE, es en realidad una única imagen sobre la que se sobreimponen los elementos de la pantalla. Puedes hacer lo mismo, pero te recomiendo que seas conservador con la memoria.

Disfruta del envío  Wink
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #2 : 06 de Octubre de 2006, 07:28:48 am »

AFD .. Automata Finito Determinista
Esa debe ser tu máquina de estados y si .. es una gran idea que la IA de tus enemigos y personaje principal usen estas cosas.
En línea

MSX4EVER2GETHER
www.nerlaska.com
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!