Immortal Redneck [CremaGames]

YaW

Hoy hablamos de drops: http://cremagames.com/blog/2015/11/05/about-drops-droping-devlog-8/

Drops - Devlog 8

¿Por qué una calavera furiosa suelta oro? No lo sabemos, pero lo que si sabemos es que necesitarás ese maldito oro.

Teniendo en cuenta que mezclamos FPS y Roguelite, Immortal Redneck necesita como mínimo dos tipos de drops: munición y monedas. Estos son los tipos más básicos para cada uno de los genéricos. No puedes tener un FPS sin munición (o al menos sin algún tipo de delay o mecánicas de sobrecalentamiento) y normalmente tampoco puedes tener un roguelite sin algún tipo de moneda para comprar mejoras.


Tanto los enemigos como los cofres soltarán drops

Para ir progresando en nuestro juego, tendrás que estar recogiendo constantemente los drops del suelo cuando mates un enemigo. Así que tenemos claro que la munición y el oro es importante... pero también la vida y los pergaminosHemos incluido otros dos factores bastante comunes en roguelites: comida que te cura las heridas y pergaminos que te otorgan nuevas habilidades.

Armas y munición

Si queréis matar enemigos, vais a necesitar armas y munición y podéis obtenerlas de dos formas: matando enemigos y recogiendolas del suelo o abriendo cofres que aparecerán de vez en cuando en habitaciones especiales.

Una de las decisiones importantes de diseño ha sido que los paquetes de munición no serán únicos por arma, si no que el paquete puede darte munición para todas las armas que lleves equipadas. Por ejemplo, supongamos que coges un paquete de munición llevando la pistola, la escopeta y la dinamita, la mayor parte de la munición irá para el arma básica (pistola) mientras que las otras dos recibirán algo menos porque son más potentes. Cuestión de balanceo al fin y al cabo.


Caja grande y pequeña de munición

La cantidad de munición que recojas dependerá del tamaño de la caja de munición, tenemos dos tamaños: grande y pequeña. Todavía estamos configurando los números de cada una, pero os podéis hacer una idea. Y hablando de munición, existe la posibilidad de quedarte sin ella pero no os preocupéis, siempre os quedará el último recurso: vuestros puños. También estamos planteando una mecánica de ataques a distancia cuando te hayas quedado sin armas y solo tengas los puños, debido a que muchos de los enemigos de Immortal Redneck son voladores y no llegarías nunca a golpearlos, vamos a implementar que cada cierta cantidad de golpes cuerpo a cuerpo el personaje sea capaz de lanzar un proyectil que dañe también. Por ahora este proyectil tiene el nombre en clave de "Rednouken".

Vida

El drop de vida es bastante simple, lo recoges y cura al redneck dandote preciados puntos de vida. Nuestros recogibles de vida son filetes de cocodrilo, probamos varias opciones como recogible de vida pero esta fue la que más nos gustó.


Filete poco hecho para el caballero...

Oro

Ya hemos hablado un poco sobre el oro, pero hablemos un poco más. El oro siempre se ha usado para conseguir bienes y servicios, así que en Immortal Redneck tendrá el mismo uso. ¿Qué bienes y servicios exactamente?

  • Mejorar las habilidades del personaje y desbloquear nuevas clases
  • Comprarle cosas al mercante
  • Entrar en las pirámides


Tres colores, dependiendo del valor de cada moneda

Ya sabéis que tenemos un árbol (literal) de habilidades, pero lo que no sabéis es que gastaremos el oro haciendo ofrendas a los dioses para que el árbol crezca y consigamos las nuevas habilidades, clases y mejoras. Los dioses son codiciosos, así que cada vez irán pidiendo más y más dinero.

El mercante es igual de codicioso. Por ahora no hay mucha información sobre él pero su rol principal será venderte cosas (a cambio de un buen puñado de oro).

Y finalmente, otra de las mecánicas de nuestro juego. Si quieres jugar, te toca pagar. No literalmente con tu dinero, pero si con el oro que ganes. Queremos evitar las mecánicas de farmeo así que cada vez que entréis en la piramide tendréis que entregar todo vuestro dinero que no hayáis gastado en el árbol o en el mercante. En cada pirámide a la entrada estarán los dioses en forma de estatua que la protegen y tenéis que darle vuestro dinero en forma de ofrenda para que os permitan pasar dentro.

Pergaminos

Los pergaminos son una de las partes más interesantes de este devlog (y del juego). Los pergaminos contienen habilidades y modificadores para el juego, cuando los recojas dentro de las salas se te condecerá una ventaja... o una desventaja.


Amado y odiado a partes iguales

Efectivamente habrá una probabilidad de que el pergamino que recojas sea perjudicial y no habrá forma de predecirlo. Igual coges un pergamino y derrepente no puedes saltar, o igual la pantalla entera se pixela y parece que en lugar de Immortal Redneck estás jugando a un Doom extraño. Por supuesto habrá una pergaminos buenos y muy buenos, aquí tenéis algunos ejemplos:

  • Explorador: Revela el mapa entero
  • Trabajo pesado: Te otorga un slot adicional de arma
  • Día de pago: Gana más oro con cada oro recogido
  • Diana: Tu daño incrementará cada vez que aciertes un disparo. Al fallar, el contador se resetea y empiezas de nuevo
  • Tortuga: Los golpes por la espalda no te harán daño
  • Segunda oportunidad: Si te matán, tendrás una segunda vida y aparecerás en el mismo punto de nuevo

¿Te sientes valiente para tentar a la suerte? Los pergaminos serán uno de los puntos claves del juego y el riesgo que suponen creemos que añadirá tensión y variedad a cada partida. La distancia entre ser un guerrero poderoso y ser un mindungui será un pequeño pergamino en el suelo, ¿lo cogerás?

6
Darkyonk

Tenéis unos artistas que son los jefes. Yo personalmente pondría los items del suelo un poco inclinados (15/20º), cuando caigan al suelo.

YaW
6
nOckS

Muy chulo. Las animaciones de color de los drops que posteas justo arriba supongo que están hechas por shader, no?
Tengo ganas de ponerme a aprender... pero me parece un mundo aparte.

1 respuesta
YaW

#184 efectivamente, shaders a tope

YaW

Nuevo devlog, mostrando a fondo nuestro primer enemigo: http://cremagames.com/blog/2015/11/11/the-unstoppable-warrior-devlog-9/

El guerrero imparable – Devlog 9

El Guerrero es uno de nuestros primeros enemigos y también uno de los más fuertes: si te golpea con su mazo gigante vas a notar el dolor.

Aquí tenéis el concept 2D del Guerrero. Parece una criatura pequeña y gordita, pero realmente mide más de dos metros y medio. El Redneck mide sobre 1,8m así que es bastante grande en comparación con el jugador. En los vídeos que os pongo más alante puede parecer que es pequeño en comparación con el escenario, pero tened en cuenta que es un escenario vacío de prueba.

El Guerrero es un adversario a melee, grande y lento. Incluso siendo la primera vez que lo veas creemos que te puedes imaginar cómo se mueve y cómo golpea. Como siempre nuestro equipo de arte estuvo a la altura intentando plasmar todo eso en el personaje (o al menos eso pienso yo xD).

Nuestro equipo de arte es tan bueno que los animadores tuvieron que inventarse una animación de andado bastante curiosa para poder adaptar la silueta del personaje a la velocidad a la que queríamos que se moviese. Nuestro CM según vio el personaje andando ya visionó el siguiente Vine y tuvo que hacerlo de inmediato.

[media]https://vine.co/v/e2rVu1KHMmp[/media]

Aunque sea poderoso, es un enemigo bastante simple. Es el tipo de enemigo que puedes matar fácilmente con algo de distancia y paciencia pero que tienes que mantener un ojo en él. Si dejas un par de Guerreros andando libremente acabarán rodeándote y causándote doloros problemas.

¿Cómo se hizo?

La respuesta no es rápida y queremos entrar bastante en detalle siendo el primer enemigo que presentamos al completo, así que agarraos. Una vez que teníamos el modelo 3D integrado en la escena de Testing en Unity teníamos que implementarle dos estados: intentando atacar al enemigo y buscándole por el terreno.

Para conseguir esto y como solución general para todas las IA estamos usando Behaviour Trees. Como el Guerrero ha sido nuestro primer enemigo hemos querido hacer todo desde cero. Es un proceso lento, pero ha rentado mucho porque muchos de los nodos que hemos creado se pueden reutilizar en el resto de enemigos y a la larga nos ahorra tiempo.

El primer paso era hacerlo mover. La secuencia es simple: el enemigo tiene un nodo para inicializar el Warrior (este nodo se usa en todos nuestros enemigos ahora mismo) y otro nodo para moverse hacía el personaje. Esta es la pinta que tiene el árbol en este punto:

La animación en este punto estaba a medias, así que parece un poco pobre, pero la intención de que te siga cuando te vea estaba conseguida.

El Guerrero puede atacar mientras se mueve, pero también mientras está parado, así que creamos dos estados de animación con capas para cada estado. Todo muy simple.

También queríamos que los personajes tuviesen un sistema de patrulla en caso de que no estén en contacto visual con el jugador, así que lo añadimos al árbol.

Si os fijáis en la lógica del árbol, tenemos un selector que elige entre la rama con la prioridad más alta y el resto. Si el enemigo no consigue verte, simplemente hará una patrulla por el escenario.

Por ahora tenemos el movimiento conseguido, pero también tiene que atacarte. Cómo enemigo melee, el Guerrero tiene que llegar hasta el personaje para poder atacar. Cuando empieza a atacar la animación y el timing tienen que ser bastante precisos. Aquí tuvimos unos cuantos problemas porque queríamos que comenzase la animación de ataque antes de llegar hasta el personaje para que tuviese un poco de previsión.

También con esto conseguimos que parezca algo más natural, aunque hacía nuestro árbol de comportamiento más complejo. Al final hemos añadido un nodo personalizado con este comportamiento.

Funcionó perfectamente, ahora el enemigo parece mucho más inteligente y real (incluso teniendo en cuenta la animación no final).

Por último, los retoques finales. Tuvimos que cambiar el comportamiento del ataque para que también siga buscando al jugador a la vez que ataca. Sin este cambio era realmente sencillo bordear al enemigo mientras seguía ocecado intentando atacarte en la posición en la que estabas antes.

Para solucionarlo, añadimos un último selector para que el enemigo pudiese girar con la condición de que busque al jugador en frente.

Este es el Behaviour Tree final:

Y aquí tenéis al Guerrero actuando como una máquina imparable de matar rednecks:

Y eso es todo, parece más fácil contado que programado, pero el resultado final hablan por si solos. Nuestra idea es que el Guerrero (y en realidad casi todos los enemigos) no sean enemigos díficiles de derrotar por si mismos, aunque haga bastante daño, si no que serán un problema cuando tengas una sala llena de una horda de diversos enemigos.

Las calaveras que veis en este vídeo son muy temporales, ya os hablaremos de ellas en el futuro :)

De bonus os dejo el modelo que si no Adri se mosquea.

6 1 respuesta
Srednuht

#186 Precioso DevLog. Como siempre, me fascina una barbaridad el hecho de conseguir dibujar y plasmar un concept, y luego tambien su port a 3D...como bien dices a veces por el grupo, magia. Un pasote. Y el diseño masmola mil.

Además, con esta ya tengo la 2º herramienta descubierta por vosotros, en primer lugar, shaderforge, para poder hacer lo mismo que en UE, que desconocía que Unity tambien tuviera herramienta, y por otro lado, el Behaviour designer. Pinta genial.

Eso si, una duda. Entiendo que ese asset incorpora técnicas de AI ya ready-to-use. BUT!!!...¿se pueden diseñar comportamientos programados desde 0 por ti? ¿cómo funciona la cosa? Thanks!

Por poner algua pega, y sin recordar si era la versión final del bicho gordote con patitas über enanas y graciosas, decir que en el "Secuence Warrior 01", con la técnica del giro sobre si mismo para seguir buscando al personaje y no quedarse estático atacando, ¿parece que el personaje "patina" un poco al desplazarse no? Quizá es cosa mia. Y quizá es culpa del suelo de prototyping y con vuestro suelo no se aprecia igual. Es la sensación que me da.

Buen curro !

PD: Tambien es cierto que en el juego estaría evitando que me empalara y no me fijaría en sus pies xDD

1 3 respuestas
NoWandStds

Vaya curro os estáis metiendo, os está quedando muy chulo. Tiene pinta de hacerte un buen destrozo si te pilla con el palito. Es una gozada ver como estáis haciendo los devlogs.

Hemos tomado buena nota del Behaviour designer, tiene pinta de ser bastante útil, aunque me sumo a la pregunta de #187.

1 respuesta
YaW

#187 #188 el behaviour designer te da muchos nodos pre-hechos pero también te permite hacerte tus propios nodos programados desde cero, es super potente y customizable.

En un futuro haremos un devlog sobre los assets que usamos, así ayudamos a descubrir alguno más xD

Por cierto lo del giro lo notas que desplaza porque realmente no hay animación de giro, el giro es a pelo como si fuese una peana y así se quedará, es una de las cosas que ahorraremos en tiempo

1 1 respuesta
DevonxD

#189 creo que lo que nota #187 es los pies deslizandose incluso al andar y pegar para alante, eso está corregido y los pies del personaje ya no parecen que se este resbalando por el suelo.

Lo que usamos en este personaje son dos capas en mecanim de unity, una para que animara la parte superior y otra para que animara la parte inferior sin tener que tener 3 animaciones separadas y asi conseguir que con 2 animaciones (Correr y atacar) formar una más (Correr atacando), estas capas van con mascaras de a que huesos afecta y en esos videos la parte de correr no afectaba a la cadera con lo que el personaje nunca llegaba a tocar el suelo (en un ciclo de correr, mueves la cadera en la dirección que estas llevando la pierna, si la cadera no se mueve, la pierna no llega y hace ese efecto), ésta capa ya afecta a la cadera y el personaje se anima bien al correr y atacar.

Espero haberme explicado! :3

1 respuesta
Srednuht

#190 Si, exacto, que los pies no andaban por el suelo si no que se 'resbalan' por el suelo, algo muy común cuando se realiza este tipo de animaciónes ( walking, running, etc) a lo que hay que mimar especialmente, realmente mi comentario no cuestión de que el giro sea más o menos realista si no que los pies 'no acompañaban' por asi decirlo.

Muy bien explicado btw ;)

larkkkattack

me acartonáis los calzoncillos

DevonxD

:D screenshot saturday!

1 respuesta
I

sois buenos

B

#193 Mola muchísimo, aunque el suelo/paredes se me hace un poco igual, quizás a media altura de la pared le podríais poner algo así o similar (como el filo que se ve a la derecha entre el piso inferior y superior, remarcado con oro por encima y por debajo)

spoiler

Aunque imagino que más adelante las salas estarán más llenas con sarcófagos o vasijas, o arena por el suelo para que no este todo tan limpio.

1 respuesta
darksturm

Faltan cabras.

Por cierto Yaw hoy en el salon retro un desarrollador indie le he hablado de tu juego y se a acordado de tu oh my goat, creo que lo vio en madrid xD

1 respuesta
DevonxD

#196 hehehhehe Soon™
#195 tenemos pensado meter mas decoración a las paredes si, ya os iremos enseñando mas! :P thanks

YaW

Nuevo devlog, hablando sobre generación de dungeons: http://cremagames.com/blog/2015/11/19/randomly-generated-levels-devlog-10/

Niveles generados proceduralmente - Devlog 10

Lo primero una aclaración: hablamos de niveles, no de salas. Como en The Binding of Isaac y otros innumerables juegos, nuestras salas no se crean proceduralmente, son diseñadas una a una por nuestro equipo pero la colocación de estas salas en la mazmorra es totalmente aleatoria.

Dicho esto, toca hablar sobre algoritmos.

BSP no nos encajaba

Para el primer intento de hacer nuestra mazmorra intentamos usar Binary Space Partitioning, o BSP. De primeras nos pareció una buena técnica para implementar y que podría encajar con nuestras habitaciones (dado que la planta siempre es cuadrada) pero había un problema: conectar las habitaciones. Inicialmente este método nos requería diseñar pasillos entre cada habitación y es algo que no queríamos implementar, así que teníamos que buscar una forma más óptima de dividir el espacio.

Nos quitamos los pasillos de en medio rápido, pero apareció otro problema: a más tamaños de habitación que métiamos, más espacios sin usar aparecían. Esto era simplemente un problema de geometría: si tienes un tamaño determinado para tres habitaciones al insertar una de ellas te limita la posibilidad de colocar las otras dos.

Tras todas las pruebas, BSP era un dolor y los layout que generabamos con él no nos convencían al 100% así que tiramos todo lo hecho y probamos algo nuevo.

Un nuevo y mejorado algoritmo

Nos tocaba probar otro algoritmo, obviamente.

Dada una habitación inicial con un número 'x' de puertas, este algoritmo conectaba esas puertas a otras puertas al azar de las nuevas habitaciones. Dentro de cada nueva iteración de habitaciones, cogeríamos esas puertas y repetimos el proceso hasta que la planta de la mazmorra quede llena. Esto generaba algo de espacio vació pero no era un problema para nosotros.

Era un proceso bastante sencillo y nos gustaba porque era capaz de crear grandes mapas sin ningún pasillo. Por desgracia, como siempre, había un problema: los mapas quedaban con unos caminos muy prefijados. Partiendo por ejemplo de una habitación inicial con cuatro puertas se generaban cuatro caminos claros y nunca se conectaban entre ellos (norte, sur, este y oeste) por lo que tendrías que estar constantemente volviendo sobre tus pasos para llegar a la habitación inicial de nuevo y probar otro camino.

Aquí es cuando se nos ocurrío conectar las puertas automáticamente de habitaciones que estuviesen cerca unas de otras (aunque sean de distintos caminos) pero no funcionó muy bien, raramente las puertas encajaban y si lo hacía siempre había alguna diferencia de unidades entre ellas. En lugar de esto, cambiamos la forma en la que las habitaciones se colocaban de manera que se testeen todas las posibles posiciones y probando cual es la que genera más conexiones.

De esta forma, el algoritmo siempre tiene un listado de puertas a conectar y testeará unas cuantas habitaciones para cada una de ellas. Como las habitaciones tienen multiples puertas, el algoritmo evaluará todas las posibilidades para ver cual es la que más conexiones genera con lo que ya haya anteriormente en la mazmorra. Cuando encuentra la mejor habitación posible con la mejor posición/rotación posible la coloca.

Cada vez que una nueva habitación se coloca, sus puertas son incluidas en la lista del algoritmo como puertas a conectar así que las habitaciones nuevas van comprobando también con estas. De esta forma conseguimos que las diferentes alas de la mazmorra queden conectadas y no haya caminos muertos como antes.

Ahora que hemos explicado todo el tocho, disfrutad de algunos ejemplos de mazmorras generadas proceduralmente. también hemos sacado algunas en isométrico porque queda realmente bonico y nos recuerda a La Abadía del Crimen <3

Un gif de la generación de la mazmorra. En este punto es cuando el algoritmo no conectaba las habitaciones correctamente así que no es la solución final que hemos implementado.

Y aquí tenemos el algoritmo final funcionando. Las habitaciones como véis se conectan correctamente y hay varios caminos por los que navegar por la mazmorra.

Algunas pruebas más

¡Vista isométrica!

Y por último algunos ejemplos del algoritmo con las habitaciones finales con iluminación y demás. Aquí veréis que se repite bastante más porque por ahora solo tenemos cuatro habitaciones "finales".

8 1 respuesta
KoRMuZ

Vaya sobrada. Genial como siempre.

B

#198 Lo leí hace una semana. Esto no puede ser, los devlogs dedicados a MV tardan muchos días en hacerse.

Fuera de tonterías; Todo pinta muy sólido, como siempre. Se os va a quedar un juego muy decente al final.

1 respuesta
YaW

#200 salió el jueves, es que traducir al español me da mucha pereza macho xD

2 respuestas
javifugitivo

#201 Que los haga la fan base xD

nOckS

#201
Ni que lo digas xD

Vimos el post en vuestra página en cuanto salió. Muy guapo :D

YaW

Nuevo devlog, otra vez con retraso de cojones. Mañana os pongo el que salió ayer y a ver si voy cogiendo el ritmo xD
http://cremagames.com/blog/2015/11/26/meet-the-archer-devlog-11/

El Arquero - Devlog 11

Nuestro arquero es una criatura antropomórfica con un casco extraño con forma de Anubis que esconde su cara y nos hace preguntarnos que habrá detrás. O a lo mejor el casco realmente es su cabeza, realmente no lo sabemos. Hemos preguntado a nuestro concept artist sobre ello y nos ha puesto esta cara :/

En cualquier caso, es un enemigo a distancia, con predicción de movimiento, ágil y cobarde.

Al igual que el Guerrero, el Arquero es más alto que el Redneck. Nuestro querido paleto mide sobre los 1,8m y el Arquero mide más de 2 metros. Como el arquero siempre ataca a distancia parece bastante más pequeño de lo que realmente es.

Cómo se hizo

El Arquero patrullará la habitación buscándote hasta que te vea o le golpees. Cuando una de esas dos cosas pasen, entrará en "modo ataque" y te disparará flechas intentando anticiparse a tus movimientos. Si pierde el contacto visual intentará moverse hasta tu última posición para volver a buscarte y seguir disparandote.

Para hacer que el arquero patrulle implementamos un nodo de Wander (patrulla).

También hicimos un nodo para detectar cuando está siendo golpeado e insertamos un selector entre las dos posibilidades.

Cuando entra en modo ataque, empieza a perseguirte y a atacarte sin parar gracias al repetidor. También hemos añadido otro nodo para que esté constantemente comprobando el jugador de tal forma que si te deja de ver camine hacia su última posición por el camino más corto. En este punto parece que estén jugando al escondite porque todavía no estaba el disparo implementado.

Eso fue lo siguiente que hicimos. Programamos nuestro nodo de ataque y animamos al arquero.

Por último los retoques. Nos dimos cuenta que el Arquero a veces asomaba un poquito por una esquina y ya empezaba a dispararte a pesar de que la pared estaba casi totalmente entre medias. Esto pasaba porque estabamos usando un raycast para detectar la visión del jugador así que lo solucionamos usando un SphereCast. De esta forma tiene que verte completamente para empezar a disparar.

Una vez solucionamos esto, implementamos también la detección de movimiento. Un último vistazo a la IA final del arquero y sus animaciones.

Esperamos que os guste. ¿Sugerencias? ¿Críticas?

3 3 respuestas
eZpit

#204 Si voy corriendo todo el rato y justo cuando veo que sale la flecha me paro, nunca acertará no? O habeis añadido algun RNG?

Si no habeis añadido algún RNG a la "predicción de movimiento" quizá me parece demasiado simple de esquivar viendo los videos. Personalmente y 100% a ojo y de idea ahora, yo aleatorizaria un poco entre la posición del player en el momento del disparo y la posición prevista en el momento del impacto. De este modo no basta con parar / acelerar, si no que obligarias un poco más a cambiar de lado y hacer baits.

4 respuestas
squa1o

#205 Yo no lo veo tan mal, el hecho de pararte ya quiere decir que te has dado cuenta del disparo y lo estás evitando. Si le pones tanta aleatoriedad al disparo como para que a veces te de al quedarte quieto lo que va a pasar es que la mitad del tiempo vas a estar esquivando flechas que a lo mejor ni has visto simplemente corriendo recto.

2 respuestas
FernandoA

#204 #205 Yo la única "pega" que le pondría es a la velocidad del disparo. En el video ArcherDev4 se ve perfectamente la forma de la flecha viniendo hacia ti y eso no debería pasar nunca (me refiero a ver la forma del proyectil tan claramente). Simplemente aumentando la velocidad de la flecha ya lo harían más dificil de esquivar.

#206 Algo de aleatoriedad está bien ponerle, si no los enemigos siempre van a disparar igual o disparar "perfecto". Está bien que puedan fallar un flechazo aun estando tu parado del todo. Eso si, siempre y cuando sea uno de cada cien o de cada mil ataques o menor porcentaje incluso, no algo habitual.

2 respuestas
YaW

#205 #206 #207 Efectivamente si te paras cuando dispare la flecha no te va a dar nunca, esto es así intencional.

Tenéis que pensar que la idea de Immortal Redneck no es que combatas contra un arquero ni contra dos. En el juego los enemigos vienen representados por hordas, el combate 1vs1 no es relevante porque siempre va a haber multitud de enemigos de diferentes tipos en la pantalla.

La idea no es que el arquero suponga un reto, la idea es que cuatro arqueros + dos guerreros + dos demonios voladores supongan un reto.

Si ponemos que la predicción sea menos simple, o que la flecha salga más rápido o que disparen con menos cadencia como nos han comentado también el juego resultaría imposible desde el momento en el que haya más de un arquero en pantalla.

Espero que cuando os enseñemos cosas más avanzadas del juego en si quede más claro :)

2 respuestas
squa1o

#207 No digo de no ponerle nada de aleatoriedad, un poco está bien (incluso es posible que ya tenga algo de aleatoriedad puesta y no nos estemos dando cuenta xD) pero tanta aleatoriedad como para que parándote te pueda dar como dice #205, teniendo en cuenta la velocidad de movimiento del jugador y del disparo... estamos hablando de un buen pedazo, lo que quiere decir que no va a dar una el bicho casi nunca.

#208 A mí me gusta como está por lo que he dicho más arriba, el hecho de pararte quiere decir que ya has tenido en cuenta que ese enemigo te está disparando y lo estás contrarrestando. Si además como dices habrá más de uno pues si te quedas quieto en vez de moverte en otra dirección probablemente te dará uno de los otros.

eZpit

#208 Si hay multiples enemigos no es tan importante. Lo decía más que nada porque viendo el video 1vs1 la primera impresión ha sido de demasiado fácil!