Migration d'un serveur de jeu massivement multijoueur de Scala 2.13 à Scala 3 : une odyssée d'un an

2025-02-06
Migration d'un serveur de jeu massivement multijoueur de Scala 2.13 à Scala 3 : une odyssée d'un an

Cet article détaille le parcours de l'auteur lors de la migration d'un serveur de jeu mobile multijoueur en production, vieux de quatre ans, de Scala 2.13 à Scala 3. Une première tentative a échoué en raison de la suppression de fonctionnalités clés dans Scala 3 (annotations de macro, projections de type) et des changements massifs de code nécessaires. Un an plus tard, une migration réussie a été obtenue grâce à une approche multiforme : application préemptive de la syntaxe Scala 3 dans la base de code Scala 2, utilisation des outils d'inspection de code d'IntelliJ, générateurs de code source personnalisés de sbt pour produire des lentilles Monocle et solutions créatives pour les projections de type. Les défis rencontrés comprenaient des conflits de dépendances et des temps de compilation lents, résolus en créant un fork d'une bibliothèque, en optimisant le code à l'aide de Tuple.Map de Scala 3 et d'autres techniques. Malgré les obstacles, la migration souligne la puissance et la valeur des capacités de métaprogrammation de Scala 3.

Développement