Files

PS Strategic Vision

Plugin Unreal Engine 5.7 d'affichage stratégique pour vues spectateur et replays : cônes de vision des personnages, et d'autres visualisations à venir.

Installation dans un projet

Copier (ou cloner) ce dossier dans Plugins/PS_StrategicVision/ du projet, puis activer le plugin dans le .uproject ou via Edit > Plugins.

En submodule git :

git submodule add <url-du-repo> Plugins/PS_StrategicVision

Le plugin est en C++ : le projet hôte doit être un projet C++ (il sera compilé avec le projet).

Contenu

Élément Rôle
UPS_VisionConeComponent Component à poser sur un personnage : affiche son cône de vision (mesh procédural, bloqué par les murs, plan toujours horizontal).
UPS_StrategicDisplayComponent Classe de base commune à tous les affichages stratégiques (camp, activation, couleur). Les futurs components en hériteront.
IPS_VisionSource (interface) À implémenter sur l'acteur pour injecter l'origine/direction de vision réelles (ex : caméra VR).
UPS_StrategicVisionSubsystem Subsystem monde : interrupteurs globaux (tout, par catégorie, par camp).
UPS_StrategicVisionSettings Réglages projet : activation au démarrage, style par camp (couleur, hachures), matériau.
M_VisionCone (Content) Matériau translucide unlit avec hachures procédurales, utilisé par défaut.

Utilisation

1. Poser le cône de vision

Dans le Blueprint du personnage (ou en C++), ajouter le component PS Vision Cone (idéalement attaché au root / à la capsule). Régler :

  • Team : Player, Ally, Enemy ou Neutral — détermine la couleur et l'angle des hachures (configurables dans Project Settings > Plugins > PS Strategic Vision).
  • View Distance / View Angle Degrees : portée et ouverture du cône.
  • Trace Channel : canal de collision utilisé pour bloquer le cône sur les murs (Visibility par défaut).

Le plan du cône est toujours horizontal, même si l'acteur est incliné, et il est projeté à la hauteur du sol détecté (Project To Ground).

2. Cas VR : injecter la position/direction de la caméra

Si l'acteur reste à l'origine pendant que la caméra bouge (pawn VR), implémenter l'interface PS Vision Source sur l'acteur (Class Settings > Interfaces en Blueprint) et surcharger Get Vision View Point :

  • Out Location = position monde de la caméra ;
  • Out Forward Direction = direction du regard (seul le cap horizontal est utilisé) ;
  • retourner true.

Le component l'utilise automatiquement (Use Owner Vision Source, activé par défaut). Retourner false pour repasser sur le transform du component. Penser à mettre Trace Height à 0 si la position fournie est déjà à hauteur des yeux.

3. Activer / désactiver selon l'état de jeu

Tout est masqué par défaut : au démarrage d'une partie, aucun affichage stratégique n'est visible (modifiable via bEnabledAtStartup dans les settings). L'activation se fait via le subsystem (Blueprint : nœud Get PS_StrategicVisionSubsystem, ou UPS_StrategicVisionSubsystem::Get() en C++) :

  • SetGlobalDisplayEnabled(true) — active l'affichage stratégique (ex : entrée en mode spectateur ou replay) ;
  • SetVisionConesEnabled(bool) — uniquement les cônes de vision ;
  • SetCategoryEnabled(FName, bool) — par catégorie (pour les futurs components) ;
  • SetTeamEnabled(EPS_StrategicTeam, bool) — par camp (ex : ne montrer que les ennemis).

Chaque component a aussi son interrupteur local SetDisplayEnabled(bool) (actif par défaut — c'est l'état global qui masque tout au départ). Un component n'est visible que si son interrupteur local ET les interrupteurs globaux le permettent. Quand un cône est masqué, il ne fait plus aucune trace (coût nul).

4. Lisibilité des cônes superposés

Deux mécanismes, configurables par component (catégorie Vision Cone > Rendering) :

  • Contour (Show Outline, Outline Width, Outline Opacity) : bande plus opaque sur le pourtour du cône — chaque cône reste délimité même superposé.
  • Hachures procédurales (Hatching Enabled, Hatching Scale, Hatching Intensity) : rayures en espace monde dont l'angle dépend du camp (45° joueur, 90° allié, 135° ennemi par défaut — réglable dans les settings). Deux cônes superposés restent identifiables par l'orientation de leurs rayures.

Le matériau M_VisionCone fourni par le plugin gère ces options. Il est régénérable via Tools/generate_vision_cone_material.py (commandlet Python).

5. Matériau personnalisé (optionnel)

Assigner un matériau via Material Override (component) ou Default Cone Material (settings). Le component fournit au matériau :

  • paramètre vecteur Color : couleur du camp (alpha = opacité) ;
  • paramètres scalaires Opacity, HatchAngle, HatchScale, HatchIntensity ;
  • vertex colors : couleur du camp (alpha = opacité) ;
  • UV : U = position angulaire (0..1), V = distance normalisée (0..1) — pratique pour un fondu vers le bord du cône.

Recette minimale : matériau Translucent / Unlit, VertexColor → Emissive Color, VertexColor.A → Opacity. Laisser Two Sided décoché (la géométrie est déjà double face).

Note packaging : le matériau par défaut n'est référencé que par soft reference ; pour un build packagé, vérifier qu'il est bien cooké (Additional Assets to Cook, ou référence en dur via Material Override).

Performance

  • ArcSegments (48 par défaut) = nombre de line traces par mise à jour.
  • UpdateInterval : 0 = chaque frame ; augmenter (ex : 0.05) si beaucoup de personnages affichent leur cône simultanément.

Roadmap

  • Cône de vision bloqué par les obstacles
  • Source de vision injectable (VR) via interface
  • Contour + hachures procédurales pour les superpositions
  • Autres affichages stratégiques (trajectoires, zones d'alerte, ...) sous forme de components héritant de UPS_StrategicDisplayComponent