NPC Randomizer
NPC Randomizer
Outil in-engine - Animation / Character Art
Le NPC Randomizer est un outil in-engine développé exclusivement en blueprint sur Unreal Engine 5, et dédié à la personnalisation de personnages non-jouables de masse et à leur gestion dans les maps.
Une diversité de personnages sans limite et un gain de temps de production non négligeable !
Problématiques de contenu
-
Les maps peuvent nécessiter une grande quantité de personnages différents.
-
Il nous faut une diversité des vêtements et d'accessoires qui nous permet, en les combinant aléatoirement, d'avoir une infinité de combinaisons pour éviter les doublons et ajouter de la vie cohérente dans l'environnement.
Problématiques de production
-
On doit pouvoir intégrer un certain nombre de personnages dans les maps en quelques clics et pouvoir itérer rapidement dessus.
-
Les animateurs comme les character artistes et les level designers doivent pouvoir le faire facilement et directement en map.
Solution --> un outil dédié clé en main
Le NPC Randomizer, intégré directement aux tool windows existantes, accessible et performant.

Production
Défi
Répondre à un besoin de production en character art / animation sans outils de référence et en prenant en compte les contraintes de temps et de performance.
Développement solo
Logiciels utilisés


Temps de production
Plusieurs dizaines d'heures dispersées sur plusieurs mois de production
Développer un outil from scratch performant et accessible pour tous avec la complexité du fonctionnement qu'il induit.
Développer un outil futur-proof et modulaire capable d'être migré vers les futurs projets du studio.

Collaboration
Character Artists
Technical Artist
Animateurs
Concrètement
Possibilités
L'outil permet une randomisation de personnages, de leurs matériaux mais aussi des Custom Primitive Data liées (qui réduisent le coût en performance).
Performances
- En éditeur, la randomisation d'une grande partie de NPCs en une seul clic peut inclure un freeze de 1 seconde ou 2. Outre ce cas particulier, la randomisation est instantannée.
- In-game, les maps contiennent 95% de VATs. Le nombre de NPCs avec skelettes est donc moindre, et le coût en performance limité. Cependant, une certaine quantité de mémoire peut partir dans la gestion des animations (en animation blueprint), c'est un point qu'il a fallu gérer.
La différence avec le VAT Generator ?
Des personnages avec des comportements et des réactions...
...mais contenant des squelettes et des animations coûteuses in-game

Démo de randomisation de NPCs

Premiers tests techniques de la randomisation des parties du corps

Démo du système
d'accessoires et d'animation
sauvegarder le NPC sélectionné comme nouveau 'preset' en lui donnant un nom
charger un preset via une liste et l'appliquer sur le / les NPCs sélectionnés
Le subsystem de presets permet d'enregistrer et de réappliquer des randomisations de NPCs récurrents sans forcément leur créer de child class dédiées.
importer, intégrer, trier et paramétrer tous les assets (skeletal mesh) avec gestion de tags et de matériaux
Cette fenêtre nommée 'Data filler' permet de gérer et paramétrer tous les assets des NPCs sur une seule et même interface.
paramétrer et lancer une automation qui passe sur une ou plusieurs maps pour randomiser, fixer les NPCs ou faire un audit de leur état.
avoir une interface modulaire et personnalisable en fonction des paramétres et features souhaités
L'outil permet de...
personnaliser le / les NPCs sélectionnés avec autant de critères souhaités et itérer sur...
-
l'ensemble du corps
-
chaque partie du corps indépendamment
-
les spécificités (barbe, cheveux, peau)
-
les accessoires
La base de données de l'outil permet de rendre chaque paramétre interdépendant ou exclusif afin de personnaliser la randomisation sans mauvais résultats
faire spawn un NPC devant la caméra éditeur
accéder à tous les détails du / des NPCs sélectionnés en un coup d'oeil
Les données de personnalisation de chaque NPC sont stockées sur chaque entité via des tags. Le NPC Randomizer lui-même fonctionne sur une base de tags et de metadatas.
voir et changer l'animation du / des NPCs sélectionnés
