Project: DarkHeaZ

Programando un motor 3D desde cero - Brakeza3D

Project DarkHeaZ nace como una demo técnica de las capacidades que ofrece Brakeza3D para la creación de un videojuego real con influencias old-school.

Hasta ahora, los artículos de Brakeza3D iban orientados exclusivamente al desarrollo de un engine3D en si mismo, en los próximos meses iré publicando artículos específicos sobre mis experiencias en la creación de un videojuego tipo arcade.

Uno de los objetivos principales es mantener el vídeo juego desacoplado del motor y seguir ampliando las características de cada parte ordenadamente. Esto ayudará a mantener la separación a nivel de posts escritos, que también estarán bien diferenciados en asuntos relativos al “videojuego” o “engine3d”.

Os presento a grandes rasgos los bloques que tengo en la cabeza para las diversas fases del desarrollo, muchas de ellas ya están listas en gran medida, otras requieren mejoras y algunas están sin empezar. Aunque me atrevo a adelantar que probablemente añada alguna, por ahora, son las siguientes:

Concept
85%
Diseño
25%
Gameplay
90%
Settings
0%
Weapons/Defenses
60%
HUD
95%
INTELIGENCIA ARTIFICIAL
75%
LORE
1%

1 – Concept

 Tras un largo periodo de cábalas, he abandonado la idea inicial de crear un FPS oldschool, por la ingente cantidad tiempo que su diseño me estaba consumiendo (continuaremos ese proyecto más adelante) y focalizar esfuerzos en juego arcade de naves espaciales, disminuyendo al máximo la carga de diseño, apostando por un juego sencillo y adictivo hilado por una historia sencilla que de empaque al conjunto. Al fin y al cabo el objetivo no es otro que terminar un vídeo juego a la vieja usanza.

Se busca una experiencia casual, en la que el jugador deberá asimilar rápidamente las mecánicas de juego y usar sus habilidades para enfrentarse a ellas en partidas de corta duración

 

Adoptaremos por tanto el concepto de “pantallas” o “niveles”, es decir, escenarios de corta duración.

El juego se compondrá de 100 niveles, en los que la dificultad irá en aumento, donde además encontraremos un reto especial cada 10 niveles. Estos retos especiales servirán para avanzar en la historia y servirán de punto de cambio en la dificultad y ambientación (léase añadir una cinemática, un cambio de música, una paleta distinta, etc.).

Avanzar al siguiente nivel implica que habrás superado el nivel actual, si no es así, volverás al nivel anterior y así sucesivamente. El juego no tiene guardado.


2 – Gameplay

A falta de grandes recursos, el gameplay ha de ser la piedra angular. La idea inicial maneja los siguientes conceptos:

  • Manejas una nave espacial de combate de última generación, es decir, puedes moverte por el nivel con agilidad!.
  • La nave espacial que manejas dispone de sistemas de ataque, es decir, puedes atacar!.
  • La nave espacial que manejas dispone de sistemas de defensa, es decir, puedes defenderte!.
  • Superarás el nivel cuando hayas terminado con todas las amenazas del nivel, es decir, los hayas matado a todos!.
  • La nave espacial dispone de una barra de vida. Si la barra se vacía, mueres!
  • La nave espacial dispone de una barra de energía. Si la barra de energía de vacía, no podrás defenderte con escudos.

El juego está diseñado para jugarse desde un mando de Xbox One, aunque también puede jugarse desde teclado. Las opciones de control básicas son:

  • Movimiento: Permite a la nave moverse por el mapa, esquivar disparos del enemigo y hacer dash, si tiene suficiente energía.
  • Disparo: Lanzará los proyectiles del arma seleccionada
  • Escudo de energía: Encendido de escudos de energía, si tiene suficiente energía.
  • Escudo gravitacional: Genera un escudo que absorbe el daño y deforma la trayectoria de proyectiles enemigos
  • Seleccionar siguiente arma disponible: Cambia al siguiente arma disponible en el HUD
  • Seleccionar anterior arma disponible: Cambia al anterior arma disponible en el HUD
  • Ir a Menú: Vueve al menú principal/Salir de la pantalla actual


3 – Diseño

 A falta de una línea de diseño e historia marcada, el desarrollo avanza con assets comprados y generados sobre la marcha.

Ya que esto es una demo técnica de Brakeza3D, pretendo poner todas las herramientas que este me ofrece a trabajar para generar un diseño y ambientación atractivo basado en el sistema de iluminación, partículas y shaders que el engine ofrece. Dicho esto, huiremos de la compra de assets de altísima calidad (y coste), para apostar por diseño minimista, con modelos low-poly que el motor pueda mover con soltura.

Para completar los niveles, añadiremos una imagen scrollable sin costuras en el background de cada nivel. Probablemente esta imagen pueda variar entre distintas fases del juego. Además los bosses contarán con pantallas realizadas a medida para generar un mayor impacto en el avance.

Una de las grandes liberaciones del concept, son las animaciones individuales por enemigo. El diseño apenas dispondrá de animaciones 3D, probablemente los bosses sean los únicos que, por su naturaleza tendrán ese lujo.

En resumen, el look & feel del juego vendrá marcado por los modelos 3D en pantalla, su movimiento y rotación por el escenario, apoyados por un sistema de partículas, otro de iluminación y una imagen de background scrollable.


4 – Settings

Todo vídeo juego debe de ofrecer una capa de configuración al jugador. Por ahora no existe nada implementado al respecto. Si bien es una parte que todavía tengo que analizar en detalle. Existen varias opciones relativas al gameplay/render que parecen razonables:

  • Alternativas de control al Xbox Controller (Quizás ofrecer dos esquemas de controles del mando)
  • Alternativas de control al teclado
  • Detalles de gameplay (Por ejemplo, auto seleccionar arma)

5 – Weapons/Defenses

El sistema de armas está por determinar exactamente. En la actualidad nuestra nave espacial dispone de tres tipos de disparo:

  • Proyectil estándar: Proyectil que va siempre en la misma dirección. Consume munición.
  • Proyectil inteligente: Proyectil que persigue al enemigo hasta impactarlo. Consume munición
  • Descarga instantánea: Descarga directa a un enemigo. Consume energía.

Además dispone de dos formas de defenderse:

  • Escudo de energía: Se podrá utilizar siempre y cuando haya energía suficiente. La absorción de proyectiles enemigos consumirá la energía disponible. Cuando ya no haya energía el escudo dejará de absorber daño.

  • Escudos gravitacionales: Objetos que el jugador puede liberar para esconderse detrás o para modificar la dirección de proyectiles enemigos. Los escudos gravitacionales también afectan a tus disparos.


6 – HUD 

Otro de los elementos obligatorios en un videojuego será el sistema que gestionará el HUD.

Por ahora, nuestro HUD se encarga de mostrar de forma modesta la información básica:

  • Barra de vida
  • Barra de energía
  • Armas disponibles
  • Arma seleccionada de las disponibles
  • Munición del arma seleccionada
  • Escudos gravitacionales disponibles
  • Barra de vida del enemigo targeteado / Silueta en el enemigo targeteado

En futuras versiones, nuestro HUD ha de responder a multitud de eventos in-game que nuestro jugador deberá de poder ver de forma clara, para reaccionar en su justa medida.


9 – Inteligencia Artificial

Apenas inexistente. El comportamiento de los enemigos vendrá prefijado por una serie de comportamientos predefinidos:

  • Movimiento de patrulla: El enemigo se mueve de un punto A a un punto B sin parar.
  • Movimiento circular: El enemigo se mueve en círculo dado un centro y un radio.
  • Movimiento persecutorio: El enemigo perseguirá a un target.
  • Movimiento aleatorio: El enemigo se mueve de forma aleatoria por el escenario hasta llegar a un límite donde rebotará hacia dentro del nivel nuevamente.

10 – LORE

No podemos olvidar el contexto histórico del juego, su universo y sus personajes.

Ya que soy totalmente profano en este tema, más allá de mis aportaciones en forma de deseos, me gustaría encontrar la ayuda adecuada para ejecutar esta parte con garantías. Sin duda necesito ayuda en este punto!

Será importante sincronizar los avances de esta parte con nuestro siguiente punto, la creación del arte y diseño del vídeo juego