====== Système de rendu ======
Le moteur de rendu du client 3D principal est celui de [[fr:godot:start|Godot]].
Le principe de rendu sera celui d’un jeu en monde ouvert de type sandbox, il y aura donc une large quantité d’objets à texturer et afficher à l’écran. Le but n’étant pas de demander une machine de gamer pro pour faire tourner le jeu, il va falloir établir des règles en terme de budget de vertex, draw calls et mémoire qui permette de jouer confortablement pour une configuration moyenne.
===== Puissance nécessaire =====
====Configuration minimale pour jouer ====
Valeurs à indiquer une fois les tests établis
Système d’exploitation :\\
CPU :\\
GPU :\\
RAM :\\
Espace disque :\\
==== Éléments personnalisables ====
Ajouter les éléments au fur et à mesure de l’identification des besoins
Certains éléments devront être modulables au gré du joueur, afin d’optimiser les performances d’affichage selon la puissance de sa machine :
- Résolution
- Mode plein écran / fenêtré
- Distance d’affichage de la micro-végétation
- Qualité des textures
===== Gestion des environnements 3D =====
La progression du personnage doit se faire sans temps de téléchargement, le passage d’une zone à l’autre doit être le plus fluide possible pour la joueuse.
==== Textures ====
Le textureset est [[https://fr.wikipedia.org/wiki/Rendu_physique_r%C3%A9aliste|PBR]], avec des composants standards :
* basecolor
* roughness
* metallic (si pertinent)
* normal
* height
* ambient occlusion
* opacity (si pertinent)
* emission (si pertinent)
La fourniture des fichiers se fera en png au format 2048x2048, un fichier par composant, Godot se chargeant du packaging.
Pour un éventuel parallaxe/displacement, Godot se base sur une texture de [[https://docs.godotengine.org/en/stable/tutorials/3d/standard_material_3d.html#height|Depth]], à voir si on l’utilisera/ proposera l’activation, mais elle pourra être calculée depuis la Height si besoin, qui servira, elle, pour les calculs de shading.
La densité de texels par défaut est de 1024px/m pour un client en configuration basique. Il est possible d’envisager de downgrader la qualité pour les machines de moindre puissance.
Les textures doivent être pensées pour proposer des déclinaisons de leur aspect :
- neuf
- abîmé
Sauf matériau dédié, verre ou eau par exemple, on évitera de recourir à de l’alpha blending, et on préférera utiliser un alpha test pour des objets avec des transparences totales (grillage ou claustra par exemple).
Les trimsheets doivent être pensées horizontalement et des gabarits selon les destinations seront fournis.
Les gabarits à définir doivent permettre de remplacer un matériau par un autre avec la même organisation d’UV de l’asset, comme dans le jeu [[https://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques|Sunset Overdrive]].
Les textures doivent être bâties à partir d’éléments de base afin de garantir l’unité visuelle, avec des principes similaires à ce qui a été fait par [[https://www.youtube.com/watch?v=DRu_iWOJ2yg|Ubisoft pour Assassin's Creed Odyssey]]. Il est essentiel de se renseigner sur la base de matériaux existants et disponibles avant d’en créer de nouveaux.
==== Environnements extérieurs ====
Les zones extérieures doivent correspondre à des régions telles que définies dans la géographie du Khanat, ce ne sont sauf cas exceptionnels jamais des instances.
=== Ciel ===
Le ciel est dynamique, avec un shader qui calcule les alternances jour/nui correctement, ainsi que les déplacements des objets célestes, étoiles etc. Les événements atmosphériques sont également représentés visuellement.
=== Terrains ===
Dans l’attente d’une [[https://github.com/godotengine/godot-proposals/issues/6121|préconisation officielle de la part de Godot]] pour les vastes espaces de terrain, éviter de s’engager sur des options techniques.
== Macro-végétation ==
Tout ce qui est visible de loin, de taille arbres et arbustes, doit avoir un système de LOD pour en faciliter l’affichage, une optimisation manuelle du système intégré par [[https://docs.godotengine.org/en/stable/tutorials/3d/mesh_lod.html|Godot]] pourra être effectuée.
== Micro-végétation ==
Les éléments non visibles de loin, tels que l’herbe, les cailloux de petite taille, fleurs etc. doivent pouvoir s’afficher au fur et à mesure de l’avancée du personnage avec une distance réglable pour optimiser les performances.
== Cours d’eau ==
== Étendue d’eau statique ==
==== Environnements intérieurs ====
Les éléments de décor internes sont basés pour la plupart sur des éléments :
- modulaires
- texturés à l’aide de trimsheets et/ou de textures tuilables retravaillées par du vertex painting
- avec des decals de personnalisation
=== Modules ===
Le module de référence fait 4m x 4m x 4m.
Les tailles de sous-modules seront établies au cours des premiers tests de mise en place
==== Props ====
Les objets dans le décor doivent le plus possible reposer sur des trimsheets / textures tuilables et permettre les variations d’apparence à partir de quelques modèles de base : variations de couleur/motifs/usure grâce à des changements de textures essentiellement.
==== Créatures ====
La créature humanoïde de référence fait 1,70m.
{{tag>gamedesign khanat}}