Simulation spatiale : principes à mettre en place

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Spiritkill
Messages : 10
Inscription : 16 Mai 2021 05:06

Simulation spatiale : principes à mettre en place

Message par Spiritkill » 17 Mai 2021 21:46

Bonjour,

J'aimerai créer un jeu de simulation spatiale en 3D mais suite à plusieurs vidéos, site web et autres, j'ai du mal à comprendre les principes que je devrai mettre en place pour gérer les objets de trè grande taille et les distances.

Explication de l'attendu du jeu :
Le jeu sera de type RPG (1ère et 3ème personne) en simulation spatiale
  • Le joueur doit pouvoir décoller avec son vaisseau depuis une planète pour aller dans l'espace (en pilotant et pas en animation)
  • Le joueur doit pouvoir s'éloigner d'une planète (sans hyper espace) et se retrouver "loin" si il laisse son vaisseau à la dérive
  • Le joueur doit pouvoir se déplacer vers une planète, une lune, une station (en mode simple ou en "hyperespace")
  • Le joueur doit pouvoir changer de système solaire / Galaxy (hyperespace ou portail de saut en pilote automatique)
  • Le joueur doit pouvoir sortir de l'hyperespace et se retrouver au milieu de nul part
  • Le joueur doit pouvoir atterrir sur une planète, lune, station ou astéroïde, ...
  • Le joueur doit pouvoir se déplacer dans son vaisseau alors qu'il est en hyper espace, vol simplement ou après avoir atterri
  • Le joueur doit pouvoir se déplacer sur une planète, lune, astéroïde, ... à pied ou avec un véhicule
Ce que j'aimerai faire ressemble beaucoup à Star Citizen.

Pour les principes j'ai lu et vu beaucoup d'articles et vidéos (assez vieux d'ailleurs mais les principes n'ont pas du changé). Un d'ailleurs très intéressant sur ce forum : [DB-AL] Système solaire : gérer les (très) grands espaces

J'ai compris de manière globale les différents principes mais pour les mettre en application là ca devient compliqué pour moi. J'aimerai faire propre dés le début et partir sur la bonne structure pour faire le plus simplement possible les points ci-dessus.

Voici les principes qui me semblent indispensables mais je peux me tromper et ouvert à toutes suggestions :

Gestion des distances limitées par rapport à l'origine
Mettre l'origine systématiquement au niveau du joueur/vaisseau
Remarque : Est-ce qu'a chaque frame je recale le point pivot ou je devrai plutôt attendre une certaine distance (1000 unités par exemple)

Gestion des déplacements
Appliquer un scale au fur et à mesure que je m'approche des éléments du jeu "atteignable", pour gérer par exemple l'entrée sur un planète
Exemple à la 10ème minute sur une vidéo de Star Citizen par CitizenX Star Citizen
Remarque : Je ne vois pas comment faire ce genre de chose :gene:

Gestion de la vue des planètes lointaines
Utiliser une 2ème caméra pour représenter les planètes lointaines en fonction de la distance
Remarque : En application, je suis perdu :gene:

Autre principe ?

Je vous remercie pour vos suggestions et remarques.
Spiritkill

Spiritkill
Messages : 10
Inscription : 16 Mai 2021 05:06

Re: Simulation spatiale : principes à mettre en place

Message par Spiritkill » 18 Mai 2021 12:03

Pour compléter, il faudra aussi gérer la génération des planètes en procédural avec du LOD.

Dans tout ca, je n'arrive pas à imaginer comment la gestion des scènes de Unity pourrait m'aider:
1 scène pour tout, 1 scène par système solaire, 1 scène par planète ?

Merci,

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Simulation spatiale : principes à mettre en place

Message par Max » 18 Mai 2021 13:46

Bonjour,

Quelles sont tes bases techniques ? il ne me semble pas que tu en parles. Cela a son importance.
Car on va pas se mentir, ce que tu cherches à faire est d'un sacré niveau. Donc techniquement il va falloir jouer en costaud.
Pour le reste, que dire. Tu abordes plusieurs domaines précis et assez différents.
Pour ce qui est de la gestion des grands espaces, le sujet de PhillipsCarter est certainement une première bonne lecture.
Concernant les scènes, là je ne serais te dire comment procéder tellement c'est complexe à aborder.
Seule certitude, tu ne pourras pas tout concentrer au sein d'une même scène, c'est clair.
Commence par prototyper une scène avec sur une planète qui serait générée procéduralement, et les différentes
capacités à s'y déplacer pour ton joueur. C'est un bon début. En suite tu verra comment passer à l'étape suivante.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Spiritkill
Messages : 10
Inscription : 16 Mai 2021 05:06

Re: Simulation spatiale : principes à mettre en place

Message par Spiritkill » 18 Mai 2021 20:47

Merci pour ta réponse.
Je suis développeur à la base mais plus pour des applications (en entreprise) ou site web (perso).

Je comptais bien commencer par quelque chose de simple mais j'aurai voulu avoir une vue d'ensemble des principes que je devrai mettre en place. Je vais du coup plutôt démarrer comme ça et je reviendrai avec des questions plus précises.

Merci encore.

Spiritkill
Messages : 10
Inscription : 16 Mai 2021 05:06

Re: Simulation spatiale : principes à mettre en place

Message par Spiritkill » 23 Mai 2021 01:47

Bonsoir,
Je reviens ici puisque j'ai avancé un peu sur ce projet.
J'ai fait 2 tests en suivant les tutoriels très bien fait de Sebastian Lague et de Simon Holmqvist.

La série de Sebastian Lague va très loin dans la génération des terrains mais ne gère pas le LOD ou la gestion de l'affichage des Schunk.

La série de Simon Holmqvist va beaucoup plus loin dans la gestion du LOD et des performances, mais dans son exemple sa planète fait 1 000 000 de rayon, ce qui dépasse la gestion des float :
Position de la planete.png
Position de la planete.png (39.57 Kio) Consulté 3215 fois
Du coup je ne comprends pas comment gérer cette notion de float alors que la planète est très grande, cette notion n'est pas expliquée dans ces séries. Ou alors ce n'est pas gênant d'avoir le centre de la planète très loin vue que l'on affiche rien à cette position ?
Gestion du LOD.png
Gestion du LOD.png (315.14 Kio) Consulté 3215 fois
Si quelqu'un peut m'aiguiller sur ce principe ?

Merci

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Simulation spatiale : principes à mettre en place

Message par Max » 23 Mai 2021 10:42

Bonjour,
Spiritkill a écrit :
23 Mai 2021 01:47
Du coup je ne comprends pas comment gérer cette notion de float alors que la planète est très grande, cette notion n'est pas expliquée dans ces séries. Ou alors ce n'est pas gênant d'avoir le centre de la planète très loin vue que l'on affiche rien à cette position ?
Les floats vont très au delà du million. Pour être précis -> ±1,5 x 10^−45 à ±3,4 x 10^38.
Après, quand tu gères une planète, pour moi il faut une scène spécifique et dédiée, où elle sera centrée (coordonnées 0,0,0).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Spiritkill
Messages : 10
Inscription : 16 Mai 2021 05:06

Re: Simulation spatiale : principes à mettre en place

Message par Spiritkill » 23 Mai 2021 14:37

Merci pour ta réponse.
Mais comme la caméra est sur le player, d'après ce que j'ai compris le problème des float dans Unity est la précision si ils sont trop grand.
En partant de ce principe, j'ai implémenté un système qui remet mon player à la position 0,0,0 toutes les 1 000 unités.

Pour ce qui est de la scène, je pensai en utiliser qu'une avec les principes suivants :
1- Mes planètes seront stockées dans un ficher servant de base de données avec toutes les informations servant à leur génération.
2- Une seule planète sera dans ma scène (avec peut-être des astéroïdes ou stations en orbite décrites dans le même fichier de base de données)
3- Avec un système de particule fixe je pourrais générer les étoiles qui correspondront au autres planètes et placées dans la bonne direction.
4- Lors d'un déplacement classique en s'approchant de la planète, le joueur (dans son vaisseau) pourra se poser, descendre de son vaisseau et marcher sur la planète
5- Lors d'un déplacement classique en s'éloignant de la planète, le joueur (dans son vaisseau) se déplacera dans la scène mais aucun objet ne sera créé (l'univers étant trop grand en vitesse classique)
6- Lors d'un déplacement vers une autre planète ou une lune, le joueur passera en vitesse "lumière", donc suppression des objets de la scène et utilisation des particules pour l'effet de vitesse pendant un temps dépendant de l'éloignement de la planète d'arrivée.
7- A la suite de ce temps, je génère la planète d'arrivée

Je vois à peu près comment faire chacun des points, mais est-ce que cela sera performant ou je dois changer ou ajouter d'autres principes ?

Merci

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Simulation spatiale : principes à mettre en place

Message par Max » 23 Mai 2021 15:43

Spiritkill a écrit :
23 Mai 2021 14:37
Merci pour ta réponse.
Mais comme la caméra est sur le player, d'après ce que j'ai compris le problème des float dans Unity est la précision si ils sont trop grand.
Oui, logique. Plus tu vas aller vers des grandeurs importantes, plus tu perdras en précision.
D'où l'idée de gérer chaque planète au sein d'une scène dédiée, ce qui t'affranchis en grande partie de ce genre de soucis. Quitte à charger/décharger des données, autant charger/décharger une/des scène(s). De mon point de vue, cela me parait plus simple. Et cela faciliterait à la fois la gestion des ressources et la gestion du jeu (toujours à mon avis). Car là tu travailles sur la génération procédurale de planètes, mais question: elles resteront vide de tout éléments (végétation, bâtiments, voir de PNJ, etc...) ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Spiritkill
Messages : 10
Inscription : 16 Mai 2021 05:06

Re: Simulation spatiale : principes à mettre en place

Message par Spiritkill » 23 Mai 2021 16:13

Il va effectivement y avoir des bâtiments, PNG et tout ce qui va bien mais je pensais aussi les générer via un fichier de données.

Je ne comprends toujours pas l'utilité des scènes dans mon cas puisque tout sera régénéré automatiquement. A moins que la scène garde des ressources en mémoire au quel cas je devrai régénérer la même scène. En fait je ne voudrai avoir à créer autant de scène que de planète mais plutôt que cela se fasse automatiquement.

En finalité je voudrais que chaque nouvelle partie dans mon jeu génère aléatoirement les planètes (pour une même partie je garderai la BDD des planètes). Et pour aller plus loin (mais pas sur que cela soit génial pour la gameplay) j'aimerais aussi générer dynamiquement et aléatoirement dans une même partie les futures planètes. Ce qui ferait qu'en revenant à une ancienne sauvegarde on n'aura pas la même monde dans la suite du jeu.

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Simulation spatiale : principes à mettre en place

Message par Max » 23 Mai 2021 16:47

C'est une approche purement perso, j'aime les choses découpées et segmentées. Dans ton cas, mon soucis est qu'avec une scène unique, la gestion devienne très vite assez lourd. D'autant que même si tes planètes sont générées aléatoirement et de façon procédurales, une fois fait, les éléments qui la compose seront quand même persistant (bâtiments, végétation, PNJ, etc.).
Mais tu sembles avoir une idée bien précise de la direction que tu souhaites prendre, donc approfondi là tu verras vite si ça le fait ou pas :)

Mon avis n'a finalement que peut de valeur, ne m'étant jamais vraiment attaqué à ce genre de projet (bien trop ambitieux pour moi) ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Unity le logiciel »