OpenMW, une implémentation libre du moteur du jeu de rôle, Morrowind

39
14
sept.
2015
Jeu

Le projet OpenMW est non seulement une ré-implémentation libre du moteur du jeu de rôle The Elder Scrolls III: Morrowind, un des meilleurs JDR (Jeu de Rôle, RPG5) au monde, mais aussi un éditeur permettant de créer du contenu pour ce nouveau moteur. Pour jouer à Morrowind, il vous faudra une version originale du jeu de laquelle on extraira les données.

Originellement écrit en langage D, le moteur a été depuis réécrit en C++ sous GPLv3 et se sert d'Ogre3D pour les graphismes (le passage vers OpenSceneGraph est en cours, sans doute lié à la difficulté de portage d'OpenMW vers Ogre 2), de Bullet pour la physique, ainsi que d'OpenAL pour la partie audio. L'éditeur, OpenCS, est codé lui aussi en C++ et utilise Qt. L'éditeur a pour vocation de pouvoir modifier aisément les éléments du jeu ainsi que de rendre compatibles avec OpenMW les mods créés pour Morrowind.

OpenMW

Le projet est actuellement en développement actif, une nouvelle version est réalisée en moyenne tous les mois. De grands progrès ont eu lieu ces dernières années et le but de la version 1.0 est quasiment atteint : ré-implémenter totalement Morrowind. Avec les récents ajouts de la sauvegarde et du chargement, il est possible de terminer le jeu moyennant quelques bugs.

Après la v.1, l'équipe du projet se concentrera sur l'ajout de fonctionnalités, l'amélioration des performances et des graphismes. Actuellement, le moteur est peu optimisé, il faut faire avec, en attendant des améliorations de ce côté ou participer au développement. Les développeurs lancent d'ailleurs un appel d'aide pour l'éditeur qui compte seulement deux membres actifs.

Quelques copies d'écran :

OpenMW

OpenMW

Annonce de la migration vers OpenSceneGraph

NdM: ce paragraphe est principalement une traduction de l'annonce du projet.

Ogre3D était le moteur de rendu utilisé par OpenMW depuis notre toute première version publiée. L’équipe derrière OpenMW a annoncé qu’elle migrait vers un autre moteur de rendu, et la première version jouable était annoncée le 7 juin 2015.

Durant le développement de nos versions alpha, Ogre3D a été extrêmement utile, permettant un développement rapide. Grâce à Ogre3D, vous pouvez déjà jouer à une version plus ou moins complète de Morrowind via OpenMW, aujourd’hui, et rien que ça confine à l’exploit.

Malgré tout, pour qu’OpenMW remplisse nos objectifs de qualité et pour ajouter les quelques dernières fonctionnalités manquantes, nous avons face à nous des tâches complexes qui requerraient soit de créer un fork d’Ogre3D qui se comporte de la façon dont nous avons besoin, soit que nous migrions vers un autre moteur de rendu plus adapté. Après de longues discussions, nous avons opté pour la seconde solution.

Pourquoi migrer ?

Nous n’avons pas affaire à un problème bloquant particulier, mais plutôt à l’accumulation de nombreux problèmes différents.

L’un de ces problèmes nous empêchant d’atteindre la version 1.0 est le faible taux d’images par seconde comparé à Morrowind vanilla. Celui-ci est dû à des bottlenecks dans la gestion des scènes et l’API de rendu des versions 1.x d’Ogre3D, qui sont bien connus de l’équipe derrière Ogre3D et ont depuis été corrigés dans les versions 2.x. Le plan original était de porter OpenMW vers Ogre3D 2.x, ce qui n’aurait pas été une mince affaire, vu que les changements de l’interface de programmation sont particulièrement importants. Malgré tout, nous avons quelques points qui nous inquiètent au sujet de ce port :

  • Tag points : Nous utilisons une fonctionnalité d’Ogre3D appelée "Tag Points" pour connecter ensemble les différentes parties des corps segmentés de Morrowind. Cette fonctionnalité n’est plus gérée par les versions 2.x, donc nous devrions implémenter des solutions de contournement complexes.
  • OpenGL3 requis : La branche 2.1 d’Ogre3D ne gère plus le matériel OpenGL2. Même si la prise en charge du matériel faisant tourner Morrowind à sa sortie n’a jamais fait partie des objectifs d’OpenMW, nous pensons qu’il est trop tôt pour abandonner OpenGL2, abandon qui affecterait une bonne partie de nos utilisateurs.
  • Système de matériaux : Ogre 2.1 arrive avec un nouveau système de matériaux avec des optimisations AZDO (Approaching Zero Driver Overhead), mais au prix d’une complexité accrue pour l’écriture de nouveaux matériaux. Nous le faisons massivement avec OpenMW, en particulier si on prend en compte les mods créés par des utilisateurs, pour lequel nous préférerions un système plus flexible et facile d’utilisation.

En plus de ces récents problèmes causés par les dernières versions d’Ogre3D, nous avons aussi quelques problèmes qui nous suivent depuis un moment :

  • Système de ressources : Ogre3D force l’utilisation d’un gestionnaire de ressources global, mais nous avons besoin d’un gestionnaire de ressources par document avec OpenCS. Un autre problème est que toutes les ressources sont censées avoir un nom unique, ce qui conduit à du travail supplémentaire de notre côté, et peut parfois créer des conflits entre les ressources ajoutées par des mods et celles du jeu original. C’est un problème bien connu par l’équipe Ogre3D, et un projet de réécriture du système de ressources a débuté en 2013, projet qui n’est malheureusement pas encore abouti.
  • Gestion des pochoirs/modèles (stencil) : le format NIF utilisé par Morrowind peut utiliser stencil settings, mais Ogre3D ne le gère pas.
  • Mise à l’échelle de la largeur des PNJ : Les personnes non-joueurs (PNJ) de Morrowind ont une propriété "poids", qui devrait modifier l’échelle de ceux-ci selon leur axe X. OpenMW ignore pour l’instant cette propriété, parce que le système de squelette d’Ogre3D 1.x ne supporte pas la mise à l’échelle non uniforme.
  • # Dépêche incomplète

    Posté par . Évalué à 10.

    La dépêche s'interrompt abruptement sur le constat qu'Ogre3D 2.0 n'est pas adapté au projet OpenMW.

    J'aurais apprécié que l'on signale que cette dépêche était une traduction partielle d'une annonce officielle. Pour les flemmards ou non anglophones, voici un résumé succinct de la suite :

    • Toutes les fonctionnalités souhaitées par OpenMW sont dans OpenSceneGraph, ou dans des plugins. Ils ont même vérifié dans le code que les implémentations convenaient.
    • OpenSceneGraph leur semble très performant.
    • Avec Ogre3D, les utilisateurs pouvaient choisir entre un moteur OpenGL ou Direct3D, alors qu'OSG n'utilise que OpenGL. Mais les développeurs pensent que les performances seront équivalentes, et qu'ils éviteront ainsi certains des bugs actuels.
    • La partie graphique représente 8% du code, bien cloisonnée, donc la migration est plutôt simple.
    • OpenSceneGraph est peu utilisé dans le monde du jeu, sans doute parce qu'il vient du domaine de la simulation physique, mais il a suffisamment évolué pour concurrencer Ogre3D sur ses terres.

    Une autre remarque sur la dépêche : « le passage vers OpenSceneGraph est en projet » est trompeur. J'ai cru qu'il était envisagé pour un futur proche, alors que c'est en cours de réalisation.

    • [^] # Re: Dépêche incomplète

      Posté par (page perso) . Évalué à 10.

      Cette dépêche a eu une vie compliquée : créée en juin 2014 pour annoncer la v0.30, elle est restée délaissée pendant 5 mois en rédaction alors que la v0.33 était parue, puis encore quelques mois jusqu'à ce que la question de la migration vers un nouveau moteur de rendu soit posée en mars et que la dépêche soit revue, puis elle a été de nouveau délaissée quelques mois, puis elle a fini en modération. Du coup certaines corrections ont été faites après coup mais d'autres sont passées à la trappe. J'ai rectifié pour remplacer « en projet » par « en cours » (comme c'était le cas dans la seconde partie déjà) et j'ai mentionné qu'une partie est principalement une traduction (principalement car il y a eu des ajouts en modération).

    • [^] # Re: Dépêche incomplète

      Posté par (page perso) . Évalué à 8.

      Je plaide coupable pour la traduction partielle de l’article sur le site officiel du projet.

      J’en ai traduit le début et m’étais engagé à m’occuper de la suite, mais la réalité m’a rattrapé et mon temps libre m’a fuit, laissant le reste de l’équipe avec une "demi-traduction" sur les bras.
      Un beau boulot de leur part d’ailleurs pour avoir traduit les parties que j’avais laissé de côté à cause de termes techniques que je ne maîtrise pas.

      Il ne faut pas oublier que ces dépêches et leur qualité dépendent des bonnes volontés des personnes qui sont prêtes à donner de leur temps pour les rédiger et les améliorer.
      Sur le coup ta participation aurait été la bienvenue, ton résumé aurait parfaitement eu sa place dans cette dépêche ;)

      On peut compter sur toi pour la future annonce de publication de la version 1.0 ?

    • [^] # Re: Dépêche incomplète

      Posté par . Évalué à 4.

      Pour les flemmards ou non anglophones

      Voici aussi un post plutôt détaillé et en Français sur l'avancement et les changements entre Ogre3D et OpenSceneGraph.
      https://openmw.org/2015/la-version-openscenegraph-enfin-jouable/

      kentoc'h mervel eget bezan saotred

  • # Re:

    Posté par . Évalué à 3.

    L'implémentation est libre, mais les fichiers de Bethesda ne le sont pas hélas :)

    Les développeurs ont aussi prévu d'en faire un moteur à part entière, c'est à dire la possibilité de créer des jeux dessus, autre que Morrowind. D’ailleurs, pour ceux que ça intéresse : https://forum.openmw.org/viewtopic.php?f=20&t=3003

    • [^] # Re:

      Posté par (page perso) . Évalué à 4.

      L'implémentation est libre, mais les fichiers de Bethesda ne le sont pas hélas :)

      On peut espérer qu'une fois tout ceci stable on aura un moteur RPG 100% libre qui pourrait donner de belles créations.

      • [^] # Ryzom

        Posté par . Évalué à 6.

        Idée comme ça en passant : est-ce que les données (libres) de Ryzom ne pourraient pas fournir une bonne base pour OpenMW? Je me doute que ça ne serait pas de la tarte à exploiter, mais au moins ça existe et c'est cohérent avec soi-même.

      • [^] # Re:

        Posté par . Évalué à 3.

        Il y a déjà le développeur d'un gros mod ( dont j'ai oublié le nom désolé, il me semble que c'est une sorte de jeu de tir ), qui a commencé à porter son mod vers le moteur OpenMW. L'idée c'est de s'émanciper des fichiers originaux de Morrowind.

    • [^] # Re:

      Posté par (page perso) . Évalué à 1.

      C'est un constat assez répandu, mais qui permettent de créer des plateformes de jeux "quasi-libres". Au final, ce qu'il manque surtout pour ces jeux, ce sont surtout des artistes (graphistes, modeleurs, …).
      J'avais de grands espoirs pour une plateforme de MMORPG basé sur Ultima Online à l'époque de Sphere/RunUO/SunUO (serveur) + Iris2 (client), mais il semblerait que ce microcosme soit à l'abandon. Gâchis …

    • [^] # Re:

      Posté par . Évalué à 10.

      Moi ça ne me gène pas que les graphismes ne soient pas libre, du moment que le logiciel l'est.

      Quand j'écoute de la musique je le fait avec Clementine mais finalement je n'écoute pas de musique libre. La situation ne me parait pas si éloignée pour un jeu.

      Ce ne me semble pas aberrant étant donné que la nature d'une musique ou d'un dessin ne me semble pas la même que celle d'un logiciel.
      Du coup les jeux avec des moteurs libres mais des design non-libre me vont parfaitement.

      Ma remarque ne va sûrement pas changer votre vie ni votre avis mais on voit tellement de gens dire "Oh le graphisme est pas libre hélas" que je ressent le besoin de la ramener là.

      En plus rejouer à Morrowind totalement libre comme ça franchement c'est kiffant (mais ou est mon CD).

      • [^] # Re:

        Posté par (page perso) . Évalué à 1.

        Quand j'écoute de la musique je le fait avec Clementine mais finalement je n'écoute pas de musique libre. La situation ne me parait pas si éloignée pour un jeu.

        Bonne remarque, c'est quand même principalement l'aspect exécution d'un code propriétaire qui est problématique pour les libertés.

        • [^] # Re:

          Posté par (page perso) . Évalué à 1.

          c'est quand même principalement l'aspect exécution d'un code propriétaire qui est problématique pour les libertés.

          Je suis bien curieux de connaitre la raison de ta séparation.
          Car au contraire, je dirai que le graphisme est le plus problématique pour les libertés (un moteur, on en a à la pelle, ça se fait facilement en libre), dommage de ne pas pouvoir patcher un pixel quand même, non?
          qu'on ne me sorte pas le coup de la "sécurité" ou du multi-plate-forme, on peut faire des VM qui gèrent tout ça avec du code non libre.

          Bref, pourquoi donc cette différence?

          Note : je ne suis pas contre le non-libre, juste je ne vois pas la différence sur les liberté entre code et graphisme, les deux ont les mêmes problèmes ou non problèmes de ce que j'en ai analysé, et j'utilise indifféremment du libre ou non libre suivant ce qui est disponible et répond à mes besoins.

      • [^] # Re:

        Posté par (page perso) . Évalué à 2.

        Quand j'écoute de la musique je le fait avec Clementine mais finalement je n'écoute pas de musique libre.

        Mais ne serait-ce pas mieux avec de la musique libre?

        Ma remarque ne va sûrement pas changer votre vie ni votre avis mais on voit tellement de gens dire "Oh le graphisme est pas libre hélas" que je ressent le besoin de la ramener là.

        "Dommage", ça dépend de ce que tu cherches.
        Il n'y a aucun mal à aimer un jeu non libre (comme celui de la dépêche, le moteur du jeu est libre mais pas le jeu), et c'est super que ça existe, mais il faut juste être conscient que ça ne rend pas le jeu libre (souvent, des gens parlent de jeu libre alors qu'une partie seulement du jeu est libre, et pour être libre il faut pouvoir tout avoir en libre, sinon on peut dire wue Microsoft Windows est libre, regarde la un code sous licence BSD).

        On a tous du non libre chez soit (son OS? ses drivers? son BIOS? son CPU?), c'est juste une étape, après si cette étape te convient il n'y a pas de "hélas" à t'opposer. Du moment que tu ne dis pas "oh le driver est non libre hélas" ou "oh ton OS n'est pas libre, caca" (classique quand des gens font du libre sous Mac, par exemple, et ils sont nombreux), afin d'accepter que d'autres font comme toi, juste une étape différente ;-).

        Mais après, pose-toi quand même la question de savoir, si tu le fais, pourquoi tu conseilles aux autres d'utiliser un moteur de jeu (ou un OS) libre "car libre".

        • [^] # Re:

          Posté par (page perso) . Évalué à -2.

          Mais ne serait-ce pas mieux avec de la musique libre?

          C'est sympa de te proposer pour les compos! Sans ça pour le concert de ce soir dans ton jardin - que toute la ville attend depuis deux mois - je t'ai pas prévenu mais j'étais pas obligé hein, il parait que c'est libre chez toi ;)

        • [^] # FOSH

          Posté par (page perso) . Évalué à 1. Dernière modification le 19/09/15 à 08:35.

          Tiens à propos, un bon article (stratégie, causes et conséquences, coût(s), enseignements, stats diverses) sur le matos open source.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.