Blog de développeur : surbrillance et coupe des cimes

Bonjour à tous, je suis Mod Saj et je suis là pour vous parler des améliorations sur lesquelles nous travaillons en matière de visibilité.

Un stade préliminaire de ces améliorations a été présenté lors des révélations effectuées à RuneFest. Elles comportent trois fonctions qui vous permettront de parcourir des environnements denses sans perdre votre personnage de vue, et vous permettre de trouver plus facilement les objets et PNJ avec lesquels vous pouvez interagir.

Dans cet article, j'expliquerai brièvement comment cela fonctionne et je vous montrerai comment cela affectera vos sessions de jeu.

Surbrillance

« Vous pratiquez une nouvelle compétence et elle vous a emmené dans un endroit que vous n'aviez jamais visité jusqu'à présent. Il est temps de déplacer votre souris dans tous les sens pour voir les éléments avec lesquels vous pouvez interagir dans le coin ! »

Si le paragraphe ci-dessus vous semble familier, vous n'êtes pas seul. Nous sommes presque tous passés par là.

Il n'est pas toujours évident de voir les éléments interactifs. Par exemple, essayez de découvrir tous les éléments avec lesquels vous pouvez interagir sur les lieux présentés dans ces images. Facilitons la chose et ignorez ce que vous pouvez seulement examiner :

Vous avez terminé ? Voici les éléments avec lesquels vous pouvez interagir, comme nous le voyons sur la version mobile, avec la mise en surbrillance active :

Comme vous le voyez, cela varie d'un lieu à l'autre, mais ce n'est pas si évident que cela, même si vous êtes un joueur chevronné.

La surbrillance vous aidera en ajoutant des contours brillants autour de la quasi-totalité des éléments interactifs (joueurs, PNJ, butins et arbres) pour les rendre plus évidents et plus facilement repérables. Les éléments qui peuvent seulement être examinés font exception à cette règle et n'auront pas de contours brillants, car cela créerait beaucoup trop de distractions visuelles. Nous voulions également indiquer clairement que vous pouviez cliquer ou appuyer sur les éléments en surbrillance pour effectuer directement une action, contrairement à l'examen de ces éléments, qui vous demande de sélectionner une action dans le mini-menu.

Comme vous l'avez compris en regardant les images plus haut, les différents types d'objets seront mis en surbrillance via différentes couleurs. Nous sommes allés un peu plus loin en ce qui concerne les PNJ et les joueurs et nous vérifierons s'ils sont amicaux ou hostiles, afin que vous puissiez rapidement savoir s'ils veulent vous offrir un aller simple vers le sablier de la Faucheuse ou s'ils se contentent de vaquer à leurs occupations.

Avant de passer à la suite, voici quelques vidéos pour vous présenter cela en action, tout d'abord sur le client PC où nous mettons des éléments en surbrillance lorsque vous déplacez votre curseur :

Il n'y a pas de curseur sur la version mobile. Au lieu de cela, nous mettons en surbrillance les éléments autour de votre personnage lorsqu'il se déplace, avec une possibilité d'activation/désactivation rapide lorsque vous en avez besoin :

Silhouettes des personnages

Nous ajoutons également à votre personnage des silhouettes visibles à travers les murs, le terrain et d'autres objets. Cela vous permettra de voir beaucoup plus facilement où vous vous trouvez à tout moment, notamment lorsque vous combinez cela à l'effet de coupe de cime des arbres.

Et voici cet effet en action :

Coupe de la cime des arbres

RuneScape possède beaucoup de forêts, et toutes ont un point commun : les arbres. Ils sont jolis, mais les arbres qui vous empêchent de voir ce que vous faites le sont moins, et vous le savez si vous avez gardé le bois perdu dans un coin de votre mémoire.

Pour résoudre ce problème, nous ajoutons une fonctionnalité qui vérifie si votre personnage n'est pas visible, avant d'appliquer autour de lui un effet qui rend les cimes d'arbres et la végétation de cette zone plus transparentes. La puissance de cet effet varie selon la visibilité de votre personnage. Lorsque la puissance atteint son maximum, certains éléments deviendront complètement transparents. Cet effet prend également les silhouettes en compte, afin que vous soyez clairement prévenu que votre personnage est partiellement obstrué.

Remarque : lors de sa sortie, cette fonctionnalité sera uniquement activée pour les cimes d'arbres. Une fois que certaines limitations techniques associées aux anciens contenus seront résolues, nous voudrions l'étendre aux branches d'arbre à l'avenir.

Discussion technique : aperçu du mode opératoire

Pour les curieux qui voudraient savoir comment cela fonctionne, cet effet est plutôt simple :

  • Nous commençons par afficher le jeu sans surbrillance. Procéder ainsi nous permet de remplir un « tampon de profondeur » avec des informations indiquant la distance séparant chaque pixel de la caméra.
  • Chaque objet que nous voulons mettre en surbrillance est ensuite affiché deux fois :
  • Une fois de plus grande taille avec la couleur de surbrillance ;
  • Une fois de taille plus petite et en noir.
  • Dans les deux cas, cela utilise le « tampon de profondeur » précédemment généré pour éviter d'afficher la surbrillance à travers des murs ou d'autres objets.
  • Un effet de flou est appliqué aux effets de surbrillance pour assouplir leurs bords et éliminer les éventuels bugs graphiques.
  • La surbrillance floue est ensuite ajoutée à l'écran.
  • Les silhouettes sont gérées de manière similaire. Au lieu de les afficher avec des tailles différentes et de les vérifier deux fois par rapport au tampon de profondeur, nous utilisons deux fois la même taille et vérifions seulement le tampon de profondeur lors de la dernière opération d'affichage.

    Et c'est tout pour le côté technique ! Nous avons étudié plusieurs méthodes et avons fini par choisir celle-ci, car elle nous offre la meilleure combinaison de contrôle visuel et de performances, nous permet d'utiliser différentes couleurs de surbrillance et d'étendre ce système plus avant dans le futur.

    Discussion technique : transformer les arbres en fenêtres

    Pour cette fonctionnalité, nous devons d'abord savoir si votre personnage est visible ou non. Nous effectuons cela via des « requêtes matérielles ».

    En deux mots, elles vous permettent de demander à la carte graphique le temps nécessaire pour afficher un élément, s'il est visible et le nombre de pixels qu'il occupe. L'un de leurs inconvénients réside dans le fait que, pour des raisons liées aux performances, nous ne pouvons pas obtenir les résultats d'une requête pour l'image utilisée, car cela contraindrait le processeur à attendre que la carte graphique ait fini d'afficher l'image entière. Pour éviter cela, nous n'extrayons pas les résultats tant qu'ils ne sont pas prêts. Ainsi, tout le système inclut un délai d'une ou deux images.

    Nous commençons par afficher le personnage du joueur lors de la dernière requête mentionnée ci-dessus, avant de comparer le nombre de pixels obtenu au nombre de pixels que celui-ci occuperait si aucun obstacle ne le gênait. Cela nous donne un pourcentage de visibilité. La conversion de ces chiffres en valeur de transparence implique de calculer sa moyenne par rapport aux valeurs obtenues pour les images et animations précédentes, afin que nous puissions éviter les oscillations rapides de transparence lorsque la caméra effectue de petits mouvements rapides. Une fois ce calcul de moyenne terminé, nous utilisons simplement la moyenne actuelle comme valeur d'entrée lorsque nous affichons les cimes et le feuillage. Plus cette valeur est basse, plus ces éléments seront transparents.

    Légende (Image 1 : profondeur de la scène | Image 2 : résultats de la requête, les pixels bloqués sont en rouge. | Image 3 : cimes des arbres affichées selon les résultats de la requête. | Image 4 : silhouette | Image 5 : scène finale)

    Dernier détail important : étant donné que nous utilisons des valeurs calculées selon ce qui était affiché sur l'image précédente pour modifier ce qui est affiché sur l'image actuelle, nous nous assurons que le processus considère que la transparence des cimes et du feuillage ne soit pas affectée par cette fonctionnalité à chaque fois que nous préparons une requête. Si nous ne procédions pas ainsi, nous n'obtiendrions jamais de résultats stables, et les valeurs de transparence finales fluctueraient sans cesse.

    Ce n'est qu'un au revoir

    Pour conclure, nous espérons que vous apprécierez ces changements ! Nous pensons que la plupart des joueurs remarqueront une nette amélioration. Cependant, nous reconnaissons également que certains préfèrent jouer sans ces nouveautés, ou pensent qu'elles pourraient rendre RuneScape moins immersif. Ainsi, même si ces améliorations de la visibilité seront activées par défaut lors de leur sortie pour les appareils compatibles, elles ne seront pas actives lors des cinématiques ou en mode de caméra libre. Il sera également possible de les désactiver via un paramètre des options graphiques.

    C'est à peu près tout. J'espère que cet article vous a plu et que vous avez hâte de voir ces améliorations de la visibilité. Nous espérons les sortir en même temps que notre événement de Pâques !


    Mod Saj

    Haut de la page