Cours 8¶
Le level design¶

Un bon niveau n'est pas un beau décor, en tout cas, pas que.
C'est un décor qui informe, guide ou récompense.
Couleurs¶

Balisage¶
Le balisage (ou signposting) c'est les techniques de design (visuelles, sonores ou narratives) utilisées pour guider le joueur, orienter son attention sans l'interrompre avec des textes ou des flèches.
Lumière
L'oeil va vers le plus clair
Couleur
Une tache contrastée dans un décor uniforme attire
Lignes
Chemins, clôtures, rangées d'arbres pointent quelque part

Repères (landmarks)
Un élément visible de partout (tour, arbre géant)
L'éclairage¶
Lumières par défaut¶

Pour voir ce que fait chaque lumière retirons ce que Unity allume par défaut :
- Dans la Hierarchy, sélectionner Directional Light; dans l'Inspector, la désactiver (case à cocher en haut)

-
Ouvrir Window > Rendering > Lighting, onglet Environment :
- Environment Lighting > Intensity Multiplier à
0 - Environment Reflections > Intensity Multiplier à
0
- Environment Lighting > Intensity Multiplier à
Retirer le ciel
On peut aussi retirer le skybox en assignant None à Skybox Material, mais "Environment Lighting" se réaffichera avec une couleur d'ambiance. En appliquant noir, on arrive au même résultat.

Le ciel n'a plus de skybox, mais est bleu ! Ça c'est parce que la caméra applique un fond si aucun skybox n'est configuré.
- Ouvrir l'inspecteur de la caméra
- Sous environnement, remplacer background type par Solid Color
- Choisir noir, et là, c'est le noir total
Dans la scène, ça commence à être difficile de voir quoi que ce soit 😅

Les types de lumières¶
| Lumière | Métaphore |
|---|---|
| Directional Light | Le soleil (partout, une seule direction) |
| Point Light | Une ampoule (rayonne dans toutes les directions) |
| Spot Light | Un projecteur (cône orienté) |
| Area Light | Un panneau lumineux (baked seulement) |

Exemple d'éclairage¶




Modes¶
Le champ Mode de chaque lumière décide quand son éclairage est calculé.
| Mode | Calcul | Avantages | Limites |
|---|---|---|---|
| Realtime | À chaque image | Peut bouger, clignoter, changer de couleur | Taxant pour l'ordi. Pas de lumière qui rebondit |
| Baked | Une fois, dans l'éditeur | Gratuit en jeu, ombres douces, lumière indirecte | Figée : ne bouge pas, n'éclaire pas les objets mobiles |
| Mixed | Les deux | Indirect précalculé + ombres en temps réel | Le plus lourd des trois |
Baking

Le baking enregistre l'éclairage dans des textures (lightmaps) plaquées sur des objets statiques.
- Dans la Hierarchy, sélectionner le décor qui ne bouge jamais (sol, murs, rochers, bâtiments)
- Dans l'Inspector, ouvrir la flèche à côté de Static et cocher seulement Contribute GI

- Régler le Mode des lumières du décor à
Baked(ouMixed) - Ouvrir Window > Rendering > Lighting, onglet Scene : cliquer New sous Lighting Settings
- Section Baked Lighting Settings : Lightmapper =
Progressive GPU(beaucoup plus vite queCPU) - Dans la même section, Lightmap Resolution : passer de
40(défaut) à10texels environ, pour un calcul rapide quand on développe le jeu - Cliquer Generate Lighting (en bas de la fenêtre). La barre de progression est en bas à droite de l'éditeur
Si le bake reste trop long, dans la section Baked Lighting Settings :
| Réglage | Par défaut | Essayez |
|---|---|---|
| Direct Samples | 32 |
16 |
| Indirect Samples | 512 |
256 |
| Environment Samples | 256 |
128 |
| Max Bounces | 2 |
1 |
| Lightmap Parameters (au bas de la section) | Default-Medium |
Default-VeryLowResolution |
Combien de lumières par scène ?¶
- Baked : pas de limite
- Realtime :
- 256 sur PC et console
- 32 sur mobile
- 16 en Web 👈👈👈
Ombres¶
Chaque lumière temps réel (mode = realtime) qui projette des ombres recalcule la scène à chaque image et c'est assez lourd pour l'ordinateur à calculer. Voici des recommandations :
- Shadow Type =
No Shadowssur les lumières décoratives - Garder les ombres pour la Directional Light et une ou deux lumières clés, pas plus
- Si possible, utilisez "Hard shadow" pour un gain de performance
Qualité des ombres¶

Des ombres floues, en "escalier" ou qui disparaissent au loin ? Ça se corrige, mais au détriment de la performance.
URP Asset¶

L'URP Asset gère entre autres les ombres temps réel de tout le projet
- Ouvrir Edit > Project Settings > Quality et repérer le Render Pipeline Asset du niveau de qualité actif (ex. :
PC_RPAsset) - Dans le panneau Project, sélectionner cet asset (dossier Assets > Settings)
- Dans l'Inspector :
| Réglage | Effet | Point de départ |
|---|---|---|
| Lighting : Main Light > Shadow Resolution | Netteté des ombres de la Directional Light | 2048, 4096 au besoin |
| Lighting : Additional Lights > Shadow Atlas Resolution | Netteté des ombres des Point et Spot Lights | 2048 |
| Shadows : Max Distance | Distance jusqu'où les ombres sont dessinées. Plus courte = plus nette | 50 à 80 m |
| Shadows : Cascade Count | Découpe la distance en tranches : plus de détail près de la caméra | 4 |
| Shadows : Soft Shadows | Adoucit les bords | Coché, Quality Medium |
Source lumineuse¶

On peut aussi gérer granulairement l'ombre via la source lumineuse dans son Inspector
- Shadow Type :
Soft Shadows(bords doux) ouHard Shadows(bords nets, moins taxant pour l'ordi) - Strength :
1= ombre plein,0= ombre transparent - Bias à
Custompour corriger les éléments suivant :- Rayures sur les surfaces (shadow acne)
- Ombre décollée de l'objet (peter panning)
Lumière vacillante¶

Une lumière dont l'intensité varie sans cesse donne vie à une scène figée (torche, bougie, néon défectueux).
- Dans la Hierarchy, sélectionner la lumière (Point ou Spot); dans l'Inspector : Mode =
Realtime(une lumière baked ne peut pas varier), Shadow Type =No Shadows - Dans le panneau Project, dossier Assets > _ > Scripts : clic-droit Create > MonoBehaviour Script, le nommer
LumiereVacillante, y coller le code ci-dessous - Glisser le script sur la lumière, puis régler les valeurs dans l'Inspector
using UnityEngine;
[RequireComponent(typeof(Light))]
public class LumiereVacillante : MonoBehaviour
{
public float intensiteMin = 0.6f;
public float intensiteMax = 1.4f;
public float vitesse = 7f;
Light lumiere;
float decalage;
void Start()
{
lumiere = GetComponent<Light>();
decalage = Random.Range(0f, 100f);
}
void Update()
{
float bruit = Mathf.PerlinNoise(decalage, Time.time * vitesse);
lumiere.intensity = Mathf.Lerp(intensiteMin, intensiteMax, bruit);
}
}
Les materials¶

Un material associe un shader (la façon de calculer la surface, ici Universal Render Pipeline/Lit) à des réglages.
| Paramètre | Rôle |
|---|---|
| Base Map (ou albedo) | Couleur ou texture de la surface |
| Normal Map | Une texture violette/bleutée qui simule des creux et des bosses sans modifier la forme 3D |
| Emission | La surface émet sa propre lumière |

Créer un material¶
- Dans le panneau Project, dossier Assets > _ > Materials : clic-droit Create > Material, le nommer (ex. :
M_SangouSang) - Dans l'Inspector, configurer les réglages

- Glisser le material depuis le panneau Project sur l'objet dans la Scene ou la Hierarchy
L'ambiance¶
Skybox procédural¶

- Dans le panneau Project, dossier Assets > _ > Materials : clic-droit Create > Material, le nommer
M_Ciel - Dans l'Inspector, champ Shader, choisir Skybox > Procedural
- Ouvrir Window > Rendering > Lighting, onglet Environment : glisser
M_Cieldans Skybox Material - Dans l'Inspector de
M_Ciel, ajuster les champs Sky Tint, Ground, Atmosphere Thickness et Exposure
Skybox HDRI
Un HDRI est une photo panoramique à 360° qui sert de ciel tout en éclairant la scène de façon crédible.
- Sur Poly Haven , menu Assets > HDRIs : choisir un ciel, format HDR, résolution 2K (4K pour un ciel très visible; 8K alourdit le build sans gain visible)
- Glisser le fichier
.hdrdans le panneau Project, dossier Assets > _ > Textures - Sélectionner la texture; dans l'Inspector : Texture Shape =
Cube, puis Apply - Dans le panneau Project, dossier Assets > _ > Materials : clic-droit Create > Material, le nommer
M_Ciel_HDRI; dans l'Inspector, Shader = Skybox > Cubemap - Glisser la texture dans le champ Cubemap (HDR); régler Exposure et Rotation pour placer le soleil de la photo
- Window > Rendering > Lighting, onglet Environment : glisser
M_Ciel_HDRIdans Skybox Material, et Environment Lighting > Source =Skybox - Dans la Hierarchy, orienter la Directional Light dans la même direction que le soleil de la photo : sinon les ombres contredisent le ciel
- Cliquer Generate Lighting pour que la lumière ambiante tienne compte du nouveau ciel
Brouillard¶


Cache le bout du monde, donne de la profondeur. Ajoute un peu de mysterieux à la scène.
- Window > Rendering > Lighting, onglet Environment
- Other Settings, cocher Fog
Petit truc
Ajuster la couleur pour quelle soit proche de celle de l'horizon du skybox. Ce sera plus convainquant.
Le post-traitement URP¶
Le post-traitement (post-processing) applique des effets à l'image entière, après le rendu. Un peu comme un filtre de photo. Attention, car cela peut affecter les performances de votre jeu.
Le Volume¶
- Dans la Hierarchy : clic-droit Volume > Global Volume
- Dans l'Inspector, champ Profile : cliquer New
- Cliquer Add Override > Post-processing et choisir un effet (ex. : Bloom, Film Grain, etc.)
- Sélectionner la Main Camera; dans l'Inspector, section Rendering : cocher Post Processing
Volume local
En mode Global, le volume s'applique partout. En mode local, il fonctionne à un endroit précis. Son usage ressemble à celui du CES.

Volume global + animation + CES
On peut alors penser à transitionner l'effet d'un volume en modifiant son weight. À 0, l'effet du post-processing est annulé, à 1, il est à 100%.
Build¶
Un build est une version du jeu détachée du logiciel Unity.
- File > Build profiles
- Cliquer sur Scene List et ajouter les scènes du jeu
-
Cliquer sur Windows, dans la colonne de gauche
Windows n'est pas là ?
Si Windows n'est pas disponible dans la colonne de gauche :
- Cliquer sur Add build Pofile, puis installer Desktop / Windows
- Redémarrer Unity Hub
- File > Build profiles, cliquer sur Add build Pofile > Desktop / Windows, puis Add Build Profile
- Cliquer "Build"
- Enregistrer dans un dossier "build" à la racine du projet.

Le premier build est toujours plus long
Trello¶

- Semaine 1
- Semaine 2
- Semaine 3
- Semaine 4
- Semaine 5
- Semaine 6
- Semaine 7 | 🏃🏻♂️ Sprint 1 : Prototype
- Semaine 8 | 22 octobre ⭐️ Aujourd'hui
- Semaine 9 | 29 octobre 🏃🏻♂️ Sprint 2 : Tranche verticale
- Semaine 10 | 5 novembre
- Semaine 11 | 12 novembre
- Semaine 12 | 19 novembre 🏃🏻♂️ Sprint 3 : Alpha
- Semaine 13 | 26 novembre
- Semaine 14 | 3 décembre 🏃🏻♂️ Sprint 4 : Beta
- Semaine 15 | 10 décembre 🏃🏻♂️ Sprint 5 : Oral
Nouvelles cartes :
MustAjuster la qualité des ombres (URP Asset et/ou lumière clé)MustGuider vers un objectif, sans flèche, ni texteMustAjouter un Global Volume pour un post-traitement simpleMustRemplacer le ciel (skybox)
ShouldAjouter un Volume à une zone qui change d'ambianceShouldAjouter un brouillard dont la couleur s'accorde à l'horizon du skyboxShouldFaire un bake de l'éclairage du décor statiqueCouldAjouter une lumière qui vacille (torche, bougie, néon)
Devoirs¶
- Terminer la tranche verticale : la zone 1 habillée, éclairée, animée et sonorisée
- Préparer un build Windows qui se lance sans erreur
- Lire l'énoncé du projet final
