Sanguelia, Level 7 : De la difficulté de contrôler une manette

La croix directionnelle de la manette Xbox 360 est une horreur

La croix directionnelle de la manette Xbox 360 est une horreur

⇐Retour au Level 6

À la mi-juillet, mon frère a profité des soldes de Steam pour se prendre lui aussi ClickTeam Fusion et m’a signalé du coup une mise-à-jour qui intègre en fait des éléments de la version pro comme la liste d’évènements. Mais c’est surtout l’objet XNA qui m’intéresse, car il permet enfin de gérer la manette Xbox 360, et donc de ne pas se limiter aux quatre boutons de face. Je peux donc utiliser une gâchette pour la lampe dans mon jeu même si ce n’est pas si simple ; comme il s’agit d’un bouton analogique, il n’apparaît pas comme condition mais comme expression, avec une valeur de 0 à 100. Mais le véritable problème réside dans tout ce qui n’est pas géré par l’éditeur d’évènements mais directement dans le mouvement de l’objet actif, comme le bouton pour le saut qui demeure heureusement le « bouton 1 » (A) dans mon cas. Plus gênant, le déplacement reste associé au stick analogique, et il n’y a pas moyen d’utiliser la croix directionnelle à moins de programmer les mouvements « manuellement ». De toute façon, pour chaque action il faut tester si la manette est connectée afin de laisser le choix entre les deux types de contrôles ; tout le monde n’a pas une manette Xbox !

Dans les aspects positifs, le plugin gère également les vibrations, ce qui ouvre la porte à plein d’expérimentations intéressantes. Et fin juillet, alors que je m’ennuie un peu, je me lance dans des recherches pour corriger le bug de l’animation d’escalade évoqué dans l’entrée précédente. Les solutions proposées sur les forums sont un peu foireuses mais en m’inspirant de l’une d’elles, j’en ai trouvé une meilleure. Il faut créer deux évènements, l’un pour suspendre l’animation en boucle si le mouvement est nul, et l’autre pour la redémarrer dans le cas contraire. Il aurait été préférable que tout cela soit géré automatiquement par le logiciel, mais tant pis. Plus tard, je profite d’une autre idée de jeu pour tester le plugin XNA. Il se trouve que parmi mes nombreuses obsessions pour des jeux méconnus, il y a le Dick Tracy de la Mega Drive, parce que le gameplay mêle de l’action/plateformes au premier plan et du tir sur cible à l’arrière-plan, avec des décors que l’on peut cribler de balles… Je teste donc un mouvement où l’on contrôle le personnage à la croix directionnelle, quitte à n’avoir ni accélération ni décélération, tout en dirigeant le viseur de la mitraillette au second stick.

Dick Tracy (Mega Drive)

Maniaque, je ne peux m’empêcher de détruire chaque carreau

La bonne surprise, c’est que ça fonctionne plutôt bien, et même en combinant le déplacement avec un saut alors que j’ai mis à 0 l’accélération et la décélération pour bloquer le stick gauche. En revanche, ça fout en l’air les collisions avec le décor puisque le décalage de la position du personnage passe outre les collisions… Et impossible d’ajouter « si l’objet n’est pas en collision avec le décor » car la négation ne fonctionne pas sur cette condition. Il faudrait donc reprogrammer toutes les collisions, en testant chaque position où l’on ne peut pas se déplacer à cause d’un obstacle, ou utiliser du moins une « map » de positions comme cela se fait en programmation. Mais ce n’est pas évident avec un logiciel qui ne gère pas de manière très pratique les outils comme les tableaux – ironiquement, c’était plus simple sur ma calculatrice en utilisant les matrices ! Et comme je suis flemmard, je finis par trouver une astuce en exploitant le fait qu’on peut mettre une négation sur une superposition, à défaut d’une collision. Mais il faut être prudent ; si on n’autorise le perso à se déplacer que s’il n’est pas en superposition avec un obstacle, il risque de s’encastrer dedans et rester coincé !

J’ai trouvé la solution en spécifiant que si on appuie sur « droite » et qu’on n’est pas superposé avec un obstacle, on se décale d’un pixel à droite, mais dans le cas contraire (2e évènement), on se décale d’un pixel à gauche. On pourrait penser que cela occasionne des sautes, mais la boucle de programme est si rapide que cela ne se voit pas. Il est peut-être préférable d’activer les collisions carrées cela dit. Mais survient alors un autre bug quand je place un élément de décor en dehors de la fenêtre, vu que j’utilise un scrolling. Il me semblait bien avoir déjà vu l’option « gérer les collisions en dehors de la fenêtre » et je finis par la retrouver dans les propriétés de la scène (pas du jeu). Elle était pourtant déjà cochée !! En fait, il faut la décocher pour que les collisions soient gérées, ce qui ne fait qu’ajouter cette option à une longue liste de descriptions trompeuses dans le logiciel… Il reste éventuellement à empêcher la sortie par la gauche et la droite du niveau, mais on peut également recourir à un nouvel obstacle invisible ou juste en dehors de la fenêtre de jeu. Mais la grande question est : est-ce suffisamment convaincant pour en risquer l’intégration dans Sanguelia ?

The Evil Within

Encore une fois, tout le monde n’a pas de manette Xbox 360 et il n’est pas facile de rendre similaires les contrôles à la croix (et son déplacement au pixel) et au stick (avec une accélération éventuelle). Bien entendu, il est possible de gérer les contrôles au stick manuellement comme on le fait pour la croix, en utilisant bien la condition « répéter tant que le joystick est pressé » pour ne pas se déplacer pixel par pixel… Mais même là, au joystick, le personnage a tendance à glisser tout seul, sans doute en raison de la collision avec le sol… Et en plus, Sanguelia est un jeu de plateformes avec un level design vertical, des échelles, etc. Bref, tout cela me semble bien mal barré et de toute façon, vu le peu d’intérêt que suscite mon blog quand je ne mets pas des photos de chatons, je me dis que ce dilemme n’a pas beaucoup d’importance. Depuis que j’ai débuté ce développement, j’ai non seulement manqué de temps, mais j’ai eu d’autres idées comme un jeu de stratégie plus simple à réaliser côté animations, ou un titre à la Dick Tracy, donc, et j’ai du mal à me concentrer sur un seul projet… Et fin décembre, début janvier, jouer à The Evil Within me donne encore d’autres idées.

En effet, le jeu de Shinji Mikami, très proche de Resident Evil 4 que j’adore, me donne une solution élégante pour programmer une intelligence artificielle de jeu d’infiltration – en gros, savoir si un ennemi vous voit ou pas. Le souci, c’est que même si ce survival horror stimule mon imagination pour Sanguelia, puisque les pièges gore y auraient également leur place, l’astuce que j’ai trouvée convient mieux à un jeu vu du dessus. Or j’avoue avoir un faible pour les vues de côté, plus intéressantes sur le plan visuel. Mais d’un autre côté, je me dis que l’aspect plateformes était une mauvaise idée, puisque les physiques que permet ClickTeam Fusion n’arriveront sans doute jamais à la cheville d’un Donkey Kong Country Returns et autres ténors du genre… Dois-je totalement rebooter mon concept, ou seulement alterner les séquences vues du dessus et les niveaux de côté, quitte à les rendre moins axés sur la plateforme et davantage sur l’exploration ? Mais surtout, ai-je le temps de travailler là-dessus, maintenant que j’ai davantage de responsabilités au sein de MO5.COM ? Probablement pas, hélas. Cela marque donc la fin de ce blog de développement, jusqu’à nouvel ordre…

À bientôt, j’espère…

2 commentaires

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.