Un roguelike en BASIC (mi aventura personal)

Programando el Amstrad en BASIC, C, etc.
Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Mié 02 Oct , 2019 9:11 pm

Y una duda más: El movimiento se siente con un lag muy molesto. Eso es debido a que tras mover el personaje, añado un bucle vacío para que haga una espera para que no se mueva a toda leche. Eso genera el problema de que a veces las teclas no responden inmediatamente. Creo recordar que había un comando para borrar el buffer del teclado, de forma que hay que pulsar cada vez, en lugar de dejar la tecla apretada. Creo que haciendo eso el movimiento sería mucho más responsivo (aparte de que el truco del bucle vacío siempre me ha parecido una chapuza) ¿Alguien se acuerda?
Tal como estás leyendo el teclado, no hay ningún buffer de teclado entre la pulsación y tu lectura. Al usar INKEY, sólo estás comprobando el estado de las teclas (pulsada/no pulsada). El buffer de teclado es para la obtención de caracteres y su posterior procesado, y eso sucede cuando se usa lectura gestionada por INPUT o INKEY$. Es en esos casos donde afectan los delays de pulsación de tecla, que están configurados para ser mayor entre la primera y segunda pulsaciones, con un delay concreto entre pulsaciones.

Si notas input lag, sólo puede deberse a 2 cuestiones: que seas muy sensible al input lag del emulador (cosa que creo que no es el problema) o simplemente que notas el funcionamiento de tu propio código y no te da la respuesta que buscas.

Yo no me preocuparía por el bucle de espera, puesto que cuando añadas enemigos y otras cosas el juego irá más lento y probablemente no te haga falta.

Tienes otra forma de sincronizar para evitar ir a más de 50 FPS, que consiste en esperar al Frame Flyback antes de tus rutinas de dibujado, llamando a CALL &BD19. Esto te asegura que tu bucle no pasa de los 50 FPS, aunque en BASIC es muy raro siquiera llegar ahí.

En cuanto al bucle de espera, puedes hacer una solución mucho mejor que es añadirte un cooldown. Cada vez que tu personaje se mueva, inicia un contador a 3, por ejemplo, que hasta que no vuelva a 0 no vuelva a leer teclas y hacer acciones. Decreméntalo en 1 en cada vuelta de tu bucle principal. Así no metes una espera que paraliza el juego entero, sólo haces que tu personaje no pueda moverse más de 1 de cada 3 fotogramas, pero el juego a nivel global irá a su velocidad normal, sin parones.
Eso sería útil para un juego a tiempo real en el que la acción transcurre al mismo tiempo que el movimiento del personaje, pero este va a ser por turnos. De todos modos, seguiré avanzando y comprobaré como se va portando. A lo mejor cuando el juego se complique, el propio retardo del proceso ralentiza lo suficiente el control. Gracias por toda esa información, la tendré en cuenta para el futuro.

Avatar de Usuario
XeNoMoRPH
I am The Forum
I am The Forum
Mensajes: 2312
Registrado: Lun 08 Abr , 2013 5:55 pm
Ubicación: Galaxia de Magallanes
Contactar:

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor XeNoMoRPH » Jue 03 Oct , 2019 2:17 pm

Saludos !!! , como veo que lo estás haciendo en Basic, a lo mejor te interesa usar esto:

viewtopic.php?f=7&t=4226

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Jue 03 Oct , 2019 3:16 pm

Actualizado. Ahora hay obstáculos al azar en cada nivel. Video y codigo en el primer post.

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Jue 03 Oct , 2019 11:30 pm

A ver, una duda para los más experimentados: ¿Como puedo hacer una consulta INKEY$ sobre un caracter no imprimible? Es decir... ¿cómo puedo consultar si se ha pulsado una tecla del cursor usando INKEY$? Esas teclas no devuelven caracteres. He probado con los chr$ de control de cursor (chr$(8) para la tecla izquierda, por ejemplo), pero no funciona.
¿Alguna pista?

EDITO: Vale, ya he descubierto como es. Suele pasarme que pregunto antes de investigar un poco más.

Por otra parte... hay versión actualizada en el primer post.

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Sab 05 Oct , 2019 12:10 am

Vuelvo con otra duda que me tiene atascado. Estoy haciendo los menus para los turnos y estoy controlando la seleccion de opciones pulsando teclas con INKEY$. Lo malo es que no se qué caracter devuelve la tecla RETURN. He estado usando este miniprogramita para consultar los caracteres no imprimibles:

10 a$=inkey$:if a$="" then 10
20 ?a$
30 goto 10

Que, como veis, espera una pulsacion, dibuja el caracter cuando se produce y vuelve al principio, pero cuando pulso ENTER me devuelve un caracter vacio. Así que la pregunta es: ¿Como compruebo si se ha pulsado ENTER usando INKEY$?

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6971
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor MiguelSky » Sab 05 Oct , 2019 12:13 am

No uses INKEY$, usa INKEY!

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Sab 05 Oct , 2019 12:41 am

Nueva actualización en el primer post. De momento he solventado el problemita del INKEY$ usando el espaciador como confirmación de la selección.

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Sab 05 Oct , 2019 12:42 am

No uses INKEY$, usa INKEY!
Si uso INKEY tengo el problema de que las comprobaciones van a toda leche :(

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6971
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor MiguelSky » Sab 05 Oct , 2019 2:22 am

Pero úsalo sólo en el menú, para la pulsación de esa tecla.

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Sab 05 Oct , 2019 2:36 am

Pero úsalo sólo en el menú, para la pulsación de esa tecla.
Joder, pues puedes creerte que no se me habia ocurrido algo tan simple. Definitivamente soy mongolo.

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6971
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor MiguelSky » Sab 05 Oct , 2019 2:45 am

<XX No, hombre! Muchas veces ves la solución a un problema dejándolo estar. Te vas a hacer otra cosa y cuando vuelves se te enciende la bombilla.

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Dom 06 Oct , 2019 5:49 pm

Este fin de semana no avanzo mucho con el código porque estoy llegando a una etapa más compleja de lo que pensaba. Estoy diseñando el sistema de levelup y combate. Hoy le he dedicado un rato a decidir los valores de subida de nivel. Creo que una tirada de 1D10+4 le va bien.
niveles.jpg

Atomico
Forero habitual
Forero habitual
Mensajes: 175
Registrado: Mié 14 Nov , 2018 4:02 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Atomico » Dom 06 Oct , 2019 6:03 pm

No olvides, en un futuro, poner una opción para grabar la partida en disco/cinta o bien un sistema que genere un código y que al volver a introducir el código te genere la partida....un juego donde vas evoluciónando el personaje y que no se pueda salvar el avance es frustrante.

La verdad es que te puede salir un juego bastante entretenido...pantallas generadas al azar (infinitos niveles), manejo sencillo y reglas simples, por turnos....le puedes ir metiendo poco a poco más cosas....puntos de acción, objetos variados (pócimas de energía, armas, etc), varios tipos de enemigos diferentes, varios personajes iniciales a elegir, hechizos, puertas secretas, niveles "bonus", ...puede dar mucho juego.

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Dom 06 Oct , 2019 6:45 pm

No olvides, en un futuro, poner una opción para grabar la partida en disco/cinta o bien un sistema que genere un código y que al volver a introducir el código te genere la partida....un juego donde vas evoluciónando el personaje y que no se pueda salvar el avance es frustrante.

La verdad es que te puede salir un juego bastante entretenido...pantallas generadas al azar (infinitos niveles), manejo sencillo y reglas simples, por turnos....le puedes ir metiendo poco a poco más cosas....puntos de acción, objetos variados (pócimas de energía, armas, etc), varios tipos de enemigos diferentes, varios personajes iniciales a elegir, hechizos, puertas secretas, niveles "bonus", ...puede dar mucho juego.
Cierto, todo eso lo tengo en mente. Quiero hacerlo cada vez más complejo. De momento ya tengo planeado que en el cofre puedan salirte regalos distintos además de dinero (bonus a tus habilidades, experiencia, vida, etc.)

Avatar de Usuario
Paquito
Me voy lanzando
Me voy lanzando
Mensajes: 50
Registrado: Dom 22 Sep , 2019 11:57 pm

Re: Un roguelike en BASIC (mi aventura personal)

Mensajepor Paquito » Vie 11 Oct , 2019 12:37 am

Nuevo DSK con cambios menores. Es solo una vueltecilla que le he dado, espero tener tiempo este fin de semana para avanzar con los turnos de ataque reales.


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic