Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Unity3D
  3. Communication réseau et jeux multijoueurs
Extrait - Unity3D Développer en C# des applications 2D/3D multiplateformes (iOS, Android, Windows...)
Extraits du livre
Unity3D Développer en C# des applications 2D/3D multiplateformes (iOS, Android, Windows...)
1 avis
Revenir à la page d'achat du livre

Communication réseau et jeux multijoueurs

Les jeux multijoueurs

1. Introduction

La sortie de Unity 5.1 a apporté son lot de nouveautés et parmi elles, un tout nouveau système pour créer des jeux multijoueurs : UNET. Plus souple et accessible que son prédécesseur, il propose une surcouche d’abstraction à toutes les problématiques réseaux afin que le développeur n’ayant aucune ou peu de compétence en réseau puisse facilement créer son jeu multijoueur. Le but avoué d’Unity étant que tout le monde soit en mesure de créer le MMORPG (Mossively Multiplayer Online Role-Playing Game) de demain !

Le système se compose de deux parties en fonction des connaissances en réseau de l’équipe de développement et du type de jeu souhaité :

  • Pour les utilisateurs novices qui souhaitent simplement faire un jeu multijoueur aisément, les équipes de développement ont fourni la High Level API (HLAPI), l’API de haut niveau.

  • Pour les plus expérimentés d’entre nous qui veulent construire toute une infrastructure réseau, optimiser les paquets et plus encore, il faudra se tourner vers la NetworkTransport API.

2. L’API haut niveau

a. Introduction

Derrière le nom de code « HLAPI » se cache un moyen d’accéder aux fonctionnalités les plus souvent utilisées lors de la création d’un jeu multijoueur en oubliant toute la partie bas niveau qui sera gérée toute seule. Voici ce à quoi cette API vous donne accès :

  • contrôler l’état du réseau du jeu grâce à la classe NetworkManager,

  • céer une partie pouvant accueillir d’autres joueurs, le joueur hébergeant lui-même la partie,

  • envoyer et recevoir des messages,

  • envoyer des commandes du client vers le serveur,

  • passer des commandes RPC (Remote Procedure Call) depuis les serveurs vers les clients,

  • envoyer des événements des serveurs aux clients.

b. Concept du multijoueur

Quand on aborde un jeu multijoueur, il est très important d’avoir une vision claire du fonctionnement du système manipulant les objets du jeu (joueurs, ennemis…), de la synchronisation des données, des différentes connexions… Nous allons donc passer...

Les classes WWW et WWWForm

Unity met à disposition une classe permettant de faire des appels HTTP de type GET ou POST. La requête ainsi créée s’effectue en arrière-plan ce qui permet de récupérer le résultat une fois le traitement fini, quelques frames plus tard. Ceci est particulièrement utile pour appeler une API (Application Programming Interface).

Requête de type GET


using UnityEngine; 
using System.Collections; 
using System.Diagnostics; 
using Debug = UnityEngine.Debug; 
 
public class WWWGet : MonoBehaviour { 
 
    public string url = "http://google.com"; 
    IEnumerator Start() 
    { 
        Stopwatch watch = new Stopwatch(); 
        watch.Start(); 
 
        WWW www = new WWW(url); 
        yield return www; 
 
        watch.Stop(); 
        Debug.Log(string.Format("{0} bytes downloaded in {1} ms", 
            www.bytesDownloaded, watch.ElapsedMilliseconds)); 
    } 
}
 

Ce script fait une requête GET sur la page d’accueil de Google et affiche la taille des données récupérées et le temps de réponse...