LS Liam Schott
Étude de cas · Alternance · Dwarf Animation Studio

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.

Rôle
Développeur alternant R&D
Année
2025 – 2026
Stack
Python · Flask · Vue.js
Contexte
Studio d'animation 3D
NightCrawler
Flask Unreal Engine Perforce Deadline
01

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.

02

Le pipeline

De la détection au monitoring, chaque nuit suit la même séquence automatisée :

Étape 01
Déclenchement Cron à heure configurable
Étape 02
Lecture des changelists Perforce
Étape 03
Analyse des dépendances dans Unreal Engine
Étape 04
Génération des commandes de rendu
Étape 05
Soumission des jobs à Deadline
Étape 06
Monitoring temps réel via dashboard Vue.js
03

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.

04

Stack technique

Backend

Python Flask SQLAlchemy P4Python UE5 scripting Deadline REST API Cron

Frontend & méthodo

Vue.js 3 TypeScript PrimeVue Tests unitaires Tests fonctionnels Cahier des charges
05

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.

07

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.

Projet suivant
dw_deadline_tray