Utiliser plusieurs caméras pour du multi-joueur

Camera_s8_75

Dans tous les moteurs de jeu, ce qui est affiché à l’écran du joueur est « vu » par une caméra virtuelle. Pas de caméra, pas d’image. Vous devrez donc en avoir au moins une sur votre scène. « Au moins » car il n’y a pas de limites. Vous pouvez en utiliser deux, trois…

Mais a quoi peut bien servir le fait d’avoir plusieurs caméras ? Et bien à vraiment beaucoup de choses dont le multi-joueur !

Disclaimer

Cet article a été originalement écrit le 13/03/2014 sur mon précédent blog. Certaines informations présentées ici peuvent donc ne plus fonctionner telles quelles.

Introduction

Une caméra, c’est un oeil sur votre scène. C’est via ce composant que vous pourrez voir à l’écran ce qu’il y a sur votre scène. En bougeant la caméra, vous verrez la scène sous un autre angle. Branchez ça sur un contrôleur, et vous pourrez voir votre scène sous toutes ses coutures. Jusque là, rien de très complexe.

Par défaut dans Unity, les caméras ajoutées sur la scène sont paramétrées pour dessiner ce qu’elles voient sur la totalité de l’écran. Mais ces valeurs sont paramétrables et modifiables à souhait. Nous allons voir ça ensemble. En créant une nouvelle scène (ou un nouveau projet), votre scène aura une caméra comme suit :

camera

C’est cool, elle permet de voir ce qu’il y a sur la scène. Pour pas mal de cas, c’est suffisant, il suffira de l’attacher au contrôleur de jeu et hop ! Mais on va aller plus loin que ça puisque l’on veut joueur à plusieurs et donc voir la scène depuis différents points de vue.

Le Split-Screen

Vous vous rappelez sans doute des folles parties à Golden Eye sur Nintendo 64 ? Non ? Papy Grenier peut vous raconter. Plus sérieusement, abordons le côté multi-joueur. Faire du multi sur une seule machine c’est possible avec 2 cas de figure. Soit votre jeu est « tactique » en tour par tour et à ce moment là c’est le jeu des chaises musicales. Soit votre jeu est en temps réel et il vous faudra splitter l’écran.

Voyons donc comment réaliser un split d’écran vertical (gauche / droite). Tout d’abord, il va vous falloir 2 caméras :

cameras

Avant de continuer, il faut vérifier un petit détail. La caméra principale est par défaut associée à d’autres composants :

  • Un FlareLayer
  • Un GUILayer
  • Un Audio Listener

Si les deux premiers ne sont pas gênants, le troisième peut l’être. En effet, il ne peut y avoir qu’un seul AudioListener sur une scène. C’est comme ça. Donc lorsque vous créez plusieurs caméras, faites attention à ce détail.

inspector

Ce n’est pas bloquant, mais vous risquez d’avoir des problèmes audio. Je ne m’étendrai pas là dessus, mais la gestion du son sur écran splitté peut être problématique pour gérer les sons 3D. Je traiterai sans doute ce point dans un article plus tard.

Il faut maintenant paramétrer les caméras pour qu’elle s’affichent uniquement sur une moitié de l’écran. Pour se faire, vous allez devoir modifier les valeurs de Viewport Rect. Ces valeurs correspondent au positionnement de ce que verra la caméra. Il est également possible de dessiner ce que voit la caméra dans une texture, mais cette fonctionnalité nécessite la version Pro d’Unity et je ne la couvrirai donc pas dans ce tutoriel.

X et Y correspondent à la position en pourcents du coin inférieur gauche. Par défaut, les valeurs sont 0 / 0, ce qui veut dire que le coin inférieur gauche de la caméra est aligné avec le coin inférieur gauche de l’écran. Les deux autres valeurs, W et H sont l’échelle horizontale et verticale du rendu de la caméra. 1 correspond à 100%, 0.5 correspond à 50%.

Voilà donc ce que nous allons faire :

  • CameraP1 (gauche)
    • X : 0
    • Y : 0
    • W : 0.5
    • H : 1
  • CameraP2 (droite)
    • X : 0.5
    • Y : 0
    • W : 0.5
    • H : 1

Et voilà. La caméra P1 est rendue sur la partie gauche de l’écran, tandis que la caméra P2 est rendue sur la partie droite de l’écran. Les deux peuvent bouger indépendamment l’une de l’autre. Voilà le résultat en mettant quelques éléments visuels en guise de repères :

split

Dans cet exemple, nous avons vu comment splitter verticalement l’écran, mais il est possible de le faire horizontalement (comme pour la plupart des jeux de course), de le découper en plus de morceaux… Après, c’est à vous de voir, selon vos besoins. Jouez un peu avec les paramètres et vous arriverez sans doute à des résultats étonnants !

Crédits image : Wikimedia

Advertisements

Laisser un 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 )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

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

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s