NightCrawler
Un pipeline d'automatisation des rendus nocturnes pour la production d'animation 3D — de la détection des changements Perforce jusqu'à la soumission Deadline, sans aucune intervention humaine.
Vue d'ensemble
Chez Dwarf Animation Studio, les pipelines de rendu 3D mobilisent des ressources serveur considérables. NightCrawler automatise ce processus nuit après nuit.
Il surveille le dépôt Perforce, identifie les assets modifiés, résout leurs dépendances dans Unreal Engine, puis soumet les jobs de rendu à Deadline — sans intervention humaine.
Avant d'écrire la première ligne de code, j'ai exploré les APIs des outils impliqués (P4Python, UE5 scripting, Deadline REST API), développé un prototype pour valider l'architecture, puis rédigé et présenté un cahier des charges formalisé.
Problème résolu
Les artistes soumettaient manuellement leurs rendus en fin de journée, avec risque d'oublis et de temps machine perdu. Tout changement Perforce déclenche désormais les rendus la nuit suivante.
Approche adoptée
Architecture orientée événements : un scheduler interroge Perforce, un moteur de dépendances UE détermine les fichiers impactés, et l'API Deadline reçoit les jobs formatés.
Le pipeline
De la détection au monitoring, chaque nuit suit la même séquence automatisée :
Fonctionnalités
Analyse Perforce
Connexion via P4Python pour extraire les changelists nocturnes. Filtrage par workspace, type de fichier et chemin pour cibler précisément les assets à traiter.
Résolution de dépendances
Unreal Engine est piloté en headless pour analyser le graphe de dépendances — materials, textures, blueprints — et inclure tous les fichiers impactés.
CRUD complet
Configurations de rendu gérées via SQLAlchemy, par scène, séquence ou asset.
Soumission Deadline
Job descriptions générées avec résolution, frame range, pool et priorité.
Scheduling Cron
Tâches récurrentes planifiées, heure de démarrage configurable depuis l'UI.
Dashboard de monitoring
Interface Vue.js pour visualiser l'état des jobs en temps réel, consulter les logs et gérer les configurations sans toucher au code.
Stack technique
Backend
Frontend & méthodo
Comment c'est construit
L'API Flask expose des endpoints REST pour la gestion des configurations et le déclenchement manuel, et sert de bridge entre les systèmes tiers.
SQLAlchemy gère la persistance : configurations, historique d'exécution, statuts des jobs et logs détaillés, interrogeables depuis le dashboard.
L'intégration Perforce via P4Python interroge les changelists pour extraire les assets modifiés depuis la dernière exécution.
Unreal Engine est lancé en mode headless (commandlet) pour analyser le graphe de références et identifier tous les fichiers dépendants.
Les jobs Deadline sont construits programmatiquement avec le plugin Movie Render Queue, puis soumis via l'API REST.
Le frontend Vue.js / TypeScript (PrimeVue) offre gestion des configs, monitoring et exploration des logs — pensé pour les artistes, pas les développeurs.
Visuels
Apprentissages
NightCrawler m'a confronté à des défis techniques et organisationnels réels, dans un environnement de production professionnel.
Intégration systèmes
Connecter Perforce, Unreal Engine et Deadline impose de comprendre des APIs très différentes, souvent peu documentées, et de gérer les erreurs de chaque couche.
UX pour non-développeurs
Concevoir pour des artistes 3D signifie masquer la complexité technique derrière des actions simples et des statuts lisibles en un coup d'œil.
Gestion de projet
Rédiger un cahier des charges, présenter aux utilisateurs, recueillir du feedback et itérer — un apprentissage autant technique qu'humain.