Aprendizaje de la IA: Soldados

From Valve Developer Community
Jump to: navigation, search
English
Npc combine s.jpg

En este artículo se habla exclusivamente de la inteligencia de los soldados de la Alianza de Half-Life 2. Si buscas la entidad, haz clic en este enlace: npc_combine_s.

Soldados de la Alianza

Los soldados de la Alianza son personajes antagonistas que aparecen en la saga de Half-Life 2. Existen cuatro variaciones del soldado: Regular, élite, carceleros y escopeteros.

Funcionan trabajando juntos en escuadrones y flanquean al jugador dispersándose alrededor de él y utilizando granadas fragmentarias.

Interacciones de escuadrón

Los puestos de escuadrón son utilizados por los personajes que operan normalmente en escuadrones. Un puesto de escuadrón es el rol que ocupa un personaje. Esto permite que un escuadrón de soldados intercambien roles y cojan turnos para atacar o defender. Un personaje normalmente ocupará un puesto lo que dure un "guión" (schedule).

Los escuadrones de la Alianza tiene principalmente seis puestos:

   * SQUAD_SLOT_ATTACK1 
   * SQUAD_SLOT_ATTACK2
   * SQUAD_SLOT_ATTACK_OCCLUDER 
   * SQUAD_SLOT_GRENADE1 
   * SQUAD_SLOT_OVERWATCH 
   * SQUAD_SLOT_SPECIAL_ATTACK

SQUAD_SLOT_ATTACK1 y SSQUAD_SLOT_ATTACK2, son, en la mayoría de casos, los puestos que necesitan los soldados para ser capaces de disparar a un enemigo o avanzar. En distancias largas, los soldados avanzarán independientemente de los puestos de escuadrón, y pueden perder su puesto de ataque mientras se mueven y disparan a la vez. Esto está programado a propósito, así que en lugares grandes o campo abierto, esta forma de pensar puede dar problemas.

SQUAD_SLOT_ATTACK_OCCLUDER es el puesto que un soldado ocupa cuando está disparando a la cobertura de un oponente. La cobertura debe ser destruible y transparente, o que al menos no tapen la línea de visión. Un caso es cuando el jugador sujeta un objeto con el arma gravitatoria, o una ventana.

El puesto SQUAD_SLOT_OVERWATCH es un poco extraño, porque solo lo pueden utilizar líderes de escuadrones. En los comentarios del código de Half-Life 2 se puede obtener más detalles. Se utiliza para técnicas de inteligencia artificial avanzadas, como proveer de fuego de cobertura a otros soldados que están recargando o agachados apuntando a la última posición visible del jugador. Se pueden obtener más detalles en los comentarios de "npc_combine.cpp".

Los puestos SQUAD_SLOT_GRENADE1 y SQUAD_SLOT_SPECIAL_ATTACK son utilizados por soldados que lanzan granadas o lanzan bolas de energía. Para no perjudicar a la dificultad del juego, estos puestos cuando se utilizan, evitan que el escuadrón entero realice ataques parecidos durante un periodo de tiempo.

Si un soldado no tiene puesto de escuadrón, simplemente se cubrirá.

Algo que remarcar es que los puestos de escuadrón se manejan por enemigo visible. Esto significa que un escuadrón podría divirse y atacar a diferentes objetivos a la vez, pero todo depende de lo que priorice cada miembro del escuadrón. (Las prioridades pueden ser la distancia, la relación entre personajes, filtros de enemigos y quién fue el último en ser atacado)

Los puestos de escuadrón pueden intercambiarse rápidamente, por ejemplo: un soldado en un asalto coordinado, puede intercambiar puestos de ataque rápidamente para mantener un ritmo de combate contra un oponente.


Es muy útil entender los puestos de escuadrón cuando como diseñador de niveles, estás creando un encuentro. Otro diseñador por ejemplo, puede querer que un grupo de soldados en un tejado, dispare y lance granadas independientemente del número de compañeros en el suelo.

Interacciones con armas

Los soldados de la Alianza tienen una variedad de armamento, cada arma ocupa un rol distinto y hace que su portador se comporte de formas distintas.

AR2

  • Puntería o cono de puntería utilizado por los soldados:
    • 5 grados (Episodio 1 y 2)/ 9 grados (Half-Life 2)
  • El AR2 tiene un rango de ataque largo, así que los soldados que lo utilizan, lo hacen desde lejos.

SMG

  • Puntería o cono de precisión utilizado por los soldados:
    • 16.6 grados
  • Los soldados con SMG tienen la peor precisión de todos los tipos de soldados, y tienden a atacar en medias distancias. Los desarrolladores de Half-Life 2 los programaron como carne de cañón para otros tipos de soldado. Normalmente se utilizan para obligar al jugador a escoger entre este enemigo o otro.


Escopeteros

  • Puntería o cono de precisión utilizado por los soldados:
    • 10 grados (el mismo que tiene el jugador)
  • Los escopteros tienen un rango de disparo más corto, así que no piensan bien en largas distancias. Están pensados para espacios cerrados. La principal característica de un escopetero es que carga directamente hacia el oponente, independientemente del daño que reciba.

Los soldados reaccionan cuando son atacados por distintas armas. Si reciben daño de un revólver de calibre .357, o AR2, o la mitad de perdigones de una escopeta, la inteligencia artificial lo considera "daño grave". Cuando perciben este tipo de daño, normalmente los soldados paran de disparar, flanquean, se esconden y reproducen animaciones de dolor más dramáticas.


Estilo de diseño

Una buena manera de entender las decisiones que llevaron a diseñar al soldado de la Alianza, es comparándolo con otra inteligencia artificial militar: Los marines de Half-Life 1 y Protección Civil.


Valve ya conocía la reputación de su inteligencia artificial en los soldados de Half-Life 1, así que profundizaron en ella en la siguiente entrega. Por eso, la mayor parte del código del soldado de la Alianza, es un copia y pega del marine de Half-Life, lo que explica cómo hay trozos de código innecesario, sabiendo que el desarrollo de la IA del soldado se ha estado trabajando desde el inicio del desarrollo de Half-Life 2.

El soldado de élite tiene 70 puntos de vida, y el normal tiene 50. Son enemigos idénticos, con la misma inteligencia pero con salud distinta. No hay una situación equivalente en Half-Life 1, que dos enemigos tengan la misma inteligencia y diferentes puntos de salud. Esto se hizo porque en la entrega anterior de Half-Life, los marines podían dañar gravemente al jugador si no se eliminaban rápidamente o con cuidado, haciendo que estos enemigos de relleno perjudicaran la dificultad del juego. Esto estaba pensado para obligar al jugador a prestar toda la atención a estos enemigos. En Half-Life 2 se les resta el daño que hacen, los puntos de vida a cambio de agilizar sus respuestas ante un jugador. Ahora se concentran más en trabajar en equipo. La inteligencia artificla del soldado está pensada para que no simplemente se cubran y corran, sino para que un grupo coordinado de enemigos flanqueen al jugador y se cubran mutuamente.

En Valve gustó la variedad de combate que ofrecían el AR2 y el SMG frente al jugador, pero hacía que al cabo de un rato fuera aburrido. En este artículo se menciona como el equipo de desarrollo del juego añadió un enemigo que cargaba contra el jugador, en el último minuto del desarrollo para hacer las luchas más entretenidas. Probablemente, tuvieron razones similares detrás del desarrollo del escopetero. De manera similar a otros enemigos que atacan cuerpo a cuerpo, como los zombis rápidos, el escopetero cargará contra el jugador, forzándolo a retirarse a una cobertura o quitarle mucha salud. Se desarrolló al finalizar el sistema de gestos de Source, que permite que los enemigos puedan hacer dos cosas a la vez, como disparar y correr. Esto significa que ahora pueden disparar mientras corren, algo que los marines de Half-Life no podían hacer.

Protección Civil heredó la capacidad de defensa del marine, mientras que los soldados heredaron su capacidad de ataque: animando a jugar a disparar y correr, que es el estilo de juego de Half-Life.


Rápel

Los soldados pueden hacer rápel al igual que Protección Civil, pero de maneras más avanzadas, a través de las secuencias programadas. Utiliza los enlaces de la sección "Enlaces de interés" para leer un tutorial en Interlopers.net

Estas son las animaciones y la altura en unidades de medida del motor Source:

   * rappel_a - 648 unidades
   * rappel_b - 480 unidades
   * rappel_c - 456 unidades
   * rappel_d - 552 unidades
   * rappel_e - 384 unidades
   * rappel_f - 480 unidades

Enlaces de interés