Le combat au corps à corps est un passe-temps favori en vidéogameland, au cœur d'innombrables séries à la fois connues et obscures, et une expérience tendue et saisissante lorsqu'il est bien joué. De nombreux développeurs de jeux ont pris un jeu où deux êtres se disputent jusqu’à ce qu’un ne puisse plus rien faire et se dit: «Ce serait tellement mieux s'il y avait des tonnes "Parfois c'est vrai, mais souvent la somme est plus grande que ses parties, et combattre beaucoup de" méchants "à la fois n'est pas aussi excitant, profond ou nuancé que se battre un à la fois.
Beaucoup de jeux de combat de mêlée n'utilisent pas d'intelligence artificielle particulière pour combattre plusieurs adversaires. Cela signifie souvent que combattre deux adversaires est de manière exponentielle plus difficile que de combattre un seul, car ils attaqueront tous les deux en même temps, mais vous ne pouvez vraiment exercer de représailles que contre l'un d'entre eux. Dans le pire des cas, lorsque vous combattez des hordes d'ennemis, cela peut signifier que la stratégie optimale consiste à entraîner l'ennemi dans une ligne à fichier unique, puis à l'attaquer un à un en retournant! Cela ne semble pas très fantastique ou excitant, n'est-ce pas?
Entrez dans le "cercle de bataille". Il s'agit d'un morceau de code d'intelligence artificielle qui demande aux ennemis de s'encercler intentionnellement autour du joueur et d'attaquer uniquement lorsque le joueur a une chance de réagir. Cela oblige les ennemis à se battre dans un style et un tempo beaucoup plus amusants pour le joueur… même si c'est en fait une très mauvaise tactique de combat.!
La principale raison pour laquelle vous voudriez utiliser des cercles de bataille est de laisser le joueur ressentir comme s'ils combattaient plusieurs ennemis à la fois, sans faire face à la réal défi de combattre plusieurs ennemis à la fois. Ainsi, à la base, un cercle de bataille est une illusion. Vous facilitez intentionnellement les choses pour que le joueur puisse faire l'expérience de la fantaisie de prendre un groupe de mecs à la fois et de savoir que vous allez sortir en vie, comme dans n'importe quel film d'arts martiaux.
Un cercle de bataille ne doit pas nécessairement fonctionner de la même manière pour chaque match; si vous choisissez d'en utiliser un, vous devez passer du temps à l'adapter à votre jeu. À une extrémité du spectre, vous avez des cercles de bataille "cinématiques", comme dans Assassin's Creed ou Batman: Arkham Asylum, où les ennemis attendent patiemment leur tour avant de tenter d’attaquer, et donnent au joueur beaucoup d’avertissement pour faire face aux attaques imminentes. À l’autre extrémité, vous avez des cercles de combat "dangereux", comme dans Dark Souls, où les ennemis tentent de rester en dehors du chemin des autres, mais qui n’ont par ailleurs aucun problème à vous encombrer en masse..
J'utilise les mots "cinématique" et "dangereux" pour décrire le type d'expérience que le joueur devrait avoir lorsqu'il se trouve à l'intérieur du cercle; est-ce plus une expérience audiovisuelle excitante que le joueur devrait ressentir confortable dans, ou devrait-il être un vulnérable positionner le joueur devrait essayer d'éviter?
Ce concept peut être simplifié davantage en gérant simplement la quantité de pression sur le joueur. Plus précisément, il s’agit de la motivation que doit avoir le joueur pour réagir aux ennemis du cercle de bataille. Un cercle de basse pression laissera le joueur attendre les attaques entrantes pour contrer ou attaquer un ennemi particulier sans rétribution immédiate. Un cercle de haute pression obligera le joueur à choisir "combat ou fuite" dès qu'il se trouvera dans le cercle, de sorte que le fait d'entrer dans le cercle en premier lieu devrait être une décision tactique préméditée. Dans un cercle aussi dangereux, le joueur doit immédiatement décider qui attaquer, qui contrer, et quand et comment s'échapper..
Dans les exemples de fichiers Unity, j'ai fourni un beat-em-up de style arène entièrement fonctionnel, bien que minimaliste. Si vous n'utilisez pas Unity, vous devriez toujours avoir une idée de la façon d'adapter le code du cercle de bataille à la langue et au moteur que vous utilisez. Les fichiers qui vous intéressent sont EnemyMob.cs et SwordzPlayer.cs..
Voici le cercle de bataille en action. Cliquez sur la démo pour la mettre en évidence, puis utilisez les touches fléchées pour vous déplacer et appuyez sur X biff.L’intelligence artificielle du cercle de bataille fonctionne fondamentalement comme ceci (du point de vue de l’ennemi):
Tout d’abord, avancez vers le joueur jusqu’à ce que je sois dans un rayon de "danger"
En mode "danger", ne vous approchez pas trop d'un autre ennemi, à moins que je ne reçoive la permission d'attaquer le joueur. (Voir Avoider.cs.)
Également en mode "danger", essayez de vous approcher du joueur. S'il y a trop d'ennemis sur mon chemin, je ne pourrai effectivement pas atteindre le joueur avant que les ennemis ne bougent ou que le joueur ne bouge.
Lorsque le joueur est dans mon rayon "d'attaque" (approximativement la portée maximale de mon attaque), demandez au joueur si je suis autorisé à attaquer. Si c'est le cas, ajoutez-moi à la liste des attaquants actuels sur l'objet joueur. (Voir SwordzPlayer.cs.)
le nombre maximum d'attaques simultanées autorisé (attaquants simultanés
dans SwordzPlayer.cs) est essentiel pour équilibrer votre cercle de bataille. Un nombre plus élevé provoque une augmentation exponentielle de pression. Dans l'exemple de démonstration, je l'ai réglé sur 2
; moins cinétique et plus "cinématique" jeux mis à 1
. Si vous mettez ce nombre trop haut, vous annulerez l'objectif du cercle, car de grands groupes d'ennemis deviennent inattaquables ou ne peuvent être vaincus qu'avec une tactique de poke-and-run sans intérêt..
La même importance est la taux d'attaque de l'ennemi (taux d'attaque
dans EnemyMob.cs). Ce n'est pas le taux d'attaque le plus rapide possible de l'ennemi, mais à quelle fréquence ils vont choisir attaquer quand on lui en donne l'autorisation. Comme on peut s'y attendre, un nombre inférieur augmente pression, mais vous devriez généralement avoir plusieurs fois ce taux plus élevé que le taux d'attaque réel. Vous pouvez rendre ce taux un peu plus imprévisible (et donc la quantité de pression légèrement moins prévisible) en augmentant attaqueRateFluctuation
, ce qui augmentera ou diminuera le taux d'attaque après chaque attaque.
En utilisant ce système, vous disposez des moyens de base pour créer cette illusion de puissance qui rend le divertissement de vos joueurs beaucoup plus amusant..
Il y a des tonnes de changements mineurs et d'ajouts que vous pouvez faire pour que le combat à l'intérieur du cercle soit encore plus intéressant:
Alors, faites preuve de créativité! Ce n’est que le début: placez le cercle de bataille au cœur de votre jeu et créez votre propre version du cercle qui s’accorde bien avec votre Jeu.