Pourquoi les ennemis ne bougent pas
Dans BreachSix: Tactical Squad, les gardes restent à leur poste. Ce n'est pas un oubli : c'est la décision de conception qui structure tout le jeu. Voici ses raisons, ses limites, et comment nous avons failli passer à côté d'un bogue lié à elle.
Deux façons de faire un jeu d'assaut
Il existe deux grandes familles de jeux tactiques d'assaut. Dans la première, les ennemis bougent, réagissent et visent en temps réel : le joueur est un pilote, et le résultat dépend de ses réflexes. Dans la seconde, le joueur prépare un plan, puis le jeu l'exécute : le joueur est un planificateur, et le résultat dépend de la qualité de sa préparation.
Nous avons choisi la seconde. L'inspiration vient des anciens jeux de type « Breach », où l'on assignait des équipes à des points d'entrée avant de lancer l'assaut. Notre objectif était un jeu simple, amusant et sans frustration, jouable en quelques minutes sur un téléphone.
Ce que ce choix apporte
- Des résultats lisibles. Comme les positions sont connues et la résolution déterministe, on peut toujours expliquer pourquoi un plan a réussi ou échoué.
- Aucune frustration de réflexes. Un joueur peut prendre le temps qu'il veut : il n'y a pas de chronomètre sauf pour une bombe, et même là, la vitesse est celle de l'opérateur, pas celle du joueur.
- Une accessibilité naturelle. Pas besoin de précision au doigt ni de bonne connexion, le jeu se joue hors ligne.
- Un équilibrage vérifiable. Une pièce se résout toujours de la même façon pour le même plan. Nous pouvons donc tester des milliers de combinaisons par des moyens automatiques.
Ce que ce choix coûte
Un jeu planifié risque de paraître « figé » : les ennemis n'ont aucune vie propre. Nous avons donc compensé de deux façons. D'abord par la variété des menaces (garde standard, garde blindé avec otage, tireur d'élite, portes piégées), qui impose des décisions différentes selon la pièce. Ensuite par la riposte ennemie : une fois le premier garde engagé, les gardes encore debout tirent à leur tour, avec un éclat, un son et une pulsation rouge. La riposte ne change pas la logique du jeu, mais elle rend visible le danger.
Un test en vidéo nous a d'ailleurs signalé l'absence perçue de riposte ennemie. Nous avons confirmé que l'absence de mouvement était voulue, et nous avons cherché pourquoi la riposte, elle, n'était pas perçue.
L'histoire d'un bogue invisible
La première réponse a été de rendre la riposte plus visible : halo plus grand, durée plus longue, pulsation rouge. Le joueur a retesté et n'a vu aucune différence. Une deuxième piste est venue : une couleur de remplissage rouge, posée une première fois sur un garde neutralisé, restait collée à tous les gardes des pièces suivantes, ce qui rendait tous les ennemis rouges en permanence et masquait tout changement. Nous avons corrigé cela aussi.
Mais la riposte restait invisible. L'analyse des vidéos image par image ne donnait rien : un effet de 400 millisecondes passe entre deux images d'une vidéo de téléphone. Nous avons alors changé de méthode : piloter le jeu avec un navigateur automatisé et observer directement les changements dans la page, horodatés à la milliseconde, plutôt que de regarder des vidéos.
Le résultat a été sans appel : la riposte ne se déclenchait jamais, dans aucune pièce, depuis son ajout. Le moment où le premier opérateur engage sa cible était calculé de façon différée, à l'intérieur d'une temporisation, alors que le code qui décidait de lancer la riposte s'exécutait immédiatement, avant que ce calcul n'ait eu lieu. La condition était donc toujours fausse. Les améliorations visuelles précédentes n'avaient aucune chance de servir : on peaufinait l'apparence d'un effet qui ne s'affichait jamais.
La correction a consisté à calculer ce moment plus tôt, dès que les informations nécessaires étaient connues. Revérifiée avec le même outil, la riposte s'est déclenchée correctement, en alternance échelonnée entre les gardes. Une dernière retouche a ramené l'éclat à la même taille que celui des opérateurs, une fois qu'il était enfin visible et jugé trop imposant.
Ce que nous en avons retenu
- Un effet invisible n'est pas toujours un effet trop discret. Avant d'agrandir un halo, vérifier qu'il s'affiche.
- Mesurer vaut mieux que regarder. Un navigateur automatisé qui observe la page capte ce qu'une vidéo manque.
- Écouter le joueur, mais chercher la vraie cause. Son impression était juste : quelque chose ne marchait pas. Notre première explication, elle, était fausse.
Pour comprendre les règles de menace qui découlent de ce choix, lisez Ennemis et menaces. Pour la manière dont nous avons équilibré la difficulté, lisez Équilibrer la difficulté.