Aujourd'hui pour les Zestes, un petit topo sur les problématiques déploiement de Helium Rain !
Qu'est-ce donc ?
Le déploiement est l'ensemble des opérations qui permettent d'installer et configurer un logiciel (ici, un jeu vidéo) chez l'utilisateur final. C'est quelque chose qui est généralement plus facile à décrire qu'à faire, surtout pour un jeu vidéo, il faut en effet :
- distribuer et garder à jour un exécutable du jeu ;
- distribuer et garder à jour quelques centaines de fichiers de contenu (textures, objets 3D, sons, fichiers de données…) ;
- publier à un rythme mensuel des patchs concernant plusieurs dizaines de ces fichiers ;
- déployer les dépendances du jeu à sa première installation.
Au-delà des simples questions de téléchargement et mise à jour, on ne passe pas instantanément d'un mode de développement à un mode de publication avec des milliers de joueurs, il est impératif que cette transition soit progressive.
Un problème ancien
Tous les développeurs de logiciels ont rencontré la même situation, le déploiement est donc une problématique aussi ancienne que le logiciel lui-même. Le monde du Web est familier avec Docker et d'autres projets du même calibre, certains langages de programmation embarquent un gestionnaire de paquets, ainsi, bien évidemment, que la plupart des distributions Linux grand public.
Mon projet précédent, le jeu de tir multijoueurs DeepVoid, avait également rencontré cette problématique. Distribué gratuitement sans passer par une plateforme de téléchargement, il s'appuyait sur une architecture assez classique :
- le jeu lui-même, et ses serveurs de jeu ;
- un client d'installation et mise à jour, ou launcher : Unreal Updater, réalisé en C++ avec Qt4 ;
- un master server réalisé en Python, qui répertoriait les serveurs de jeu et indiquait aux joueurs à quelles adresses IP se connecter pour jouer.
Unreal Updater avait été développé pour être générique, modifiable, et pertinent pour tous les jeux réalisés avec UDK. Il avait été publié sous la license GPLV3, de même que le jeu lui-même.
Mais cette solution avait ses problèmes. Coûteuse en temps de développement, elle avait de nombreux défauts et la plupart des joueurs se sont plaints de problèmes de téléchargement interrompus, de connexion impossible, de situations réseau complexes que le launcher ne pouvait résoudre.
La solution Unreal
Heureusement, comme dans toutes les situations compliquées de ce type, nous pouvons aujourd'hui nous reposer sur une infrastructure solide qui ne nous demande aucun développement : les outils proposés par Unreal Engine 4, et Steam.
Les plus curieux d'entre vous sont probablement déçus de lire ces lignes, mais à mon humble avis c'est une bonne chose, et le chapitre précédent est un bon début d'explication. Un jeu vidéo comme Helium Rain est déjà un développement très conséquent : deux ans de travail, plus de 50 000 lignes de code, des centaines d'éléments graphiques… Il n'est pas raisonnable de développer sa propre solution quand on peut s'en passer.
Unreal Engine prévoit en effet une bonne réponse à la plupart de nos problèmes, en proposant un mécanisme de packaging puissant. Toutes les données du jeu sont compilées dans une unique archive1, plus performante que des fichiers individuels, et cette archive est versionnée. Chaque nouvelle version peut aussi être proposée soit sous la forme d'une nouvelle archive complète, soit sous la forme d'un patch.
Le mécanisme demande quelques réglages, mais fonctionne bien et produit une dizaine de fichiers au total pour l'ensemble du jeu, y compris un installeur pour les dépendances du moteur - des éléments du SDK DirectX, des binaires de Visual Studio, etc.
Alpha, Beta, Steam
A ce stade, on dispose donc d'une distribution binaire complète du jeu, qu'on peut facilement mettre à jour. La dernière étape consiste à la faire parvenir au joueur.
Pour le joueur final, Helium Rain sera publié sur Steam, qui propose son propre processus de mise à jour. Je ne pourrais pas approfondir cette partie, puisque les outils liés à la plateforme sont couverts par un accord de confidentialité ; il suffira de dire que là encore, il s'agit de mettre en oeuvre une méthode définie à l'avance.
Pour les plus aventureux d'entre vous, qui se sont proposés pour l'alpha de Helium Rain, vous téléchargerez cette distribution du jeu sous forme de dossier compressé, sans installation particulière. On commence déjà à tester ce processus en interne. Une fois cette installation initiale réalisée, nous proposerons des patchs pour faire évoluer cette version alpha jusqu'à la sortie du jeu sur Steam. Petits veinards
Merci d'avoir lu !
-
On peut aussi découper manuellement son jeu en archives individuelles, par exemple pour jouer au chapitre 1 d'un jeu pendant que le chapitre 2 est en cours de téléchargement. Ce n'était pas utile pour nous. ↩