[Disponible] Helium Rain

Space opera pour PC, maintenant sur Steam !

Le problème exposé dans ce sujet a été résolu.

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.

Pas ce genre de Docker

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, la solution maison pour DeepVoid

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.

Archives et patchs sur la machine d'un joueur

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.

Préparation d'une release

Configuration d'un patch, en build itératif

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 :P

Merci d'avoir lu !


  1. 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.  

Ah je ne savais pas que les outils Steam pour les devs étaient couverts par un NDA. Intéressant !

Il n'est pas raisonnable de développer sa propre solution quand on peut s'en passer.

Tout à fait d'accord !

En tous cas c'est vraiment sympa comme explication du processus de déploiement ! Avec en plus la comparaison dans le temps par rapport à d'anciens projets !

+8 -0

Juste un petit message pour montrer que je suis toujours là et que je continue à suivre ce projet et que je compte toujours participer à l'alpha à laquelle j'ai été sélectionné lors de la précédente phase :)

@Str4nger : je dispose de 2 configs désormais en plus de celle que j'avais indiqué lors du premier questionnaire. Une config moyenne sous linux (core i5, radeon HD6500M), et une grosse config (core i7, GTX 750Ti) sous win 10. Je pourrai tester sur les deux si nécessaire.

Hello !

On ne vous a pas donné de nouvelles depuis trois semaines, alors allons-y ! :pirate:

Avancement et planning

Le travail sur la version Alpha continue, lentement mais sûrement…

Depuis la dernière mise à jour d'avancement il y a près d'un mois, il reste autant de tâches listées, mais une quinzaine de tâches qui n'étaient pas encore listées ont été résolues. En cause : de nombreux détails pas anticipés qui viennent nous ralentir, et du travail sur des tâches moins urgentes - certaines tâches dues pour la beta sont déjà réglées !

Les échéances se stabilisent, même si on ne donne plus de date fixe et ferme, voici ce qu'on espère aujourd'hui :

  • version Alpha en mars ;
  • version Beta en mai/juin ;
  • Early Access sur Steam cet été - peut-être pour fêter les deux ans depuis l'annonce du projet ?

L'actu du projet

On travaille actuellement sur des sujets assez variés mais essentiellement techniques : refactoring, correction de bugs, features "internes" du jeu. Il y a peu de nouvelles images ces temps-ci parce que ces éléments ne se prêtent pas vraiment à de beaux screenshots. :P

La dernière version Preview d'Unreal Engine 4.11, une version dont nous avons besoin, nous pose un sérieux problème puisque le jeu crashe immédiatement et inexplicablement avec celle-ci. Notre politique est de rester en permanence à jour pour éviter d'avoir trop de surprise quand une nouvelle version sort avec des nouveautés que l'on veut avoir, mais le moment où Helium Rain se fixera sur une version d'Unreal Engine ne tardera sans doute plus. Pour rappel, Helium Rain a été lancé sur Unreal Engine 4.2.

Le dernier point, c'est un remerciement pour votre patience, pour ceux qui suivent ce projet, pour ceux qui nous ont soutenu sur Greenlight, pour ceux qui testeront la version alpha. Plusieurs d'entre vous se posaient la question d'un accès gratuit au jeu final : j'ai décidé que les participants les plus investis dans l'alpha, ceux qui auront été productifs pour traquer les bugs, recevront une clef gratuite du jeu final. Si vous reportez un bug inconnu jusque là avec assez d'informations pour que nous puissions le reproduire, c'est gagné ! :)

Le dernier point, c'est un remerciement pour votre patience, pour ceux qui suivent ce projet, pour ceux qui nous ont soutenu sur Greenlight, pour ceux qui testeront la version alpha. Plusieurs d'entre vous se posaient la question d'un accès gratuit au jeu final : j'ai décidé que les participants les plus investis dans l'alpha, ceux qui auront été productifs pour traquer les bugs, recevront une clef gratuite du jeu final. Si vous reportez un bug inconnu jusque là avec assez d'informations pour que nous puissions le reproduire, c'est gagné ! :)

Stranger

C'est super cool, c'est super sympa, mais personnellement, je ne suis pas intéressé. Je participerai à l'alpha bien sûr et je remonterai les bugs que je trouve, mais je considère qu'un tel travail (le votre, pas celui de reporter 3 bugs) mérite salaire. Et c'est l'attitude que j'adopte pour tous les jeux indie que je soutiens.

Je paierai donc pour ma clé à sa sortie.

Merci encore pour tous les updates, c'est fascinant de suivre le projet au fur et à mesure de son avancement. Et continuez ainsi !

+16 -0

Merci elvian ! Ça fait plaisir à lire.

On va être plutôt classiques dans notre façon de gérer l'aspect commercial du jeu. Personnellement, je suis contre les DLC, extensions, skins payants, publicités in-game ou autre modèle commercial à la mode - je trouve qu'il est sain de vendre le jeu complet, et les mises à jour à venir, à un prix fixe. C'est simple, clair, et honnête. C'est le modèle qu'on va adopter. On s'interdit de participer à des bundles ou à des offres de revente de clefs comme l'univers Steam les aime.

La version alpha est avant tout un premier test de QA pour nous, c'est une version embryonnaire du jeu qui risquent de ne pas être très fun à tester, on trouve donc normal de récompenser les participants à ce travail. C'est la moindre des choses. Evidemment, si vous voulez quand même acheter le jeu on ne va pas vous en empêcher :P

Connaissant Str4nger, les lunes doivent être de gros billboards 4k :-°

Fraggy

Ce ne sont pas des billboards, ce sont des sphères texturées et éclairées. Quand on visite l'orbite d'une lune, on n'a jamais exactement la même partie visible, et jamais à la même heure, donc ça introduit de la variété :)

Et ce n'est pas de la 4K qu'on n'utilise pour la texture, mais carrément du 8182x8192. Espèce de casual.

Globalement ça ne pose aucun problème d'avoir de grosses textures dans Helium Rain. Certains vaisseaux ont des textures en 4K là où ça se justifie. On avait posté une carte de notre occupation mémoire plus haut, la revoici.

Le jeu final pèse moins de 1Go aujourd'hui, le texture streaming permet de ne charger qu'une version très basse résolution d'une planète distante, et surtout, le peu d'environnement nous permet d'utiliser de hautes résolutions pour le peu d'objets que nous avons, alors qu'un jeu classique doit composer avec des milliers de textures dans une scène.

Le jeu final pèse moins de 1Go aujourd'hui, le texture streaming permet de ne charger qu'une version très basse résolution d'une planète distante, et surtout, le peu d'environnement nous permet d'utiliser de hautes résolutions pour le peu d'objets que nous avons, alors qu'un jeu classique doit composer avec des milliers de textures dans une scène.

Stranger

En gros les space-simulator c'est les jeu du graphiste flemmard :p ? (patapé patapé)

+0 -0

Le jeu final pèse moins de 1Go aujourd'hui, le texture streaming permet de ne charger qu'une version très basse résolution d'une planète distante, et surtout, le peu d'environnement nous permet d'utiliser de hautes résolutions pour le peu d'objets que nous avons, alors qu'un jeu classique doit composer avec des milliers de textures dans une scène.

Stranger

En gros les space-simulator c'est les jeu du graphiste flemmard :p ? (patapé patapé)

Poliorcetics

Je crois pas XD Quand tu regarde Star Citizen, ils doivent pas s'ennuyer les graphistes :D

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte