Guía para nuevos proyectos

Este artículo está dedicado a las tareas de organización en Zenvoid Studio, para planificar y desarrollar nuestros proyectos. Habrá continuaciones posteriores. Los procedimientos expuestos aquí están basados en los consejos y experiencias que, amablemente, han compartido con nosotros otros grupos dedicados al desarrollo de videojuegos.

Puede haber varios proyectos abiertos en paralelo, en distintas fases de realización. Cada persona decide en qué proyecto participar, según sus intereses. Puedes participar en varios proyectos al mismo tiempo, si dispones de tiempo y ganas para ello.

Quien propone un proyecto asumirá el papel de game designer. Puede haber más perfiles de tipo game designer en el equipo, pero sólo uno será el coordinador general y defensor del proyecto, que se encargará de zurrar con un látigo a los otros participantes cuando se duerman. Bueno, lo de zurrar con el látigo quizás correspondería al productor, pero de esos no tenemos. Ni látigos tampoco, estamos en ello.

Algunos proyectos requieren colaboración de múltiples perfiles. Puedes centrarte en la parte que más te gusta y contar con apoyo en las áreas que no son tu especialidad, o simplemente distribuir tareas para avanzar más rápido.

Veamos a continuación las tareas que tenemos que hacer antes de aventurarnos con el desarrollo. No es necesario seguir un orden concreto, se pueden hacer en paralelo.

Crear un prototipo del juego

Es opcional, en algunos casos será conveniente y en otros no será necesario. El prototipo no es el juego, es simplemente una muestra de ideas muy simplificada. Se lo mostraríamos al productor, si lo tuviésemos. Como no tenemos, me lo puedes enseñar a mi, e iré rápidamente a comprar un látigo 😉

Con el prototipo, organizaremos una presentación en una próxima reunión, lo mostraremos a todo el grupo para que sepan que tu idea es genial y se animen a participar.

Si tu especialidad es el arte visual, en lugar de un prototipo podrías crear arte conceptual y bocetos de la idea, que serán igualmente efectivos.

Y si no puedes crear un prototipo ni tampoco arte conceptual, un documento o presentación con la explicación detallada de tu proyecto servirá para que se entienda la idea. Como no tenemos forma de extraer información directa de cerebros ajenos (todavía), debes comunicar tus ideas al grupo de alguna manera.

Formar el equipo y elegir los perfiles

Si tienes la intención de hacerlo tú todo, no sería necesario formar equipo. Incluso en ese caso, siempre puedes contar con sugerencias, pruebas y ayuda puntual del grupo.

Lo más habitual es que necesites colaboradores, excepto cuando el proyecto es muy sencillo. Es improbable dominar todas las áreas y materias necesarias para crear un videojuego. Haz una lista de los puntos en los que necesitarás apoyo.

  • El diseñador del juego (game designer) serás tú, pero puedes elegir cooperar en el diseño con otra persona si lo crees conveniente.
  • Uno o varios programadores.
  • Arte visual. Los dibujos conceptuales y los gráficos finales del juego son tareas diferentes, pueden crearse por personas distintas, o la misma.
  • Interfaz de usuario.
  • Diseño de niveles.
  • Efectos de sonido, música.

Durante el desarrollo, mantendremos una tabla para recordar quién tiene asignada cada tarea, y quién está trabajando en cada escena o componente del juego en cada momento. Es importante delimitar correctamente las escenas y elementos asignados a cada desarrollador para evitar colisiones en las modificaciones.

Los proyectos ya empezados tienen prioridad, para que se completen satisfactoriamente. Por ese motivo, cuando hay varios proyectos en curso, podría ser difícil que encuentres perfiles disponibles para empezar uno nuevo. En ese caso, una opción sería guardar la idea durante un tiempo y volver a exponerla en un momento más favorable.

Crear un GDD (Game Design Document)

Hemos hablado de los GDD en otras ocasiones, los documentos de diseño del juego (Game Design Document). Sirven de referencia durante el desarrollo, permiten mantener al equipo enfocado en una línea de trabajo concreta, anticiparse a las dificultades y tomar decisiones.

Como es la parte más extensa, continuaremos con una guía para crear el GDD próximamente, en otro artículo. Hasta entonces, este juego servirá como ejemplo:

Charge Kid es un videojuego creado con Godot Engine, ha sido publicado en PC y consola. Lo más interesante para nosotros es que el desarrollo es open source, su código fuente completo está disponible. Y además, los autores han sido especialmente generosos por compartir el documento de diseño del juego.

Sin embargo, se mueve

Esta es una entrada atípica, con un video sobre un tema que quería tratar en algún momento. Una de las partes de ese video la he mencionado otras veces, sobre las frecuencias de muestreo en los archivos de audio, y concretamente sobre la confusión que suele generar. Es posible que me hayas oído hablar sobre eso anteriormente en alguno de los talleres de sonido y música de Medialab-Prado.

Pero la temática principal del video no es el sonido. Tampoco tiene relación directa con los videojuegos, excepto por haberse creado con Godot Engine. Trata sobre confusiones, sobre errores, sobre desinformación. Sobre una sociedad con tantos medios tecnológicos y un nivel tan abrumador de datos en sus manos, que en lugar de sentirse mejor informada, se encuentra tan perdida como nunca antes en la historia.

El video se ha creado con Godot, y posteriormente compuesto con el editor de video de Blender. Normalmente será más conveniente utilizar algún programa especialmente diseñado para crear presentaciones, pero hay ocasiones en las que un motor de videojuegos puede ser útil. Por ejemplo, cuando necesitamos hacer una presentación interactiva.

Existen varios proyectos para facilitar la creación de presentaciones con Godot, uno de ellos es Godot Slides. En este caso en concreto, he desarrollado una extensión propia, que podríamos utilizar en otras ocasiones.

Instrumentos de música virtuales

Para crear la música o el sonido ambiental que acompaña a una obra audiovisual, podemos elegir entre sonidos electrónicos, sonidos de instrumentos acústicos, o una combinación entre ambos. Los instrumentos de música tradicionales son ideales si buscas un resultado orgánico y natural, pero es probable que no tengas acceso a todos los instrumentos que te gustaría.

Imagina que estás creando la música de fondo de la escena de presentación de un videojuego. Se trata de una aventura, con muchos enigmas y puzzles por resolver… y sin saber por qué, tienes en la cabeza una sencilla melodía ejecutada por un saxo. Es justo lo que necesitas, la ambientación perfecta para el proyecto. Pero no tienes un saxo, y tampoco la práctica necesaria para tocarlo.

La solución está en las librerías de sonido de instrumentos. En este artículo vamos a enlazar con el proyecto FreePats, que consiste exactamente en eso: una colección de instrumentos digitalizados para que cualquier persona (o bicho) los pueda utilizar libremente en sus proyectos. Los bancos de sonido de FreePats son open source, libres, gratuitos y permisivos.

Primero hay que descargar el banco de sonido. Llamamos «banco de sonido» al conjunto de sonidos digitalizados de un instrumento en concreto, junto con su fichero SFZ, que contiene las instrucciones necesarias para que el sintetizador pueda imitar al instrumento de música original.

En la web de FreePats se pueden descargar los bancos de sonido en distintos formatos y tamaños. Si no tienes preferencia por uno en concreto, recomiendo SFZ FLAC.

El contenido descargado suele estar empaquetado y comprimido en los formatos tar.gz, tar.xz o tar.bz2. Este tipo de archivos son muy comunes en GNU/Linux, y generalmente ofrecen mejor compresión que el formato zip. Pueden descomprimirse en cualquier sistema operativo con el descompresor adecuado.

Para utilizar el banco de sonido, necesitamos un sintetizador compatible con el formato SFZ. Hasta hace poco no teníamos una solución que fuese software libre y multiplataforma para cargar bancos de sonido en este formato, y había que recurrir a formatos más antiguos, o usar programas diferentes para cada sistema operativo. Ahora tenemos sfizz, una aplicación que viene a cubrir ese hueco.

La manera habitual de utilizar sfizz, es insertarlo dentro del software de edición de audio (lo que en inglés se conoce como DAW, Digital Audio Workstation). En este ejemplo, sfizz está funcionando como un plugin dentro de Ardour.

Cuando cargamos el fichero SFZ, sfizz utilizará las muestras de grabaciones reales para crear un instrumento virtual, que responde a las notas de entrada teniendo en cuenta la intensidad, duración, articulaciones y otros efectos. Ahora puedes simular un saxo, con ayuda de un dispositivo MIDI, o bien programar la melodía en el secuenciador.

Insertar plugins y conectarlos con las pistas del software de audio es más sencillo de lo que parece. Si tienes interés en estos temas pero desconoces cómo funcionan estos programas, continuaremos en otro artículo, y dedicaremos una jornada próximamente en Zenvoid Studio.

Escríbenos si tocas algún instrumento de música y tienes interés en participar en el proyecto FreePats. Gracias a las personas que colaboran con su tiempo, es posible digitalizar muestras de instrumentos musicales que sirven para crear nuevos bancos de sonido y hacer que la colección de instrumentos virtuales siga creciendo 🙂

Juegos en red y servidores

Hemos estado evaluando la posibilidad de poner nuestros propios servidores de juegos en red. En los tiempos que corren, con el aforo limitado a 6 personas, los servidores parecen una buena opción; podríamos unirnos con quienes no pueden acudir presencialmente, abrirse a invitados externos, y seguir jugando a distancia en caso de que la mutación del virus cause el apocalipsis zombi.

Voy a empezar con una lista de algunos videojuegos candidatos. Continuaré con la lista en otros artículos para evitar que sea demasiado largo, si tienes alguna sugerencia, no dudes en escribir un comentario.

SuperTuxKart

SuperTuxKart es software libre y se desarrolla en abierto. Es un sencillo videojuego de mini coches con trampas, claramente inspirado por la serie de videojuegos Mario Kart. Tiene una sección de documentación para interesados en colaborar que es un ejemplo excepcional de que escribir documentación voluntariamente no es imposible.

En alguna ocasión anterior hemos disfrutado de sesiones de juego de Super Tux Kart en red local, hace aproximadamente un año, poco después de que añadieran esa opción al juego. Existe la posibilidad de poner un servidor, pero parece que el modo de red que incluye Super Tux Kart tiene algunas carencias que habría que estudiar en detalle.

Assetto Corsa

Nos gusta dar prioridad al software libre siempre que sea posible, pero hay ocasiones en las que no disponemos de una alternativa aceptable. El caso de los simuladores de conducción deportiva resulta especialmente interesante… simular el comportamiento físico de un vehículo de competición para que sea creíble no es una tarea sencilla. En alguna ocasión hemos tratado este asunto, lógicamente a un nivel ampliamente simplificado, para que tenga cabida dentro de nuestras posibilidades.

Será el servidor que probemos primero, por preferencia personal de algunas personas que nos juntamos habitualmente (o dicho de otra forma: porque nos apetece). Nos hemos decidido por Assetto Corsa, aunque también podríamos ampliarlo en un futuro a otros simuladores, como puede ser rFactor.

En el servidor, nos vamos a apoyar en Assetto server manager, un programa software libre con un interfaz de administración amigable, que facilita la creación de servidores dedicados, permite mantener puntuaciones, organizar campeonatos, y una larga lista de ventajas adicionales.

En la foto, cortesía de Miguel, vemos su simulador con triple pantalla, una estructura personalizada a medida y volante modificado. Las tres pantallas no son imprescindibles, pero mejoran la visión lateral, ayudan a evitar colisiones y mantener un juego limpio. Y además mola más (que en realidad es el motivo principal, pero parecemos más buenos si se menciona lo del juego limpio primero).

Los simuladores requieren de hardware específico y espacio para disfrutar correctamente de la experiencia. Eso puede suponer un inconveniente para uso en remoto porque no todo el mundo puede mantener el despliegue en su casa particular.

La mayoría del grupo, como nos gustan este tipo de juegos desde hace años, hemos ido mejorando nuestro material con el tiempo y lo tenemos disponible, pero si no es el caso y te falta algún componente necesario (por ejemplo, un volante de calidad aceptable), te animamos igualmente a unirte a las carreras. De momento no pretendemos llevar un campeonato formal, sino divertirnos, y eso lo puedes hacer con independencia del resultado, y además puedes echarle la culpa al volante 😉

AssaultCube

AssaultCube es un videojuego de código abierto en primera persona que recuerda a Counter Strike, basado en el motor Cube. AssaultCube está hecho para jugar en línea, aunque tiene un modo offline en el que se puede jugar con bots. AssaultCube es gratuito, ya que su motor es Código abierto, aunque sus texturas y otras partes del juego no lo son. Es un juego muy rápido que funciona en casi cualquier ordenador y sistema operativo, necesita pocos recursos.

Cómo crear un servidor de AssaulCube

sudo apt-get install assaultcube
assaultcube-server
assaultcube

Y elije multiplayer, a divertirse!

Laberinto de neón

Seguimos con los prototipos de videojuegos con mecánica de rotación de escenario. Para diferenciarlo de otros proyectos que se vayan haciendo en paralelo, lo clasificaremos en su propia categoría con el nombre «Proyecto Newton».

El siguiente video es un ejemplo de rotación del escenario en modo relativo, con rotación completa del escenario, que fue explicado con más detalle en la entrada anterior.

Me recuerda ligeramente a las fases especiales del primer juego de Sonic para Mega Drive. En ellas había que encontrar y recoger la esmeralda del caos en un escenario con rotación continua. En el caso de Sonic el control es para el protagonista, mientras que la rotación del escenario es automática y sólo se puede influir en ella tocando ciertos objetos repartidos por el escenario. En este otro ejemplo, el jugador controla la rotación y los objetos se mueven indirectamente por efecto de la gravedad, pero también se podría probar a añadir controles de saltos o impulsos.

El código fuente de este ejemplo está disponible en un repositorio de github.

De momento el objetivo es mostrar ideas, no es necesario que estén desarrolladas en detalle. Si alguna de las ideas nos gusta especialmente, la podríamos elegir para desarrollo y hacer un prototipo jugable.

La idea puede estar basada en el concepto inicial (un objeto que cae hasta la salida evitando las trampas), o puede ser una idea nueva o cualquier prueba experimental que se te pase por la cabeza y que pueda encajar con la mecánica de la gravedad. ¿Qué ideas se te ocurren?