[Disponible] Helium Rain

Space opera pour PC, maintenant sur Steam !

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

Il faut bien comprendre que c'est uniquement l'interface haut niveau de pilotage qui a été revue, et pas les autres couches. En effet, entre le clavier et le mouvement du vaisseaux, il y a environ 4 couches logicielles successives.

Le moteur physique

Il est utilisé pour bien d'autres choses que le pilotage de vaisseaux, mais dans ce cas il se contente d'appliquer la deuxième loi de Newton : accélération = somme des forces. Cette partie regarde la poussée actuelle des moteurs et modifie les vitesses linéaires et angulaires en fonction.

Le contrôleur de vol

Le contrôleur de vol à pour role de calculer les commandes moteur nécessaire en fonction de l'attitude attendu par le vaisseaux. Il peut fonctionner dans différent mode, de pilotage automatique (docking, arrêt complet, suppression de rotation).

En mode manuel, le contrôleur de vol prend 3 paramètres en entrée : - Le vecteur objectif de vitesse linéaire - Le vecteur objectif de vitesse angulaire - Le droit d'utiliser ou non le moteur orbital En autopilote, un driver va calculer ses 3 paramètres pour accomplir une tache simple. L'autopilote ne sert réellement que pour le docking actuellement, mais pourrait facilement faire des taches comme suivre une cible.

L'interface de pilotage

L'interface de pilotage est la conversion entre des axes (comme la position d'un gamepad ou de la souris) et des boutons (comme les touches de clavier et bouton de gamepad) et les commandes de vitesses linéaire et angulaire. Lorsqu'un vaisseaux est piloté par un pilote IA, cette partie est court-circuité par un pilote virtuel (qui représente un pilote humain dans le jeu, pas un autopilote) qui aussi le role de calculer les même paramétrés de vitesse linéaire et angulaire voulu.

C'est cette couche qui a été revue : la physique des vaisseaux est toujours la même, conforme à la mécanique Newtonienne. Les contrôleurs de moteur ont toujours le même travail de devoir allumer les moteurs et gérer les dégâts. On a juste rendu cette interface complètement fonctionnelle.

Le binding des contrôles

Il s'agit d'une simple couche pour associé des touches de clavier, souris ou joystick avec des actions et axes nommée. Cette couche est juste là pour laisser la possibilité de changer les contrôles.

Comme a essayé de corriger Stranger, on est pas non plus passé d'un mode "Simulation pour hardcore gamer" à "Arcade". On avait faire un contrôleur de vol naif qui ne permettait pas de piloter. Aucun des amis qui a essayé le pilotage n'a compris comment ça fonctionné. Moi-même après des heures d'entrainement, je n'arrivais pas à abattre des cargos lents tellement c'était difficile de s'en approcher.

Par contre les pilots IA, qui utilisent la même interface pour piloter étaient eux d'une efficacité redoutable : ça montrait que ça n'était pas la physique qui rendait les combat trop difficile mais le contrôleur de vol mis à la disposition du joueur qui était défectueux.

Au niveau du contrôleur de vol on peut faire ce que l'on veut, sans tricher en terme de physique ou de moteur. Il n'y a pas de manière évident un mode de pilotage "simple" et un "compliqué" mais une infinité de possibilité de controle et il en trouver un qui sera le plus adapter à du combat spacial, avec un physique réaliste.

On peut dire qu'il existe un bouton "suivre le soleil" qui calcul un objectif de vitesse linéaire tel que le vaisseaux va essayer de se tourner vers le soleil tant qu'on appuis sur la touche. On peut faire que si on click sur l'écrans, le vaisseau essaie pendant 3 secondes d'aller dans cette direction.

Ce qu'on avait fait était de mettre chacun des 6 degrees de liberté du vaisseaux (3 rotations et 3 translations) sur 6 axes de contrôle différents. Il fallait 8 touches et 2 axes de souris juste pour piloter un cargo : c'était totalement impilotable.

C'est aussi naif que piloter un quadricoptère avec une manette contrôlant chaque moteur : c'est naturellement instable et tous les quadricoptères, même ceux de modélisme ou de coursent utilise un contrôleur moteur pour que les axes de manette correspondent à des angles plutôt que des poussées moteurs.

En gros, on vient de finir de mettre au point le mode "compliqué" : on peut ajouter plein d'assistances au pilotage et au combat, si l'on veut, comme de la visée automatique, du suivi de cible, de l'anti-collision (sans tricher avec la physique) et on pourra commencer à appeler ça un mode "simplifié".

C'est toujours possible de se retourner sur sa trajectoire sans modifier son vecteur vitesse pour dessouder tout ce qui bouge derrière soi ? Si oui c'est bien sympa.

Donc si je vous suis bien, par défaut on a un contrôle de sa trajectoire et si on veut utiliser la rotation comme avec les RCS dans Orbiter ça s'active temporairement ?

C'est toujours possible de se retourner sur sa trajectoire sans modifier son vecteur vitesse pour dessouder tout ce qui bouge derrière soi ? Si oui c'est bien sympa.

Donc si je vous suis bien, par défaut on a un contrôle de sa trajectoire et si on veut utiliser la rotation comme avec les RCS dans Orbiter ça s'active temporairement ?

Grimur

Oui, tant qu'on maintient la touche espace, on peut tourner sans impact sur la trajectoire ; l'usage principal étant de faire des passes de tirs dans lesquelles on pilote le vaisseau en rotation sans changer la trajectoire.

Le modèle économique et l'IA continuent à se stabiliser. On a un univers stable et évolutif de façon autonome pendant quelques semaines de jeu. L'objectif est bien sûr d'assurer une économie, une population, des concurrents qui évoluent de façon pertinente sur une très longue durée de jeu.

On peut avoir des détails ou ça risque de spoiler le jeu ? Genre l'univers est cyclique (par exemple un moment stable => un moment de crise => un moment stable => un moment de crise, etc…) ou les actions du joueur influent directement ou non ? Par exemple si je massacre les compagnies de l'IA sans raison, peut-elle liguer plusieurs compagnies contre moi pour un temps ?

+0 -0

On peut avoir des détails ou ça risque de spoiler le jeu ? Genre l'univers est cyclique (par exemple un moment stable => un moment de crise => un moment stable => un moment de crise, etc…) ou les actions du joueur influent directement ou non ? Par exemple si je massacre les compagnies de l'IA sans raison, peut-elle liguer plusieurs compagnies contre moi pour un temps ?

Ezenku

Il me semble qu'ils ont déjà répondu: ils avaient expliqué que ce n'était pas encore bien déterminé mais que ce serait plutôt la dernière solution qui serait adopté, afin de rendre le jeu plus réel : si une compagnie (IA/joueur) devient trop puissante ou agressive, les autres commenceront à agir en retour, mais si rien n'arrive il n'y aura pas de raison de s'attaquer plus à elle qu'à une autre.

+0 -0

1) Y aura peut-être pas d'alpha avant quelques semaines.

2) Essayer de le faire tourner sur une petite configuration permettra d'offrir des retours sur les performances du jeu (C'est mon cas, et c'est peut-être pour ça que j'ai été sélectionné)

+4 -0

J'ai un vieil I5 avec un chipset graphic AMD HD Radeon qui commence à méchamment faire la gueule, même dans l'éditeur d'UE4, alors en jeu… ^^'

Et pour mon nouveau, je penche pour un MSI Apache (quel modèle, à voir encore). Donc ce sera plus la même gamme désolé :( (ça m'empêcherait pas de tester ça sur les deux machines, si besoin après)

J'ai peut-être un i7 assez récent, mais à côté j'ai une nvidia 740M, qui non seulement commence à se faire vieille par rapport aux modèles récents, mais en plus c'est pas du tout une CG joueur, et pour la finir je tourne sous Linux et je dois utiliser bumblebee vu qu'Optimus n'est pas porté.

+1 -0

Moi, personnellement, j'ai un PC pas top, un i5 à 2.67GHz, une Radeon 6800 Series je crois et seulement 4 Go de RAM. Je vais donc essayer de le faire tourner sur cette machine, mais si jamais ça ne fonctionne pas, j'en ai une autre qui rentre dans la catégorie: "High-end - Gaming desktop or laptop with Intel Core i5, GTX 960, 8GB RAM or better"

Moi aussi j'aimerais bien, mais je sais très bien que je n'aurais pas le temps de jouer, donc autant laisser ma place à quelqu'un d'autre… C'est dommage, parce que j'aurais vraiment aimé tester, d'autant que j'aurais pu essayer sur une petite/moyenne config (intel core i7 je ne sais plus quel modèle mais pas hyper top, geforce 840m, 8Go de RAM) et une grosse que j'aurais avant la sortie de l'alpha (intel core i7 4790, geforce gtx 970, 8Go de RAM)

+0 -0

Rappelons plusieurs choses…

  • Cette version alpha est avant tout un test technique pour nous. On s'attend à de nombreux problèmes, à des crashs, bugs divers etc. L'objectif est de les identifier et de les traiter en vue de la sortie du jeu. Le gameplay lui-même ne sera probablement pas totalement complet.
  • On sélectionne les participants en fonction de leurs réponses, on prend à peu près 2/3 des gens. Là encore l'objectif pour nous est de constituer un panel de joueurs représentatif, être sélectionné n'est pas une faveur ou un remerciement.
  • Le planning semble nous amener vers une alpha courant mars.

On va absolument envoyer des versions de test à des gens dont la machine est totalement insuffisante. C'est un test normal et assumé qui nous permettra au mieux de valider qu'un mode dégradé du jeu est disponible, au pire d'alimenter la FAQ du jeu pour décrire le matériel minimum supporté.

Si ça vous intéresse de tester le jeu, proposez-vous.

8Gb de RAM, GPU intégrée et i5-2430 c'est plutôt (carrément même) du low-range non ? Je me souviens plus trop de ce que j'ai mis dans le formulaire. Mais je vais changer de PC dans quelques mois, donc je pourrai tester sur le nouveau si l'alpha vient pas trop tard.

+0 -0

8Gb de RAM, GPU intégrée et i5-2430 c'est plutôt (carrément même) du low-range non ? Je me souviens plus trop de ce que j'ai mis dans le formulaire. Mais je vais changer de PC dans quelques mois, donc je pourrai tester sur le nouveau si l'alpha vient pas trop tard.

ThuleMalta

C'est difficile d'être clair sur ces sujets, on demande aux gens d'évaluer grossièrement leur matériel mais c'est juste pour avoir une idée.

  • On sait que ça tourne en high à 60fps de façon stable sur un bon core i5 et une GTX 970.
  • On sait que ça ne tournera pas bien sur un GPU intégré, même en dégradant bien les réglages.
  • Ce qu'on ne sait pas, c'est comment ça tourne sur un i5 moyen et un GPU milieu de gamme comme beaucoup d'entre-vous auront.

D'ailleurs, vous avez prévu un outil pour remonter les retours de test ?

Phigger

Les bugs seront remontés sur notre bug tracker public, qui sera communiqué aux testeurs.

Pour les performances, c'est un peu plus compliqué, on ne sait pas encore comment on va s'y prendre mais on demandera aux plus curieux de nous envoyer leur framerate avec un fichier de log.

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.  

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