Ubisoft MontréalDéveloppement et amélioration
d’outils internes en C#
Théo RichartMTI 2012
CONTEXTE
Ubisoft
French company founded in 1986
3rd world video game publisher
1 billion US$ revenue
Over 5,000 employees in the world
Ubisoft Montréal
2,000 employees
Largest Ubisoft Studio in the world
Assassin's Creed, Watch Dogs, Prince of Persia, Just Dance, ...
Équipe
Equipe outils du projet Assassin's Creed
15 personnes parmi plus de 200 dans le monde
Mon maître de stage
Anthony Brien : Lead technique équipe outils
Fondateur du studio à Montréal
A travaillé sur AC1, AC2, Prince of Persia, ...
Sujet du stage
Développement d'outils internes en C#
Développement et corrections rapides
Les utilisateurs sont des collègues
Utilisés par les créateurs de contenu
Artistes, Game designers, ...
OBJECTIFS
Objectifs globaux
Améliorer efficacité et productivité des utilisateurs
Outils nouveaux ou existants
Optimisation
Produire du code réutilisable par l'équipe et par les autres projets
Moyens
Documentation Confluence
Disponibilité de mon maître de stage et mes collègues
Code documenté
Formations internes et « capsules »
Planning
Stage de 6 mois
Du 6 février au 3 août
Quatre projets notables
Points de contrôle
Code reviews
Build farms
Tests unitaires et testeurs
Meetings hebdomadaires
RÉALISATIONS
Notions préliminaires
Protocole réseau Arrow
Scimitar : Moteur de jeu (C++)
GuildLib : base de données
(C++)
Anvil : Editeur
de contenu
(C#)
World Issue System
Plugin Anvil en WPF
Intégration avec JIRA
Création, édition, affichage et recherche d'incidents liés à un niveau
Interface
World Issue System
Grande phase d’optimisation :
Parallélisation JIRA
Virtualisation WPF
Mise en cache
World Issue System
Outil déployé
Repris par d’autres équipes
Plusieurs phases d’amélioration
En cours d’adoption
Enum Customization
Personnalisation des énumérations
Utilisé par les DT
Résultat pour tout le monde
Déployé, repris par les
autres projets
Anvil Startup
Temps de démarrage d'Anvil : 40s
Profiling afin de déterminer les goulots d'étranglement
Anvil Startup
Parallélisation :
Migration vers .NET4 pour la Task ParallelLibrary
Découpage en blocs fonctionnels
Initialisation
UI
Pipeline
Configuration Plugins
Anvil Startup
Recherche de processus
Recherche de l'exécutable de Scimitar
Différents noms selon la configuration
Utilise WMI et WQL
Anvil Startup
Sérialisation XML
Utilisait les XmlSerializers du framework
Comparatif avec d'autres solutions : Json.NET 2 fois plus rapide
0.002.004.006.008.00
10.00
Anvil Startup
Temps de démarrage : 25s
Modifications déployées, reprises par d’autres équipes
Property Browser
Remplace la Property Grid vieillissante en WinForms
Affichage et édition des propriétés des objets du jeu
Outil préexistant, mais non utilisé
Property Browser
Property Browser
Intégration depuis une autre branche de code
Implémentation pour Scimitar
Optimisation et refactoring
En cours de déploiement, collaboration avec d’autres équipes
BILAN
Bilan
Stage passionnant, enrichissant
Mené à une embauche
Belle conclusion de mes études
Merci à mon maître de stage, Anthony Brien