Fondamentaux 2015-07-28 - Lukasz Gromanowski

Ceux qui ont la possibilité de compiler OpenMW depuis les sources de la branche OpenSceneGraph l’ont probablement déjà essayé. Le nouvel OpenMW est fluide, rapide et bien sûr, le plus important, fonctionnel. Cependant, il n’est pas encore très beau pour le moment. La version Ogre avait quelques shaders, par exemple le shader « Brillant » de Scrawl qui rend l’eau superbe, mais ils ne peuvent pas facilement être portés vers la version OSG. Mais ce n’est que du bonus visuel, et bien que ce soit un pas en arrière, ce n’est que temporaire. Ajoutez à cela les énormes progrès en termes de vitesse et les nombreux problèmes corrigés, le portage complet vers OSG représente trois pas en avant. En fait, le portage est assez avancé pour être inclus dans la prochaine version. Alors préparez-vous, la version 0.37.0 sera celle qui apportera OpenMW-OSG au monde entier!

Au moment de la rédaction de cet article, la version 0.37.0 ferme le nombre hallucinant de 138 problèmes sur notre logiciel de suivi. Comme précisé dans le dernier message de Scrawl, les PNJs font enfin la bonne taille, les gouttes de pluie ne rendent plus le feu transparent et le feu ne rend plus certaines choses noires. De plus, les personnages qui vous suivent ne vous dénonceront plus quand vous toucherez quelque chose que vous n’auriez pas dû, donc plus « d’amis » qui vont vous vendre aux gardes juste parce que vous avez pris un objet qui n’est pas tout à fait à vous.

Le nouveau développeur Kunesj a ajouté un petit extra qui est déjà intégré : le viseur et les panneaux d’information peuvent maintenant afficher si quelque chose vous appartient (ou pas). Ça n’est pas encore tout à fait au point, donc pour l’instant il faudra modifier quelques fichiers de configuration pour l’activer et le configurer, mais c’est un bon début pour une fonctionnalité que bon nombre de joueurs vont apprécier.

Il y a également eu du travail sur OpenMW-CS. Les PNJs devraient maintenant avoir beaucoup plus d’attributs modifiables, tels que le rang de faction, le niveau, les talents, ce genre de choses. Les petits problèmes d’interface tels que la taille de la fenêtre principale au démarrage et le comportement du bouton annuler ont été corrigés. Il est également possible de trier les résultats de recherche, ce qui devrait rendre la recherche globale encore plus pratique. Et en bonus : nous avons un beau sélecteur de couleur maintenant!

Comme vous pouvez le voir, l’équipe continue d’avancer, et à côté du moteur et de l’éditeur, deux nouveaux projets ont vu le jour.

Pour le premier, nous devons remercier TravDark, le créateur du mod Ashes of the Apocalypse, et Envy123, le créateur d’une extension non-officielle à AoA dénommée Desert Region 2. Ces deux créateurs ont généreusement accepté que leur travail soit étendu et modifié afin qu’il puisse devenir un jeu à part entière sur le moteur OpenMW. À cette fin, certains contenus de ces mods doit être remplacé, et l’effort a déjà commencé. Afin d’être indépendant, cependant, il faut remplacer tout ce qui a été créé par Bethesda ou d’autres moddeurs. C’est un travail titanesque et il faut trouver une solution.

Ce qui nous amène à l’autre projet : un paquet minimal de ressources pour les développeurs de jeux. En effet, OpenMW est un moteur, ce qui signifie qu’il peut lancer autre chose que Morrowind. Ainsi, pour avoir un jeu fonctionnel sur OpenMW, il vous faut quelques fichiers au minimum, par exemple un ciel et quelques animations. C’est dans ce but qu’existe le projet squelette de jeu pour OpenMW, qui a pour but de fournir les ressources minimales pour lancer OpenMW. En plus d’être une bonne base de départ pour les développeurs, c’est également un système de test fantastique pour OpenMW. Quand des gens essayent de créer leurs propres jeux, ils peuvent rencontrer tout un tas de problèmes, et grâce à la connexion qu’a le projet de squelette minimal avec l’équipe de développement, ces problèmes peuvent être documentés avant qu’ils ne se mettent en travers du chemin d’un plus gros projet.

Voila pour cette fois. Deux nouveaux projets, l’éditeur s’agrandit, et OpenMW continue sa transition vers un nouveau moteur graphique qui apporte des corrections majeures, et de la vitesse en bonus. Plein de bonnes nouvelles, même en cette période avancée du développement!

Laisser un commentaire ?

Translated by: magusor & cramal & nnayo

Fork me on GitHub
La version OpenSceneGraph enfin jouable! 2015-06-07 - Lukasz Gromanowski

Durant les trois derniers mois, l’équipe OpenMW a travaillé dur pour que le code s’éloigne du moteur Ogre3D en faveur du système de rendu OpenSceneGraph. Cet article explique les raisons de ce changement.

Nous sommes heureux de vous annoncer que tous ces efforts portent enfin leurs fruits ! Ainsi, toutes les fonctions essentielles du gameplay sont désormais portées, les utilisateurs peuvent donc profiter de Morrowind dans la OpenMW-osg branche de développement.

Certaines fonctions avancées -shaders, terrain distant, ombres et reflets sur l’eau – ne sont pas encore portées. Cependant, même si le portage est encore frais, nous pouvons dire sans risques que la transition est un énorme succès, bien plus que nous ne l’avions imaginé. Les joueurs remarqueront que le jeu se charge plus vite, est plus fluide, ressemble plus au jeu original, et corrige de nombreux bugs qui s’étaient avérés très difficiles à corriger dans notre ancien moteur.

Attendez … plus fluide ?Voyons voir ça…

Les premiers tests

Voici notre environnement de tests:
GeForce GTX 560 Ti/PCIe/SSE2, AMD Phenom(tm) II X4 955 Processor × 4, Linux 3.13.0-24-generic x86_64
1680×1050, plein écran, pas d’AA , 16x AF, pas de reflets sur l’eau, pas d’ombres, aucun shaders
Distance de vue au maximum (par rapport au curseur en jeu)

osg_bench
La scène de test : notre bonne vieille (et lourde) Balmora

OpenMWOpenMW-osg
IPS moy.4975
tps de chargement moy.7s3.4s
mémoire moy.344.6mb277.1mb

Sans surprises, le portage vers OSG gagne sur tous les fronts. L’amélioration des images par seconde est correcte, même si elle reste loin du x3-4 que nous avions observé dans nos premiers tests avec un seul objet. Il n’y a aucune raisons de s’inquiéter, cependant – il y a d’autres choses à prendre en considération :

  1. La comparaison est injuste. De nouvelles fonctions de rendu sont incluses dans la branche OSG, qui nous rapprochent encore plus du jeu d’origine, mais affectent cependant les performances. Par exemple, nous agrandissons les boîtes d’affichage en fonction des animations, corrigeant ainsi le bug des braillards des falaises qui disparaissaient sous certains angles (Bug 455), mais réduisant les performances également. De plus, nous avons retiré le traitement par lot des objets statiques, une optimisation de performance qui causait de multiples problèmes, notamment des problèmes d’éclairage et le mouvement scripté des objets ne fonctionnant pas. Malgré toutes ces nouvelles fonctions, OSG reste plus rapide !
  2. Attendez-vous à des gains de performances encore plus importants pour les fonctions graphiques avancées. La comparaison a été faite avec les graphismes minimaux, pour la simple raison que les fonctions avancées (ombres, reflets, …) n’existent pas encore dans la branche OSG. Nous nous attendons à ce que ces fonctions, une fois portées, auront un impact sur les performances bien plus limité qu’avant, puisque le nouveau moteur de travail répartit bien mieux la charge sur le GPU. Les demandes de rendu sont donc déchargées vers un thread séparé, ainsi la complexité graphique de la scène ne bloquera pas le thread principal qui pourra donc continuer à travailler sur l’occultation, la physique, les scripts et les animations.
  3. La vraie phase d’optimisation n’a même pas encore commencé. L’objectif prioritaire jusqu’ici était de ramener le jeu à un état jouable, ce qui est arrivé il y a quelques jours seulement. Désormais, l’horizon est rempli de nouvelles opportunités d’optimisation. Notre nouveau moteur de rendu nous donne plus de contrôle sur comment le graphe de scène est structuré, et comment les mises à jours sont réparties, et nous ne faisons que commencer à en profiter. Certaines des optimisations prévues dans un futur proche sont :
    • Déplacer les mises à jour de textures vers un thread séparé.
    • Déplacer les mises à jour de particules vers un thread séparé.
    • Partager des états entre plusieurs fichiers NIF.
    • Activer l’occultation pour les émetteurs de particules.
    • Intégrer un optimiseur de modèles. Les modèles de Morrowind contiennent malheureusement beaucoup de nœuds, transformations et états redondants, ce qui impacte les performances. Le moteur original optimise les modèles au chargement dans le moteur. Nous devrions implémenter un passage d’optimisation similaire. OpenSceneGraph fournit osgUtil::Optimizer qui pourrait s’avérer utile dans cet objectif.
    • Créer un graphe de scène plus équilibré, par exemple un arbre quadratique, pour réduire l’impact sur les performances de l’occultation et des requêtes sur la scène.
  4. Le rendu n’est pas un le seul goulôt d’étranglement. Penser qu’un rendu N fois plus rapide entraine un OpenMW N fois plus rapide est faux. Nous avons d’autres systèmes ralentissant le jeu, et maintenant que le moteur de rendu est plus rapide, ces goulôts sont de plus en plus apparents. En particulier, les systèmes d’animation et de physique forment les deux plus gros ralentissements. Certaines optimisations préliminaires pour ces systèmes sont arrivées, mais il y a sans aucun doute de nombreuses optimisations possibles.

Ceci étant dit, les améliorations de performance ne sont pas le seul changement auquel les joueurs peuvent s’attendre :

Changements préliminaires

Amélioration du rendu

osg_scaling osg_transparency
Comparaison de la mise à l’échelle des PNJs Comparaison de la transparence

Refonte du chargeur d’objets NIF

Réécriture du moteur physique

Nouveau raycasting

Amélioration de l’écran de chargement

Amélioration du support de SDL2

SDL2, la bibliothèque que nous utilisons pour la création de fenêtres et la gestion des entrées indépendamment de la plateforme, a été mieux intégrée dans le moteur de rendu. Les avantages concrets pour l’utilisateur incluent :

osg_antialiasing
L’antialiasing X8 en action

Surcouche de profilage

Un effet secondaire sympathique du passage à OpenSceneGraph est l’accès à leurs supers outils de profilage. D’un simple appui sur la touche « F3 », une surcouche apparaît, nous donnant beaucoup d’informations utiles.

osg_profiling
La surcouche de profilage – les barres de couleur représentent les thread internes d’OpenSceneGraph, les blanches la logique interne d’OpenMW

Changements « passifs »

Le nouvel OpenMW utilise un moteur OpenGL unifié sur toutes les plateformes. Le rendu via Direct3D n’est plus supporté, réduisant ainsi la charge de travail liée à la maintenance et au support pour l’équipe.

De façon pratique, nous avons donc « corrigé » le bug 2186 (Pixels imprécis sur la minicarte sous Windows) et le bug 1647 (Crash lors du passage en mode fenêtré sous Windows).

Autres changements

Enfin, nous avons fait quelques autres changements qui ne sont pas vraiment liés à la transition vers OpenSceneGraph, mais qui ont été publiés sur la branche OSG afin de réduire les conflits de fusion :

osg_ui_scale_1 osg_ui_scale_2
Taille normale Taille X2, même résolution

Maintenance / restructuration / Nettoyage du code

Le code a considérablement réduit, ce qui est plutôt intéressant pour les développeurs, mais pas vraiment pour les utilisateurs finaux.

Au total, ~23.000 lignes de code ont été retirées :

git diff upstream/master --shortstat
689 files changed, 24051 insertions(+), 47695 deletions(-)

Et ensuite ?

Wow, ça fait beaucoup de changements à encaisser – Même à ce stade, la liste des améliorations est impressionnante, donc notre priorité devrait être de fusionner le portage dans la branche principale, refaire fonctionner nos compilations automatiques, puis sortir une nouvelle version.

Sur le long terme, nous ne sommes pas près d’avoir exploité tout le potentiel de ce nouveau moteur. Les prochaines étapes devraient être des améliorations de performances encore plus poussées, puis remettre les shaders, le terrain distant, les reflets sur l’eau et les ombres. Notre nouveau chargeur de fichiers NIF facilite l’implémentation du chargement en arrière plan, qui était à la base une amélioration prévue pour après la version 1.0 – maintenant, l’implémentation devient triviale, donc nous pourrions finalement voir cette fonctionnalité apparaître avant la 1.0.

En même temps, sur l’aspect graphique, il n’y a désormais plus rien pour nous empêcher de sortir la tant attendue version 1.0 d’OpenMW, donc nous devrions peut-être rediriger nos efforts vers la correction des problèmes bloquants en premiers lieu, sortir la version 1.0, puis nous occuper des fonctions graphiques avancées pour la version 1.1. Nous pourrions décider de cela au cas par cas. En particulier, les reflets sur l’eau devraient être beaucoup plus faciles à porter que les ombres, qui ne marchaient pas très bien dans Ogre3D de toutes façons.

Si vous avez une opinion sur le sujet, n’hésitez pas à commenter. De toutes façons, quelle que soit notre décision, ce qui arrive sera probablement génial !

Laisser un commentaire

// Translated by: magusor & nnayo

(Re)construire les bases 2015-04-17 - Lukasz Gromanowski

A mesure que la liste des fonctionnalités à implémenter devient de plus en plus courte, notre équipe de développement porte son attention vers des problèmes bien plus importants que des PNJs ne faisant pas ce qu’ils devraient.

Scrawl, par exemple, s’acharne à porter le projet de Ogre3D vers OpenSceneGraph, un moteur 3D relativement peu connu mais immensément flexible et étendu, qui non seulement permettra à OpenMW d’être plus fluide, mais qui va également permettre une meilleure gestion des matériaux et de la cohésion des membres des PNJs (ce n’est pas aussi macabre que ça en à l’air !). Scrawl lui-même nous a expliqué (en anglais) le pourquoi du comment d’OSG, et oui, je pourrais vous dire qu’il y a de gros progrès, mais des images parlent plus que des mots :


C’est presque un retour à la version 0.13.0, mais pas d’inquiétude, contrairement au projet en 2012, la plupart du code est déjà en place à l’heure actuelle, nous vous promettons donc que cela ne prendra pas trois ans pour rattraper la version Ogre3D. La preuve : entre le moment où j’ai commencé à écrire cet article et maintenant, .Scrawl a réussi à afficher les PNJs . Les choses avancent vite.

Pendant ce temps, OpenMW-CS a bien avancé également. Notre propre outils de « modding » s’est enrichi de deux fonctions que vous devez voir si vous faites des mods.

Une plutôt grosse mise à jour du code par cc9ii, basée sur le travail acharné de sirherrbatka, vous donne accès à de nouvelles choses. Prenons les PNJs, par exemple. Leurs paramètres n’étaient auparavant accessibles qu’au travers du panneau principal, mais il existe des éléments qui n’y sont pas présents. En sélectionnant Edit record dans le menu du clic droit, cela faisait apparaître quelques éléments supplémentaires (par exemple, les objets qu’un marchand accepte d’acheter), mais la contribution de cc9ii l’étend encore plus ! Vous pouvez maintenant ajouter des objets à son inventaire, accéder à son itinéraire de déplacement, et plus encore (en anglais).

Zini a annoncé en grandes pompes (en anglais) que la recherche globale fonctionne. Quand vous êtes confronté à une liste d’objets gigantesque, essayer de trouver ce magnifique plateau du bureau de Seyda neen est comme chercher une aiguille dans une botte de foin. Auparavant, il était possible de faire une recherche selon une syntaxe particulière, mais pourquoi faire si compliqué ? Avec la recherche globale, vous pouvez trouver cet objet sans avoir à réfléchir. Qui plus est, cette fonction sera étendue avec une option de rechercher et remplacer, comme ça, plus besoin de modifier toutes ces potions une par une.

Enfin, un peu d’informations sur la communauté. Sterling, de la chaîne YouTube « Old School RPG », vient de commencer son « let’s play » de Morrowind en utilisant le moteur OpenMW. Si vous êtes curieux, regardez la première vidéo ci-dessous (en anglais). N’oubliez pas de visiter sa chaîne ensuite pour plus de contenu.

C’est tout pour cette fois. L’équipe est plus active que jamais, et nous avons hâte de vous en dire plus la prochaine fois ! A bientôt !

Laisser un commentaire sur le forum ?

// Translation by: Magusor & nnayo

Une ode aux tests unitaires 2014-03-02 - Lukasz Gromanowski

La version 0.29.0 va bientôt sortir — les obstacles momentanés étant des bugs qui ont été détectés pendant la phase de test « release candidate ». Je ne veux pas entrer dans les détails, mais si quelqu’un veut soutenir la thèse que les tests unitaires sont critiques, alors OpenMW en est le parfait exemple. Heureusement nous allons dans la bonne direction.

La dernière idée de Scrawl’s est de fluidifier le processus de démarrage d’une partie — les données de terrain peuvent être chargées dans un autre thread, nous n’avons pas besoin de regarder un nouvel épisode d’“Amour gloire et beauté” pendant que nous attendons le démarrage d’OpenMW.

Par ailleurs, Pvdk essaie de satisfaire les grognons qui ne tolèrent pas Wine sur leur machine. Wine est très pratique pour l’installation de Morrowind, mais j’admets que l’installer juste dans ce but est un peu exagéré. Après tout il suffit juste de décompresser les archives (il y a une bibliothèque pour ça).

Comme je l’ai mentionné les semaines précédentes, Pvdk est en train de créer un installateur user-friendly pour Morrowind. L’installateur comportera des nouvelles fonctionnalités ainsi que quelques ajustements mineurs: une installation passée sera détectée et Bloodmoon sera installé après Tribunal. Le fichier morrowind.ini sera correctement sauvé.

SirHerrbatka a rendu possible la création de filtres automatiquement au moyen de glisser-déposer dans OpenCS. L’expression est adaptée à la colonne de sorte à être compatible avec le type de record qu’elle contient. Par exemple lorsque l’on dépose un record de type faction, genre “the Fighter’s Guild” dans le filtre des reférençables, le nom va apparaitre dans le filtre de sorte à ce que uniquement les PNJ de la Fighter’s Guild soit affichée dans la liste.

La nouvelle méthode est bien plus efficace — la création des filtres permet d’accélérer le travail (même si vous êtes très rapide au clavier). Les possibilités de ce filtre sont bien plus avancées que l’exemple ci-dessus et seront décrites à termes dans le manuel d’OpenCS.

Enfin, vous pouvez lire ici (non traduit) le debrieffing de Raevol au sujet du SCaLE 12x. Sont disponibles égalements les slides (non traduits) utilisés pendant le debrieffing ici.

A la prochaine!

// Translation by: gravek

Documentaires, et plus encore. 2014-02-13 - Lukasz Gromanowski

Durant la semaine dernière, Scrawl a résolu un bon nombre de bugs. Il a également apporté des contributions importantes à l’interface de sauvegarde/chargement. Comme si cela ne suffisait pas, il a également commencé à implémenter les mécanisme de combat à distance.

Pendant ce temps, Zini a apporté des améliorations au moteur de script. Il y donc une nouvelle fonction dans le compilateur de scripts : le mode avertissement, qui affiche un message si le compilateur trouve une erreur dans le script – une fonction utile sans l’ombre d’un doute.

OpenMW supporte également les scripts originaux ─ ce qui, malheureusement, signifie que nous allons devoir traiter des absurdités. Afin de garder votre esprit pur et non contaminé par des insanités de Bethesda de us de dix ans, j’éviterais de rentrer dans les détails.

Les derniers changements dans l’animation des personnages sont vraiment intéressantes. A l’heure ou j’écris ces lignes, elles ne sont pas encore dans la branche principale, mais il est évident que MrCheko a amélioré une bonne partie de l’expérience de jeu liée aux animations.

Cela faisait longtemps que nous n’avions pas eu de vidéo marrantes des bugs sur le blog – et pourtant nous adorons tous ça ! En attendant, voici une nouvelle journée dans la nature et dans la vie des habitants de la province de Morrowind…

Ici, Nous pouvons voir un phénomène extrêmement difficile à observer, il s’agit de la parade nuptiale des netchs. Le mâle excité montre sa virilité à la femelle. Pendant ce temps, les natifs se figent afin d’éviter les comportements agressifs de l’animal.

Les elfes noirs sont connus pour leur religion hérétique disons, particulière. Cette prière consiste en de nombreux rituels complexes, et une partie inaliénable voire intégrale de la plupart de ceux ci consiste en des prostration répétées.

Ici, nous observons un autre rituel mystérieux, dont la signification nous est encore inconnue à ce jour.