[Traduction] Mise à jour de l'univers - Devblog #1

Discussion dans 'Discussions générales' créé par Alphajim, 28 Février 2019.

  1. Alphajim

    Alphajim Akksul Barram, leader du Concordat d'Iyssada

    Le premier de plusieurs devblogs sur l'avancement de la mise à jour de l'univers !

    >>Devblog originel<<

    ---------------------------------------------------------------------------------------------------------------------------------------------

    Bonjour chers joueurs.

    Ceci est le premier de nombreux autres Devblogs sur le déroulement de cette mise à jour.
    La mise à jour de l'univers requiert beaucoup de travail de fond, invisible pour le joueur. Bien qu'un certain nombre de choses aient été faites ou préparées durant cette dernière année, il en reste encore beaucoup d'autres avant de pouvoir réunir toutes les pièces du puzzle.

    Pour commencer, laissez-moi vous donner un résumé rapide du déroulement de cette màj. Elle sera constituée de trois phases, chacune consistant en des ajouts et modifications similaires.
    • Phase 1 : Mise à jour des bibliothèques, réécriture et amélioration du code.
    • Phase 2 : Mise à jour des divers moteurs (physiques, audio etc) et autres systèmes importants du jeu.
    • Phase 3 : Refonte de l'univers (en jeu) et ajout de contenu.

    Je vais parler de ce qui a déjà été fait et ce qui est à venir ci-dessous.


    Phase 1

    Passage sous Java 11

    Statut : Fait

    Il y a plein de bonnes raisons : Java 11 n'est pas seulement plus optimisé, il donne aussi accès à de nouvelles fonctions permettant un code plus propre, des optimisations du jeu, ainsi qu'une meilleure compatibilité en général. De plus, passer à Java 11 nous permet d'utiliser des versions plus récentes de certaines bibliothèques (qui dépendent de versions Java plus récentes que celle utilisée actuellement).
    Une autre chose intéressante est que le runtime peut être personnalisé, ce qui signifie que nous pourrions faire en sorte à ce que vous n'ayez pas à télécharger de contenu superflu (le contenu inutilisé des bibliothèques par exemple).

    Mise à jour des bibliothèques importantes

    Statut : Fait

    Les bibliothèques importantes telles que hlsql (pour les bases de données) ont été mise à jour vers des versions plus récentes, et le code a été retravaillé pour être compatible avec elles.

    Passer à Lwjgl 3

    Statut : Fait

    Non seulement lwjgl 3 fournit une interface plus proche de nos logiciels, mais en plus GLFW vient avec : c'est une interface universelle, une bibliothèque Open Source et multi-plateforme pour OpenGL, OenGL ES et Vulkan. Elle fournit un API simple pour créer des fenêtres et surfaces interactives.

    GLFW est écrit en C et supporte naturellement Windows, MacOS et de nombreux systèmes tels que Unix, Linux ou FreeBSD (basés sur le X Windows System).

    Une grande partie du travail que nécessitent toutes ces améliorations a été faite durant cette dernière année, donc le passage sous lwjgl 3 fut relativement rapide.

    Une autre partie importante du travail d'amélioration était d'implémenter des fonctionnalités déjà présentes sur notre version antérieure de lwjgl (comme la gestion du rendu des textes) mais que nous n'avions pas encore utilisées. Nous ne nous y sommes pris que maintenant car la nouvelle version est bien plus modulaire et pratique.

    Un autre avantage majeur de lwjgl 3 est qu'il vient avec beaucoup de bibliothèques annexes et autres add-ons qui peuvent potentiellement aider à optimiser et améliorer StarMade. Vulcan est de plus entièrement utilisable à présent. Il y a aussi une bibliothèque complète pour Steamworks, ce qui va grandement faciliter l'intégration de Steam au jeu (rejoindre une partie par exemple).

    Refonte du système d'entrées (clavier, raccourcis, joystick...)

    Statut : Fait <- Nous sommes ici

    Etant donné que GLFW utilise une gestion différente des entrées (clavier, joystick...), j'ai saisi l'opportunité pour améliorer StarMade sur ce point. L'avantage de cet ajout permet d'assigner n'importe quelle action du jeu à n'importe quelle entrée (même la molette souris). Ce qui sous-entend tirer avec le clavier, ou changer de slot dans la barre de raccourcis avec un joystick par exemple. Le système permet de plus l'utilisation de combinaisons de touches, ainsi qu'un nombre illimité d'entrées alternatives pour une action.

    Reste de la phase 1

    • Intégration des nouvelles bibliothèques lwjgl 3.
    • Steamworks (rejoindre une partie, succès, workshop probablement plus tard).
    • Mise à l'échelle du HUD pour couvrir de la 1k à la 4k (100%, 150%, 200%).
    • Moteur audio.
    • Quelques autres petites étapes non citées. J'espère finir la phase 1 courant février.


    Phase 2

    La phase 2 est constituée de l'amélioration des moteurs du jeu ainsi que d'optimisations. Il y a un certain nombre d'idées pour accélérer le chargement et l'affichage des blocs. C'est principalement pour les nouvelles planètes, bien que ce ne soit pas la seule raison.

    Cette phase contiendra également une migration massive du code en C++. J'ai prévu de passer l'intégralité du moteur physique en C++, ce qui permettra d'utiliser plusieurs processeurs en même temps. Les calculs de l'éclairage subiront le même sort afin d'accélérer la génération des chunks. Avec tous ces changements, la majeure partie des fonctions assez lourdes pour le processeur seront en C++, tout en maintenant la facilité de gestion de projet de Java.

    En plus de tout ça, le moteur graphique va être doté de plein de nouvelles fonctionnalités, à commencer par la simplification de la gestion des données graphiques des blocs. L'éclairage dynamique n'est jamais très intéressant dans les jeux voxels (basés sur des cubes), aussi l'utiliserons-nous en tandem avec un éclairage pré-calculé. Ce qui signifie que tout ce qui est proche sera éclairé de façon dynamique (plus précis et affectant d'autres entités) ; tout ce qui sera loin utilisera l'éclairage pré-calculé afin d'avoir de bonnes performances tout en gardant un semblant de tape-à-l'œil.

    Une autre amélioration de la phase 2 sera la gestion du chargement des secteurs. Si tout se passe comme prévu, un changement de secteur sera virtuellement indétectable.

    Cette phase contiendra aussi la réécriture des fonctionnalités liées aux IA (peut être déplacé en phase 3).

    J'aborderai la phase 2 plus en détails lorsque nous y serons.

    Fin prévue : ce n'est pas certain mais j'espère finir la phase 2 pendant la première moitié de l'année 2019.


    Phase 3

    C'est dans cette phase que le contenu sera ajouté. Les moteurs (physique, audio etc) seront dans un état stable. C'est à ce moment que l'univers dans sa globalité sera retravaillé, afin d'obtenir un espace de jeu assez dense et complet. Je ne peux en révéler plus pour le moment car nous n'avons pas encore tout fixé (majoritairement tout ce qui dépend des deux premières phases). Cependant nous en parlerons un peu plus pendant et après la phase 2.

    J'espère que ce devblog apporte des réponses à vos questions quant au statut actuel du développement du jeu. Tout le monde chez Schine continue de travailler à fond afin de pouvoir sortir la mise à jour de l'univers dans sa globalité en 2020.

    Merci de votre soutien,
    - l'équipe Schine.

Partager cette page