Hola de nuevo, sobrevivientes de la arena. Si alguna vez habéis jugado un título de supervivencia, sabéis que todo se resume en una única cosa: la presión constante a la que te somete la inteligencia enemiga. En NeoNBrawL, yo no quería tener los típicos enemigos de "zombi-básico" que simplemente se mueven hacia ti en línea recta y se atascan en las esquinas. Yo quería sudar.
De la teoría al código: Sistemas de Oleadas
Para conseguir que el juego escale su dificultad de forma divertida y no injusta, diseñé un gestor central de oleadas. Básicamente, no genero enemigos de forma aleatoria todo el rato. El código cuenta con un temporizador maestro que, dictado por funciones matemáticas de incremento acelerado, sube el límite de monstruos en pantalla conforme matas a ciertas unidades o el contador baja a cero.
Diseñar esto siendo estudiante de primero en Antequera, me hizo quemar pestañas peleándome con bucles infinitos por culpa de requestAnimationFrame. Pero la sensación cuando logré que la primera oleada de píxeles me acorralara fue espectacular.
Los 6 Jinetes del Neón
Aquí es donde entra la diversión pura y dura: diseñar comportamientos. En lugar de hacer que cambien solo de color o tengan más barra de vida, cada uno de los 6 tipos de enemigos implementados posee una lógica de pathfinding e IA rudimentaria dictada por JavaScript:
- Los Trackers (Rastreadores): El enemigo más veloz. Calculan no dónde estás tú, sino hacia dónde te diriges utilizando vectores básicos de velocidad.
- Tanks (Tanques de Neón): Lentos, masivos, imponentes. Tienen un escudo impenetrable frontal que te obliga a pensar tácticamente y flanquearlos.
- Kamikaze: Huyen del jugador hasta que se ven sobrepasados, momento en el que explotan causando daño en un área enorme.
- Y otros 3 tipos que os dejaré descubrir por las malas mientras os bajan la barra de vida...
A la IA se la controla, nunca se la domina
A pesar de que soy yo quien ha tecleado las normas bajo las que se rigen estos elementos, hay momentos en la arena en que las sinergias entre los 6 tipos me superan de maneras que ni yo mismo como creador imaginé. He muerto un montón testeando mi propio juego porque un "Tank" me bloqueaba mientras un "Kamikaze" me reventaba la espalda.
Este sistema me hace sentirme súper orgulloso del lado lógico que se esconde detrás de la pantalla negra y los destellos. Mi viaje en la programación apenas acaba de empezar, pero ver mi código vivo y "enfadado" intentándome dar caza es mi mayor medalla hasta ahora.