28
Ubisoft Montréal Développement et amélioration d’outils internes en C# Théo Richart MTI 2012

Slides richar_o

  • Upload
    richaro

  • View
    137

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Slides richar_o

Ubisoft MontréalDéveloppement et amélioration

d’outils internes en C#

Théo RichartMTI 2012

Page 2: Slides richar_o

CONTEXTE

Page 3: Slides richar_o

Ubisoft

French company founded in 1986

3rd world video game publisher

1 billion US$ revenue

Over 5,000 employees in the world

Page 4: Slides richar_o

Ubisoft Montréal

2,000 employees

Largest Ubisoft Studio in the world

Assassin's Creed, Watch Dogs, Prince of Persia, Just Dance, ...

Page 5: Slides richar_o

Équipe

Equipe outils du projet Assassin's Creed

15 personnes parmi plus de 200 dans le monde

Page 6: Slides richar_o

Mon maître de stage

Anthony Brien : Lead technique équipe outils

Fondateur du studio à Montréal

A travaillé sur AC1, AC2, Prince of Persia, ...

Page 7: Slides richar_o

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, ...

Page 8: Slides richar_o

OBJECTIFS

Page 9: Slides richar_o

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

Page 10: Slides richar_o

Moyens

Documentation Confluence

Disponibilité de mon maître de stage et mes collègues

Code documenté

Formations internes et « capsules »

Page 11: Slides richar_o

Planning

Stage de 6 mois

Du 6 février au 3 août

Quatre projets notables

Page 12: Slides richar_o

Points de contrôle

Code reviews

Build farms

Tests unitaires et testeurs

Meetings hebdomadaires

Page 13: Slides richar_o

RÉALISATIONS

Page 14: Slides richar_o

Notions préliminaires

Protocole réseau Arrow

Scimitar : Moteur de jeu (C++)

GuildLib : base de données

(C++)

Anvil : Editeur

de contenu

(C#)

Page 15: Slides richar_o

World Issue System

Plugin Anvil en WPF

Intégration avec JIRA

Création, édition, affichage et recherche d'incidents liés à un niveau

Interface

Page 16: Slides richar_o

World Issue System

Grande phase d’optimisation :

Parallélisation JIRA

Virtualisation WPF

Mise en cache

Page 17: Slides richar_o

World Issue System

Outil déployé

Repris par d’autres équipes

Plusieurs phases d’amélioration

En cours d’adoption

Page 18: Slides richar_o

Enum Customization

Personnalisation des énumérations

Utilisé par les DT

Résultat pour tout le monde

Déployé, repris par les

autres projets

Page 19: Slides richar_o

Anvil Startup

Temps de démarrage d'Anvil : 40s

Profiling afin de déterminer les goulots d'étranglement

Page 20: Slides richar_o

Anvil Startup

Parallélisation :

Migration vers .NET4 pour la Task ParallelLibrary

Découpage en blocs fonctionnels

Initialisation

UI

Pipeline

Configuration Plugins

Page 21: Slides richar_o

Anvil Startup

Recherche de processus

Recherche de l'exécutable de Scimitar

Différents noms selon la configuration

Utilise WMI et WQL

Page 22: Slides richar_o

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

Page 23: Slides richar_o

Anvil Startup

Temps de démarrage : 25s

Modifications déployées, reprises par d’autres équipes

Page 24: Slides richar_o

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é

Page 25: Slides richar_o

Property Browser

Page 26: Slides richar_o

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

Page 27: Slides richar_o

BILAN

Page 28: Slides richar_o

Bilan

Stage passionnant, enrichissant

Mené à une embauche

Belle conclusion de mes études

Merci à mon maître de stage, Anthony Brien