Weird UNIVERSE - WIP simulation spatiale WebGL - v0.0.4 a

Weird UNIVERSE - WIP simulation spatiale WebGL - v0.0.4 a - HTML/CSS - Programmation

Marsh Posté le 09-06-2020 à 16:08:52    

Hello tous,

 

Je suis en train de réaliser en Angular et Three.js un jeu de simulation spatiale et je viens de mettre en ligne une première version jouable.

 

Pour le moment c'est une sandbox en cours de développement, pas encore un jeu.
Entre autres choses non terminées, il n'y a par exemple aucune détection de collision avec le sol et on a accès qu'à une seule planète. (la carte stellaire et les sauts feront l'objet de versions ultérieures)

 

L'objectif à terme est de pouvoir naviguer d'un système solaire à l'autre et de pouvoir se poser sur chacune des planètes et des lunes.
J'y ajouterai progressivement des modules de scénario pour en faire un vrai jeu, mais on en est pas là ..
 
A vous de vous débrouiller pour déjà atteindre le sol de la planète et faire un peu d'exploration :)

 

>> Lancer Weird Universe

 

https://tylart.pagesperso-orange.fr/wu/im/wu004a_001.jpg

 

https://tylart.pagesperso-orange.fr/wu/im/wu004a_004.jpg

 

https://tylart.pagesperso-orange.fr/wu/im/wu004a_002.jpg

 


Voilà, n'hésitez pas à me donner vos commentaires constructifs, ce que vous trouvez bien / pas terrible / à chier, poser des questions, râler sur les bugs, proposer vos idées d'amélioration .., j'ai besoin de la sensibilité et des idées de chacun pour faire évoluer le jeu.

 


Remarque concernant les navigateurs
Le navigateur utilisé a une grande influence sur la perception et les performances du jeu.
Je recommande Chrome (à jour) en premier choix, Firefox vient en deuxième.
(la toute dernière version de Edge fonctionne également)
Je travaille sur PC sous win10 et je n'ai fait aucun test sous mac.

 

Remarque concernant la puissance nécessaire
Le jeu fait travailler à la fois le CPU (javascript exécuté par le navigateur) et le GPU (vertex et fragment shaders)
Selon la puissance de votre processeur et le modèle de votre carte graphique il se peut que le jeu tourne plus ou moins bien.
Je n'ai implémenté encore aucun réglage permettant d'adapter le jeu aux diverses configurations matérielles alors lancez le jeu sur votre machine la plus puissante et sur chrome et vous verrez bien :)

Message cité 1 fois
Message édité par Tyl le 26-06-2020 à 19:05:37

---------------
Tyl Fun Land
Reply

Marsh Posté le 09-06-2020 à 16:08:52   

Reply

Marsh Posté le 09-06-2020 à 16:09:13    

Réservé


---------------
Tyl Fun Land
Reply

Marsh Posté le 09-06-2020 à 23:14:48    

Tu refais Space Engine :??:
http://spaceengine.org/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-06-2020 à 03:57:18    

S'il parle d'un jeu, ça serait plutôt Elite Dangerous, voire plutôt Star Citizen, si j'en croit à l'interface (notamment le système bouclier/arme/moteur).
 
Quelques questions : pourquoi WebGL ? Parce que si tu arrives à programmer des vertex/fragment shaders pas trop trivial, piloter ces shaders en C/C++, c'est vraiment pas la partie la plus compliquée. Sur ma machine, portable i7, carte intel: 11 FPS, 1G de RAM :/ D'autant que la portabilité sera aussi bonne (probablement meilleure) en langage natif. Parce qu'avoir une ferrari avec un moteur de tondeuse à gazon, c'est un peu dommage...
 
Sinon, tu en es où ? De ce que je vois du moteur, tu dois utiliser une cube map pour le fond d'étoile. La planète semble utiliser un système de LOD dynamique. Est-ce généré procéduralement ou est-ce un (ou plusieurs) modèles 3D ? À vu de nez, ça à l'air d'un prototype intéressant, mais il reste énormément de boulot pour avoir un produit qualifiable de "jeu".
 
Il y a quelques mois j'ai du me taper de la programmation GLSL (fragment shaders surtout, un peu de vertex), bordel de merde, j'ai jamais un truc aussi indébugable que ça: pas de printf, pas de point d'arrêt, pas possible de trivialement voir le contenu des variables, difficile de renvoyer des infos au CPU, meilleur des cas tu as un écran noir, pire des cas, c'est le driver vidéo qui plante (ha, ha, passer de la mémoire non initialisée à glMultiDrawArraysIndirect()). Là tu rajoutes toute la lourdeur du navigateur, et ce n'est pas la merde à développer ?
 
L'interface est faite avec quoi ? three.js ? Ce n'est pas trop la merde ? Ça c'est vraiment un truc qui manque en C/C++ (enfin, une API pas trop lourdingue). Perso, j'utilise nanovg, mais ça reste pas mal bas niveau.
 
 

Reply

Marsh Posté le 10-06-2020 à 08:03:15    


 
En fait y a pas mal de point commun mais aussi deux grosses différences, la première c'est que à terme je souhaite réaliser un jeu et pas juste une sandbox, mais je suis bien obligé de commencer par là  :D  
 
La deuxième différence c'est que ça tourne dans un navigateur, parce que je souhaite que le jeu soit ultra accessible.
Non seulement je ne veux pas de processus d'installation, mais l'interface aussi sera très sobre et facile d'accès (je me démerderai, c'est mon métier après tout  [:canaille])
Ca ne veut pas dire que le jeu en lui même sera simple, le déroulement du jeu pourra être assez complexe mais on verra plus tard


Message édité par Tyl le 10-06-2020 à 09:03:15

---------------
Tyl Fun Land
Reply

Marsh Posté le 10-06-2020 à 08:30:31    

tpierron a écrit :

S'il parle d'un jeu, ça serait plutôt Elite Dangerous, voire plutôt Star Citizen, si j'en croit à l'interface (notamment le système bouclier/arme/moteur).
 
Quelques questions : pourquoi WebGL ? Parce que si tu arrives à programmer des vertex/fragment shaders pas trop trivial, piloter ces shaders en C/C++, c'est vraiment pas la partie la plus compliquée. Sur ma machine, portable i7, carte intel: 11 FPS, 1G de RAM :/ D'autant que la portabilité sera aussi bonne (probablement meilleure) en langage natif. Parce qu'avoir une ferrari avec un moteur de tondeuse à gazon, c'est un peu dommage...
 
Sinon, tu en es où ? De ce que je vois du moteur, tu dois utiliser une cube map pour le fond d'étoile. La planète semble utiliser un système de LOD dynamique. Est-ce généré procéduralement ou est-ce un (ou plusieurs) modèles 3D ? À vu de nez, ça à l'air d'un prototype intéressant, mais il reste énormément de boulot pour avoir un produit qualifiable de "jeu".
 
Il y a quelques mois j'ai du me taper de la programmation GLSL (fragment shaders surtout, un peu de vertex), bordel de merde, j'ai jamais un truc aussi indébugable que ça: pas de printf, pas de point d'arrêt, pas possible de trivialement voir le contenu des variables, difficile de renvoyer des infos au CPU, meilleur des cas tu as un écran noir, pire des cas, c'est le driver vidéo qui plante (ha, ha, passer de la mémoire non initialisée à glMultiDrawArraysIndirect()). Là tu rajoutes toute la lourdeur du navigateur, et ce n'est pas la merde à développer ?
 
L'interface est faite avec quoi ? three.js ? Ce n'est pas trop la merde ? Ça c'est vraiment un truc qui manque en C/C++ (enfin, une API pas trop lourdingue). Perso, j'utilise nanovg, mais ça reste pas mal bas niveau.


 
11 FPS ! aie !  [:tinostar]  c'est vraiment pas terrible .. moi sur mon i7 5600U je tourne à 40 FPS, mais j'ai 16G de ram et une bonne carte graphique (nvidia 1060).
Je lis bien 1G ? c'est peut-être la ram qui te manque ? ou aussi une bonne carte graphique ?
 
Pour ce qui est de la question Natif / Navigateur, je souhaite que le jeu soit ultra accessible, et imposer une installation est un premier frein.
Ensuite, ben en vrai je suis dev web donc je connais déjà parfaitement le domaine et les possibilités de plus en plus impressionnantes des navigateurs.
 
Par ailleurs, des exécutables de jeux dans l'espace il y en a beaucoup, ceux dans lesquels on peut se poser sur les planètes il y en a déjà beaucoup moins, mais ceux qui tournent en plus dans un navigateur, ben .. à ma connaissance y en a pas .. et j'aime bien l'idée que ce soit le premier  :)  
 
Sinon, j'avance bien mais comme tu t'en doutes (je vois que tu connais bien le sujet  :jap: ) y a beaucoup de taff et je travaille seul.
Pour le fond étoilé, c'est presque ça mais j'ai un shader dédié pour arrondir le cube afin de mettre le soleil ou je le souhaite sur un rayon fixe mais qui tiendra compte des périodes de rotation.
 
La planète est effectivement un LOD.
Petite parenthèse pour que tout le monde comprenne :
LOD = level of detail
Définition officielle : un truc avec un maillage serré autour de la caméra, et de moins en moins serré plus on s'éloigne mais on s'en fout puisque c'est plus loin et qu'on s'en rend pas compte, par contre la carte graphique nous remercie.
 
La planète est générée procéduralement avec des couches de noise3D générées par le GPU, les normales sont également calculées automatiquement dans le GPU.
 
Et je suis bien d'accord, c'est pas encore un jeu .. en fait c'est même pas encore une sandbox (bon, normal pour une 0.0.2 alpha)
 
Concernant la partie codage, je suis d'accord aussi, c'est indéburnable à souhait  [:huit]  faut remplacer le printf (ou le console.log pour moi) par des modifications de couleur dans le fragment, bref une catastrophe quand un truc marche pas, mais en y allant pas à pas on s'en sort.
 
ThreeJs est mon point d'entrée pour la gestion de la 3D et des shaders, c'est assez haut niveau, facile à utiliser, j'aime bien.
Un peu trop de breaking changes entre certaines versions mais faut pas demander la lune.
 
Merci pour ton intérêt pour le projet


Message édité par Tyl le 10-06-2020 à 14:07:19

---------------
Tyl Fun Land
Reply

Marsh Posté le 10-06-2020 à 09:15:00    

Bon courage en tout cas :)
 
22 fps avec un core i7, 8G de ram et une CG 1050 avec 3 Go de ram.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-06-2020 à 09:32:30    

rufo a écrit :

Bon courage en tout cas :)
 
22 fps avec un core i7, 8G de ram et une CG 1050 avec 3 Go de ram.


 
Merci pour ton retour rufo.
 
La version 0.0.2a contient des réglages hardcodés assez agressifs, faudra que je les baisse un peu ..
 
Mais quand même 22 c'est toujours pas terrible, j'ai deux autres choses à faire, la première c'est de faire quelques optimisations, et la deuxième c'est de proposer des niveaux de qualité (faible, moyen, élevé) pour que ça tourne correctement chez tout le monde.
 
D'ailleurs ça pourrait peut-être même être automatique puisque je connais les FPS, j'ai qu'à baisser la qualité jusqu'à avoir au moins 30 FPS, et je sauve ça dans le localStorage du browser.
 [:canaille]  


---------------
Tyl Fun Land
Reply

Marsh Posté le 10-06-2020 à 09:44:18    

C'est pas mal pour un début.
60 fps avec un i7 6700k, 16Go de RAM et une GTX1060 6Go.


---------------
Configurations type du moment : https://forum.hardware.fr/hfr/Hardw [...] 1331_1.htm  https://www.jouannetphotographe.com
Reply

Marsh Posté le 10-06-2020 à 09:49:21    

slr56 a écrit :

C'est pas mal pour un début.
60 fps avec un i7 6700k, 16Go de RAM et une GTX1060 6Go.


 
Merci !
 
Ah c'est beaucoup mieux, mais je pense que tu as du rester loin de la surface, en fait lorsqu'on est à plus de 40 km d'altitude, c'est une version light de la planète qui est affichée, et le LOD ne s'affiche qu'en dessous de 40 km, et c'est lui qui bouffe le plus, donc à mon avis tu risque d'avoir moins de FPS au niveau du sol.


---------------
Tyl Fun Land
Reply

Marsh Posté le 10-06-2020 à 09:49:21   

Reply

Marsh Posté le 10-06-2020 à 09:57:19    

Tyl a écrit :


 
Merci !
 
Ah c'est beaucoup mieux, mais je pense que tu as du rester loin de la surface, en fait lorsqu'on est à plus de 40 km d'altitude, c'est une version light de la planète qui est affichée, et le LOD ne s'affiche qu'en dessous de 40 km, et c'est lui qui bouffe le plus, donc à mon avis tu risque d'avoir moins de FPS au niveau du sol.


 
Effectivement, je viens d'aller à la surface de la planète et le FPS varie entre 45 et 60.


---------------
Configurations type du moment : https://forum.hardware.fr/hfr/Hardw [...] 1331_1.htm  https://www.jouannetphotographe.com
Reply

Marsh Posté le 10-06-2020 à 10:05:16    

slr56 a écrit :


Effectivement, je viens d'aller à la surface de la planète et le FPS varie entre 45 et 60.


 
Ok, ça reste raisonnable chez toi, c'est cool.
merci


---------------
Tyl Fun Land
Reply

Marsh Posté le 10-06-2020 à 14:20:23    

[:eponge]

Reply

Marsh Posté le 10-06-2020 à 16:08:56    

Tyl a écrit :

Je recommande Chrome (à jour) en premier choix, Firefox vient en deuxième, et il n'y a pas de troisième choix ;)


Petit détail, il y a peut-être le nouveau Microsoft Edge qui tourne sous Chromium désormais ?


---------------
> Final Fantasy XIV \ BERSERK \ Oculus
Reply

Marsh Posté le 10-06-2020 à 17:11:16    

LEctrodz a écrit :


Petit détail, il y a peut-être le nouveau Microsoft Edge qui tourne sous Chromium désormais ?


 
J'avoue que j'ai même pas essayé, mais tu as raison, on sait jamais ;)
Je ferai le test


---------------
Tyl Fun Land
Reply

Marsh Posté le 12-06-2020 à 20:27:04    

Tyl a écrit :

J'avoue que j'ai même pas essayé, mais tu as raison, on sait jamais ;)
Je ferai le test


 
Bon j'ai fait le test, comme prévu ça ne fonctionne pas sous edge, c'est drôle je ne suis pas étonné  :D  
 


---------------
Tyl Fun Land
Reply

Marsh Posté le 12-06-2020 à 21:06:29    

J'ai testé du coup, ça marche bien de mon côté : 60 fps en haute altitude, 30 en moyenne, 60 en surface. Je parlais bien du nouveau : https://www.microsoft.com/fr-fr/edge

 

J'ai changé Chrome pour celui-là histoire de ne pas avoir trop de trucs chez Google, et j'en suis très satisfait. Ce qui me bloquait pour aller chez Firefox jusque là était l'impossibilité d'utiliser mon Chromecast, mais avec ce Edge, ça fonctionne exactement de la même façon, donc au revoir Chrome.

 

Joli boulot en tout cas [:bien]

Message cité 1 fois
Message édité par LEctrodz le 12-06-2020 à 21:07:14

---------------
> Final Fantasy XIV \ BERSERK \ Oculus
Reply

Marsh Posté le 12-06-2020 à 21:29:47    

LEctrodz a écrit :

J'ai testé du coup, ça marche bien de mon côté : 60 fps en haute altitude, 30 en moyenne, 60 en surface. Je parlais bien du nouveau : https://www.microsoft.com/fr-fr/edge
 
J'ai changé Chrome pour celui-là histoire de ne pas avoir trop de trucs chez Google, et j'en suis très satisfait. Ce qui me bloquait pour aller chez Firefox jusque là était l'impossibilité d'utiliser mon Chromecast, mais avec ce Edge, ça fonctionne exactement de la même façon, donc au revoir Chrome.
 
Joli boulot en tout cas [:bien]


 
Ok effectivement j'ai pas du tester avec la même version, merci pour l'info  :jap: , je suis bien content que ça marche aussi sur edge  [:reas0n]
Merci pour ton retour


Message édité par Tyl le 12-06-2020 à 21:30:16

---------------
Tyl Fun Land
Reply

Marsh Posté le 15-06-2020 à 22:50:44    

Hello,

 

Je viens de mettre en ligne la version 0.0.3 a avec pas mal de petits trucs en plus.

 

>> Lancer Weird Universe

 

Dites moi si vous avez des problèmes de cache, du genre l'impression d'être toujours en 0.0.2 a ..
La prochaine étape : la gestion des nuages, un gros morceau mais encore aucune idée de comment je vais faire  [:atlantis]

 

Les nouveautés de la 0.0.3 a:

 

Markers
Modification des icônes des markers spatiaux et des markers au sol.
Ajout d'un marker sur l'étoile.

 

Starship board
Affichage des avaries (coque, propulsion, bouclier, armement).
Affichage de la date et de l'heure.

 

Répartition de l'énergie
Prise en compte de la répartition de la puissance vers le moteur pour modifier la vitesse.

 

Rotation planète
Première version minimaliste de la rotation de la planète autour d'elle même pour la simulation des  cycles jour / nuit.

 

Cache navigateur
Ajout de la version courante en suffixe de tous les chargements de fichiers depuis assets pour éviter les problèmes de cache.

 

Starship
Ajout d'une première ébauche du modèle 3D du vaisseau (juste une cabine basique pour le moment).

 

Vue extérieure
Affichage de la vue extérieure (touche C)

 

https://tylart.pagesperso-orange.fr/wu/im/wu003a_001.jpg

 

https://tylart.pagesperso-orange.fr/wu/im/wu003a_002.jpg

 


Message édité par Tyl le 16-06-2020 à 10:50:49

---------------
Tyl Fun Land
Reply

Marsh Posté le 16-06-2020 à 10:54:05    

Arf j'avais oublié de désactiver le God mode qui permet de se balader über vite  [:gge2727]  
C'est réparé  :D


---------------
Tyl Fun Land
Reply

Marsh Posté le 16-06-2020 à 16:33:01    

Heh soyez pas timides  :)  vous êtes super nombreux à suivre cette page et à tester le jeu bande de curieux  :D
 
Aucun commentaire, critique, suggestion ?
Bon évidement dans la limite d'un petit jeu Web que je réalise tout seul, on est très loin de star citizen hein, mais tous les avis et idées sont bonnes à prendre
[:lucille]
 
 


---------------
Tyl Fun Land
Reply

Marsh Posté le 26-06-2020 à 19:00:46    

Hello les devs,
 
Je viens de poster une mise à jour en version 0.0.4a.
(la gestion des nuages m'a pris un certain temps ..  :) )
 
Nuages
Gestion de la couche nuageuse (nuages lointains / nuages proches)
 
Conditions météo
Ajout d'une classe Weather pour la gestion de l'évolution des conditions météo (couverture nuageuse, vent, température)
 
Systèmes
Nouveau contrôle (touche backspace) pour arrêter / démarrer les systèmes du vaisseau.
 
Energie
Diminution progressive de l'énergie du vaisseau selon les besoins du système et des moteurs.
 
 
>> Lancer Weird Universe
 
https://tylart.pagesperso-orange.fr/wu/im/wu004a_004.jpg
 
https://tylart.pagesperso-orange.fr/wu/im/wu004a_001.jpg


---------------
Tyl Fun Land
Reply

Marsh Posté le 26-06-2020 à 22:51:14    

[:michrone]


Message édité par aldayo le 26-06-2020 à 22:51:24
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed