paint-brush
Ce que font les développeurs de jeux AI et comment le devenirby@aleksandrpindyk
1,177
1,177

Ce que font les développeurs de jeux AI et comment le devenir

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

Aleksandr Pindyk est l'ingénieur principal de l'équipe d'IA du studio Wargaming à Kyiv. Il a développé l'IA (intelligence artificielle) pour l'un des jeux en ligne les plus populaires - World of Tanks. L'IA dans le développement de jeux varie en complexité car il existe de nombreux aspects de l'expérience de jeu qui peuvent être aidés à l'aide de l'intelligence artificielle.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Ce que font les développeurs de jeux AI et comment le devenir
Aleksandr Pindyk HackerNoon profile picture

Je m'appelle Aleksandr Pindyk et je suis l'ingénieur en chef de l'équipe d'IA du studio Wargaming à Kyiv. Depuis plus de cinq ans, notre équipe développe l'IA (intelligence artificielle) pour l'un des jeux en ligne les plus populaires - World of Tanks. Je souhaite parler davantage du métier de développeur IA dans le développement de jeux, des spécificités de son travail, et comment le devenir.


Tout d'abord, définissons ce qu'est l'IA du jeu. Si l'on s'éloigne des définitions sèches de Wikipédia, l'IA du jeu est un système qui imite le comportement d'un personnage ou d'un joueur. Selon le genre et le but du jeu, différentes technologies et approches sont utilisées dans le développement de l'IA. Regardons les principaux types de jeux et les objectifs de l'IA.


Jeux où le but de l'IA est de vaincre le joueur humain


Jetons un coup d'œil aux jeux que nous connaissons tous. Un bon exemple ici serait les échecs et le Go. Ce type de jeu peut utiliser une intelligence artificielle basée sur des réseaux de neurones. Étant donné que l'objectif principal de l'IA est de vaincre le joueur à tout prix, elle n'a pas besoin d'imiter le comportement humain. Les actions d'une telle IA semblent souvent incompréhensibles et parfois même effroyablement contre nature. Même maintenant, un humain ne peut pas vaincre l'IA (AlphaZero) dans le même jeu d'échecs et Go.


En plus de ces deux jeux classiques, des expériences avec une approche similaire sont en cours dans des jeux de cartes comme le poker et dans des jeux compétitifs comme StarCraft et DOTA 2. De nombreux scientifiques et programmeurs de Google et OpenAI travaillent à la construction de cela. Cependant, il s'agirait très probablement d'une solution cloud, car de nombreuses ressources sont nécessaires pour former l'intelligence artificielle.

Cette approche n'est pas justifiée dans le développement de jeux en raison de sa complexité et des objectifs contradictoires pour lesquels l'IA est utilisée.


Dans le développement en jeu, le but n'est généralement pas de battre le joueur à tout prix. Et n'oubliez pas les capacités du serveur. Un autre inconvénient de cette approche est la nécessité de réentraîner l'IA après l'introduction de nouveaux mécanismes.


Jeux JcJ

Ce sont des jeux dont le cycle principal est la confrontation de joueurs ou d'équipes entre eux (joueur contre joueur). On peut se demander quel est le rôle de l'intelligence artificielle dans ce scénario ? Mais il existe plusieurs domaines où l'IA est utilisée dans de tels jeux :


  • Robots pour débutants

    Ils sont utilisés à la fois dans la formation initiale et comme adversaires dans les premières étapes du jeu. S'il n'y a pas d'entremetteur selon les compétences du joueur ou lorsqu'il est impossible d'équilibrer les équipes, des bots permettent d'augmenter le niveau de difficulté des joueurs en douceur. Et éliminez les pertes fréquentes contre des joueurs avec de bien meilleures compétences. Les modes d'entraînement des bots dans World of Tanks et Hearthstone en sont de bons exemples.


  • Lancer un projet ou ouvrir de nouvelles régions de jeu

    PUBG Mobile a utilisé une telle astuce au lancement. Lorsqu'il était impossible de constituer des équipes de 100 personnes, les bots se sont lancés dans la bataille. Le mode 128 joueurs de Battlefield 2042 utilise des bots avec jusqu'à 64 adversaires. Lorsque le serveur couvre un vaste territoire avec différents fuseaux horaires, les robots peuvent lisser le tirage en ligne pour les régions éloignées. Par exemple, lorsqu'un serveur couvre l'Europe et l'Asie.


  • Mode entraînement

    Il est souvent nécessaire dans les jeux sortis depuis longtemps et dans lesquels il y a beaucoup de joueurs professionnels, qui sont difficiles à affronter sans une bonne préparation. De plus, de tels jeux ne séparent pas toujours les débutants et les pros dans un entremetteur, et jouer avec des bots devient presque le seul moyen d'acquérir une compétence. Un bon exemple ici serait Escape from Tarkov. En jouant avec des bots, vous ne pourrez pas accomplir de missions, mais en même temps, vous ne perdrez pas votre équipement, apprendrez le niveau et pratiquerez des combinaisons d'équipements et des compétences de tir.


Du point de vue du développement, de tels jeux doivent pouvoir affiner la difficulté de l'IA et déboguer la logique de prise de décision des bots. L'IA elle-même fonctionne sur le serveur de jeu. L'équipe de développement implémente le comportement des bots autant que possible similaire au comportement d'une personne qui sait bien jouer. Au moins, les bots essaient d'être comme ces joueurs 😁


Jeux JcE

Dans le cycle principal de ces jeux, l'interaction du joueur se fait avec l'environnement et l'IA (joueur contre environnement). Il peut s'agir à la fois de jeux hors ligne purement solo (Witcher 3) et de PVE en ligne (Genshin Impact), ainsi que d'événements et de modes spéciaux dans les jeux PVP (Mirny-13 pour Halloween dans World of Tanks). Dans de tels jeux, l'IA n'a pas pour objectif de vaincre le joueur à tout prix. Même l'inverse. Un excellent concepteur de jeux a déclaré : "Le principal objectif de l'IA est d'abandonner magnifiquement." Pour qu'un joueur humain puisse tirer des émotions positives de la victoire, dans ce cas, l'IA est l'un des éléments permettant de définir la complexité du jeu.


En équilibrant entre le nombre d'ennemis, leur "épaisseur" et la capacité de jouer, vous pouvez créer le bon niveau de complexité et d'intérêt pour une personne. De plus, selon le jeu, l'importance du comportement visuellement logique du bot AI augmentera ou diminuera. Dans des jeux comme Genshin Impact, les bots ne sont que de la chair à canon, et le joueur ne fait pas toujours attention à leur logique de comportement.


Une autre option lors de l'utilisation de bots concerne les alliés simples et les capacités des joueurs. Par exemple, les monstres de DOTA 2 sont assez primitifs et n'ont qu'un seul objectif : avancer et attaquer l'ennemi. Lorsque le jeu est solo et hors ligne, l'IA fonctionne le plus souvent localement pour le joueur dans le client. Dans le cas de jeux comme World of Tanks, les modes AI et PVE fonctionnent sur le serveur. C'est nécessaire car le jeu est en ligne et le serveur contrôle toutes les actions. Cela limite les ressources CPU et RAM que l'IA peut utiliser.


L'une des tâches essentielles du développement d'une telle intelligence artificielle est la capacité à créer des scénarios comportementaux engageants pour les bots. Par exemple, les joueurs doivent se rendre à la position, la défendre pendant un certain temps et, après avoir reçu des renforts, passer à l'attaque et vaincre tous les ennemis. Le script Game AI peut être composé de plusieurs parties. Dans la première partie, les bots sont faibles, permettant aux joueurs d'accéder rapidement à la position souhaitée. Ensuite, les bots qui attaquent les joueurs deviennent plus forts et commencent à utiliser des tactiques qui empêchent les joueurs de passer à l'offensive à l'avance. Après l'instant X, les bots commettent quelques erreurs, ce qui leur permet visuellement, sans réduire la complexité, de donner un avantage aux joueurs. Ayant réalisé cela, ils passeront à l'offensive et pourront gagner.


Un outil qui aide au développement de jeux

En plus du gameplay, l'intelligence artificielle aide au développement de jeux dans plusieurs domaines :


  • Conception et test de niveau - Par exemple, les bots peuvent marcher ou conduire à travers tout le niveau et ainsi révéler des zones infranchissables, des bourrages et d'autres nuances dans la conception de la géométrie du niveau.


  • Test d'équilibre de niveau - Si vous combattez des bots les uns contre les autres, alors en collectant des statistiques, vous pouvez comprendre à quel point les nouveaux changements d'équilibre de niveau sont bons. Une condition essentielle pour un tel test est la compétence des bots. Pour obtenir les statistiques les plus pertinentes, les bots doivent jouer au niveau du joueur moyen. L'absence de la nécessité d'une grande équipe de testeurs de niveau accélère considérablement le processus de polissage de l'équilibre.


  • Tester de nouveaux objets et compétences - Le développeur peut utiliser des robots comme adversaires de test lors de la création de nouveaux équipements, objets, etc., dans le jeu. Par exemple, vous pouvez ajouter des bots à la carte lors de l'introduction d'un nouveau fusil et vérifier dans quelle mesure il remplit sa tâche.


  • Tests fonctionnels et de charge - L'IA aide à tester différents composants du jeu et même à se tester 😀. Par exemple, vous pouvez créer un scénario dans lequel un bot de chaque type d'arme tirera sur tous les types de surfaces et collectera des statistiques sur quelle surface, comment il perce et si les dégâts sont causés à l'ennemi derrière la surface. Vous pouvez tester la charge du client. Envoyez des bots pour parcourir la carte et voir s'il y a des baisses de FPS ou même tout le jeu. Et pour le serveur, vous pouvez effectuer des tests de charge et ainsi vérifier comment le serveur se comportera lors d'un pic de charge "inattendu".


Comment fonctionne l'IA dans les jeux

Nous avons examiné comment l'IA de jeu aide au développement de jeux, et maintenant nous examinerons comment cela fonctionne et quelles approches sont utilisées dans son développement.


L'IA fonctionne selon un cycle : Sens >> Penser >> Agir pour atteindre ses objectifs. Chaque fois que de nouvelles informations sur l'environnement apparaissent, qu'il est impossible de prendre une décision ou que l'exécution de l'action est terminée/interrompue, l'IA entre dans un nouveau cycle du cycle Sens >> Penser >> Agir .

Examinons chacune des principales étapes du cycle d'action de l'IA.


Collecte d'informations (Sense)

Premier pas. L'IA (agent ou bot) collecte des informations sur l'environnement pour prendre toute décision. Par exemple, il peut s'agir d'informations sur des adversaires et des alliés. Leurs positions, état, équipement, etc.


Prise de décision (Réflexion)

La prochaine étape est la partie la plus complexe et la plus gourmande en ressources de l'IA. Puisque toutes les informations recueillies par l'agent IA sont traitées et analysées à ce stade. Selon le principe de prise de décision élective, la complexité des calculs et la précision du résultat augmenteront. Considérez les principales approches de la prise de décision :


Arbres de décision - En plaisantant, vous pouvez l'appeler développement piloté par "si". Le moyen le plus simple de créer une IA consiste à créer de nombreuses vérifications "si-alors". On peut aussi l'appeler une méthode qui réagit instantanément aux événements extérieurs. À partir de ces vérifications, un arbre est créé à travers les nœuds que l'agent IA passe jusqu'à ce qu'il trouve un nœud dans lequel il y aura une action. Habituellement, les étapes de collecte et d'analyse d'informations sont combinées en un seul bloc et sont généralement une condition de test "si". Dans cette approche, si le résultat de la vérification est "Faux", alors la transition vers la vérification suivante et l'exécution de l'action sont possibles.



Machine à états finis - Un cas où l'agent AI se trouve dans l'un des états possibles et dispose d'informations sur l'état dans lequel il peut aller. Par exemple, le bot était dans un état de patrouille. Il peut entrer dans l'état d'attaque ennemie ou se retirer de cet état. Le choix de l'état dans lequel aller peut dépendre du nombre de points de vie du bot et du ratio alliés/ennemis dans un rayon de X mètres. Le nombre d'états et de conditions de transition n'est pas limité. A chaque nouveau cycle de mise à jour d'état, généralement à chaque trame (parfois, pour optimiser la consommation de ressources, les conditions de transition sont recalculées moins souvent), les conditions de transition pour chaque état sont vérifiées. Et si les conditions sont remplies, la transition est activée. L'avantage de cette approche est que nous avons une logique de transition d'état claire.



Système d'utilité - Un système est basé sur l'évaluation de l'utilité d'une action ou d'une transition particulière. La logique est que l'agent IA a un ensemble d'actions. Il choisit laquelle effectuer en fonction de la situation actuelle sur le champ de bataille, des coefficients de priorité inhérents à la réalisation d'une action ou du passage d'un état à un autre. Par exemple, un bot a rencontré l'ennemi en patrouillant dans la zone. Il sera plus important pour ce bot de ne pas attaquer l'ennemi mais de se cacher, de donner l'alerte et d'appeler à l'aide d'autres bots. Dans ce cas, son coefficient pour éviter une collision directe sera supérieur au désir d'attaquer l'ennemi. Et si le bot n'a pas d'avantage critique sur l'ennemi, il ne choisira pas la branche de comportement associée à l'attaque.



Arbres de comportement - C'est un complément pratique pour les machines d'état. Il vous permet de prendre en charge la gestion d'état pour les machines d'état elles-mêmes. Ainsi, nous pouvons créer un arbre de conditions par lequel nous allons changer les machines d'état pour l'agent AI.





  • Comportement axé sur les objectifs - C'est un concept qui permet aux bots de jouer, en se concentrant sur le rôle et l'objectif les plus appropriés pour l'agent d'IA et, en fonction de cela, en choisissant sur quel arbre de comportement travailler. Cet arbre de comportement détermine les conditions de transition du bot vers différents états et l'exécution d'actions.


    Dans ce cas, le bot utilise une logique floue basée sur le calcul du coefficient d'importance et d'utilité d'un rôle particulier. Par exemple, un rôle pour un bot avec une arme ou un bouclier. Le coefficient pour devenir "tank" sera plus élevé que pour le rôle d'éclaireur. Ensuite, après avoir choisi un rôle, il y a un calcul dont l'objectif est maintenant le plus utile. S'il y a un magicien qui prépare un sort à côté de nous, alors le meilleur objectif sera de le protéger à tout prix. Ensuite, en fonction de l'objectif actuel, un ensemble d'arbres de comportement est sélectionné, ce qui permet au bot d'implémenter le comportement pour atteindre l'objectif.


    Cette approche vous permet de créer des bots qui n'obéissent pas aux commandes mais choisissent l'une ou l'autre action en fonction de leurs capacités, de la situation de combat actuelle et des priorités des développeurs. Nous utilisons cette approche dans World of Tanks lors du développement de l'IA.


Action (Agir) - Dernière étape. C'est la mise en œuvre de la tâche. Habituellement, cela inclut trouver un chemin et se déplacer le long du chemin, mettre en œuvre des prises de vue, se mettre à couvert, etc.


Alors, que fait un développeur d'IA ? La tâche principale consiste à mettre en œuvre le cycle Sense >> Think >> Act. Le développeur d'IA travaille en étroite collaboration avec les autres membres de l'équipe puisque la mise en œuvre et l'optimisation des algorithmes de comportement de l'IA est un travail conjoint du programmeur, du concepteur de jeu et de l'assurance qualité. Reprenons le cycle de l'IA mais du point de vue du développeur.


Collecte d'informations (Sense) - Dans cette partie du cycle, le programmeur IA est chargé de collecter et de stocker des informations sur la situation sur le champ de bataille. En collaboration avec le concepteur de jeu, le développeur détermine quelles informations sont collectées, à quelle fréquence elles sont mises à jour et comment elles sont réparties entre les agents IA d'une même équipe dans le cas d'un jeu en équipe.


Dans les jeux d'équipe, certaines de ces données sont communes à tous les agents IA, et les bots peuvent échanger ces informations, permettant un plus grand réalisme pour les bots IA. Souvent, la collecte d'informations ne consomme pas beaucoup de ressources, sauf dans les cas de lancers de rayons fréquents, que le développeur doit optimiser.


De plus, certaines informations peuvent être statiques. Par exemple, dans World of Tanks, nous avons créé plusieurs couches de données sur la carte. Une couche est responsable de la prise de vue d'un point à l'autre de la carte. Il vous permet de comprendre à quel point une position est protégée ou quelles zones de la carte peuvent être contrôlées à partir de cet endroit.


L'autre couche vous indique à quel point la zone est cachée de la détection, ce qui vous permet de comprendre si ces buissons sont bons pour un char de reconnaissance ou non. L'autre couche est le NavMesh , qui permet aux bots de se déplacer sur la carte. Ce n'est qu'une partie des données créées à l'avance, et en plus de cela, nous pouvons également faire des pré-calculs. Par exemple, nous pouvons stocker non seulement une carte des abris mais aussi contre quelles directions ils protègent.


Pour les grandes cartes, nous pouvons pré-calculer de longs trajets d'un point d'intérêt sur la carte à un autre. En même temps, vous pouvez calculer la qualité du chemin en termes de longueur, de complexité du terrain, etc. Pendant la bataille, vous pouvez déjà superposer des informations dynamiques sur les ennemis potentiels le long du parcours. Ainsi, vous pouvez économiser beaucoup sur les ressources CPU et RAM lors du choix d'un chemin. C'est une partie essentielle et passionnante du développement de l'IA. En plus de l'avantage apparent de l'optimisation et de l'ajout de nouvelles fonctionnalités aux bots, le développeur dispose d'un excellent terrain de développement, car de telles couches doivent être inventées et les algorithmes doivent être améliorés et adaptés à leur projet.


Prise de décision (Think) - Le développeur n'implémente généralement pas lui-même la logique du comportement du bot. Il le fait avec le concepteur du jeu.


De plus, le développeur implémente un système qui est responsable de l'exécution de l'arbre de comportement (on peut provisoirement appeler le moteur AI). En collaboration avec le concepteur du jeu, ils conçoivent une API pour travailler avec l'arbre de comportement, puis le développeur implémente la logique de cette API. Par exemple, des méthodes qui permettent de calculer la probabilité de toucher un ennemi, l'attractivité d'un abri ou d'évaluer la menace dans un secteur. C'est la partie la plus gourmande en ressources du travail d'IA.


L'une des options pour résoudre le problème des performances et des ressources est le développement d'algorithmes efficaces et l'utilisation efficace de données calculées statiquement. Sur cette base, l'IA décide de l'optimalité d'actions spécifiques. Parallèlement, le système décisionnel doit être suffisamment flexible et stable car il n'est pas toujours possible de garantir que le bot dispose de tous les sous-systèmes disponibles. Ou dans quelle mesure ils s'adaptent au rôle joué par l'IA. Et parfois, une fondation d'IA bien construite l'aide à survivre à des dommages partiels.


Nous avons eu un cas amusant dans World of Tanks lorsque nous avons décidé d'essayer d'utiliser la logique d'un char conventionnel pour l'artillerie, ajusté pour la capacité de tirer comme de l'artillerie. Nous avons joué un combat régulier dans lequel notre QA a décidé de prouver qu'il joue mieux que les bots (en fait, il le fait, mais tout n'est pas si simple).


Il pourrait contourner les bots, arriver à la base ennemie et décider de détruire toute l'artillerie ennemie, trois bots. Il a ignoré qu'il a été découvert par des véhicules ennemis non loin de la base. Lorsqu'il est entré dans la ligne de mire de l'artillerie, il est immédiatement allé observer la bataille en mode caméra libre. Il s'est avéré que les bots, ayant vu l'approche d'un ennemi dangereux, ont décidé de lui tirer dessus, ayant calculé à l'avance l'endroit où il apparaîtrait le plus probablement. Et dès que notre héros a émergé dans la ligne de mire, les bots lui ont tiré dessus. Et tout irait bien, mais les trois artilleries l'ont fait en même temps. Et nous avons découvert un jeu de bots étonnamment bien coordonné sur l'artillerie, même s'il n'est pas encore implémenté !



Action (Act) - Dans cette partie, le développeur implémente des mécanismes qui permettent à l'agent IA d'exécuter des instructions après avoir pris une décision. Implémenter des modules responsables de la navigation (par exemple, adapter A* aux fonctionnalités du jeu), du tir, etc. Par exemple, vous pouvez prendre l'algorithme A* et l'utiliser dans votre produit. Mais le plus souvent, vous aurez des conditions supplémentaires, comme des falaises. S'il n'est pas optimisé, le chemin d'une unité lourde peut être construit trop près de la falaise, entraînant sa chute. Dans ce cas, il est nécessaire d'introduire des coefficients supplémentaires pour approcher une falaise ou un autre type de terrain gênant et mettre en œuvre un lissage en douceur de l'itinéraire. Sinon, les bots marcheront sur "l'échelle". Cette zone est très proche du gameplay, car elle utilise ses mécanismes pour accomplir les tâches.


Outils Le développeur d'IA, en plus de la mise en œuvre du cycle (Sense >> Think >> Act), crée des outils pour lui-même, le game designer et le QA. Parfois, pour implémenter un mécanisme particulier, il est plus facile de créer un outil avec lequel vous pouvez configurer et utiliser la fonctionnalité et ensuite seulement procéder directement à l'implémentation de la tâche elle-même. Un concepteur de jeu doit être capable d'analyser la logique et la séquence des décisions de l'IA. À ces fins, chez World of Tanks, nous avons créé des outils qui vous permettent d'enregistrer toutes les actions des bots au combat, puis de créer des rediffusions qui visualisent les étapes des bots, la séquence des décisions prises et les données sur la base desquelles ces décisions ont été prises. fabriqué.


Les développeurs créent également des systèmes qui permettent à l'IA d'aider à développer le jeu. Vous pouvez créer une boîte à outils pour les concepteurs de niveau qui vous permettra d'organiser rapidement les bots par niveau et de définir des objectifs de scénario pour eux.


Par exemple, parcourez toute la carte et vérifiez si tout va bien avec la capacité de dépassement. Pour l'assurance qualité, il est souvent nécessaire de créer des outils qui vous permettent de vérifier les sous-systèmes individuels du jeu à l'aide de bots.


Dans World of Tanks, nous utilisons l'IA pour personnaliser la façon dont l'IA joue sur la carte. Pour ce faire, nous avons créé un outil de collecte de statistiques. Ensuite, nous changeons la carte, par exemple à quoi ressemblent les zones stratégiques pour les bots et où se trouvent les points de transfert entre ces zones. Ensuite, 1000 à 3000 batailles sont lancées sur le serveur. Après cela, nous examinons le modèle de bataille à l'aide de statistiques et de cartes thermiques. Le concepteur du jeu ajuste les paramètres de la carte et les répète dans un cercle en fonction de ces données. Dans le même temps, en utilisant une capacité de serveur suffisante, vous pouvez obtenir de telles statistiques pour la nuit des bots et analyser et apporter des modifications le matin.



Comment ça marche en pratique

Prenons un exemple réel de World of Tanks pour examiner le cycle complet de création de nouvelles fonctionnalités à l'aide de l'IA. Nous pourrons également observer comment un programmeur, un concepteur de jeu et un QA interagissent les uns avec les autres.


Commençons par cette tâche : nous avons besoin de bots qui vont percuter le joueur et exploser, lui causant, ainsi qu'un petit rayon autour de lui, des dégâts. Appelons-les "Hérisson". Ces "Hérissons" iront plus vite que le joueur dans des conditions supplémentaires. Ils ne tireront pas, auront la forme d'une balle, pourront être explosés d'un seul coup, ne doivent percuter que les joueurs et rouler dans un groupe de X unités. Il semblerait, quoi de plus simple ?


Après avoir reçu ces données du concepteur du jeu, le développeur s'est souvenu des calculs et de la façon de calculer l'avance sur le mouvement du joueur et, avec le concepteur du jeu, a créé un ensemble logique d'arbre de comportement qui a dirigé le bot vers l'ennemi et l'a fait bélier. Un ensemble particulier de méthodes a été mis en œuvre de manière responsable pour saper et endommager la zone de la part du programmeur. Pour vérifier, ils ont créé un script spécial dans lequel ils ont placé un bot ruff et un bot normal.


Le premier a percuté le second avec succès, et tout s'est bien passé. Nous avons décidé de le donner au test en jeu au sein de l'équipe et de collecter des statistiques. Et cela a montré que les bots sur la vraie carte n'atteignent pas les joueurs. Il s'est avéré que les robots ont subi des dommages en raison de la vitesse élevée de rebond sur les bosses et lors de la chute. Après plusieurs chutes de ce type, ils ont explosé et causé des dommages aux fraises voisines. À son tour, cela a créé une réaction en chaîne. J'ai corrigé le nombre de bots en direct et ajouté un lecteur de diffusion logique. J'ai également peaufiné le scénario de test basé sur une vraie carte avec des collines.


Après avoir exécuté la deuxième étape de test, nous avons réalisé que les bots étaient très "polis". Le fait est qu'ils ont percuté les joueurs uniquement le long de la trajectoire de déplacement, c'est-à-dire de front. Mais s'ils s'approchaient par derrière, ils commençaient à faire le tour du joueur sur un grand arc. Après avoir discuté des options avec le concepteur du jeu, le programmeur a modifié les formules de choix de la trajectoire d'éperonnage. Après avoir effectué une nouvelle série de tests, QA a indiqué que les bots étaient trop rapides et précis et que les joueurs n'avaient aucune chance. Par conséquent, je suis revenu à la formule et l'ai corrigée pour qu'elle donne parfois une erreur et modifie le comportement de l'approche vers un nouveau cercle après que le bot ait raté le joueur.


La trajectoire du bot pour tourner et reculer a augmenté, permettant aux joueurs de recharger et de leur tirer dessus. Cela a créé des moments de jeu passionnants où les bots ont parfois volé hors de la carte ou parfois manqué et réussi à les frapper dans les dernières secondes. Parfois, ils réussissaient à piéger le joueur et attaquaient de différentes directions. QA a apprécié l'expérience de jeu de rencontrer des ruffs, et cette fonctionnalité a été intégrée à la version du joueur.


Vous pouvez voir à partir de cet exemple que tout au long du développement de la fonctionnalité, le programmeur, le concepteur de jeu et le QA ont constamment communiqué, ce qui a permis de trouver plus efficacement les problèmes de la fonctionnalité et de les résoudre avant qu'ils n'arrivent aux joueurs. De plus, le programmeur et le concepteur du jeu ont travaillé ensemble pour développer l'algorithme permettant de percuter le joueur, tandis que le QA a donné des commentaires sur le plaisir de jouer contre de tels bots. C'est un exemple réel du mode PVE Mirny-13 par notre équipe et les créateurs de la série Silent Hill.


Ce qu'il faut pour devenir un développeur d'IA


Tout d'abord, aimez les jeux ! Sérieusement, si vous n'aimez pas les jeux, pourquoi le faire ?

Deuxièmement, il est essentiel de jouer beaucoup avec votre produit, car ce n'est qu'en vous mettant à la place du joueur que vous comprendrez comment il joue et comment les bots devraient jouer.


Sinon, vous "coderez" les tâches d'un concepteur de jeu et vous ne pourrez pas devenir un développeur d'IA de cette façon. Enfin, le désir de comprendre pourquoi quelque chose fonctionne de telle ou telle manière. L'IA pour les jeux complexes n'utilise pas de logique claire, et le résultat du cycle Sens >> Penser >> Agir ne sera pas toujours prévisible et compréhensible à 100 %. Il n'est pas rare que le développeur, en collaboration avec le concepteur de jeu et le QA, doive analyser les données sur les décisions prises par les bots pour comprendre si l'IA a agi correctement ou non. Et il n'y a pas besoin de Hard Skills et de Soft Skills.


Hard Skills (il s'agit d'un ensemble de connaissances techniques). Et le premier sur la liste est la connaissance des langages de programmation de scripts, généralement une logique de jeu de gameplay écrite. Par exemple, dans World of Tanks, c'est Python, et pour Unity, ce sera C#. Le deuxième élément essentiel sera C++. Sans cela, ce ne sera pas facile car la plupart des optimisations sont faites dessus.


Maintenant la prochaine étape.


Une bonne compréhension des structures de données et des algorithmes. Le développement de l'IA implique de nombreux calculs et le choix de la meilleure stratégie de stockage et de traitement des données peut économiser beaucoup de temps et de ressources CPU et mémoire. Une connaissance des mathématiques de niveau 2ème année universitaire sera également nécessaire. Bien sûr, il sera bon de connaître les approches de base dans le développement de l'IA (le cycle de l'IA et les approches dans la prise de décision).


Soft Skills (compétences qui permettent de travailler en équipe et d'engager un dialogue constructif). Il existe de nombreuses compétences non techniques précieuses, mais dans le développement de l'IA, j'aimerais en citer une :


Travail en équipe!


Les concepteurs de jeux, les programmeurs et le QA travaillent en étroite collaboration, et il est souvent impossible d'accomplir une tâche ou de résoudre un problème sans combiner leur expérience et leurs connaissances. C'est pourquoi des compétences comme écouter les autres, discuter plutôt qu'argumenter et poser des questions sont fondamentales. Parfois, il est préférable de demander à un concepteur de jeu ou à un QA une nuance particulière du jeu ou de la mécanique au lieu de l'inventer et de le faire vous-même, puis de le refaire péniblement pendant longtemps. Le bon travail de l'IA dans le jeu est toujours le mérite de toute l'équipe, pas seulement d'un spécialiste !


Comme vous pouvez le voir, créer une IA pour les jeux est difficile, mais c'est tellement amusant et agréable ! Entre autres choses, c'est un bon domaine pour développer à la fois les Hard Skills et les Soft Skills.


Créons des jeux différents et passionnants, et l'IA nous aidera.