paint-brush
Qué hacen los desarrolladores de juegos de IA y cómo convertirse en unopor@aleksandrpindyk
1,168 lecturas
1,168 lecturas

Qué hacen los desarrolladores de juegos de IA y cómo convertirse en uno

por Aleksandr Pindyk1m2022/06/07
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Aleksandr Pindyk es el ingeniero principal del equipo de inteligencia artificial del estudio Wargaming en Kyiv. Ha estado desarrollando IA (inteligencia artificial) para uno de los juegos en línea más populares: World of Tanks. La IA en el desarrollo de juegos varía en complejidad, ya que existen múltiples aspectos de la experiencia de juego que pueden mejorarse con la ayuda de la inteligencia artificial.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Qué hacen los desarrolladores de juegos de IA y cómo convertirse en uno
Aleksandr Pindyk HackerNoon profile picture

Mi nombre es Aleksandr Pindyk y soy el ingeniero principal del equipo de IA del estudio Wargaming en Kyiv. Durante más de cinco años, nuestro equipo ha estado desarrollando IA (inteligencia artificial) para uno de los juegos en línea más populares: World of Tanks. Quiero hablar más sobre la profesión de desarrollador de IA en el desarrollo de juegos, los detalles de su trabajo y cómo convertirse en uno.


Primero, definamos qué es la IA del juego. Si nos alejamos de las secas definiciones de Wikipedia, la IA del juego es un sistema que imita el comportamiento de un personaje o jugador. Según el género y el propósito del juego, se utilizan diferentes tecnologías y enfoques en el desarrollo de la IA. Veamos los principales tipos de juegos y los objetivos de la IA.


Juegos donde el objetivo de la IA es derrotar al jugador humano


Echemos un vistazo a los juegos que todos conocemos. Un buen ejemplo aquí sería el ajedrez y el Go. Este tipo de juego puede utilizar inteligencia artificial basada en redes neuronales. Dado que el objetivo principal de la IA es derrotar al jugador a toda costa, no necesita imitar el comportamiento humano. Las acciones de una IA de este tipo a menudo parecen incomprensibles y, a veces, incluso terriblemente antinaturales. Incluso ahora, un humano no puede derrotar a AI (AlphaZero) en el mismo ajedrez y Go.


Además de estos dos juegos clásicos, se están realizando experimentos con un enfoque similar en juegos de cartas como el póquer y en juegos competitivos como StarCraft y DOTA 2. Muchos científicos y programadores de Google y OpenAI están trabajando en su desarrollo. Sin embargo, lo más probable es que se trate de una solución en la nube, ya que se necesitan muchos recursos para entrenar la inteligencia artificial.

Este enfoque no está justificado en el desarrollo de juegos debido a su complejidad y los objetivos conflictivos para los que se utiliza la IA.


En el desarrollo del juego, el objetivo no suele ser vencer al jugador a toda costa. Y no se olvide de las capacidades del servidor. Otra desventaja de este enfoque es la necesidad de volver a entrenar la IA después de introducir nuevas mecánicas.


juegos JcJ

Son juegos cuyo ciclo principal es el enfrentamiento de jugadores o equipos entre sí (jugador contra jugador). Uno podría preguntarse cuál es el papel de la inteligencia artificial en este escenario. Pero hay varias áreas en las que se utiliza la IA en este tipo de juegos:


  • Robots para principiantes

    Se utilizan tanto en el entrenamiento inicial como oponentes en las primeras etapas del juego. Si no hay un emparejador de acuerdo con las habilidades del jugador o cuando es imposible equilibrar los equipos, los bots te permiten aumentar el nivel de dificultad para los jugadores sin problemas. Y elimina las pérdidas frecuentes contra jugadores con habilidades mucho mejores. Los modos de entrenamiento de bots en World of Tanks y Hearthstone son buenos ejemplos.


  • Lanzar un proyecto o abrir nuevas regiones de juego

    PUBG Mobile usó ese truco en el lanzamiento. Cuando era imposible reunir equipos de 100 personas, los bots se lanzaron a la batalla. El modo de 128 jugadores de Battlefield 2042 usa bots con hasta 64 oponentes. Cuando el servidor cubre un gran territorio con diferentes zonas horarias, los bots pueden suavizar la reducción en línea para regiones remotas. Por ejemplo, cuando un servidor cubre Europa y Asia.


  • Modo de entrenamiento

    A menudo se necesita en juegos que se lanzaron durante mucho tiempo y en los que hay muchos jugadores profesionales, contra los cuales es difícil jugar sin una buena preparación. Además, estos juegos no siempre separan a principiantes y profesionales en un emparejador, y jugar con bots se convierte en casi la única forma de adquirir una habilidad. Un buen ejemplo aquí sería Escape from Tarkov. Mientras juegas con bots, no podrás completar misiones, pero al mismo tiempo, no perderás tu equipo, aprenderás el nivel y practicarás combinaciones de equipos y habilidades de tiro.


Desde el punto de vista del desarrollo, estos juegos deben poder ajustar la dificultad de la IA y depurar la lógica de toma de decisiones de los bots. AI en sí funciona en el servidor del juego. El equipo de desarrollo implementa el comportamiento de los bots tanto como sea posible similar al comportamiento de una persona que sabe jugar bien. Al menos los bots intentan ser como esos jugadores 😁


juegos JcE

En el ciclo principal de estos juegos, la interacción del jugador es con el entorno y la IA (jugador contra entorno). Estos pueden ser juegos fuera de línea puramente para un jugador (Witcher 3) y PVE en línea (Genshin Impact), así como eventos y modos especiales en juegos PVP (Mirny-13 para Halloween en World of Tanks). En tales juegos, la IA no tiene como objetivo derrotar al jugador a toda costa. Incluso viceversa. Un excelente diseñador de juegos dijo: "El objetivo principal de la IA es rendirse maravillosamente". Para que un jugador humano pueda obtener emociones positivas de la victoria, en este caso, la IA es uno de los elementos para establecer la complejidad del juego.


Equilibrando la cantidad de enemigos, su "grosor" y la capacidad de jugar, puedes crear el nivel adecuado de complejidad e interés para una persona. Además, según el juego, la importancia del comportamiento visualmente lógico del robot de IA aumentará o disminuirá. En juegos como Genshin Impact, los bots son solo carne de cañón y el jugador no siempre presta atención a su comportamiento lógico.


Otra opción al usar bots es para aliados simples y habilidades de jugador. Por ejemplo, los mobs en DOTA 2 son bastante primitivos y tienen un solo objetivo: avanzar y atacar al enemigo. Cuando el juego es para un solo jugador y sin conexión, la IA suele funcionar localmente para el jugador en el cliente. En el caso de juegos como World of Tanks, los modos AI y PVE funcionan en el servidor. Es necesario porque el juego está en línea y el servidor controla todas las acciones. Limita los recursos de CPU y RAM que puede utilizar la IA.


Una de las tareas críticas en el desarrollo de dicha inteligencia artificial es la capacidad de crear escenarios de comportamiento atractivos para los bots. Por ejemplo, los jugadores deben llegar a la posición, defenderla durante un tiempo y, después de recibir refuerzos, atacar y derrotar a todos los enemigos. El script de IA del juego puede constar de varias partes. En la primera parte, los bots son débiles, lo que permite a los jugadores llegar rápidamente a la posición deseada. Luego, los bots que atacan a los jugadores se vuelven más fuertes y comienzan a usar tácticas que evitan que los jugadores pasen a la ofensiva antes de tiempo. Después del momento X, los bots cometen algunos errores, lo que les permite visualmente, sin reducir la complejidad, dar una ventaja a los jugadores. Habiéndose dado cuenta de esto, pasarán a la ofensiva y podrán ganar.


Una herramienta que ayuda en el desarrollo de juegos.

Además del juego, la inteligencia artificial ayuda en el desarrollo de juegos en varias áreas:


  • Diseño y prueba de niveles : por ejemplo, los bots pueden caminar o conducir por todo el nivel y, por lo tanto, revelar áreas intransitables, atascos y otros matices en el diseño de la geometría del nivel.


  • Pruebas de equilibrio de nivel : si lucha contra los bots entre sí, al recopilar estadísticas, puede comprender qué tan buenos son los nuevos cambios de equilibrio de nivel. Una condición esencial para tal prueba es la habilidad de los bots. Para obtener las estadísticas más relevantes, los bots deben jugar al nivel del jugador promedio. La ausencia de la necesidad de un gran equipo de probadores de nivel acelera drásticamente el proceso de pulido de la balanza.


  • Probar nuevos elementos y habilidades : el desarrollador puede usar Bots como oponentes de prueba al crear nuevos equipos, elementos, etc., en el juego. Por ejemplo, puede agregar bots al mapa al introducir un nuevo rifle y verificar qué tan bien realiza su tarea.


  • Pruebas funcionales y de carga : la IA ayuda a probar diferentes componentes del juego e incluso a probarse a sí misma 😀. Por ejemplo, puede crear un escenario en el que un bot de cada tipo de arma disparará a todo tipo de superficies y recopilará estadísticas sobre qué superficie, cómo se abre paso y si el daño se hace al enemigo detrás de la superficie. Puede cargar la prueba del cliente. Envía bots para caminar por el mapa y ver si hay caídas de FPS o incluso todo el juego. Y para el servidor, puede realizar pruebas de carga y, por lo tanto, verificar cómo se comportará el servidor durante una carga máxima "inesperada".


Cómo funciona la IA en los juegos

Hemos considerado cómo la IA del juego ayuda al desarrollo de juegos, y ahora consideraremos cómo funciona y qué enfoques se utilizan en su desarrollo.


La IA funciona en un ciclo: Sentir >> Pensar >> Actuar para lograr sus objetivos. Cada vez que aparece nueva información sobre el entorno, es imposible tomar una decisión o se completa/interrumpe la ejecución de la acción, la IA entra en una nueva ronda del ciclo Sentir >> Pensar >> Actuar .

Veamos cada uno de los pasos principales en el ciclo de acción de la IA.


Recopilación de información (Sense)

Primer paso. La IA (agente o bot) recopila información sobre el entorno para tomar cualquier decisión. Por ejemplo, puede ser información sobre oponentes y aliados. Sus posiciones, estado, equipamiento, etc.


Toma de decisiones (pensar)

El siguiente paso es la parte más compleja y que requiere más recursos de la IA. Ya que toda la información recolectada por el agente de IA es procesada y analizada en esta etapa. Dependiendo del principio de toma de decisiones electivo, aumentará la complejidad de los cálculos y la precisión del resultado. Considere los principales enfoques para la toma de decisiones:


Árboles de decisión : en broma, puede llamarlo desarrollo impulsado por "si". La forma más fácil de construir AI es que crea muchas verificaciones "si-entonces". También se le puede llamar un método que reacciona instantáneamente a eventos externos. A partir de dichas comprobaciones, se crea un árbol a través de los nodos por los que pasa el agente de IA hasta encontrar un nodo en el que habrá una acción. Por lo general, los pasos de recopilación y análisis de información se combinan en un bloque y suelen ser una condición de prueba "si". En este enfoque, si el resultado de la verificación es "Falso", entonces es posible tanto la transición a la siguiente verificación como la ejecución de la acción.



Máquina de estados finitos : un caso en el que el agente de IA se encuentra en uno de los estados posibles y tiene información sobre a cuál de los estados puede ir. Por ejemplo, el bot estaba en estado de patrulla. Puede entrar en el estado de ataque enemigo o retirarse de este estado. La elección de a qué estado ir puede depender de cuántos puntos de vida tenga el bot y la proporción de aliados/enemigos dentro de un radio de X metros. El número de estados y condiciones de transición no está limitado. En cada nuevo ciclo de actualización de estado, generalmente cada cuadro (a veces, para optimizar el consumo de recursos, las condiciones de transición se recalculan con menos frecuencia), se verifican las condiciones de transición para cada estado. Y si se cumplen las condiciones, se activa la transición. La ventaja de este enfoque es que tenemos una lógica de transición de estado clara.



Sistema de utilidad : un sistema se basa en evaluar la utilidad de una acción o transición en particular. La lógica es que el agente de IA tiene un conjunto de acciones. Él elige cuál realizar dependiendo de la situación actual en el campo de batalla, de los coeficientes de prioridad inherentes para realizar una acción o la transición de un estado a otro. Por ejemplo, un bot se encontró con el enemigo mientras patrullaba el área. Será más importante que este bot no ataque al enemigo sino que se esconda, dé la alarma y pida ayuda a otros bots. En este caso, su coeficiente para evitar una colisión directa será mayor que el deseo de atacar al enemigo. Y si el bot no tiene una ventaja crítica sobre el enemigo, no elegirá la rama de comportamiento asociada con el ataque.



Árboles de comportamiento : es un complemento conveniente para las máquinas de estado. Le permite eliminar la gestión de estado de las propias máquinas de estado. Por lo tanto, podemos crear un árbol de condiciones mediante el cual cambiaremos las máquinas de estado para el agente de IA.





  • Comportamiento orientado a objetivos : es un concepto que permite que los bots jueguen, enfocándose en el rol y el objetivo más apropiado para el agente de IA y, dependiendo de esto, elegir en qué árbol de comportamiento trabajar. Ese árbol de comportamiento determina las condiciones para la transición del bot a diferentes estados y la ejecución de acciones.


    En este caso, el bot utiliza una lógica difusa basada en el cálculo del coeficiente de importancia y utilidad de un rol en particular. Por ejemplo, un rol para un bot con un arma o un escudo. El coeficiente para convertirse en un "tanque" será más alto que para el papel de explorador. A continuación, después de elegir un rol, hay un cálculo de qué objetivo es ahora el más útil. Si hay un mago que está preparando un hechizo junto a nosotros, entonces el mejor objetivo será protegerlo a toda costa. A continuación, en función del objetivo actual, se selecciona un conjunto de árboles de comportamiento que permite al bot implementar el comportamiento para cumplir el objetivo.


    Este enfoque le permite crear bots que no obedecen órdenes sino que eligen una u otra acción según sus capacidades, la situación de combate actual y las prioridades de los desarrolladores. Usamos este enfoque en World of Tanks cuando desarrollamos IA.


Acción (Act) - Paso final. Es la ejecución de la tarea. Por lo general, esto incluye encontrar un camino y moverse a lo largo del camino, implementar disparos, ponerse a cubierto, etc.


Entonces, ¿qué hace un desarrollador de IA? La tarea principal es implementar el ciclo Sentir >> Pensar >> Actuar. El desarrollador de IA trabaja en estrecha colaboración con otros miembros del equipo, ya que la implementación y optimización de los algoritmos de comportamiento de la IA es un trabajo conjunto del programador, el diseñador del juego y el control de calidad. Repasemos el ciclo de la IA de nuevo, pero desde el punto de vista del desarrollador.


Recopilación de información (Sense) - En esta parte del ciclo, el programador de IA es responsable de recopilar y almacenar información sobre la situación en el campo de batalla. Junto con el diseñador del juego, el desarrollador determina qué información se recopila, con qué frecuencia se actualiza y cómo se distribuye entre los agentes de IA del mismo equipo en el caso de un juego de equipo.


En los juegos de equipo, algunos de estos datos son comunes a todos los agentes de IA y los bots pueden intercambiar esta información, lo que permite un mayor realismo para los bots de IA. A menudo, la recopilación de información no consume muchos recursos, excepto en casos de emisión de rayos frecuente, que el desarrollador debe optimizar.


Además, parte de la información puede ser estática. Por ejemplo, en World of Tanks, hemos creado varias capas de datos en el mapa. Una capa se encarga de disparar de punto a punto a lo largo del mapa. Le permite comprender cuánto está protegida una posición o qué áreas del mapa se pueden controlar desde ese lugar.


La otra capa le dice qué tan bien está oculta el área de detección, lo que le permite comprender si esos arbustos son buenos para un tanque de reconocimiento o no. La otra capa es NavMesh , que permite que los bots se muevan por el mapa. Es solo una parte de los datos creados de antemano, y además de eso, también podemos hacer cálculos previos. Por ejemplo, podemos almacenar no solo un mapa de refugios sino también contra qué direcciones protegen.


Para mapas grandes, podemos precalcular rutas largas desde un punto de interés en el mapa a otro. Al mismo tiempo, puedes calcular qué tan bueno es el camino en términos de longitud, complejidad del terreno, etc. Durante la batalla, ya puedes superponer información dinámica sobre enemigos potenciales a lo largo de la ruta. Por lo tanto, puede ahorrar mucho en recursos de CPU y RAM al elegir una ruta. Es una parte bastante esencial y emocionante del desarrollo de la IA. Además del aparente beneficio de la optimización y la adición de nuevas funciones a los bots, el desarrollador obtiene un excelente campo para el desarrollo, ya que tales capas deben inventarse y los algoritmos deben mejorarse y adaptarse a su proyecto.


Toma de decisiones (pensar) : el desarrollador generalmente no implementa la lógica del comportamiento del bot por su cuenta. Lo hace junto con el diseñador del juego.


Además, el desarrollador implementa un sistema que se encarga de la ejecución del Behavior Tree (podemos llamar tentativamente el motor de IA). Junto con el diseñador del juego, diseñan una API para trabajar con el árbol de comportamiento y luego el desarrollador implementa la lógica para esta API. Por ejemplo, métodos que te permitan calcular la probabilidad de golpear a un enemigo, el atractivo de un refugio o evaluar la amenaza en un sector. Es la parte más intensiva en recursos del trabajo de IA.


Una de las opciones para resolver el problema del rendimiento y los recursos es el desarrollo de algoritmos eficientes y el uso eficiente de datos calculados estáticamente. En base a ellos, la IA decide la optimización de acciones específicas. Al mismo tiempo, el sistema de toma de decisiones debe ser lo suficientemente flexible y estable porque no siempre es posible garantizar que el bot tenga todos los subsistemas disponibles. O lo bien que se están adaptando al papel que juega la IA. Y, a veces, una base de IA bien construida la ayuda a sobrevivir a daños parciales.


Tuvimos un caso divertido en World of Tanks cuando decidimos intentar usar la lógica de un tanque convencional para la artillería, ajustada a la capacidad de disparar como artillería. Jugamos una pelea regular en la que nuestro control de calidad decidió demostrar que juega mejor que los bots (de hecho, lo hace, pero no todo es tan simple).


Podría pasar por alto a los bots, llegar a la base enemiga y decidir destruir toda la artillería enemiga, tres bots. Ignoró que fue descubierto por vehículos enemigos no muy lejos de la base. Cuando entró en la línea de visión de la artillería, inmediatamente fue a observar la batalla en modo cámara libre. Resultó que los bots, al ver acercarse a un enemigo peligroso, decidieron dispararle, calculando de antemano el lugar donde probablemente aparecería. Y tan pronto como nuestro héroe apareció en la línea de visión, los bots le dispararon. Y todo estaría bien, pero las tres artillerías hicieron esto al mismo tiempo. Y descubrimos un juego inesperadamente bien coordinado de bots en artillería, ¡aunque aún no está implementado!



Acción (Act) - En esta parte, el desarrollador implementa mecanismos que le permiten al agente de IA ejecutar instrucciones después de tomar una decisión. Implementar módulos encargados de la navegación (por ejemplo, adaptar A* a las características del juego), disparar, etc. Por ejemplo, puedes tomar el algoritmo A* y usarlo en tu producto. Pero la mayoría de las veces, tendrá condiciones adicionales, como acantilados. Si no se optimiza, el camino para una unidad pesada puede construirse demasiado cerca del acantilado, lo que provocaría su caída. En este caso, es necesario introducir coeficientes adicionales para acercarse a un acantilado u otro tipo de terreno inconveniente e implementar un suavizado de la ruta. De lo contrario, los bots caminarán por la "escalera". Esta área está muy cerca de la jugabilidad, ya que utiliza su mecánica para completar las tareas.


Herramientas El desarrollador de IA, además de la implementación del ciclo (Sentir >> Pensar >> Actuar), crea herramientas para sí mismo, el diseñador del juego y el control de calidad. A veces, para implementar una mecánica en particular, es más fácil crear una herramienta con la que pueda configurar y usar la funcionalidad y solo luego proceder directamente a implementar la tarea en sí. Un diseñador de juegos debe poder analizar la lógica y la secuencia de las decisiones de IA. Para estos fines, en World of Tanks hemos creado herramientas que le permiten registrar todas las acciones de los bots en batalla y luego crear repeticiones que visualizan los pasos de los bots, la secuencia de decisiones tomadas y los datos en base a los cuales se tomaron estas decisiones. hecha.


Los desarrolladores también están creando sistemas que permiten que la IA ayude a desarrollar el juego. Puede crear un conjunto de herramientas para diseñadores de niveles que le permitirá organizar rápidamente los bots por nivel y establecer objetivos de escenario para ellos.


Por ejemplo, revise todo el mapa y verifique si todo está bien con la habilidad de pasar. Para el control de calidad, a menudo es necesario crear herramientas que le permitan verificar subsistemas individuales del juego usando bots.


En World of Tanks, usamos IA para personalizar cómo se juega la IA en el mapa. Para ello, hemos creado una herramienta de recopilación de estadísticas. A continuación, cambiamos el mapa, por ejemplo, cómo se ven las zonas estratégicas para los bots y dónde están los puntos de transferencia entre estas zonas. A continuación, se lanzan 1000-3000 batallas en el servidor. Después de eso, observamos el patrón de batalla usando estadísticas y mapas de calor. El diseñador del juego ajusta la configuración del mapa y la repite en un círculo en función de estos datos. Al mismo tiempo, utilizando suficiente capacidad del servidor, puede obtener dichas estadísticas para la noche de los bots y analizar y realizar cambios por la mañana.



Cómo funciona en la práctica

Usemos un ejemplo real de World of Tanks para ver el ciclo completo de creación de nuevas funciones usando IA. También podremos observar cómo un programador, un diseñador de juegos y un control de calidad interactúan entre sí.


Comencemos con esta tarea: necesitamos bots que embistan al jugador y exploten, causándole daño a él y a un pequeño radio a su alrededor. Llamémoslos "Erizo". Estos "Erizos" irán más rápido que el jugador bajo condiciones adicionales. No dispararán, tendrán una forma similar a una pelota, pueden explotar con un solo disparo, deben embestir solo a los jugadores y viajar en un grupo de X unidades. Parecería, ¿qué podría ser más fácil?


Habiendo recibido estos datos del diseñador del juego, el desarrollador recordó las matemáticas y cómo calcular la ventaja sobre el movimiento del jugador y, junto con el diseñador del juego, creó un conjunto de lógica de árbol de comportamiento que dirigió el bot hacia el enemigo y lo hizo embestir. Se implementó un conjunto particular de métodos responsables de socavar y dañar el área por parte del programador. Para verificar, crearon un script especial donde colocaron un bot ruff y un bot normal.


El primero embistió con éxito al segundo, y todo estuvo bien. Decidimos darle a la prueba en el juego dentro del equipo y recopilar estadísticas. Y demostró que los bots en el mapa real no llegan a los jugadores. Resultó que los bots recibieron daños debido a la alta velocidad de rebote en los baches y al caer. Después de varias caídas de este tipo, explotaron y causaron daños a las gorgueras vecinas. A su vez, creó una reacción en cadena. Corregí la cantidad de bots en vivo y agregué una unidad de dispersión lógica. También modifiqué el escenario de prueba basado en un mapa real con colinas.


Después de ejecutar la segunda etapa de prueba, nos dimos cuenta de que los bots eran muy "educados". Lo que pasa es que embistieron a los jugadores solo a lo largo de la ruta de movimiento, es decir, de frente. Pero si se acercaban por detrás, comenzaban a rodear al jugador en un gran arco. Habiendo discutido las opciones con el diseñador del juego, el programador cambió las fórmulas para elegir la trayectoria de embestida. Después de realizar una nueva serie de pruebas, QA informó que los bots eran demasiado rápidos y precisos, y que los jugadores no tenían ninguna posibilidad. Por lo tanto, volví a la fórmula y la corregí para que a veces diera un error y modificara el comportamiento del acercamiento a un nuevo círculo después de que el bot no viera al jugador.


La trayectoria del bot para girar y retroceder aumentó, lo que permitió a los jugadores recargar y dispararles. Creó emocionantes momentos de juego cuando los bots a veces salían volando del mapa o a veces fallaban y lograban golpearlos en los últimos segundos. A veces atraparon con éxito al jugador y atacaron desde diferentes direcciones. El control de calidad apreció la experiencia de juego de encontrar fallas, y esta funcionalidad se incluyó en el lanzamiento del jugador.


Puede ver en este ejemplo que a lo largo del desarrollo de la funcionalidad, el programador, el diseñador del juego y el control de calidad se comunicaron constantemente, lo que hizo que fuera más eficiente encontrar áreas problemáticas de la función y solucionarlas antes de que llegaran a los jugadores. Además, el programador y el diseñador del juego trabajaron juntos para desarrollar el algoritmo para embestir al jugador, mientras que el control de calidad dio su opinión sobre lo divertido que era jugar contra tales bots. Es un ejemplo real del modo PVE Mirny-13 de nuestro equipo y los creadores de la serie Silent Hill.


Lo que se necesita para convertirse en un desarrollador de IA


Primero, ¡ ama los juegos ! En serio, si no te gustan los juegos, ¿por qué hacerlo?

En segundo lugar, es esencial jugar mucho con tu producto porque solo poniéndote en el lugar del jugador entenderás cómo juega y cómo deberían jugar los bots.


De lo contrario, estarás "codificando" las tareas de un diseñador de juegos y no podrás convertirte en un desarrollador de IA de esa manera. Por último, está el deseo de comprender por qué algo funciona de esta o aquella forma. La IA para juegos complejos no utiliza una lógica clara, y el resultado del ciclo Sentir >> Pensar >> Actuar no siempre será 100 % predecible y comprensible. No es raro que el desarrollador, junto con el diseñador del juego y el control de calidad, deban analizar los datos sobre las decisiones tomadas por los bots para comprender si la IA actuó correctamente o no. Y no hay necesidad de habilidades duras y habilidades blandas.


Hard Skills (este es un conjunto de conocimientos técnicos). Y el primero en la lista es el conocimiento de los lenguajes de programación de secuencias de comandos, generalmente la lógica del juego de juego escrita. Por ejemplo, en World of Tanks, es Python y para Unity, será C#. El segundo elemento esencial será C++. Sin él, no será fácil porque la mayoría de las optimizaciones se realizan en él.


Ahora el siguiente paso.


Una buena comprensión de las estructuras de datos y algoritmos. El desarrollo de IA implica muchos cálculos y elegir la mejor estrategia para el almacenamiento y procesamiento de datos puede ahorrar mucho tiempo y recursos de CPU y memoria. También será necesario un conocimiento de matemáticas de 2º año de nivel universitario. Por supuesto, será bueno conocer los enfoques básicos en el desarrollo de la IA (el ciclo de la IA y los enfoques en la toma de decisiones).


Soft Skills (habilidades que te permiten trabajar en equipo y entablar un diálogo constructivo). Hay bastantes Soft Skills valiosas, pero en el desarrollo de IA, me gustaría destacar una:


¡Trabajo en equipo!


Los diseñadores de juegos, los programadores y el control de calidad trabajan muy de cerca y, a menudo, es imposible completar una tarea o resolver un problema sin combinar su experiencia y conocimiento. Es por eso que habilidades como escuchar a otras personas, discutir en lugar de discutir y hacer preguntas son fundamentales. A veces es mejor preguntarle a un diseñador de juegos o al control de calidad sobre un matiz particular en el juego o la mecánica en lugar de inventarlo y hacerlo uno mismo y luego rehacerlo dolorosamente durante mucho tiempo. ¡El buen trabajo de la IA en el juego siempre es mérito de todo el equipo, no solo de un especialista!


Como puede ver, crear IA para juegos es difícil, ¡pero es muy divertido y disfrutable! Entre otras cosas, esta es una buena área para desarrollar tanto Hard Skills como Soft Skills.


Hagamos juegos diferentes y emocionantes, y la IA nos ayudará.