❌

Vue lecture

Unvanquished 0.55, enfin là !

AprĂšs une longue attente la version 0.55 du jeu Unvanquished a Ă©tĂ© publiĂ©e le 20 octobre 2024. Deux mises Ă  jour mineures se sont succĂ©dĂ©es le 3 novembre et le 15 dĂ©cembre pour peaufiner cette version, juste Ă  temps pour ĂȘtre dĂ©posĂ©e sous le sapin de NoĂ«l !

Unvanquished est un jeu vidĂ©o libre et gratuit mĂȘlant stratĂ©gie en temps rĂ©el et actions Ă  la premiĂšre personne dans un univers futuristique oĂč deux factions (humains, aliens) combattent pour leur survie.

S’inscrivant dans la continuitĂ© de Tremulous (rĂ©vĂ©lĂ© en 2006) et basĂ© sur ce dernier, Unvanquished dĂ©veloppe cette expĂ©rience de jeu nerveuse et exigeante depuis 2013, en amĂ©liorant continuellement le moteur et explorant des variantes et ajustements de jouabilitĂ©.

Un Tyrant Laisse-moi goĂ»ter Ă  cette version !

Sommaire

Cette version avait Ă©tĂ© promise dans le dernier article Des nouvelles de Unvanquished, et 10 mois aprĂšs la version 0.54, voici la version 0.55.

Pendant cette annĂ©e 2024, le jeu a fait l’objet d’un dĂ©veloppement soutenu et vu l’arrivĂ©e de nouveaux contributeurs.

Gameplay

  • La portĂ©e du « rocket pod » a Ă©tĂ© rĂ©duite: 2000qu → 1300qu (62m → 40m).
  • Il n’est plus possible de dĂ©sĂ©voluer vers la mĂȘme classe, ce qui permettait de recharger ses projectiles sans attendre.

Bots

  • Les bots aliens savent dĂ©sormais Ă©teindre les bases en feu.
  • Ils peuvent aussi utiliser le granger avancĂ© pour atteindre des plate-formes Ă©levĂ©es et y construire.
  • Les classes sachant marcher sur les murs le font de maniĂšre plus fiable, et le saut de mur du maraudeur est plus prĂ©cis lorsqu’il escalade des murs.

D’autres amĂ©liorations sont plus subtiles, les bots peuvent naviguer dans les cartes de façon plus efficace depuis que la taille des tuiles du maillage de navigation est configurable. Les mappers (ceux qui crĂ©ent ou modifient des cartes) peuvent aussi configurer d’autres aspects de la navigation.

Un déséquilibre qui rendait les bots aliens moins bons que les bots humains a été retravaillé.

La navigation dans la carte perseus a Ă©tĂ© amĂ©liorĂ©e. C’est un des patchs de la mise Ă  jour mineure 0.55.1, c’était dĂ©jĂ  prĂȘt pour la 0.55 mais avait Ă©tĂ© oubliĂ© (oups !).

La 0.55.2 a donné aux bots la capacité de voler et la capacité de danser autour des ravins sans tomber.

Interface utilisateur

Il est dĂ©sormais possible de se dĂ©placer et d’utiliser certaines touches d’action alors que certains menus circulaires sont ouverts : Ă©volution, construction, balises (beacons). Cela permet d’ouvrir le menu de construction en tant que granger avancĂ© sans tomber. On peut aussi Ă©voluer tout en courant ou en sautant, etc.

Les nouveaux menus Les nouveaux menus avec les options de réticules.

Traductions

La version 0.55 est la premiĂšre version majeure d’Unvanquished Ă  distribuer de nouveau des traductions ! Nous avions dĂ©jĂ  distribuĂ© quelques traductions avec la version de correction 0.54.1, elles Ă©taient en quelques sorte en prĂ©visualisation. Cette version apporte les traductions pour le Français, l’Allemand, l’Italien, l’Espagnol, le Finlandais, deux variantes de Portugais, et trois variantes de Chinois.

Dans les premiers jours d’Unvanquished nous avions des traductions, mais il y a longtemps nous avons changĂ© la technologie utilisĂ©e pour implĂ©menter l’interface utilisateur et la prise en charge des traductions a dĂ» ĂȘtre rĂ©implĂ©mentĂ©e. Les voici de retour et nous sommes heureux de vous les distribuer de nouveau. Pour contribuer plus de traductions et les affiner, le mieux est de le faire sur Weblate.

Nouveaux visuels

De nouveaux modĂšles sont là : la « painsaw » d’Alex Tikkoiev et le Chaingun d’extreazz. Ils ont Ă©tĂ© intĂ©grĂ©s au jeu par Ishq. Cela semble simple Ă  faire mais nous n’avons pas de modeleur ni d’animateur actif et cela nous freine beaucoup, vous pouvez nous rejoindre.

Le chaingun Le nouveau chaingun d’extreazz.

La painsaw produit désormais des étincelles quand elle impacte des surfaces dures, agissant comme le Grand Communicateur de vos désirs de disperser des tripes extra-terrestres.

La painsaw La nouvelle painsaw d’Alex Tikkoiev.

Il y a dix ans nous avons reçu une fonctionnalitĂ© bien sympathique appelĂ©e particules douces (soft particles). Cela empĂȘche certains effets comme le brouillard ou les nuages d’acides d’ĂȘtre affichĂ©s de maniĂšre disgracieuse lorsqu’ils touchent des murs. Initialement l’effet n’était configurĂ© que pour une poignĂ©e de shaders. Rapidement des programmeurs paresseux se sont dits : « configurer les shaders est ennuyeux, et si nous activions la fonctionnalitĂ© pour toutes les particules ? ». Malheureusement, cela rend certaines particules invisibles, spĂ©cialement les effets d’impacts qui sont trĂšs proches de murs ou de sols. Apparemment personne n’a remarquĂ© ça pendant 9 ans, jusqu’à ce que nous retournions Ă  la configuration manuelle de shaders Ă  cause de changements architecturaux liĂ©s Ă  autosprite2. AprĂšs une revue mĂ©ticuleuse de tous les systĂšmes de particules du jeu, nous avons corrigĂ©, retirĂ© ou amĂ©liorĂ© certains effets graphiques. Par exemple le souffle du canon lucifer produit dĂ©sormais une onde de choc, causant une distorsion visuelle. Un tel effet Ă©tait dĂ©jĂ  prĂ©sent dans les donnĂ©es, mais il ne fonctionnait pas Ă  cause d’un problĂšme de tri des shaders. Le tir secondaire produit aussi un flash violacĂ© Ă  l’impact, effet qui Ă©tait souvent invisible Ă  cause des particules douces automatiques.

Un humain en cours de soin sur la médistation Le nouvel effet de soin de la médistation.

Reaper a repensĂ© l’effet de soin de la medistation et l’a rendue plus transparente, pour que les joueurs en cours de soin puissent voir Ă  travers.

Sweet a ajoutĂ© un nouvel effet visuel au champ de force de la carte plat23. Cela utilise l’effet de mirage de chaleur (heat haze) qui Ă©tait initialement conçu pour les armes et les effets de feu, mais il se trouve que ça peut Ă©galement produire des effets trĂšs sympathiques dans les cartes. Nous remercions Masmblr pour la maniĂšre dont il nous fait avancer en dĂ©montrant dans ses propres cartes communautaires comment il est possible d’exploiter de façon crĂ©ative et nouvelle des fonctionnalitĂ©s que nous proposons dĂ©jà !

Fichier d’entitĂ©

Le moteur prend dĂ©sormais en charge les fichiers d’entitĂ©. Cela est particuliĂšrement utile pour les cartes (niveaux de jeu) sans source (il y en a des centaines !). Un fichier d’entitĂ© permet certaines personnalisations de comment certaines entitĂ©s fonctionnent (portes, ascenseurs, tĂ©lĂ©porteurs
). Il est possible d’extraire une description d’entitĂ©s avec q3map2 et le fichier extrait peut ĂȘtre Ă©ditĂ© avec un Ă©diteur de texte et lu par le moteur lorsqu’il charge une carte. Le fichier d’entitĂ© peut aussi ĂȘtre utilisĂ© pour modifier comment la lumiĂšre d’une carte sera appliquĂ©e (il est possible d’y renseigner des variables qui configurent le moteur de rendu pour cette carte).

Le futur est lumineux

Comparaison de rendu de lumiÚre Une vidéo démontrant la compatibilité des lumiÚres de diverses cartes historiques (voir la vidéo complÚte).

Un effort aux long cours est fait pour que le moteur affiche de meilleures lumiĂšres en jeu. Les investigations ont commencĂ© Ă  livrer des rĂ©sultats significatifs en 2020 avec l’affinage du procĂ©dĂ© de compilation des lumiĂšres. Cet effort est multi-facettes et touche Ă  de multiples aspects de la chaĂźne de production et de rendu. Ces derniĂšres annĂ©es, Illwieckz s’est assurĂ© que diffĂ©rents types d’éclairage soient pris en charge. L’éclairage par vertex (vertex lighting) a Ă©tĂ© ajoutĂ© en plus de l’éclairage par grille (grid lighting) et de l’éclairage par texture (lightmap). Ainsi les cartes qui mĂ©langent Ă©clairage par vertex et Ă©clairage par texture sont dĂ©sormais correctement affichĂ©es. Illwieckz a aussi dĂ©bugguĂ© les styles de lumiĂšres, une sorte de lumiĂšre dynamique prĂ©-calculĂ©e qui fusionne plusieurs textures de lumiĂšre (lightmap) au moment du rendu.

Comparaison de suréclairage Comparaison entre l'ancien suréclairage (à gauche) et le nouveau suréclairage (à droite). Comparer avec un curseur.

AprĂšs cela Illwieckz a rĂ©implĂ©mentĂ© le mĂ©canisme de surĂ©clairage (overbright) pour Ă©viter la troncature des lumiĂšres (light clamping). Il se trouve que le moteur de rendu de Quake 3 souffrait d’une limitation qui attĂ©nuait les lumiĂšres autant qu’il les Ă©claircissait
 Le nouveau code non-buggĂ© est dĂ©sormais activĂ© par dĂ©faut. Cela a suscitĂ© des dĂ©bats puisque comme le moteur id Tech 3 avait un surĂ©clairage buggĂ© depuis plus de 20 ans, utiliser un moteur de rendu non-buggĂ© peut rĂ©vĂ©ler des bugs que les crĂ©ateurs de niveaux n’ont jamais vu avant, et il Ă©tait mĂȘme possible d’introduire des bugs dans certains logiciels de production sans que les gens ne s’en rendent compte ! Certaines personnes peuvent argumenter que l’affichage buggĂ© est la façon dont le crĂ©ateur du niveau s’attend Ă  ce que son niveau soit vu
 Cette histoire va si loin que cela mĂ©riterait un article dĂ©dié !

La prochaine Ă©tape sur ce chemin vers un meilleur Ă©clairage sera de faire de la colorimĂ©trie correctement et de faire de la fusion linĂ©aire de lumiĂšre (quelque chose qu’id Tech 3 n’a jamais fait), mais cette tĂąche est pour le futur.

Corrections du moteur de rendu

Un battlesuit se regardant dans des miroirs Une vidéo montrant la récursion de miroirs et de portails et leur fusion (voir la vidéo complÚte).

  • Sprites : Les surfaces utilisant le mot clĂ© de shader autosprite2 sont correctement affichĂ©es, c’est parfois utilisĂ© pour afficher des effets de symĂ©trie axiale, par exemple pour une flamme de bougie. Ce travail a Ă©tĂ© rĂ©alisĂ© par Slipher.
  • Portails et miroirs : Reaper a terminĂ© l’implĂ©mentation de la rĂ©cursion de portail et de miroir, a implĂ©mentĂ© la fusion de portails et la fusion alphaGen (une technique qui permet d’obscurcir un portail selon la distance Ă  celui-ci), et a rendu possible d’avoir des portails mobiles. Il a corrigĂ© la rotation de portail ainsi que des bugs de portails liĂ©s aux lumiĂšres, et s’est assurĂ© que du creep extra-terrestre de taille 10 millions de fois la taille de l’univers observable n’apparaissent pas dans les portails

  • VidĂ©o : Nous pouvons Ă  nouveau jouer des vidĂ©os sur les surfaces. Avec le temps le code s’était gĂątĂ© (rotten code), Ă©tait devenu cassĂ© et avait mĂȘme Ă©tĂ© enlevĂ© tandis qu’il Ă©tait cassĂ©. Il fut ressuscitĂ© et a fait l’objet d’une profonde rĂ©Ă©criture par Slipher, et la fonctionnalitĂ© fonctionne de nouveau — et mĂȘme mieux qu’avant (avec moins de limites arbitraires) ! Cette nouvelle implĂ©mentation Ă©tait dĂ©jĂ  visible dans la version 0.54.1, la voici dĂ©sormais dans une version majeure. Le seul format pris en charge est l’antique format RoQ utilisĂ© par Quake 3 qui, par mesure de compatibilitĂ© avec les donnĂ©es de jeu existantes, est le codec que nous devons prendre en charge avant tout autre codec. Nous ne fermons pas la porte au fait de prendre en charge d’autres codecs, mais pour cela il faudrait que la fonctionnalitĂ© soit utilisĂ©e plus souvent pour justifier cet effort supplĂ©mentaire.
  • Brouillard : Reaper a corrigĂ© l’effet de brouillard, qui Ă©tait cassĂ© dans la version 0.45. Oups !
  • LumiĂšres : Les lumiĂšres dynamiques sont dĂ©sormais moins pixelisĂ©es, quand bien mĂȘme ce problĂšme n’est pas encore complĂštement corrigĂ©.
  • PBR : La prise en charge de textures prĂ©tendues « basĂ©es sur la physique » est dĂ©sormais dans un Ă©tat viable grĂące Ă  Ishq (plus d’artefacts noirs). C’est dĂ©jĂ  utilisĂ© avec un nouveau modĂšle de chaingun. Pour le rendre bon, nous avons besoin de le faire fonctionner avec les rĂ©flexions spĂ©culaires (rĂ©flexions statiques).

Un dretch regardant Big Buck Bunny Une vidéo montrant la lecture de vidéo sur les surfaces du jeu (voir la vidéo complÚte).

En corrigeant le shader autosprite2, la fusion de portails et la lecture de vidĂ©os, nous avons corrigĂ© 3 rĂ©gressions du moteur original de Quake 3 et qui Ă©taient liĂ©es Ă  la prise en charge de format de fichiers anciens et de techniques tout aussi anciennes. Parce que notre moteur de rendu n’est plus celui de Quake 3, corriger certaines de ces rĂ©gressions requiert parfois d’écrire du code neuf plutĂŽt que de corriger un code existant, et c’est exactement ce qui s’est produit pour les portails.

Performance améliorées

Un granger Ă  NoĂ«l Unvanquished 0.55.2 a Ă©tĂ© publiĂ©e pour NoĂ«l !

Le moteur et le jeu sont plus rapides que jamais !

  • Simplification du ciel : Reaper a purifiĂ© par le feu le code de rendu du ciel qui Ă©tait archaĂŻque et
 Ă©trange. Ce code pouvait gĂ©nĂ©rer plus de 1000 triangles par trame rien que pour dessiner le ciel. Une skybox n’a pas besoin d’une gĂ©omĂ©trie aussi fine, elle est simplement modĂ©lisĂ©e comme l’intĂ©rieur d’un cube. En plus le code faisait des allers-retours mĂ©moire entre la mĂ©moire principale et la mĂ©moire graphique
 đŸ€Šâ€â™‚ïžïž Nous dessinons donc le ciel maintenant avec seulement 12 triangles. Inutile de dire que les performances sont significativement amĂ©liorĂ©es, et ça aurait toujours dĂ» ĂȘtre comme ça.
  • Culling : Il s’agit du procĂ©dĂ© qui Ă©lague les surfaces non-visibles pour Ă©viter de les dessiner. Illwieckz a optimisĂ© l’implĂ©mentation gĂ©nĂ©rique pour processeur central (CPU), Slipher a ciselĂ© Ă  la main un code SSE pour les processeurs x86, et Reaper a permis d’utiliser la carte graphique (GPU) quand le pilote et le matĂ©riel sont compatibles.
  • RĂ©duction des dĂ©lais IPC par du traitement par lots et de la mise en cache : Ces travaux accĂ©lĂšrent des choses comme les particules, les marques d’impact, et les ombres. Illwieckz a rĂ©duit le temps d’attente pour ces communications interprocessus en ajoutant des alternatives Ă  nos interfaces de programmation (API) qui fonctionnent par lot. L’IPC est comme un service postal qui transporte les messages entre le processus du jeu Unvanquished et le moteur DĂŠmon. Pour un facteur, l’important n’est pas le nombre de pages que vous Ă©crivez mais le nombre d’enveloppes Ă  livrer. Vous pouvez donc allĂ©ger sa charge de travail en mettant toutes vos lettres dans une seule grande enveloppe. Pour un cas d’utilisation (dĂ©jĂ  livrĂ©e dans la version 0.54.1), Slipher a implĂ©mentĂ© une mise en cache cĂŽtĂ© code de jeu. Pour filer la mĂ©taphore, il n’est pas nĂ©cessaire de rĂ©-envoyer le mĂȘme courrier si le contenu est dĂ©jĂ  connu. Sur du matĂ©riel actuel, ces optimisations peuvent augmenter le taux de trame (framerate) de plusieurs centaines de FPS quand il y a de nombreuses particules et autres choses de ce genre Ă  l’écran (spam de grenade incendiaires, par exemple !).
  • Code de vertex flottant plus rapide : L’implĂ©mentation de vertex plein-flottant Ă©crite par Slipher pour Ă©tendre la compatibilitĂ© Ă  du matĂ©riel plus ancien ou de plus basse gamme qui ne prennent pas en charge les demi-flottants a aussi doublĂ© le taux de rafraĂŻchissement sur du matĂ©riel qui fonctionnait dĂ©jà ! La rĂ©Ă©criture a aussi apportĂ© de menues optimisations dans le code de modĂšles.
  • Placage de relief : Reaper a corrigĂ© un bug dans le code des cartes de relief (relief mapping), ce qui a dĂ©bloquĂ© quelques centaines de FPS sur des cartes graphiques de gĂ©nĂ©ration actuelle.
  • Usage mĂ©moire des images : Illwieckz a implĂ©mentĂ© le mĂ©canisme fitScreen pour les textures d’interfaces utilisateur : c’est une alternative Ă  l’antique implĂ©mentation noPicMip de Quake 3 : noPicMip instruisait le moteur de ne jamais rĂ©duire la taille d’une image, fitScreen s’assure qu’elle soit rĂ©duite d’une façon qu’elle ne devienne jamais plus large que l’écran. Par exemple une capture d’écran d’une carte (niveau) utilisĂ©e dans la liste des cartes et au chargement d’une carte ne sera plus jamais chargĂ©e en pleine rĂ©solution dans la mĂ©moire graphique si elle doit ĂȘtre affichĂ©e sur un Ă©cran 640×480 (pour donner un exemple extrĂȘme)
 CombinĂ© avec le mĂ©canisme r_maxImageDimension que nous avons ajoutĂ© en version 0.52 pour les textures qui ne sont pas utilisĂ©es pour les interfaces utilisateurs comme alternative Ă  r_picmip, ce nouveau mĂ©canisme donne au jeu une empreinte mĂ©moire en VRAM trĂšs trĂšs faible quand on utilise un Ă©cran avec une rĂ©solution toute petite.
  • Plus de prĂ©-calcul : De nombreuses dĂ©cisions Ă©taient prĂ©alablement prises Ă  chaque trame en rendant telle ou telle surface, Illwieckz s’est assurĂ© que ces dĂ©cisions soient dĂ©sormais prises une fois pour toute lorsque le shader est parsĂ©. Ce que nous appelons « shader » ici est un format de dĂ©finition de matĂ©riaux utilisĂ© par id Tech 3 et ses dĂ©rivĂ©s, ainsi que de nombreux outils d’édition de cartes. Ne pas confondre avec un « shader GLSL » qui est un programme exĂ©cutĂ© sur la carte graphique.
  • SSAO : Le shader GLSL SSAO (Screen Space Ambient Occlusion) a Ă©tĂ© rendu un peu plus rapide par Reaper.

Le moteur et le jeu ont Ă©tĂ© profilĂ©s intensivement par Illwieckz en utilisant Orbit. Cet effort a permis d’identifier des goulots d’étranglement (bottleneck) et du code non-optimal. Au final cela nous a aidĂ© Ă  implĂ©menter de nombreuses optimisations Ă  de nombreux endroits dans le code.

Le chargement de carte a aussi Ă©tĂ© amĂ©liorĂ© de plusieurs façons :

  • Le moteur ne calcule plus la somme de contrĂŽle des images CRN au chargement.
  • Le moteur ne compile plus certains shaders GLSL qui sont dĂ©tectĂ©s comme inutilisĂ©s.
  • De la mĂȘme façon nous avons rĂ©duit le nombre de permutations de shader GLSL Ă  compiler.
  • Les joueurs qui aiment jouer seul apprĂ©cieront notre gĂ©nĂ©ration « multithread » de maillage de navigation de bot (bot navigation mesh), grĂące Ă  Ishq et Slipher. Cela fait partie de la phase de chargement lorsque vous jouez une carte pour la premiĂšre fois dans un jeu local. Cette gĂ©nĂ©ration n’utilisait avant qu’un seul fil d’exĂ©cution (thread), dĂ©sormais toute la puissante de votre processeur est exploitĂ©e en mettant tous les cƓurs Ă  contribution. Les hĂ©bergeurs de serveurs peuvent Ă©galement en profiter et peuvent configurer cette fonctionnalitĂ© avec la variable g_bot_navgenMaxThreads (utiliser moins de fils utilise moins de mĂ©moire, ce qui peut ĂȘtre prĂ©fĂ©rĂ© sur certains serveurs).

Il y a aussi tout un ensemble de choses qui n’ont pas de lien avec le moteur de rendu qui rendent le jeu plus rapide :

  • Le prĂ©rĂ©glage « le plus bas » (lowest) pour les appareils de trĂšs bas de gamme a Ă©tĂ© optimisĂ© encore plus.
  • Nous distribuons des modĂšles optionnels en faible qualitĂ© – pour le moment seulement pour les constructions, avec la seule diffĂ©rence que ces modĂšles ont moins d’articulations. Cela permet de traiter l’animation de ces modĂšles sur des GPUs plus bas de gamme (au lieu de basculer sur le code CPUs quand le GPU est trop bas de gamme).
  • Il a Ă©tĂ© dĂ©couvert que certaines variables de configuration (cvar) Ă©taient utilisĂ©es par le code de jeu pour envoyer des informations Ă  l’interface du code du jeu dans le but de les afficher Ă  l’écran. Cela signifie que le jeu s’envoyait une lettre Ă  lui-mĂȘme Ă  travers le moteur Ă  chaque trame
 En fait cela demandait mĂȘme deux lettres : une pour envoyer la donnĂ©e au moteur, une pour la rĂ©cupĂ©rer depuis le moteur, tout ça pour une donnĂ©e dĂ©jĂ  connue ! Cette horreur a Ă©tĂ© atomisĂ©e avec un prĂ©judice extrĂȘme.
  • L’accĂšs Ă  une cvar de jeu par son nom depuis le jeu utilise dĂ©sormais un cache local, rĂ©duisant encore le nombre de messages que le jeu et le moteur doivent Ă©changer, accĂ©lĂ©rant de beaucoup l’interface utilisateur.

Ceux qui aiment faire tourner des benchmarks seront heureux d’apprendre que le taux de trame de la fonctionnalitĂ© timedemo n’est plus plafonnĂ© Ă  999 fps.

De plus, l’interface Curses peut dĂ©sormais afficher les FPS.

Bien entendu que ça fait tourner Unvanquished !

Toujours du cĂŽtĂ© du moteur de rendu, l’exigence minimale est dĂ©sormais OpenGL 2.1 sans extension spĂ©ciale. Cela signifie que le matĂ©riel le plus limitĂ© qui puisse faire tourner Unvanquished inclue les ATI R300, les Intel GMA 3 et 4 (sous Linux) et les Nvidia NV40. Parfois mĂȘme un OpenGL 2.1 incomplet pourrait suffire !

Votre carte graphique est prise en charge. Si cela ne fonctionne pas alors qu’elle est censĂ©e prendre en charge OpenGL 2.1 (ou plus), c’est trĂšs probablement un bug de pilote.

Par exemple mĂȘme le VC4 du Raspberry Pi 3B+ peut soutenir 60 fps avec la prĂ©configuration la plus basse (lowest) et une rĂ©solution faible. Cependant le pilote a encore besoin d’ĂȘtre amĂ©liorĂ© pour ĂȘtre compatible avec tous les niveaux jouables.

La carte plat23 Un Raspberry Pi 3B+ dessinant la carte plat23 Ă  60 fps avec le prĂ©rĂ©glage « le plus bas Â»â€Š

Jouer Ă  Unvanquished sur un RPI3 n’est vraiment pas recommandĂ© (la mĂ©moire vive disponible sera aussi trĂšs limitante), mais si un RPI3 arrive Ă  tenir le rang, c’est que le jeu tourne sur vraiment n’importe quoi, y compris sur un topinambour (parce que mĂȘme une patate ça serait du luxe đŸ€­ïž).

Voici quelques optimisations qui ont Ă©tĂ© faites pour Ă©tendre la compatibilitĂ© du moteur :

  • L’extension GL_ARB_half_float_vertex n’est plus requise. Cela s’ajoute au fait que l’extension GL_ARB_framebuffer_object n’est plus non-plus requise depuis la version 0.54 pour ĂȘtre compatible avec plus de matĂ©riel. La rĂ©Ă©criture faite par Slipher pour prendre en charge Ă  la fois les vertex demi-flottants ou les vertex plein-flottants a mĂȘme amĂ©liorĂ© les performances du moteur (code plus concis, code plus performant, et qui permet plus de chose
 tout ça Ă  la fois) !
  • Les textures 3D ne sont plus requises. C’est quelque chose qui est obligatoire en OpenGL 2.1, mais le moteur peut faire sans lorsque l’implĂ©mentation est incomplĂšte. De telles implĂ©mentations incomplĂštes peuvent ĂȘtre trouvĂ©es avec certaines puces graphiques embarquĂ©es conçues pour OpenGL ES, et Mesa se permet de fournir « autant qu’il peut » d’OpenGL pour faire fonctionner les compositeur de bureau. Le moteur DĂŠmon sait dĂ©sormais se satisfaire lui-aussi d’une telle implĂ©mentation incomplĂšte.
  • Une collection de codes de dĂ©tection a Ă©tĂ© implĂ©mentĂ©e pour identifier des pilotes buggĂ©s ou lent, ainsi que des matĂ©riels lents. Quand c’est possible, un code moins buggĂ© ou plus rapide est activĂ© lors de l’exĂ©cution. Par exemple lors de ce cycle de dĂ©veloppement nous avons mis le pied dans ce que les dĂ©veloppeurs Intel caractĂ©risent comme un dĂ©faut matĂ©riel de l’architecture Iris (l’actuelle
), et ont suggĂ©rĂ© un contournement qui limite les dĂ©fauts visuels la plupart du temps. Il y a quelques annĂ©es nous avions identifiĂ© que le dernier pilote Nvidia pour toute une gĂ©nĂ©ration de carte donnĂ©e ment sur la prĂ©sence d’une extension, et plante si on tente de s’en servir, et ne sera jamais mis Ă  jour
 donc depuis un moment dĂ©jĂ  on le dĂ©tecte pour corriger ses prĂ©tentions. Il y a aussi une gĂ©nĂ©ration de vieilles cartes ATI qui sont plus rapides en flottants qu’en demi-flottant (la prise en charge annoncĂ©e par le pilote est trĂšs probablement une Ă©mulation pour permettre de faire fonctionner d’autres logiciels qui n’ont pas d’implĂ©mentation alternative), donc on dĂ©tecte et on utilise le code le plus adaptĂ© Ă  cette architecture. Il y a d’autres types de contournements mais ces trois-lĂ  sont reprĂ©sentatifs. Nous avions dĂ©jĂ  quelques-uns de ces contournements implĂ©mentĂ©s (comme celui pour certaines Nvidia), mais dĂ©sormais nous avons un procĂ©dĂ© standardisĂ© pour implĂ©menter de tels contournements et pour pouvoir les dĂ©sactiver (pour que les fabricants de matĂ©riel et/ou dĂ©veloppeurs de pilotes puissent reproduire les bugs, par exemple).

Bien sĂ»r toutes les amĂ©liorations de la vitesse d’exĂ©cution ont Ă©tendu la compatibilitĂ© en transformant des Ă©quipements « capable de faire le rendu » en « quelque chose avec lequel on peut jouer ».

Nous avons aussi ajoutĂ© la possibilitĂ© de compiler et exĂ©cuter un moteur DĂŠmon natif sur FreeBSD. Les binaires NaCl exĂ©cutĂ©s dans le bac Ă  sable tournent toujours dans le mode de compatibilitĂ© Linux, mais le moteur peut dĂ©sormais ĂȘtre natif FreeBSD. Une telle astuce doit probablement ĂȘtre utilisable sur d’autres systĂšmes qui ont une compatibilitĂ© Linux intĂ©grĂ©e (NetBSD par exemple, mais nous n’avons pas testĂ©), en utilisant un binaire natif pour le moteur et la compatibilitĂ© Linux pour la machine virtuelle du code du jeu.

Un point que nous aimerions amĂ©liorer dans le futur au niveau du moteur est l’utilisation mĂ©moire.

Nouveaux joujoux

Reflets sur des tuyaux dans la carte Chasm Remarquez les reflets sur les tuyaux !

Placage de reflet (trĂšs expĂ©rimental) : Tandis que notre moteur de rendu progresse, les reflets statiques qui Ă©taient complĂštement cassĂ©s sont dĂ©sormais en meilleur Ă©tat. Une fois activĂ©s, vous pourrez apercevoir votre environnement dans les matĂ©riaux rĂ©flĂ©chissants, comme des tuyaux mĂ©talliques, des plastiques brillants, et des surfaces excessivement polies
 Puisque cela est statique, seule la gĂ©omĂ©trie stationnaire de la carte est pour le moment reflĂ©tĂ©e, bien que cela soit suffisamment subtil pour que les diffĂ©rences ne soient pas trop Ă©videntes, surtout au beau milieu de l’action. En outre, les donnĂ©es de reflets sont enregistrĂ©es et chargĂ©es depuis le disque quand vous activez la mise en cache dans les options. Le code du moteur en charge de sĂ©lectionner les reflets pour chaque surface a aussi Ă©tĂ© amĂ©liorĂ©, apportant des reflets plus corrects et de grandes amĂ©liorations de performance.

SystĂšme de matĂ©riaux (trĂšs expĂ©rimental) : Une autre Ă©tape vers la modernisation du moteur est l’ajout d’un systĂšme de matĂ©riaux. Lorsque le matĂ©riel et les pilotes sont compatibles, cela dĂ©place de nombreuses tĂąches de rendu depuis le CPU vers le GPU, produisant ainsi un flux de travail centrĂ© sur le GPU. Bien que cela ajoute un peu plus de travail au GPU, cela Ă©limine une forte pression mise sur le CPU, ainsi que de nombreux aller-retours entre le moteur et le pilote et entre le CPU et le GPU. Sur les cartes les plus exigeantes pour le CPU (en particulier celles avec un “vis” mauvais, le vis est une reprĂ©sentation de la carte gĂ©nĂ©rĂ©e par le compilateur de carte qui dĂ©termine quelle partie devrait ĂȘtre visible selon le point de vue) cela peut doubler le taux de trame comparĂ© au moteur de base. Ce systĂšme est encore incomplet et de nombreuses amĂ©liorations sont Ă  venir.

Reaper est celui qui se cache derriÚre la réalisation de ces chantiers impressionnants.

Pour pouvoir en profiter il vous sera nĂ©cessaire d’avoir OpenGL 4.6 et (en plus) l’extension GL_ARB_bindless_texture. Il reste cependant des problĂšmes avec certains matĂ©riels et pilotes : tout devrait fonctionner avec Nvidia, le systĂšme de matĂ©riaux et le « frustum culling » devraient fonctionner avec Mesa (radeonsi pour AMD, etc.) quand la derniĂšre version de Mesa est utilisĂ©e (l’ « occlusion culling » ne fonctionne pas encore et pourrait planter avec un Mesa qui ne vient pas de la branche de dĂ©veloppement main
). Cela ne fonctionne pas avec le pilote propriĂ©taire AMD Ă  cause de bugs. Des contournements pour ces problĂšmes sont planifiĂ©s, mais tous n’ont pas Ă©tĂ© implĂ©mentĂ©s Ă  temps pour la sortie de cette version.

À venir

Parmis les dĂ©veloppements qui sont dĂ©jĂ  testables sur certains serveurs et qui seront disponibles dans la prochaine version, il y a le mode « vampire », qui est un mode alternatif de gestion des ressources : plutĂŽt que de miner du point de construction, chaque Ă©quipe se voit dotĂ©e d’un lot dĂ©terminĂ© de points en dĂ©but de partie et lorsqu’une Ă©quipe dĂ©truit une construction adverse elle s’approprie les points de construction associĂ©es. Ce mode « vampire » est Ă©valuĂ© comme une solution potentielle au problĂšme de certaines parties qui sont trop longues ou semblent bloquĂ©es avec des Ă©quipes trop bien fortifiĂ©es de chaque cĂŽtĂ©. Ce mode de jeu peut ĂȘtre testĂ© en avant-premiĂšre sur des serveurs comme Map&Bot Testing, Der Bunker, ou Bug Squash Central.

Il est temps de jouer !

Le jeu Unvanquished se tĂ©lĂ©charge ici et les parties en cours sont listĂ©es ici !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •