Les galères des animations pour un FPS

En développant notre projet de FPS en VR, nous sommes tombés sur un problème épineux :

Comment gérer les animations du personnage à la première personne ?

La question paraît triviale de prime abord. En effet, ne suffit-il pas d'avoir un modèle 3D de bras et de mains au premier plan, qui lit telle ou telle animation en fonction de l'action courante ?


Eh bien... Pas vraiment.

En fait le problème est posé par le besoin d'avoir une structure cohérente au code. Je vais vous donner un exemple : Admettons que notre joueur a dans son inventaire une Winchester 1892 et un Glock 17. Lorsqu'il recharge la Winchester, il faut que les mains lisent l'animation spécifique de rechargement de cette arme. De la même manière, lorsqu'il recharge le Glock, il faut que les mains jouent l'animation propre et unique associée au Glock.

Le souci ici c'est que l'objet Mains joue une animation spécifique à l'objet Glock. Pour faire cela proprement, il y a deux possibilités :

- Soit l'objet Glock contient toutes les informations relatives à son animation et les transmet aux mains pour qu'elles la joue.

Solution élégante, mais qui pose un problème, surtout dans un jeu qui est en phase de début de développement. Cette solution ne fonctionne que si on ne modifie pas trop la façon dont les mains sont animées au cours du développement du jeu. Si cela arrive, alors toutes les armes déjà créées dans le jeu ne marchent plus et il faudra repasser sur chacune d'entre elle pour qu'elles puissent être toutes compatibles avec le nouveau système d'animation.

- Soit l'objet main contient toutes les animations possiblement jouables et le Glock lui dit d'en jouer une en particulier

Cette solution semble un peu contre-intuitive car ce n'est normalement pas à la main de contenir des informations qui sont spécifiques à un objet. Cela dit, c’est la solution la plus pérenne car une modification du système d’animation n’implique qu’une modification sur les mains. Les armes ne changent pas car elles font seulement référence au nom de l’animation

C’est pourquoi nous avons choisi la seconde option pour l’instant sur le Projet Terminus.

Article publié le 19/09/2019 à 23:29 par MehdiTheMedoc



Consulter plus d'articles de Histoires de développeurs