Slides richar_o

Preview:

Citation preview

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

Recommended