L'intelligence artificielle dans le jeu de combat Shadow Fight 3



Les concepteurs de jeux sont rĂ©guliĂšrement confrontĂ©s au dĂ©fi de crĂ©er une IA intĂ©ressante. Ce processus peut ĂȘtre relativement simple ou extrĂȘmement complexe, selon les besoins du projet et les objectifs que vous poursuivez. Le concepteur de jeu senior de Banzai Games , Mikhail Dragovalovskiy, a parlĂ© de son expĂ©rience de travail sur l'IA pour le cĂ©lĂšbre jeu de combat mobile Shadow Fight 3.

Différence entre SF3 et la plupart des jeux de combat


La série Shadow Fight a été immédiatement créée avec un certain nombre de fonctionnalités qui la distinguent de nombreux jeux de combat:

  • La prĂ©sence d'autoblocs. Si le personnage se dĂ©place simplement et n'attaque pas, il bloque automatiquement toute attaque normale de l'ennemi;
  • Rythme et animations plus lents. Misez sur la composante tactique: le joueur doit avoir le temps de comprendre quel type de coup l'ennemi inflige et quelle attaque choisir pour rĂ©ussir sa contre-attaque. Cela nous a permis de donner au joueur la possibilitĂ© d'envisager des animations que nous essayons de rendre aussi belles et physiques que possible;
  • Collisions honnĂȘtes. Cela crĂ©e des situations trĂšs cool dans lesquelles un personnage Ă©chappe magnifiquement Ă  l'attaque du second et frappe en rĂ©ponse, et grĂące Ă  des animations fluides, le joueur parvient Ă  tout considĂ©rer;
  • Forme d'ombre. Lorsqu'une Ă©chelle spĂ©ciale est remplie, le joueur peut entrer dans la forme d'ombre et passer plusieurs tours spectaculaires qui traversent le bloc de l'adversaire

image

AI dans les jeux précédents de la série


Nous avions dĂ©jĂ  travaillĂ© sur l'IA dans notre prĂ©cĂ©dent jeu de combat - Shadow Fight 2, mais en raison de la transition vers la 3D, de l'apparition de collisions entre les joueurs et de l'ajout d'une forme d'ombre, nous n'avons pu transfĂ©rer qu'une partie de la logique de l'IA, et le reste a dĂ» ĂȘtre recrĂ©Ă©.

OĂč commencer Ă  travailler sur l'IA?


Si vous ne créez pas de bot en utilisant l'apprentissage automatique, je distinguerais deux approches de capitaine:

  1. Faites un bot faible, puis renforcez-vous au niveau souhaité avec de nouvelles fonctionnalités;
  2. Faites un robot invincible puis affaiblissez.

La deuxiĂšme option semble trĂšs romantique: il semble que vous ĂȘtes plus intelligent que tout le monde et que vous crĂ©ez une IA cool qui plie les joueurs, puis rĂ©duit heureusement la complexitĂ© du bot. Du point de vue du dĂ©veloppement, cela peut ĂȘtre plus pratique, car vous pouvez rĂ©flĂ©chir Ă  l'avance Ă  toutes les caractĂ©ristiques du comportement du bot dont vous avez besoin et imaginer pleinement son comportement final.

Bien sûr, nous avons choisi cette option, bien que nous nous soyons ensuite rendu compte que tout n'était pas si simple: avec notre équilibre d'animations, de blocs automatiques et une variété de compétences, vous pouvez presque toujours trouver les tactiques et les abus nécessaires qui vous permettent de vaincre l'IA avec une compétence élevée. Nous ne l'avons pas compris tout de suite, mais seulement lorsque nous avons correctement mesuré le taux de victoire des joueurs à différentes étapes du jeu. Et ce, malgré le fait que pour de nombreuses personnes, à en juger par leurs commentaires sur le jeu, le bot était vraiment invincible.

image

Comment fonctionne notre IA?


DĂ©clencheurs ou rĂšgles de conduite

  • Il est basĂ© sur les rĂšgles selon lesquelles le bot effectue des actions alĂ©atoires. Nous appelons ce systĂšme de dĂ©clencheurs de rĂšgles. Par exemple:
  • Le bot regarde la distance entre lui-mĂȘme et le joueur et ne sĂ©lectionne que les coups qu'il peut frapper, puis en dĂ©livre un au hasard parmi ces coups;
  • Le bot ne spamme pas en lançant des armes;
  • Le bot pĂ©nĂštre dans le front avec les armes de lancement de l'ennemi, puis commence Ă  Ă©chapper Ă  coup sĂ»r pendant un certain temps;
  • Et un tas de choses qu'un bot devrait ou ne devrait pas faire ...

Si vous lùchez un tel bot contre un débutant, avec un niveau de pompage égal, le résultat dépendra des armes avec lesquelles les adversaires sont armés. Qui est plus rapide que l'animation, il gagnera. Parce que, en fait, tous les deux appuient sur tous les boutons, sauf que le bot le fait un peu plus de maniÚre significative.

image

Prise de décision

L'étape logique pour améliorer l'IA est de réduire le caractÚre aléatoire et d'ajouter un systÚme de prise de décision qui fera passer le bot à la victoire. Pour ce faire, vous devez comprendre quelles décisions sont bonnes dans quelles situations. Pour les combats, deux situations se produisent tout le temps:

  1. L'ennemi attend;
  2. L'ennemi attaque.

Il existe Ă©galement deux solutions:

  1. Besoin de battre lorsqu'il est garanti de frapper;
  2. Vous devez bloquer quand ils vous frappent et vous ne pouvez pas contre-attaquer.

Il s'avĂšre que pour la victoire, l'IA doit interrompre les attaques ennemies avec ses contre-attaques, ou bloquer si elle ne peut pas les interrompre.

image

Nous avons pris deux groupes de décisions que le bot prend: l'un - si l'ennemi est debout, l'autre - si l'ennemi attaque. Afin que l'IA sache exactement quoi contrer, nous avons créé des tables de collision.

Tables de collision

Rappelez-vous comment le docteur Strange a regardĂ© tous les rĂ©sultats possibles de la bataille avec Thanos? De mĂȘme, les tables de collision fonctionnent comme ceci: l'ordinateur prĂ©-calcule les rĂ©sultats pour chaque animation d'attaque dans le jeu Ă  chaque distance possible.

Si plus en dĂ©tail: on lance un coup avec une Ă©pĂ©e et en mĂȘme temps un coup avec un katana, puis on regarde qui va frapper qui. Nous faisons cette procĂ©dure pour tous les coups du jeu, Ă  toutes les distances et avec des retards dans un nombre diffĂ©rent d'images (j'ai lancĂ© un coup avec une Ă©pĂ©e, et l'ennemi Ă  travers N images - une frappe de katana). Tous les rĂ©sultats sont enregistrĂ©s dans des tableaux. Nous effectuons une procĂ©dure similaire avant chaque mise Ă  jour et mettons les fichiers rĂ©sultants aprĂšs un algorithme de compression difficile sous la forme finie dans la build afin de ne pas consommer les ressources de l'appareil lors de l'exĂ©cution. Le joueur dans le client a dĂ©jĂ  une liste de tous les rĂ©sultats, ce qui signifie que l'IA sait quel coup peut contrer n'importe quel coup du joueur Ă  une distance spĂ©cifique, ou comprendre que la meilleure façon pour le moment est de bloquer l'attaque.

image

En conséquence, l'IA répond efficacement aux actions des joueurs. Autrement dit, ils ont contré les contre-attaques. Maintenant, vous devez apprendre au bot à attaquer de maniÚre optimale, plutÎt que des coups aléatoires.

Le choix de la distance et la bonne grĂšve

Un lecteur attentif et intelligent dira: «ArrĂȘtez !!! Pourquoi mĂȘme vous attaquer si l'ennemi est toujours dans le bloc automatique? Nous devons attendre le coup de l’ennemi et le punir d’un coup rapide, ce qui interrompra son attaque! » Oui, c'est vrai, mais un bot qui ne bouge pas et n'attaque pas sans les actions des joueurs a l'air au moins Ă©trange. L'IA doit pouvoir choisir des coups efficaces pour lancer une attaque, mĂȘme si la stratĂ©gie optimale consiste Ă  jouer Ă  partir de contre-attaques. Pour ce faire, nous avons dĂ©veloppĂ© un systĂšme de choix des meilleures distances et frappes.

Comme nous le pensions: le joueur utilise le plus souvent plusieurs coups de poing favoris, ce qui signifie que le bot effectuera spĂ©cifiquement les attaques qui, Ă  une distance sĂ©lectionnĂ©e, ne peuvent pas ĂȘtre interrompues par des coups de poing typiques du joueur. Pour ce faire, nous:

  • Nous collectons des statistiques de tous les coups du joueur;
  • Nous regardons dans quelle mesure nous avons les contre-attaques les plus efficaces contre ses attaques typiques;
  • Nous passons cette distance au bot et le faisons rester dessus pendant toute la bataille.

En théorie, cela semble cool, mais dans la pratique, cela s'est avéré moins bon: les joueurs restent rarement inactifs - ils appuient presque toujours sur les boutons et sur le bot, de sorte que le bot est plus souvent guidé par le systÚme de prise de décision basé sur les attaques du joueur, au lieu de prendre l'initiative. Donc, choisir la bonne frappe ne fonctionne que contre les joueurs passifs, mais choisir la meilleure distance a amélioré les contre-attaques - elles sont devenues plus diversifiées, car le bot a plus de choix.

A ce stade, le bot est déjà assez efficace: il sait commencer au mieux son attaque, il sait quand contre-attaquer et quand bloquer. Ensuite, nous parlerons des systÚmes qui vous permettent de définir le niveau de complexité requis et d'affaiblir ou de renforcer le bot.

Ressentiment et pardon

Il s'agit d'un concept intĂ©ressant qui sous-tend notre systĂšme de bilan. GrĂące Ă  lui, nous crĂ©ons un niveau de complexitĂ© suffisant pour les dĂ©butants et les professionnels, tout en motivant le joueur Ă  utiliser diffĂ©rents coups, ce qui augmente l'intĂ©rĂȘt et le divertissement du jeu.

L'essence du concept réside dans le nom: le bot s'offusque des coups du joueur, que le joueur répÚte de temps en temps. Le ressentiment est un compteur qui réduit les chances de prendre une décision sous-optimale et augmente les chances que l'IA mÚne une contre-attaque parfaite.

De l'autre cĂŽtĂ© de l'Ă©chelle se trouve le pardon - le bot commence Ă  augmenter les chances de choisir des solutions non optimales et Ă  rĂ©duire les chances d'une contre-attaque si le joueur arrĂȘte le spam et passe Ă  l'utilisation d'autres hits.

image

Si nous voulons créer un bot complexe, nous réduisons la vitesse du pardon et fixons également un niveau élevé de ressentiment de départ, si nous voulons créer un bot faible, l'inverse est vrai.

Retard

Chaque bot dans SF3 a un retard dans la prise de décision. Il s'agit d'un paramÚtre qui oblige le bot à suspendre N images avant de choisir une option d'action. Une chose utile - vous permet de créer l'apparence que votre adversaire pense. Plus le bot que nous voulons faire est simple, plus nous lui mettons de retard.

VĂ©rification de l'Ă©tat

Pour rendre certaines parties du jeu plus émotionnelles, nous utilisons un contrÎle sur les états et les relations des différentes variables du jeu.

Nous pouvons forcer certains bots à ne pas lancer d'armes à certaines distances ou à réduire la vitesse de pardon si un joueur a plus de points de vie qu'un bot, ou rendre l'IA plus agressive si elle a peu de points de vie.

image

En gĂ©nĂ©ral, il s'agit d'un module complĂ©mentaire que nous utilisons pour gĂ©nĂ©rer des situations dans lesquelles le bot change radicalement son comportement et son efficacitĂ©. Si nĂ©cessaire, nous restreignons certaines actions du bot dans diverses situations, par exemple, il est plus difficile pour un bot de lancer que pour un joueur, sinon le joueur ne pourra jamais lancer un bot, car les distances auxquelles le lancer peut ĂȘtre appliquĂ© seraient les mĂȘmes, et le bot aurait juste le temps de commencer son animation plus tĂŽt.

Sur la base de tous les mécanismes ci-dessus, nous avons créé 9 préréglages de base de l'IA que nous utilisons dans différentes situations et sections du jeu. Cette approche vous permet de modifier l'équilibre par point et de mesurer les changements.

RĂ©sultat


Le processus de crĂ©ation de tactiques de bot a Ă©tĂ© long. Nous avons introduit ces fonctionnalitĂ©s progressivement, donc parfois nos joueurs ont souffert, et aprĂšs eux, nous avons souffert, en lisant leurs critiques et leurs malĂ©dictions. Lorsque nous avons tĂ©lĂ©chargĂ© les derniĂšres versions des modifications, le flux de critiques nĂ©gatives concernant le comportement des opposants s'est arrĂȘtĂ©, ce dont nous sommes trĂšs fiers.

image

Notre expérience montre que de nouvelles améliorations du bot avec l'approche actuelle ne donnent pas une augmentation tangible de la qualité. Par conséquent, nous avons commencé à travailler sur un réseau neuronal qui simulera les actions d'un joueur.

Plusieurs éléments nous poussent à prendre cette décision:

  1. Nous développons un nouveau jeu de combat PvP - Shadow Fight: Arena. Sa caractéristique est des héros avec des tactiques trÚs différentes avec des capacités et des mécanismes différents. Faire un bot réaliste dans ces conditions est beaucoup plus difficile que dans le cas de SF3;
  2. Nous avons déjà une expérience positive de l'utilisation des réseaux de neurones pour résoudre les problÚmes d'animation dans notre produit Cascadeur . Il s'agit d'un programme pour créer des animations réalistes que nous utilisons pour tous nos jeux;
  3. Nous voulons réunir une équipe de spécialistes ML compétents afin d'augmenter encore notre expertise dans ce domaine et l'utiliser pour améliorer Cascadeur et nos jeux.

L'Ă©quipe de Banzai Games a besoin d'un chercheur en apprentissage profond. En savoir plus sur l'offre d'emploi ici .

Source: https://habr.com/ru/post/fr468023/


All Articles