Autor Tema: [PM] Shmup AAA+  (Leído 1061 veces)

JuDelCo

  • En evolución
  • Socio
  • Super Jammer
  • ***
  • Mensajes: 240
  • Molas: 35
  • The Game
    • Twitter
[PM] Shmup AAA+
« en: 07 de Febrero de 2016, 04:07:45 pm »


Contexto

Año 2015 (como si fuera hace mucho, je), allá por septiembre se anunció la primera edición de MalagaJam PlayDay, y por qué no hacer un juego especialmente para la ocasión? Claro ! Y así me puse a ello unas 3-4 semanas (fines de semana) antes.

Esta vez, y como casi siempre, mi objetivo principal era el aprendizaje, hacía tiempo que tenía ganas de echarle un guante a una librería que ví anunciada por youtube en una de esas Unity talks, @JaviCepa también hizo un hilo comentadolo. Pues bien, ¡¡ manos a la obra !!

Sistema de entidades

Pues bien, este "framework" (sistema de entidades) llamado Entitas tiene su punto fuerte en que trata de separar por completo la lógica de la presentación (el renderizado vaya, el sprite o modelo que ves en pantalla). La idea es que tu programas la lógica del juego y ésta lógica te puede servir con APENAS modificación para cualquier motor de videojuegos (que use o soporte C#), desacoplas casi todo de Unity.

Esto quiere decir, que si vais a curiosear el código fuente, vais a encontrar código C# puro y duro, en muy pocos casos vais a ver algún objeto o clase de Unity (sobre todo monobehaviours... solo hay UNO creo). Pero... eh! Está hecho en Unity, contradictorio no? xD Pues es muy efectivo !

El juego

Vale, ahora a lo obvio. No soy muy buen diseñador de juego, aunque trato de ir mejorando (mejor para elegir nombres creo que soy jajaja). Esta vez el juego es el clásico shoot'em up, o shmup para abreviar. Juego de naves de scroll vertical.

El mapa es PROCEDURAL, es decir, los fondos van rotando aleatoriamente pero no tiene un fin, ya que el objetivo del juego es conseguir la mayor puntuación posible con las 3 vidas que se te otorgan (no ganas puntos por esquivar, solo por destruir naves enemigas, así que a pegar tiros!).

La dificultad tiene una progresión ajustada, el juego empieza fácil, lento, con enemigos que siguen unos patrones de ataque o movimiento sencillos, y a medida que el tiempo avanza (hasta el minuto 4 o 5 a la que llega al max de dificultad) la velocidad de la nave va en aumento (vale, el scroll del mapa jejeje), empiezan a aparecer enemigos mucho más dificiles, en oleadas con más frecuencia, dejan de aparecer los enemigos "sencillos" y en definitiva, se convierte en un pequeño bullet-hell o danmaku (aunque no me pegueis, es uno muy MUY sencillo si estais acostumbrados a jugar a Touhou o similares, compararlo con ellos es muy despectivo xD).

Los gráficos, obviamente para esto sí que utilizo Unity, son sprites muy sencillos, dibujados a mano y de nuevo tal y como pasó con el demake de Panspermia que hice, a la "primera", nunca hice una revisión de ningún gráfico. La mejora evidente es que esta vez el juego sí que tiene una resolución REAL de gameboy, si habéis leido el PM del demake de panspermia vereis que fue uno de mis fallos garrafales.

En cuanto al sonido, primero opté por generar en tiempo real los sonidos (a modo de procedural). Funcionó bastante bien, sin embargo, en Linux/Unix no se escuchaba para nada bien, glitches de sonido everywhere con un ruido muy muy molesto. Lástima, así que opté por convertir varios samples al clásico .wav y problema arreglado.

La maravillosa música que suena tan pegadiza es obra de nuestro querido Oliver Moya @Oli_mus , hizo un trabajo estupendo y fue muy amable de ayudarme con ella, pues para aquellas fechas estaba bastante ocupado con otros proyectos xD Muchas gracias Oliver ! Sin duda es el apartado en el que más destaca el juego para mi gusto.

Vale, ¿por qué has tardado tanto?

Sencillo, por que soy un cazurro. Tener el juego listo y no "shipearlo" parece ser una de mis costumbres, pero nunca mais ! La verdad es que me cuesta escribir este tipo de hilos o hacer el trabajo de escribir descripciones, categorías, hacer screenshots, decidir un nombre, o estas cosas que se suelen hacer al final antes de lanzar un juego. Es de estas cosas que dices "bueno, mañana por la tarde lo hago" y luego ese día internet te absorve (twitter es el mal !)

Resumen

Lo voy a hacer con pros y contras:

Pros:
  • Un videojuego terminado más a la colección !
  • He aprendido un nuevo "framework" (entitas)
  • Coroutinas de C# ! Son un amor para los behaviours
  • La sesión del PlayDay fue genial, me encantó todo el feedback que recibí
  • Me encanta hacer gráficos en pixelart
  • No sé si es cosa de Entitas, pero el build para webplayer ocupa apenas 1 Mb y poco... Eso es brutal para un juego de Unity !!!

Contras:
  • Podría haber dado más de sí (ver TODO.txt en el repositorio del código fuente)
  • Coroutinas de C# ! Limitan MUCHO la posible portabilidad del juego a otro lenguaje (C++   u.u)
  • El bomberman cutrecillo que hice el finde anterior en dos tardes se llevó mas aclamación en el PlayDay que éste juego simplemente por el multiplayer local. Tenedlo en cuenta !
  • Me encanta hacer gráficos en pixelart pero sólo si me dedico a ello solo, cuando tienes la presión de programar el juego tambien se empieza a convertir en un trabajo bastante enorme


Descarga: http://judelco.itch.io/shmup-aaa-plus
Código fuente: https://github.com/JuDelCo/Shmup-AAA-plus


PD: En mis anteriores PM puse un PD, así que aquí va otro: El juego tiene Leaderboard online, a ver si me superais !

josemwarrior

  • Socio
  • New Jammer
  • *
  • Mensajes: 26
  • Molas: 4
  • @josemwarrior
    • josemwarrior.com
Re:[PM] Shmup AAA+
« Respuesta #1 en: 15 de Febrero de 2016, 06:24:51 pm »
Enorme trabajo!

francismoy

  • Socio
  • New Jammer
  • *
  • Mensajes: 44
  • Molas: 8
    • Becoming Indie Developer
Re:[PM] Shmup AAA+
« Respuesta #2 en: 18 de Febrero de 2016, 09:17:52 pm »
Gracias por compartir la experiencia. Muy interesante, y buen trabajo :) No conocía el framework este. Lo de las co-rutinas es un buen punto. Lua también las soporta, y es super interesante para diseñar cutscenes. Además, C++17 va a implementar co-rutinas también, así que ya mismo será más fácil portar de C# al mismo.

JuDelCo

  • En evolución
  • Socio
  • Super Jammer
  • ***
  • Mensajes: 240
  • Molas: 35
  • The Game
    • Twitter
Re:[PM] Shmup AAA+
« Respuesta #3 en: 18 de Febrero de 2016, 09:30:54 pm »
Muy interesante lo de C++17, aunque aún queda la verdad pa que salga (y se estandarice entre compiladores) pero ya le echaré el ojo.