sábado, 31 de diciembre de 2011

Feliz Año 2012

Felicidades anticipadas! Este nuevo año prometo hablar de nuevos proyectos y el game engine en desarrollo, así como tutoriales o artículos interesantes acerca de este mundo. Saludos a los paseantes y que lo paseis bien!

martes, 20 de diciembre de 2011

SFML 2.0 - nueva API gráfica

Cada vez más cerca del lanzamiento de la nueva versión de Simple and Fast Multimedia Library, una API portable multimedia para C++ que ofrece un nivel de acceso alto y bajo de gráficos, entrada, audio etc. con el objetivo de proporcionar las funciones necesarias para realizar videojuegos y aplicaciones interactivas.
La versión inestable de SFML 2.0 lleva en el servidor mucho tiempo, pero hace menos de un mes el creador liberó una primera versión de la nueva API gráfica sin optimizaciones para ir probandolo. Con cambios como el soporte de vertex shaders, diferente manejo de transformaciones y optimizaciones en el renderizado, esta versión no tiene nada que envidiar a sus semejantes.

Todo apunta, o al menos a palabras de señor Laurent, a que la nueva API formará parte de SFML 2.0 en cuestión de semanas. Esperemos que el lanzamiento no se aleje mucho de esta fecha.
Para más información recomiendo consultar el foro (en inglés), exáctamente este tema y este otro para obtener información y opiniones más recientes de los usuarios.

Yo personalmente todavía estoy con la versión 2.0 sin la nueva API, pero calculo que no tardaré más de una semana en cambiarme. Aunque no haya documentación oficial alguna, el release lleva todo lo necesario para crearla. Y por supuesto, sobra decir que en el foro oficial agradecerán cualquier comentario sobre su buen o mal funcionamiento, errores, sugerencias etc.


Saludos.

miércoles, 14 de diciembre de 2011

Mini Soccer

Si bien Brave Bill fué uno de mis primeros proyectos como ya mencioné, indudablemente Mini Soccer puede considerarse como el primer juego que creé con SDL. Este pequeño minijuego, también sin terminarlo, fué producto de mi afición y participación activa en el fútbol.

La poca experiencia que tenía en aquel momento en la mecánica y la física de los juegos, trajo consigo (como es de esperar) una extraña reacción de la pelota en la colisión con los jugadores - aspecto que actualmente no he querido cambiar, por razones de pereza. Sin embargo, sería una opción muy interesante sacar un adictivo juego basado en éste con su tabla de clasificación online, multijugador online, selección de equipos y varias ideas que estoy seguro de que encajarían muy bien.

Como hasta ahora, os dejaré el proyecto jugable tal y como quedó en su momento, con unos cambiós en la equipación de los jugadores. Nada más y nada menos que las equipaciónes del Barça y del Real Madrid, a consecuencia del clásico jugado el pasado fin de semana, con el resultado de 1 - 3 a favor del Barça. Solamente por evitar cualquier trifulca aclararé que no sigo los colores de ninguno de los dos equipos xD.

Controles generales:
  • Número 1: Cambiar a modo 1 jugador contra la máquina.
  • Número 2: Cambiar a modo 2 jugadores.
Controles Jugador 1:
  • Flechas de dirección: Movimiento del jugador.
  • Ctrl derecho: Saltar.
Controles Jugador 2:
  • A, S, D, W: Movimiento del jugador.
  • Espacio: Saltar.

Mini Soccer versión windows: Descargar
Pide la versión para linux! =)
Qué tal un remake en SFML con nuevas funcionalidades mencionadas arriba? Por supuesto, la jugabilidad también cambiaría al igual que los gráficos. ALGUN GRAFISTA?

Saludos.

jueves, 8 de diciembre de 2011

Game Design Document

Hace poco tuve la oportunidad de leer unos artículos y partes de diferentes libros donde se trataba el tema del Game Design. Especialmente me apoyo en la explicación del libro llamado Game Programming All in One, que da a conocer las técnicas para hacer un simple documento del diseño de un juego.

Se trata de un documento donde se reunen todos los rasgos, características y reglas que un juego pueda esconder en su interior. De modo que facilita el desarrollo del mismo tanto en grandes compañías como a desarrolladores independientes. Mantener toda la información en la cabeza puede que no sea un problema para los desarrolladores independientes, pero sí para los grupos de desarrollo.

El problema de no usarlo

Una persona puede tener muchas ideas locas dando vueltas por la cabeza deseando ver que se hagan realidad. Es más o menos la primera idea que al creador le llega. Mas tarde este creador piensa mucho en el posible proyecto y va almacenando toda la información en su cabeza (Brainstorming). Esta persona reune un pequeño grupo de desarrollo (programadores, grafistas…) para poner en marcha su proyecto.
Pero hay un problema, que el principal creador mantiene todas sus ideas en la cabeza, y los demás miembros del grupo no pueden leer su mente. De modo que no saben ni entienden exactamente que es lo que quiere el creador.

Aunque parezca mentira, ocurre a menudo y es la causa por la que muchos proyectos son abandonados. Ya que un buen diseño del juego mantiene el proyecto organizado. Por eso animo a cualquier desarrollador a que antes haga un buen diseño del mismo.
  
Estructura general

Para un juego trabajado estaría bien hacer un diseño bastante extenso, pero no siempre hace falta hacer algo tan pesado. Aun así, nunca viene mal hacer un diseño lo mas detallado posible.

Hay muchas maneras de hacer un diseño, y esta es solo una más. De modo que cualquiera puede usar su propio estilo o su estructura mas deseada.

La idea de un game design es que un grupo de desarrollo mantenga las mismas ideas del juego y todos estén igualmente informados. Vamos a ver primero la estructura de un diseño cortito, normalmente usado para juegos cortos o remakes de otros.

Para un diseño corto sería suficiente tocar esta serie de puntos:
  • Visión global del juego. 
  • Objetivos del juego. 
  • Historia.
  • Personajes y enemigos. 
  • Menús y opciones.
  • Apariencia.
Y para un diseño más completo sería casi lo mismo, pero con algunos puntos más y hacer descripciones mas detalladas:
  • Visión global del juego.
  • Objetivos del juego.
  • Requerimientos del sistema.
  • Historia.
  • Personajes, sus historias y características.
  • Enemigos y sus características.
  • Menús y todas sus opciones.
  • Descripción de músicas.
  • Descripción de sonidos.
  • Descripción completa de los niveles y sus objetivos.
La diferencia entre estos dos diseños, es que en el diseño corto se describe el juego un poco por encima. Y en el extenso, el juego se describe totalmente; desde una historia detallada, hasta incluso el color del los botones del menú.

Éstas son nada mas que ideas de cómo lograr un documento de diseño que pueda servir para llevar a cabo un proyecto. Existen multitud de plantillas para los documentos de game design. Solo tenéis que iniciar vuestro buscador favorito y buscarlos con palabras clave, o bien guiaros por vuestra imaginación.

Saludos.

viernes, 2 de diciembre de 2011

Brave Bill

Esta vez traigo un pequeño proyecto abandonado (abandonware) hace ya unos cuantos años. Aún lo conservo en mi archivo y aunque apenas tiene niveles de juego, creo que no está tan mal para pasar un buen rato. Fué uno de mis primeros proyectos en C++ y SDL. En su momento quise obtener un buen juego con su historia y jugabilidad, pero la falta de experiencia e incluso el aspecto que fué cogiendo el juego resultaron ser un problema para mi gusto. De todos modos, gracias a este pequeño proyecto conseguí meterme más a fondo en este mundo y me dí cuenta que cualquier persona con ganas de aprender podía llegar a tener sus propias creaciones.


No recuerdo exáctamente por qué lo llame Brave Bill, pero sí recuerdo que en un principio le puse de nombre algo como Platformer haciendo referencia al género del juego. El juego reúne ciertas características de los juegos de puzzle y de habilidad, ya que algunos de los niveles te piden pensar antes de actuar o pueden resolverse con habilidad retándote a poner a prueba tus reflejos.

Para poder crear los escasos niveles que contiene, me propuse crear un editor de niveles usando tiles. Logré crear un simple editor para crear fácilmente niveles de manera visual y sin esfuerzo, nada muy complejo pero cumplía con su objetivo.

En el menú inicial seleccionamos el modo con la tecla espacio. Para controlar el personaje solo hay que usar las flechas del teclado. Esto nos permite mover el jugador de izquierda a derecha y saltar. Además, podremos realizar un walljump si saltamos estando pegados a la pared. Y si nos acercamos al borde de un bloque, podremos agarrarnos siempre y cuando mantengamos la tecla pulsada hacia adelante, y mientras lo hacemos, podremos subir pulsando la tecla de saltar. De lo contrario, caerá rozando la pared para ejecutar un walljump si eso es lo que queremos. Puede parecer dificil al principio, pero uno se acostumbra.

Brave Bill version windows: Descargar
 
Como siempre, si alguien lo desea para Linux que lo pida e intentaré compilarlo. Tambíen me gustaría hacer una petición especial, que es simplemente avisar de su funcionamiento ya que nunca lo he probado en otras PCs. Por si esto fuera poco, si surge la ocasión y alguien me pide que distribuya el editor de niveles o incluso el código fuente, hacermelo saber. Sería un honor que este juego fuera útil para el aprendizaje de los demás tanto como lo fué para mí.

Saludos.

viernes, 25 de noviembre de 2011

Particle Maker

Como ya prometí en la entrada anterior, os voy a mostrar un pequeño prototipo del motor de particulas básico que programé hace un tiempo. Junto con el sistema de particulas cree un pequeño editor con funcionalidades mínimas para poner en marcha el motor y ver el resultado.
Es el motor de particulas que usé para crear los algunos de los efectos en DBZBX.

La interfaz permite cambiar parametros del tipo de particula para poder darle el aspecto deseado a nuestro efecto. Pero al ser un prototipo, esta interfaz no ofrece todas las funcionalidades que ofrece el motor. Tales como; poder cargar imagenes diferentes para las particulas, aplicar gravedad, interpolación entre 2 colores en lugar de 3, cambiar la región en la que se crean las particulas, modificar la cantidad de particulas, añadir emisores, usar distintos tipos de particulas en un mismo sistema (por ejemplo para poder crear particulas distintas a la muerte de otras) etc.

Por ejemplo, este efecto de fuego no lo podríamos realizar con la interfaz visual, ya que no nos permite cambiar la región en la que se crearan las partículas, ni la cantidad de partículas que se crearán en cada frame.

Para terminar, os dejaré el editor en vuestras manos por si quereis salsear con él. Aquí teneis los controles:

  • Flechas derecha/izquierda:  Ver ejemplos (notar que el único sistema de particulas editable es el primero, en un principio el "punto negro").
  • Clic y mover ratón: Mover el centro del sistema de partículas.
  • Espacio: Cambiar el color de fondo aleatoriamente.

Particles Maker version Windows: Descargar

Dado que se trata de un prototipo antiguo, puede contener errores, asi que como siempre, se aceptan sugerencias o incluso, reclamaciones para la versión de Linux.
Un saludo.

martes, 15 de noviembre de 2011

Abandono del DBZBX Online

Creo que alguna vez ya lo comenté y quise hacer pruebas para programar un DBZBX en C++ usando la excelente biblioteca llamada SFML. En su momento estuve metiendo horas en mi tiempo libre para ver que podía salir, y resulta que fué todo un éxito. Al mismo tiempo que lo hice, programé un motor de partículas del que hablaré y mostraré mas adelante.

Al programarlo en C++ y usar SFML pude compilarlo para otros sistemas operativos Unix, en mi caso Linux. En un principio no me gustó la idea de volver a crear exactamente lo mismo, ya que por mucho que no sea lo mismo hacerlo con estas herramientas, la apariencia sería la misma. Así que pensé en que podía orientarlo totalmente al juego multijugador online, que sería totalmente distinto y más funcional.

Totalmente motivado me puse manos a la obra y me puse a crear un sistema propio de conexion virtual usando el protocolo UDP, ya que en juegos a tiempo real suele ser (no siempre) más adecuado que el protocolo TCP. Puedo hablar y hablar sobre todos los aspectos que quería implementar y las ideas que me rondaban en la cabeza, pero esto es lo más relevante.

Resumiendo, llegué a implementar casi al completo la dimámica del juego, cuando me dí cuenta de que este proyecto no me llevaría a ninguna parte. Así que orienté el proyecto hacia la creación de un motor de juego para usarlo en cualquier juego 2D (también hablaré sobre esto), el cual tengo bastante avanzado.

Por ello, solamente quería dejar lo último (un prototipo, un alfa) que queda de este juego a todos aquellos que lo han seguido. Está compilado para Windows, pero tambíen puedo compilarlo para Linux si realmente alguien lo desea:

Windows version: Descargar
Linux version: Descargar

martes, 8 de noviembre de 2011

Muerte, vida y resurrección

A lo largo de estos últimos años posiblemente haya aprendido una valiosa lección. Me aparté de un blog que generaba gran cantidad de visitas y de un proyecto finalizado dejando a algunos usuarios decepcionados.

Resumiendo brevemente, puedo decir que al finalizar DBZBX como ya comenté, formé un grupo intependiente (Infinite2D) con Oskar (conocido como Trapso) que no llegó a cuajar en su totalidad. Falta de motivación, experiencia e incluso de gente dispuesta currar fueron factores influyentes. La falta de tiempo por mi parte tampoco estuvo ausente en este periodo de crisis, ya que -como a todos los desarrolladores independientes nos gusta decir- todos tenemos nuestra vida privada.

Fué la desaparición parcial de una especie de comunidad activa de usuarios dispuestos a dar su apoyo moral. Algo de lo que realmente me siento arrepentido, más que nada por haber dejado pasar esa oportunidad. Ésta es la razón principal por la que he creado un nuevo blog en otro host manteniendo el contenido anterior (tengo que pasarlo desde wordpress, estoy en ello), eliminando así las restricciones del hosting de wordpress.

¿Pero por qué este cambio tán arriesgado en el blog?
Aunque no haya sido una fácil decisión, es algo que no he podido evitar y ahora simplemente gozo de más libertad para publicar.

Espero poder resolver aquellas dudas que quedaron al aire respecto a DBZBX y espero llegar a generar ese interés en los demás manteniendo el sitio actualizado insertando contenido sobre proyectos tanto como diversos temas a mi parecer, interesantes.

Con esto, me gustaría hacer un llamamiento a todos los que aquí se mantuvieron para poder dar a conocer el nuevo paradero del blog. De hecho, ahora mismo permanece en la sombra por falta de popularidad. Demos un poco de tiempo a Google para que haga su excelente trabajo de busqueda. Intentaré publicar sobre temas como la programación general y el desarrollo de videojuegos, así como artículos de interés general o proyectos (¿Marked11?).

Saludos, gracias y bienvenidos otra vez.