Présentation
J’ai travaillé pendant 13 ans dans un studio de jeux vidéos (Arkane-studios) CV. Et aujourd’hui je travaille sur des logiciels libres ou du code opensource.
J’ai à cœur de contribuer à du code durable, maintenable, bien structuré ainsi que des programmes utiles pour l’utilisateur, qui lui rendent service.
Je considère l’informatique comme un outil, qui en tant que tel n’a d’intérêt que s’il apporte quelque chose : fonctionnalités, facilitées et automatisations. Avec une approche globale des projets, je prête attention aux interactions entre les différentes parties et technologies de ceux-ci .
Je propose mes services comme programmeur Rust et/ou logiciel libre. Je peux Ă©galement travailler en C/C++.
Technologies
Langages
- Rust, C++, HTML
Framework
Crates Rust
- async-std, clap, gtk-rs, puffin, serde, ...
Framework C++
- Mfc, Qt
Outils
- Git, Perforce, Puffin, Inkscape, Linux, Yunohost, ...
CV
Pause/Indépendant 2020 - Aujourd'hui :
Rust
Je me suis auto-formé à Rust (complété d’une formation de 4 jours). J’explore l’écosystème Rust, participe à des projets open-source comme Puffin et explore les possibilités du langage à travers des projets expérimentaux et/ou plus fonctionnel.
Dans ce cadre, j'ai crée et je maintiens les crates :
- StringId : Système léger pour gérer des identifiants sous forme de chaîne lisible par l’homme et de numéro unique.
- subtile : Une crate d'outils pour opérer des traitements sur les sous-titres.
- subtile-ocr : Convertit les sous-titres DVD VOB en sous-titres SRT avec Tesseract OCR.
subtile et subtile-ocr sont parties de la reprise de projet précédant qui n'était plus maintenu.
Arkane Studios 2007-2020Â :
Orchestrateur séquenceur V1 (Dishonored 1)
Pendant le développement de Dishonored 1, j’ai principalement travaillé à étendre l’outil Matinee d’Unreal Engine 3 entre autres pour le transformer en Orchestrateur séquenceur.
Ce travail nous à permis de l’utiliser pendant les phases de gameplay, il joue des “cinématiques” sur les PNJs pendant que le joueur continue d’évoluer dans le jeu. Plutôt que de fonctionner comme alternative au gameplay, il fonctionne en coopération (Ex: plutôt que de déplacer un PNJ directement, le système pouvait demander au PNJ d’aller à un point donné et la locomotion le faisait se déplacer).
Le système était même utilisé pour contrôler le joueur quand la narration le nécessitait. Notamment lors des intros de niveaux où la caméra est animée avant que son contrôle ne soit rendu au joueur.
L’édition elle se faisait avec des clés placées sur une timeline, à la façon d’un logiciel de montage vidéo.
Orchestrateur séquenceur V2 (Dishonored 2)
Pour le développement de Dishonored 2, j’ai principalement redéveloppé le système d’Orchestration séquenceur. En partant de l’expérience sur Dishonored, le système à été redéveloppé de zéro (dans le cadre du passage au Void Engine) et étendu en termes de fonctionnalités et d’usages.
En plus de servir pour créer et jouer les cinématiques de narration, il servait pour du script de Level Design ainsi que pour le gameplay.
- Narration : Toutes les cinématiques de narration, se jouant pendant les phases de gameplay où celle contrôlant le joueur.
- Level Design : Il a notamment servi pour animer/déplacer les structures mobiles de la “Clockwork Mansion”.
- Distractions : Les distractions sont des petites routines que les PNJs peuvent jouer quand ils font leur patrouille. Le système permettait d’adapter la distraction générique au contexte et donc la réutilisation.
- Gameplay : Il était, par exemple, utilisé pour les assassinats, permettant de facilement synchroniser animation, sons, événements gameplay (dégâts) entre plusieurs entités. C’était un composant essentiel de l’aspect data driven du gameplay.
Note: Le Void Engine est basé sur une base d’id Tech 5 qui a été fortement modifié (ECS, Rendu, script logique, Orchestrateur séquenceur).
Système de commande éditeur
Dans le cadre de la refonte de pans entier de l’éditeur du Void Engine, j’ai travaillé à la mise en place d’un système pour isoler le code de traitements du code de l’interface, et gérer ses traitements de manière générique. Ce système à été mis en place pour faciliter le développement, le débogage, uniformiser le code, le rendre le code plus maintenable, avoir plus de code générique et pouvoir scripter des traitements/transformations.
Veille Technologique :
En parallèle de mon travail à Arkane, je suivais les actualités de l’univers de l’open source, notamment autour de Linux. Je me suis notamment intéressé à Git et Rust que je n’avais pas l’occasion d’utiliser pas dans mon travail. Deux technologies dont j’ai assez vite perçu les intérêts.
Bois
J’ai également travaillé le bois pour créer divers objets pour moi ou sur demande. Le travail du bois pouvant être complété par de la gravure laser, de l’huilage coloré ou de la lumière des LEDs. J’ai par exemple fabriqué des luminaires, veilleuses pour enfant, appliques, bac pour plantes, stick d’arcade.