12 de Julio, 2019

»Night Knight en Retro Gamer · El juego ha salido en Retro Gamer número 196 con una puntuación de un 92%, y le han dado un Retro Gamer Sizzler (como ya pasó con Dawn of Kernel). El comentario es bastante simpático, así que estoy muy contento. La mayoría de las críticas en todas partes han sido muy positivas, pero tener que el juego sea tan bien valorado en una revista tan importante, siempre es algo especial.

Hay 0 comentarios, anotación clasificada en: msx.

11 de Julio, 2019

Proyectos pendientes

Estuve hace un par de días hablando en el canal de YT de Javi Ortiz, charlando sobre Night Knight, y Javi me reguntaba qué sistema pensaba añadir a mi lista.

Mi respuesta fue: creo que no. Ahora mismo hago (o he hecho) juegos para ZX Spectrum, Amstrad CPC, Commodore 64 y MSX. Son cuatro sistemas ya, lo que significa que si voy cambiando de uno a otro, y al ritmo que hago los juegos, pueden pasar varios años hasta que repita plataforma, con el riesgo que eso conlleva de que se me olvide cómo funcionan las cosas :(.

Y es que en este momemto mi lista de proyectos empezados o pendientes es la que sigue:

  • Uchusen Gamma (MSX)
  • Starblind (ZX Spectrum)
  • Kitsune's Curse (Amstrad CPC)
  • The Goblin King (C64)
  • Projecto sin nombre, colaboración con grafista (Amstrad CPC)

Los he puesto en un orden de posible, o porque ya tengo el tema avanzado y no veo que haya ningún bloqueo: solo hay que seguir y acabar el juego. Tampoco es que no pueda cancelar cosas, pero creo que me gustaría completar todo lo que hay en esa lista.

Además hay algún tema que empecé pero que se me hace cuesta arriba retomar por tamaño o porque en su momento quizás no fuera tan buena idea, como un posible juego de rol para el CPC (que a veces alguien me recuerda :P), pero en general yo diría que esta es "la lista™".

Si vemos cómo ha ido mi tiempo libre estos últimos años, y si las cosas se mantienen estables, ahí hay material para unos 5 años de trabajo. La pregunta que me hago es: ¿son estos proyectos lo suficientemente interesantes como para mantener el interés durante tanto tiempo? Bueno, espero que sí :D.

Voy a hacer lo posible para no añadir más cosas a la lista y, si puede ser, no plantear más secuelas. Estoy llegando a la conclusión que es más fácil (y posible) acabar un proyecto con buenos resultados si es algo más pequeño y no está limitado por ideas o mecánicas establecidas en un episodio anterior de una serie.

Hay 0 comentarios

9 de Julio, 2019

»Scripts en python para convertir gráficos · Este pasado fin de semana puse en un repositorio público una versión de mis scripts para convertir PNG para usar en el MSX. Hay gente que usa herramientas específicas, pero yo prefiero trabajar con GIMP y luego convertir un formato moderno (como el PNG) a lo que sea que necesito en el sistema para el que estoy programando. Lo mismo hice para el C64 y para el ZX Spectrum. Me falta publicar las de CPC, solo tengo que revisar el código y quizás añadir algún extra para que las herramientas sean un poco más útiles (por ejemplo: en estas últimas que he publicado he añadido soporte para generar datos para ensamblador, aunque no es algo que yo use en mis proyectos).

Hay 0 comentarios, anotación clasificada en: python, open source, msx, c64, speccy.

8 de Julio, 2019

»Trabajando en Uchusen Gamma · Desde que publicara Night Knight he continuado trabajando en Starblind, sobretodo en las sesiones que he ido grabando, pero ese proyecto se ha vuelto a enfriar un poco (quizás porque la idea está un poco menos definida). Creo que fue en las navidades pasadas que estuve cacharreando con la idea de hacer un juego con scroll en MSX empleando algunos trucos (porque el MSX no tiene hardware para hacer scroll), pero se quedó en nada. Le he dado otra vuelta y he conseguido algo que ya tiene nombre: Uchusen Gamma (algo así como nave espacial gama, medio en japonés). La cosa pinta bien y aquí hay un vídeo de la primera fase probando música y efectos.

Hay 0 comentarios, anotación clasificada en: msx, programming.

16 de Junio, 2019

LSP y Vim

Llevo ya unos años usando syntastic en vim, especialmente en Python (y algo en Go, porque he programado menos en este lenguaje). Lo que hace este plug-in es analizar la sintaxis de nuestro código con diferentes herramientas según trabajamos (normalmente al guardar el documento), y nos muestra en la barra lateral si hay errores o warnings.

Es como compilar según programamos, y a mi personalmente me ha servido mucho para mejorar mi python porque esos warnings te enseñan casi sin esfuerzo a escribir código siguiendo la guía de estilo de python (el PEP8). Aunque últimamente estoy volviéndome muy fan de herramientas que dan formato a nuestro código automáticamente, pero esto ya es historia para otra anotación ;).

Analizar el código así tiene ventajas, pero evidentemente tiene un coste, porque cada vez que se guarda el fichero, hay que ejecutar la herramienta que hace el trabajo. En general hablamos de milisegundos, y desde hace un tiempo vim hace esto de forma asíncrona (de fondo, sin bloqueos).

Hasta que empiezas a programar en Scala y tienes el problema de los tiempos de arranque de la máquina virtual de Java :(.

La verdad es que syntastic es una pasada, pero ha costado tiempo añadir soporte para muchos lenguajes y herramientas, y está disponible solo para vim.

Aquí es donde entra Language Server Protocol, que es una propuesta de Microsoft para estandarizar un protocolo para proporcionar la misma funcionalidad que syntastic nos da, y mucho más.

La idea es que ejecutamos un cliente de LSP en nuestro editor, sea cual sea, que se comunicará con un servidor que proporciona la funcionalidad necesaria para el lenguaje en el que estamos desarrollando.

De esta forma los servidores son independientes del editor, y al ser una arquitectura cliente/servidor, no es necesario esperar a que las herramientas arranquen, con lo que la lentitud al arrancar de la máquina virtual de Java es irrelevante (o incluso el análisis de grandes ficheros en python si usamos una herramienta pesada como pylint).

Aparte del análisis hay otras funcionalidades, como acceder a la documentación, auto-completar código semánticamente, refactorizar código (por ejemplo: renombrar variables), etc; todo dependiendo de lo que soporte el cliente y el servidor (LSP es bastante grande).

Ahora mismo hay una buena lista de servidores, y he encontrado un cliente muy fácil de instalar y que funciona muy bien en vim: LanguageClient-neovim.

En python es muy fácil instalar python-language-server y, aunque hace más o menos lo mismo que syntastic, es un poco más rápido y da algunas cosas extra que pueden ser bastante útiles.

Al final todo esto es lo mismo que se puede conseguir en un IDE pesado, pero me parece genial poder contar con estas ayudas en mi editor favorito.

Hay 0 comentarios, anotación clasificada en: vim, programming.

1 de Junio, 2019

Las contraseñas de Night Knight

Ya han pasado unas semanas desde la publicación de Night Knight, y ya ha habido tiempo para que la gente juegue y diga lo que piensa, y la respuesta ha sido mayoritariamente positiva.

Los pocos comentarios negativos no están dirigidos al juego en sí, sino a temas de presentación, como por ejemplo que el sistema para introducir contraseñas no es muy cómodo, o que el juego debería permitir continuar una vez se acaban las vidas.

Lo cual no está mal, porque lo que ha gustado menos, no es el juego. Tomo nota para hacer las cosas de forma diferente en el futuro.

Este es el primer juego en el que implemento contraseñas, y no quería que fuera la principal forma de jugar al juego. Cambia mucho la dinámica si te enfrentas a cada pantalla con 3 vidas una y otra vez hasta que pasas a la siguiente y te apuntas la contraseña.

Evidentemente no espero que nadie, o casi nadie, complete las 80 pantallas de una sentada, por eso implementé el sistema de contraseñas. Además me permite cometer más errores diseñando las pantallas, tanto por ajuste de dificultad como por curva de aprendizaje (por ejemplo, en Magica la última pantalla del juego es notablemente más fácil que las dos anteriores).

Pero está claro que el diseño del juego no funciona igual si tienes un número infinito de vidas (mantienes los puntos) o de continuaciones (pierdes la puntuación), y con las contraseñas lo que he propuesto es continuaciones incómodas, esperando que los jugadores arriesguen y no guarden la contraseña en cada pantalla.

Respecto a las contraseñas en sí, el sistema es muy sencillo y consta de 3 bytes codificados en 6 caracteres de un diccionario de 16. Por ejemplo YRYPKN.

El primer byte es aleatorio, para que sea más complicado romper el sistema (para mi que es más fácil meter un poke para conseguir vidas infinitas), con lo que puedes tener 256 contraseñas válidas para una misma pantalla. El siguiente byte es el número de pantalla al que se le aplica una función basada en el primer byte, y finalmente hay un byte de control muy simple para evitar que una contraseña aleatoria funcione.

Al final es muy sencillo y la mayor complicación ha sido introducir la contraseña, porque decidí no usar el teclado. Los MSX pueden tener las teclas organizadas de muchas formas, incluso más que QWERTY y AZERTY, y debido a cómo se lee matriz del teclado en estas máquinas, era imposible hacerlo de forma que funcionara en todos los modelos.

Tengo pendiente poner por aquí algunos enlaces a reacciones al juego, que además va a salir comentado en un par de publicaciones en papel :D.

Hay 0 comentarios, anotación clasificada en: msx.

15 de Mayo, 2019

»Night Knight ·Ya he publicado Night Knight y está disponible para descarga gratuita. La edición de coleccionista, por parte de Poly Play, está casi lista y espero que pronto esté en manos de la gente. Es pronto, pero por ahora parece que la recepción ha sido bastante buena. Es juego es divertido, eso ayuda :). Una anotación corta y un poco sosa, pero mi excusa es que no tengo mucho tiempo para más. Intentaré poner algunos enlaces a reacciones cuando las hayan.

Hay 0 comentarios, anotación clasificada en: msx.

16 de Abril, 2019

»Fecha para Night Knight · Ye tenemos fecha para la publicación de Night Knight, y es el 15 de Mayo de 2019. El juego lleva ya acabado más de un mes, pero son las cosas que tienen las ediciones físicas.

Actualización: he mandado la "nota de prensa", y ya se ha mencionado en algunos sitios. Por ejemplo:

Hay 0 comentarios, anotación clasificada en: msx.

23 de Marzo, 2019

»Sesiones de programación · Estoy haciendo un experimento: estoy grabando mis sesiones de programación haciendo juegos de 8-bits, y compartiéndolas en YouTube. Pensaba inicialmente hacer streaming en directo, pero resulta que mi conexión a internet no tiene suficiente subida, así que por ahora estoy haciendo algo más sencillo que es grabar y luego subir el resultado. Todo en inglés, con mi acento, y además he preparado una página web con información. Por ahora está resultando interesante, veremos en qué queda :).

Hay 1 comentario, anotación clasificada en: programming.

18 de Marzo, 2019

»Teclados mecánicos · He descubierto por accidente un subreddit sobre teclados mecánicos, y los participantes en esta comunidad suben fotos de teclados que son una auténtica preciosidad. Hace 5 años me pasé a ordenador de escritorio y me compré un teclado compacto mecánico. Por aquel entonces no tenía mucha idea y creo recordar que no habían tantas opciones económicas como hay ahora, pero tuve la suerte de comprar un buen teclado (un KBT Pure Pro PKX-7000, que ahí sigue como el primer día). Y es eso lo que me ha llamado la atención: la cantidad de teclados decentes por menos de 30€, todo gracias a los gamers. No creo que cambie de teclado a corto plazo, pero parece que es buen momento para probar y hacerse con uno de estos teclados que mejoran mucho la experiencia que proporciona un teclado tipo dome-switch más común (y barato).

Hay 0 comentarios

Entradas antiguas