Sortie du tome 5 des cahiers d’Unreal Engine

Hé bien, cela aura pris le temps, mais voilà, c’est disponible à la vente. Bon, j’en ai vrai­ment bavé sur ce tome… mais tous les objec­tifs que je m’é­tais fixés sont atteints. Y‑a tout ce que je voulais y met­tre !
En pré­com­mande: http://bit.ly/2nQOmeK (Livrai­son début Avril 2017).

Dans ce 5ième tome, nous allons étudi­er tout ce qu’il est néces­saire de con­naître pour créer un jeu mul­ti­joueurs en ligne ou une appli­ca­tion de tra­vail col­lab­o­ratif en réal­ité virtuelle. La mécanique reste stricte­ment la même, quelque soit la plate-forme cible. En même temps, nous met­trons en place des out­ils réu­til­is­ables pour vos pro­jets, exclu­sive­ment en util­isant les Blue­prints et en s’ap­puyant quelques plu­g­ins pour combler les fonc­tion­nal­ités man­quantes.

Au Som­maire: un pro­jet mul­ti-postes en 5 min­utes, un tour d’hori­zon com­plet des mécan­ismes de répli­ca­tion (RPC, Reli­a­bil­i­ty, Rel­e­van­cy et Per­sis­tance, Rep Noti­fy, etc.), décou­verte de l’Online Sub­sys­tem, mise en place d’un Frame­work Mul­ti­joueurs avec Lob­by, déploiement d’un serveur dédié (Win­dows, Mac, Lin­ux), créa­tion d’un chat textuel et vocal, enreg­istrement de ciné­ma­tiques avec l’Instant Replay, out­ils de Pro­fil­ing Réseau, serveur web sur mesure (PHP/JSON), serveur Steam et autres plates-formes (Pho­ton Engine, XtraL­ife BaaS, Android, iOS, Ama­zon EC2, GameLift, Game­Cir­cle, Face­book, Ocu­lus, PS4, Xbox One et Switch), ain­si que le déploiement d’un client HTML5/WebSockets.

Petit extrait de l’in­tro­duc­tion qui explique le con­tenu:

Tout d’abord, nous allons com­mencer par un exem­ple très sim­ple qui vous mon­tre qu’en 5 min­utes, vous pou­vez créer un jeu et y con­necter plusieurs joueurs via d’autres postes. C’est un exem­ple trompeur car tout sem­ble très sim­ple, mais c’est aus­si que le tra­vail est vrai­ment mâché. Cela a au moins le mérite de vous met­tre directe­ment dans le bain, d’épuiser une par­tie de votre curiosité afin que vous puissiez focalis­er votre atten­tion sur la suite. Car il y a beau­coup de con­cepts à com­pren­dre et un peu de savoirs-faire à accu­muler avant de se lancer dans un pro­jet de créa­tion d’un jeu ou d’une appli­ca­tion «en ligne». C’est donc ce que nous allons étudi­er dans un sec­ond temps.

Ensuite, nous met­trons en place les bases d’un frame­work mul­ti­joueurs en ligne, avec la créa­tion d’un lob­by, c’est à dire d’un hall per­me­t­tant de créer une ses­sion serveur, de rechercher des par­ties et de join­dre l’une d’elle en tant que client. Nous allons sou­vent utilis­er les mots de jeu en ligne, de joueurs… mais au final, lorsqu’on crée une appli­ca­tion, on par­le d’utilisateur et de clients, cela revient exacte­ment au même. Nous ver­rons que nous allons vite attein­dre cer­taines lim­i­ta­tions et nous met­trons en place un cer­tain nom­bre d’éléments pour s’affranchir des lim­i­ta­tions des Blue­prints et créer un frame­work avancé, avec une meilleure ges­tion des joueurs.

Nous ver­rons égale­ment com­ment dévelop­per un sys­tème de chat textuel et vocal, com­ment utilis­er l’«instant replay» qui per­met de filmer des par­ties réseau et de rejouer l’intégralité ou une séquence en par­ti­c­uli­er de la par­tie. Nous appren­drons à utilis­er les out­ils de débo­gage et de mesure de per­for­mance du jeu sur le réseau.

Puis, nous ver­rons com­ment con­fig­ur­er un serveur dédié sous Win­dows, OSX et Lin­ux. La mise en place d’un tel serveur n’est pas aus­si sim­ple qu’on pour­rait le penser au préal­able. Cela néces­site, par exem­ple, une re-com­pi­la­tion com­plète de l’éditeur mais égale­ment, une con­fig­u­ra­tion plus avancée de votre pro­jet.

Join­dre une par­tie néces­site de con­naître l’adresse du serveur qui héberge la par­tie. Mais quand vous créez un jeu et que vous souhaitez lis­ter l’ensemble des serveurs disponibles dans le monde entier ou par pays, com­ment procéder ? Vous pou­vez pass­er par des plates-formes tierces comme Steam. Nous ver­rons d’ailleurs com­ment utilis­er Steam et con­fig­ur­er notre pro­jet pour pren­dre en charge cette plate-forme. Mais si vous voulez vous affranchir de cela, nous avons égale­ment dévelop­pé un serveur sur mesure en PHP/JSON, hébergé chez vous ou avec votre site web, que vous pour­rez réu­tilis­er et amélior­er pour vos pro­jets. Nous allons d’ailleurs le dévelop­per ensem­ble !

Enfin, si vous souhaitez dévelop­per un MMO ou avoir des ser­vices sup­plé­men­taires, vous pou­vez pass­er par des plates-formes tierces, autres que Steam, comme Pho­ton Engine pour le temps-réel ou XtraL­ife BaaS pour le tour par tour. Nous par­lerons égale­ment du mul­ti­joueurs sur Android, iOS, Ama­zon, Face­book, PS4,Xbox One, Nin­ten­do Switch etc. qui utilisent les mêmes fonc­tions que celles étudiées dans ce tome. Quand on dit qu’Unreal Engine est «cross-plat­form», cela n’est pas un vain mot : vous pou­vez met­tre en place un serveur Lin­ux hébergé sur le cloud d’Amazon EC2 et con­necter des joueurs qui provi­en­nent de clients divers comme Win­dows, iOS ou Android et ce, au sein d’une même par­tie ! D’ailleurs nous fer­ons le test avec un serveur et un client Win64 et un autre client HTML5 car il faut paramétr­er le pro­jet pour utilis­er des Web­Sock­ets.

Et tous les pro­jets et les sources en télécharge­ment, avec des ver­sions com­pilées pour serveurs dédiés, etc.

Bon, j’e­spère qu’il vous plaira. Il est plus gros que les autres, prob­a­ble­ment plus dif­fi­cile car le sujet est assez com­plexe. Lorsque j’ai com­mencé à rédi­ger ce tome, je con­nais­sais l’attente de cer­tains : dis­pos­er d’un frame­work «clé en main», sim­ple à maîtris­er et à faire évoluer. C’est donc en par­tie l’objet de ce livre. Mais au-delà de cela, je voulais égale­ment que vous com­pre­niez toutes les sub­til­ités du développe­ment réseau. C’est prob­a­ble­ment un vœu pieux mais j’espère au moins pou­voir vous fournir toutes les bases néces­saires pour que vous emprun­tiez par vous-même le chemin du mul­ti­joueurs ou de l’application réseau. Car si cela est vrai dans de nom­breux domaines, c’est encore plus vrai dans notre cas : c’est en forgeant qu’on devient forg­eron ! Comme je souhaite vous éviter ces longs écueils, je vais pass­er par une approche somme toute per­son­nelle, qui con­siste à ne pas à définir les grandes notions de la répli­ca­tion sous UE4, mais à vous les ren­dre tan­gi­bles au tra­vers d’ex­em­ples sim­ples et pro­gres­sifs.

J’aurais atteint tous les objec­tifs que je m’étais fixés en démar­rant ce pro­jet de livre et il a été cer­taine­ment le plus dif­fi­cile à rédi­ger de toute la série. En fait, il est très dif­fi­cile de trou­ver de la doc­u­men­ta­tion sur le sujet et c’est surtout par l’ex­péri­ence qu’on acquiert les con­nais­sances néces­saires à la créa­tion d’un jeu ou d’une appli­ca­tion mul­ti­joueur. Quand j’ai com­mencé à défrich­er le ter­rain, je pen­sais avoir tout com­pris en étu­di­ant la doc­u­men­ta­tion tech­nique: j’é­tais très loin du compte. En fin de compte, la doc­u­men­ta­tion et les quelques vidéos que l’on trou­ve sur le sujet ne sont utiles, para­doxale­ment, que lorsqu’on maîtrise l’ensem­ble du sys­tème !

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  1. En fait, je retarde un peu le livre sur la VR car je n’ai pas assez de con­tenu à y met­tre. J’ai bossé sur un jeu VR dernière­ment, mais il n’y a pas tant de spé­ci­ficités que ça. Je crois qu’il fau­dra plus dévelop­per le coté Game­play, Lev­el Design, ges­tion des sons, périphériques et dif­férentes plate­formes, voir le mul­ti­joueurs aus­si… car au-delà de ça, la tech­nique reste assez basique au final.

  2. Je vais déjà digér­er les deux pre­miers tomes avant de me lancer dans la pro­gram­ma­tion d’un univers virtuel en réseau.
    Et vive­ment le 7, que l’on puisse maîtris­er la VR

  3. Ahh­hh enfin ! C’est sûr que t’en as bavé sur celui là. Au fait, tu as util­isé le blue­print depuis le début du cours (T1)
    Pourquoi ne pas faire un HS pour le C++ ? Et si non, quelle con­trainte t’y empêche ?
    En tout cas, bra­vo.