[Disponible] Helium Rain

Space opera pour PC, maintenant sur Steam !

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

Il faut voir qu'il y a plusieurs choses très différentes qui peuvent s'appeler IA dans Flare :

  • L'autopilote est une IA simple mais précise qui représente le pilotage automatique des vaisseaux. L'autopilote est bête et s'occupe de sous traiter des taches simples mais précises comme le docking. C'est dans le jeu une IA qui représente un IA dans l'univers du jeu. Il y a un ordinateur de bord par vaisseau.
  • Le pilote est une IA compliqué qui représente le cerveau d'un pilote humain au commande d'un vaisseau. Il y a un pilote par vaisseau et chaque pilote est indépendant (même si un jour il y aura peut-être des formations, chaque pilote garde les commandes de son vaisseau). Le but est que cette IA ait le même rôle que le joueur lorsque celui-ci pilote un vaisseau pour combattre, pour tous les vaisseaux que le joueur ne pilote pas. Comme cette IA représente un "humain", il se doit d'être faillible et limité, mais imprévisible. C'est de cette IA dont parle Stranger, et qu'il faut rend plus "humaine".
  • Il y a aura une 3ème IA qui représente le manager des compagnies adverses. Elle s'occupe que de la partie gestion et pas du tout de la partie combat. Cette IA peut représenter un comité de direction ou toute forme de management et n'a pas à paraître "humaine" mais comme elle agit à un niveau stratégique il va être déjà assez difficile de la rendre compétitive avec un joueur humain sans la faire tricher. Cette IA n'existe pas encore et n'est pas prête d'exister car l'implémentation de la partie économie n'a pas encore commencé.

Pour réduire l'infaillibilité on essaye de comprendre pourquoi un humain est "mauvais" et reproduire les erreurs. Par exemple actuellement, quand un vaisseau est en rotation l'IA sait exactement à quelle moment se mettre à freiner pour que le viseur s’arrête exactement sur la cible, sans s’arrêter avant et perdre du temps, et sans le dépasser. Quand ont a les paramètres de vol du vaisseau et de l'adversaire, c'est relativement facile à calculer. Un humain a plus ou moins accès à ses informations mais n'est pas capable de calculer en temps réel et précisement le timing du freinage et même s'il va faire, avec l'expérience une bonne approximation, il aura toujours besoin de plusieurs recalage pour arriver au bon endroit (exactement comme quand on déplace le curseur de sa souris sur un petit bouton: il y a plusieurs corrections de plus en plus fines). Quand le pilot IA fait une estimation de distance, vitesse, temps avant freinage, il doit pouvoir se planter. La difficulté est que dans le "cerveau" du pilote cette erreur doit rester la même et ne pas changer à chaque instant, mais au bout d'un moment, le pilote doit se rendre compte de son erreur, se remettre en cause et corriger cette erreur en en faisant une nouvelle, mais moins grande.

Concernant le temps de réaction, actuellement le pilote IA est capable de remettre en cause ses choix, comme changer de cible, tirer ou lancer une manœuvre toutes les 20 ms environ. Le cerveau humain a un temps de réaction minimal de 200 ms et pour mettre les IA sur un pied d'égalité il faut empêcher aux pilotes IA de changer d'idée en moins de 200 ms.

Pour ce qui est du niveau de jeux (débutant, moyen, expert), il suffira de faire varier les paramètres entre le pilot "inhumain" et le pilot un peu trop humain. Il n'y a pas de super modèle pour tout prévoir à l'avance, comme souvent ça sera de nombreux cycles de tests/réglages pour trouver les bonnes valeurs.

+10 -0

C'est justement parce que ce sont des joueurs qu'il faut équilibrer le système. Il faut un système juste pour que tous les joueurs puissent s'en sortir.

Natalya

Personnellement j'aurais tendance à penser que la présence d'une grande quantité d'êtres humains aurait pour conséquence la mise en place « naturelle » d'une économie réaliste (après, il faudrait probablement tester pour savoir :) ). Et pour ce qui est des mécanismes de création d'argent et de contrôle de l'inflation IRL ça me parait trop complexe pour un ordinateur personnel… (l'argent dette, toussa…).

Pour réduire l'infaillibilité on essaye de comprendre pourquoi un humain est "mauvais" et reproduire les erreurs. Par exemple actuellement, quand un vaisseau est en rotation l'IA sait exactement à quelle moment se mettre à freiner pour que le viseur s’arrête exactement sur la cible, sans s’arrêter avant et perdre du temps, et sans le dépasser. Quand ont a les paramètres de vol du vaisseau et de l'adversaire, c'est relativement facile à calculer. Un humain a plus ou moins accès à ses informations mais n'est pas capable de calculer en temps réel et précisement le timing du freinage et même s'il va faire, avec l'expérience une bonne approximation, il aura toujours besoin de plusieurs recalage pour arriver au bon endroit (exactement comme quand on déplace le curseur de sa souris sur un petit bouton: il y a plusieurs corrections de plus en plus fines). Quand le pilot IA fait une estimation de distance, vitesse, temps avant freinage, il doit pouvoir se planter. La difficulté est que dans le "cerveau" du pilote cette erreur doit rester la même et ne pas changer à chaque instant, mais au bout d'un moment, le pilote doit se rendre compte de son erreur, se remettre en cause et corriger cette erreur en en faisant une nouvelle, mais moins grande.

Niavok

Merci pour cette réponse éclairante sur la façon de créer une IA (même si je suis un peu déçu. Moi qui m'attendais une méga algorithme de type "bac +25 en statistiques appliquées" :p ).

Jespar.

Merci beaucoup pour ta réponse intéressante.

Mais un peu comme Jespar je suis insatiable et j'attendais (en quelques sortes hein, t'es pas du tout obligé de perdre du temps à nous répondre) des explications un peu plus concrètes. Notamment sur les modèles mathématiques employés.

L'exemple qui m'a le plus interpellé :

il y a plusieurs corrections de plus en plus fines

Ça me fait fortement penser à une oscillation harmonique (fortement) amortie.

Vous allez le modéliser un peu comme ça ?

oscillation fortement amortie

+0 -0

@Javier : je pense que ça ne sert à rien de s'embêter avec des maths compliquées autour de ça (je comprends pas ce que tu veux représenter d'ailleurs). Il suffit de prendre une gaussienne (ou autre loi de proba, peu importe) dont l'écart type est déterminé par la distance à l'objectif à atteindre et prendre un point au hasard dans cette gaussienne en le prenant comme destination. Tu fais ça 3 ou 4 fois de suite, et tu as très simplement une IA qui va se rapprocher de plus en plus de son objectif en faisant des erreurs de plus en plus petites. Pas besoin d'insérer une dépendance temporelle pour gérer ce genre de correction, ce serait inutilement lourd et compliqué.

En fait, c'est beaucoup plus simple que ça. Le résultat souhaité est semblable à ce que Javier montre :

Or, voici ce que nous avons déjà de par le modèle physique du vaisseau (en gros):

Les vaisseaux ont une masse physique et une accélération limitée, quand on leur donne une commande de rotation on a déjà une variation fluide de la rotation (sans overshoot) comme sur cette seconde courbe.

Pour simuler la première courbe, il nous suffit de :

  • introduire une erreur dans la commande pour simuler un overshoot ou undershoot ;
  • réévaluer la commande une fois arrivé à destination, toujours avec l'erreur ;
  • recommencer une ou deux fois.

C'est exactement ce qu'un humain fait. Merde, je vais dépasser, vite j'inverse le sens de l'accélération. La beauté d'un modèle purement physique pour tous les mouvements, c'est qu'il nous suffit de simuler une commande pour avoir un résultat réaliste.

Il faut faire attention car s'il est tentant de faire de modèles très complexe et réalistes du comportement d'un humain, il faut garder en tête que l'on a que quelques microsecondes pour faire le calcul pour chaque vaisseau. De plus il faut trouver le bon compromis car plus l'on passe de temps à améliorer l'IA (ce qui est une tache sans fin) et plus les autres fonctionnalités prennent du retard. Comme le but est de faire un jeu et pas une thèse d'intelligence artificielle il faut malheureusement faire quelques simplifications et sacrifices.

Sympa à part la planète qui me semble pas terrible niveau textures, je pense que tu changeras ça ^^
Par contre tu prévois une exploration des planètes ? Si oui, partiellement ? Avec ou sans temps de chargement ?
Une génération procédurale à la No Man's Sky pourrait être pas mal aussi. (oui je sais ça fait beaucoup en 1 réponse :) )

+1 -1

C'est que le rendu est bizarre,si je me trompe pas, la seconde sphere (celle semi opaque) qui fait une bordure tres fine pour la transition espace - gazeux est pas génial, il faudrait peut etre un dégradé comme ici: http://img4.wikia.nocookie.net/__cb20140921175827/masseffect/images/e/ec/Uranus.png Un cercle toujours orienté vers l'utilisateur et texturé ne donnerai pas un meilleur resultat ?

Sympa à part la planète qui me semble pas terrible niveau textures, je pense que tu changeras ça ^^
Par contre tu prévois une exploration des planètes ? Si oui, partiellement ? Avec ou sans temps de chargement ?
Une génération procédurale à la No Man's Sky pourrait être pas mal aussi. (oui je sais ça fait beaucoup en 1 réponse :) )

thulemalta2

Je ne crois pas que c'est au programme. Stranger a souvent (et je suis on ne peut plus d'accord) décrié les univers procéduraux… vides. D'autant plus que c'est du boulot, ne fût-ce qu'atteindre quelque chose comme No Man's Sky. Cela ne sert pas à grand chose d'avoir (exemple) toute une galaxie comme univers de jeu si ce dernier est vide (regarde Elite Dangerous, honnêtement, c'est ultra redondant comme jeu). Ici ils misent sur un seul système (de quatre planètes si ma mémoire est bonne) mais assez actif.

+3 -0

Sympa à part la planète qui me semble pas terrible niveau textures, je pense que tu changeras ça ^^
Par contre tu prévois une exploration des planètes ? Si oui, partiellement ? Avec ou sans temps de chargement ?
Une génération procédurale à la No Man's Sky pourrait être pas mal aussi. (oui je sais ça fait beaucoup en 1 réponse :) )

thulemalta2

Merci pour ton message ! Je ne savais pas trop comment y répondre, parce que je connais déjà les réponses mais les expliquer n'est pas simple. Je vais essayer de faire ça clairement et je sens que je vais garder le message pour plus tard.

Qu'est-ce que Flare

Le but principal de Flare, pour moi 1, est double. Sur le plan du gameplay, le but est de produire une space-sim dans la veine des X3 avec une flotte à contrôler, autant de vaisseaux qu'on veut, du commerce, une progression, des choix, une campagne minimaliste, un jeu solo. Flare est très différent d'un X, mais si on devait placer les space-sim sur une carte, on serait plus de ce côté-là que d'un Star Citizen ; et on n'a aucune intention de transposer les codes du FPS à une space-sim.

Sur le plan de l'univers, mon but est de produire quelque chose de différent de tout ce qu'on voit habituellement dans la science-fiction et qui est au mieux curieux, au pire franchement impossible. Vous voulez une liste ?

  • les vaisseaux disposant d'ailes, d'une verrière pour le pilote, qui volent en tournant comme un avion avec des bruits de moteurs…
  • les vaisseaux qui se sentent obligés d'avoir un moteur allumé pour avancer ;
  • les vaisseaux qui se posent et redécollent d'une planète 2
  • les armes exotiques qui semblent avoir une fraction de l'efficacité d'un canon naval moderne 3 ;
  • l'absence totale de notion d'orbites, avec des points fixes dans l'espace où on pose des stations comme si de rien n'était ;
  • les planètes vivables, bien solides avec un ciel dégagé, une petite brise d'été et une atmosphère bien pratique ;
  • gravité sur commande, téléportation, vitesse supérieure à celle de la lumière, aliens, quand ce n'est pas carrément des pouvoirs magiques ;
  • et ainsi de suite.

Du coup, j'ai envie de créer un jeu plus proche de la réalité. Pas aussi proche du réel que l'excellent Kerbal Space Program, mais au moins cohérent sur le plan physique. C'est l'ensemble de ces choses qui nous poussent à avoir une unique planète, à des années de voyage de tout autre objet, une géante gazeuse sur laquelle personne ne peut se poser… Parce que c'est simplement ce que nous observons dans notre univers réel. Le pari, c'est de construire un jeu intéressant à partir de ça.


Sympa à part la planète qui me semble pas terrible niveau textures, je pense que tu changeras ça

Uranus (ou Neptune) ressemble quand même pas mal à ça. J'ai même l'impression que c'est Uranus, non ?

@dri1

Nous nous sommes inspirés des géantes gazeuses de notre système solaire pour dessiner Nema. Ce n'est aucune planète en particulier, mais on pourrait imaginer Saturne avec une composition un peu différente.

C'est que le rendu est bizarre,si je me trompe pas, la seconde sphere (celle semi opaque) qui fait une bordure tres fine pour la transition espace - gazeux est pas génial, il faudrait peut etre un dégradé comme ici: http://img4.wikia.nocookie.net/__cb20140921175827/masseffect/images/e/ec/Uranus.png Un cercle toujours orienté vers l'utilisateur et texturé ne donnerai pas un meilleur resultat ?

regz

L'effet a été un peu réduit depuis. Sur la technique, c'est un peu plus compliqué que ça, on n'a pas deux sphères par exemple.


  1. Je laisserais Niavok apporter sa vision si il a un avis différent sur la question. 

  2. Le saviez-vous ? Dans une capsule type Apollo, 1% de la masse au décollage atteint l'orbite. 

  3. Le saviez-vous ? Un canon naval a une portée efficace de plusieurs (dizaines de) kilomètres. 

Un truc qui m'avait très impressionné à l'époque dans X3, c'était la couche nuageuse qui tournait de manière indépendante avec le sol de la planète. Vous avez quelque chose de similaire de prévu ? :)

elvian

Un truc qui me gonfle dans X3 c'est la lenteur des vaisseaux (parfois, même avec le SETA), ce sera plus rapide dans Flare?

+0 -0

Pas évident, si ça se veut réaliste. Les distances sont grandes dans l'espace, plus qu'on ne se l'imagine. Et j'ai pas vu de mention rapport au fait de pouvoir accélérer indéfiniment (enfin, tant qu'il y a du carburant)

+0 -0

Et j'ai pas vu de mention rapport au fait de pouvoir accélérer indéfiniment (enfin, tant qu'il y a du carburant)

elvian

Justement, qu'est ce qui nous freine dans l'espace ? Il n'y a aucun frottement, donc si on laisse le moteur à la même puissance on devrait aller de plus en plus vite non ? (Je ne m'y connais absolument pas en astromécanique, mais ça m'intéresse).

En fait, ce n'est pas "aucun" frottement. Il y a des atomes de gaz, certes très rares, mais non négligeable à très haute vitesse. Si maintenant on suppose qu'il n'y a aucun frottement, pour accélérer, tu vas devoir éjecter de la matière, qui n'est pas infinie à bord de ton vaisseau.

Il y aurait une autre solution, en utilisant des propulseurs photoniques, mais ça déplace le problème de la matière finie à l'énergie finie.

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