Helium Rain — un projet indépendant UE4/Blender

L’équipe qui avait con­coc­té Deep­Void, nous informe de l’avancée de leurs travaux sur le jeu Heli­um Rain et nous a don­né quelques infos sur les proces­sus de créa­tion du jeu. J’ai pu con­sul­ter divers doc­u­ments et m’entretenir avec l’un des fon­da­teurs du pro­jet et Lead Devel­op­per.

Présentation

Tout d’abord, je vous pro­pose de décou­vrir ce jeu qui a été green­lighté récem­ment sur Steam (jan­vi­er 2016):

Heli­um Rain est un space opéra réal­iste. GA: “Le jeu se déroule dans notre univers, en orbite autour d’une étoile proche de notre sys­tème solaire. Un vais­seau colonisa­teur a été envoyé pour explor­er la géante gazeuse est en orbite, ain­si que ses lunes, dans l’espoir d’y trou­ver de la vie. Cet espoir est déçu, et le joueur fait face à un univers coupé du nôtre, dans lequel la lutte pour les ressources est âpre.
Heli­um Rain est avant tout une sim­u­la­tion économique, avec un mod­èle économique réal­iste basé sur l’offre et la demande, qui simule de la crois­sance, une pop­u­la­tion, des ressources pri­maires, sec­ondaires, ter­ti­aires…

helium rain

La sim­u­la­tion économique est très poussée. Par exem­ple, les prix des ressources ou pro­duits du jeu dépend de l’économie, de four­nisseurs et de la san­té de la pop­u­la­tion.

helium phot2

La sim­u­la­tion des dégâts présente des mod­èles très élaborés de ges­tion de la tem­péra­ture, de l’énergie des vaisseaux,et des dégâts physiques très com­plex­es.

Le but a été de coller au plus près de la réal­ité physique, tout en instau­rant un game­play intéres­sant. Ce que je com­prends par­faite­ment, puisque c’est aus­si mon objec­tif avec mon pro­jet de jeu “Lost Colonies”.

A ma ques­tion “pourquoi avoir choisi cet univers, ce thème et ce nom ? un rap­port au nucléaire ?” GA nous con­fie: “Heli­um Rain est un jeu de sci­ence-fic­tion, c’est un univers qui nous tenait à cœur. On voit très peu de sci­ence-fic­tion axée sur le réal­isme, en par­ti­c­uli­er dans le jeu vidéo. L’exception notable est Ker­bal Space Pro­gram, un jeu génial qui pro­pose de la con­struc­tion et de l’exploration au joueur. On voulait réalis­er un jeu réal­iste basé sur l’économie et le com­bat, dans la veine des X3 par exem­ple. Le titre du jeu est basé sur un phénomène physique : au cœur des géantes gazeuses, les con­di­tions sont telle­ment extrêmes qu’on peut y trou­ver des pluies de gaz liq­uides, en par­ti­c­uli­er l’héli­um. Cette image nous sem­blait assez frap­pante pour en nom­mer le jeu.

Modélisation et matériaux

Les AOMap pour simuler le High­poly:

La con­cep­tion s’appuie sur deux out­ils open source: le mod­eleur 3D Blender, et le moteur de jeu Unre­al Engine 4. Qua­si­ment tous les assets 3D sont mod­élisés et bakés avec Blender. Il y a une dizaine d’assets issus de la bou­tique Unre­al Engine, mais tous les élé­ments de vais­seaux ou de sta­tions sor­tent de Blender.

La mod­éli­sa­tion, et plus pré­cisé­ment le high poly est la 1ère étape de la créa­tion de ce jeu. C’est une mod­éli­sa­tion 3D à haut niveau de détails, le high poly est réal­isé inté­grale­ment avec Blender, par mod­éli­sa­tion clas­sique, en manip­u­lant des faces. Toute­fois, dans le jeu lui même, ce sera le low poly qui sera util­isé deman­dant beau­coup moins de ressources. Pour Heli­um Rain, les low poly sont pro­duits en élim­i­nant tous les détails du high poly, là où d’autres développeurs vont plutôt créer un nou­v­el objet à par­tir de zéro, ou encore utilis­er des out­ils automa­tisés.

helium rain poly

Pour cela, l’équipe utilise le nor­mal map­ping (encoder tous ces détails de géométrie dans une image — une tex­ture ou map dans le jar­gon du ren­du 3D). Chaque pix­el de la tex­ture cor­re­spond à la direc­tion d’une face, via un encodage rudi­men­taire. L’algorithme d’éclairage du jeu vidéo utilise ces don­nées pour mod­i­fi­er le com­porte­ment de la sur­face, afin de simuler du relief.

helium Normal_map_example_with_scene_and_result

Blender génère cette tex­ture, en quelques sec­on­des, à par­tir des deux objets, c’est le bak­ing qui est l’occasion de pro­duire une sec­onde tex­ture, l’ambi­ent occlu­sion map ou AO map. Pour plus d’informations, je décris tout ce proces­sus de créa­tion dans mon livre sur Blender.

La pro­duc­tion de mate­ri­als sous Unre­al Engine:

Le graphe à droite de l’image per­met de pro­duire le ren­du visu­al­isé à gauche. Pas besoin pour cela, de com­pé­tence par­ti­c­ulière en pro­gram­ma­tion. Dans Unre­al Engine 4, on assem­ble des mate­ri­als génériques, que l’on réalise suiv­ant le mod­èle du Phys­i­cal­ly Based Ren­der­ing ou PBR, conçu pour respecter les lois de la physique.

helium 9ffe9023-ecb8-4048-8744-c82668c5c0b4.jpg.960x960_q85

La banque de matéri­aux PBR est main­tenant disponible, et le mate­r­i­al assem­ble les dif­férents com­posants suiv­ant les con­signes d’un masque, une tex­ture qui n’est jamais affichée dans le jeu mais con­trôle le mate­r­i­al. Pein­ture ? Métal brut ? Lumière ? Éraflure de la sur­face ? Tout ça est codé par une couleur dans la tex­ture, à gauche sur l’image ci-dessous.

helium - Création d'un objet de jeu vidéo • Ar_ - https___zestedesavoir.com_articles

Dans cet exem­ple, les couleurs ont l’association suiv­ante :

  • le noir représente du métal brut ;
  • le bleu représente la pein­ture prin­ci­pale ;
  • le rouge, le rose indiquent la pein­ture sec­ondaire ;
  • le vert indique du métal bril­lant.

Il ne reste plus qu’à importer le low poly dans le jeu, lui assign­er le mate­r­i­al con­fig­uré et effectuer quelques réglages.

On réalise aus­si une deux­ième ver­sion du low poly, moins détail­lée pour les visions à grande dis­tance afin d’alléger la con­som­ma­tion en ressources.

helium catalogue IaEaiLp

Je me suis demandé pourquoi avoir mis en place un sys­tème de masque pour récupér­er des “couch­es” dans le mate­r­i­al blue­print  et leur appli­quer des effets par­ti­c­uliers. Cette approche ne va t-elle pas com­pli­quer grande­ment la tâche des graphistes ? Qu’est-ce qui jus­ti­fie une telle approche par rap­port à l’utilisation d’outils comme Sub­stance Painter (pour les effets de coulure, de rouille, impacts divers) ?

Mais en fait, c’est surtout du à la per­son­nal­i­sa­tion des vais­seaux.  Plus pré­cisé­ment et selon les mots de GA: “On tex­ture l’ensemble des vais­seaux avec une approche par masque, dans laque­lle on utilise une bib­lio­thèque de matéri­aux qu’on sélec­tionne avec des masques : on ne des­sine donc pas la tex­ture d’un vais­seau, mais des zones comme “peint”, “pas peint”, peint avec motif”, etc.. Cette tech­nique répond à pas mal de prob­lèmes, mais son intérêt fon­da­men­tal est de ren­dre l’intégralité des vais­seaux per­son­nal­is­ables. Le joueur choisit qua­tre couleurs, un motif, et l’ensemble de la coque en tient compte. Ren­dre l’ensemble d’un vais­seau per­son­nal­is­able impose une tech­nique dynamique comme celle-ci, plutôt qu’une approche clas­sique avec un out­il de pein­ture. Un autre avan­tage fon­da­men­tal de cette tech­nique, est qu’elle rend le tex­tur­ing extrême­ment rapi­de: un vais­seau peut être entière­ment tex­turé en quelques dizaines de min­utes, avec une seule tex­ture générée manuelle­ment, sans com­pro­mis sur la qual­ité du ren­du.

Un arti­cle est disponible en français sur le process créatif.

Exemple de dev: l’artillerie

Vous êtes vous déjà demandé com­ment on touche une cible minus­cule à une longue dis­tance lorsqu’on est un gros vais­seau spa­tial ?

Vous avez plusieurs approches:

  • Envoy­er des chas­seurs plus légers et atta­quer à plus courte dis­tance
  • Bien vis­er, anticiper la vitesse, les déplace­ments et prédire où la cible sera au moment de l’impact, puis faire explos­er la muni­tion au plus proche de la cible (on peut égale­ment utilis­er un détecteur de prox­im­ité)
  • Utilis­er un mis­sile à tête chercheuse qui pour­ra adapter sa vitesse et sa direc­tion  dans le temps

Les con­cep­teurs d’HR ont décidé de simuler physique­ment un obus d’artillerie avec une dis­tance d’activation (50m) et une dis­tance de déto­na­tion (3m).

Dans un jeu à 60fps, il se déroule 16.7ms entre chaque image. Pen­dant ce temps-là, un obus a le temps de par­courir près de quinze mètres, la taille d’un petit vais­seau.

Quand j’ai appris cela, je me suis demandé pourquoi les con­cep­teurs du jeu avaient mis en place une telle approche: En effet, le com­posant “Pro­jec­tile­Move­ment” d’Unreal Engine 4 a été nor­male­ment conçu pour gér­er ce genre de cas. Il véri­fie entre 2 Physic Ticks (qui sont plus fréquents nom­breux que les frames) s’il n’y a pas eu de col­li­sion entre ces deux appels. Pourquoi avoir implé­men­té votre pro­pre approche ?

Voici la réponse de GA: “On a choisi un mécan­isme de tir bal­is­tique com­plexe car c’était le plus réal­iste que l’on pou­vait imag­in­er. Une tête chercheuse fonc­tionne très bien dans l’atmosphère, avec des sur­faces de con­trôle, mais dans le vide c’est une tout autre his­toire ! Il a donc fal­lu met­tre en place ce mécan­isme, et le ren­dre aus­si per­for­mant que pos­si­ble — aus­si bien sur le plan du game­play que des per­for­mances en ter­mes de matériel. Le résul­tat, c’est une approche hybride entre logique de jeu et pure physique : on ne pou­vait pas se con­tenter d’un mou­ve­ment physique, par exem­ple parce que la tête bal­is­tique peut déton­er sans impact, quand elle frôle la coque. Une approche pure­ment basée sur la physique posait en plus de lourds prob­lèmes de per­for­mances: on a donc choisi de n’activer la physique que juste avant l’impact. ”

N’étant pas con­fron­té au même développe­ment, j’ai du mal à saisir le pourquoi exacte­ment, mais l’intérêt au final est que cela fonc­tionne sans perte de per­for­mance. Ici, le but était juste­ment la per­for­mance.

Autres éléments techniques

Aucune librairie ou out­ils tiers n’a été util­isée dans le cadre de ce pro­jet.

GA: “Le jeu ne sera pas porté en VR, sim­ple­ment parce que l’essentiel du jeu est en 2D, dans des menus. La VR n’aurait guère de sens dans un tel con­texte.

Je ne partage pas cet avis pour ma part. Je trou­ve qu’un menu dévelop­pé dans l’espace autour de soi comme un cock­pit de vais­seau, est une solu­tion orig­i­nale. Après, tel un géant pou­voir inter­a­gir avec tel satel­lite ou telle ressource… façon Minor­i­ty Report — ouais, ça peut-être vache­ment cool. Mais bon, ce n’est que mon avis. On passe d’un jeu stan­dard à une expéri­ence d’immersion qui peut être enivrante.

Coté IA: “L’IA dans Heli­um Rain est large­ment fonc­tion­nelle, même si elle n’est pas ter­minée. Elle se découpe en trois niveaux : 

  • un pilote automa­tique qui per­met aux vais­seaux de se déplac­er dans l’espace, d’un point à un autre, en évi­tant les obsta­cles, c’est la par­tie la plus sim­ple ;
  • une IA de pilotage de com­bat, plus com­plexe, qui simule le com­porte­ment d’un pilote humain ;
  • une IA stratégique qui pilote au long terme les dif­férentes fac­tions du jeu.
On n’a pas util­isé pour ces IA les Behav­iour Tree d’Unreal Engine 4.
Les deux pre­mières sont ter­minées, l’IA stratégique demande plus de temps mais est déjà capa­ble de faire croître une fac­tion, de gér­er l’économie…

 

Et enfin, sur la com­po­si­tion de l’équipe, GA nous répond: “Heli­um Rain n’est pas un pro­jet com­mu­nau­taire, on est tou­jours essen­tielle­ment 2 développeurs : un ori­en­té pro­gram­ma­tion, un ori­en­té design, même si on se partage des tâch­es dans ces deux aspects. On tra­vaille égale­ment avec une com­positrice, Daisy Herbaut, et un com­mu­ni­ty man­ag­er. Cette minus­cule équipe est assez effi­cace pour qu’on n’envisage pas d’autres recrute­ments aujourd’hui, et dans la mesure où nous avons tous un emploi à plein temps, Heli­um Rain n’a jamais eu besoin de finance­ment en par­ti­c­uli­er. Je suis le seul mem­bre de l’équipe a avoir par­ticipé au pro­jet Deep­Void.

Là encore, je me demande pourquoi ne pas essay­er l’aventure du finance­ment par­tic­i­patif. Je peux com­pren­dre qu’on arrive en plus de son boulot, en tra­vail­lant le soir et le week­end à avancer le pro­jet. Mais au final, un finance­ment pour amélior­er tel ou tel aspect du jeu, mul­ti­pli­er les lunes, ajouter des dia­logues… cela aurait pu être un plus. Et puis, c’est aus­si une façon de ven­dre des licences à l’avance.
Mais le choix effec­tué per­met de n’avoir aucune con­trainte de délai, pas d’attente par­ti­c­ulière, c’est une grande lib­erté égale­ment.

Conclusion

Le jeu a été Green­lighté en jan­vi­er 2016 et sera pub­lié cet été sur Steam.  Actuelle­ment, le jeu est en alpha privée. Alors, j’ai essayé de savoir si pour vous et moi il était pos­si­ble d’accéder à cette alpha, mais d’après GA: “On a fait tester une cen­taine de per­son­nes depuis le mois dernier, avec de nom­breux retours ; on ne va pas éten­dre le pro­gramme plus large­ment, mais on espère pub­li­er le jeu sur Steam Ear­ly Access cet été. ”

Bon, il fau­dra vous armer de patience donc !

En tous cas, c’est un beau pro­jet, dévelop­pé par une toute petite équipe mais qui tient la route et qui a de l’expérience dans le domaine. Je n’ai pas de doute sur le fait qu’ils atteignent prochaine­ment leur objec­tif et je leur souhaite de réu­nir un pub­lic le plus large pos­si­ble.

Je vous laisse avec cette démo d’environnement réal­isée par un fan :

Sources: Gwen­naël Arbon­na — Equipe Heli­um Rain

https://zestedesavoir.com/articles/164/artillerie-et-physique-dans-un-jeu-video/

Si vous voulez de la vidéo de game­play, il y a aus­si ça:

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.