Les développeurs d’Unity ont mis en garde contre les changements à venir dans le moteur de jeu vidéo alors que l’équipe se familiarise avec le visage en mutation de .NET

  • FrançaisFrançais


  • Le développeur de logiciels Unity, Josh Peterson, a parlé de l’avenir du support .NET dans le moteur de développement de jeux largement utilisé.

    L’utilisation dans le développement de jeux est l’un des points positifs de la popularité de C #, selon une enquête réalisée à la fin de l’année dernière, mais son utilisation dans Unity est quelque peu compliquée.

    Le moteur de script C # est basé sur Mono, mais les développeurs peuvent également utiliser .NET Framework lors de l’exécution sous Windows. Mono est l’ancienne implémentation open-source de .NET, antérieure à la sortie de Microsoft lui-même avec .NET Core. Microsoft a acquis la gérance de Mono avec Xamarin en 2016, et Mono partage désormais un code substantiel avec .NET Core, mais il reste distinct et le runtime est toujours utilisé dans certains scénarios.

    Unity maintient son propre fork de Mono, qui, selon Peterson, est “d’environ deux ans de retard sur le dernier code en amont”. L’équipe met maintenant à jour ceci avec le dernier code du référentiel Mono en amont, un changement dont il est “confiant à 95%” le fera dans la prochaine version, Unity 2021.2. Il a ajouté que cet exercice améliorera les performances et corrigera les bogues, mais en soi “n’aura pas de nouvelles fonctionnalités .NET” – bien qu’il prépare le terrain pour des fonctionnalités à ajouter à l’avenir.

    Cela dit, Peterson s’attend à ajouter la prise en charge de .NET Standard 2.1 dans Unity 2021.2, mais cette fois avec seulement «75% de confiance». Les versions .NET Standard définissent l’ensemble des API qu’une implémentation .NET doit prendre en charge. Un aspect délicat de .NET Standard 2.1 est que .NET Framework est bloqué pour toujours sur .NET Standard 2.0. Peterson a déclaré: “Bien que .NET Framework ne prenne pas en charge .NET Standard 2.1, les bibliothèques de classes de Mono le prennent en charge, nous devrions donc être en mesure de fournir une passerelle intéressante vers un écosystème basé sur .NET Core.”

    La mise à niveau ne peut pas venir assez tôt pour certains développeurs frustrés par la lenteur des progrès. “Y a-t-il des progrès vers l’abandon de Mono au profit d’une intégration complète .NET? Surtout maintenant que .NET devient tellement multiplateforme”, a demandé un utilisateur en août de l’année dernière. Les fonctionnalités à la demande incluent Span , introduit dans C # 7.2, et l’opérateur Range, introduit dans C # 8.0. Microsoft a publié C # 8.0 en septembre 2019 et l’intégration de l’ensemble des fonctionnalités dans Unity a pris du temps. Les utilisateurs craignent également que les performances .NET dans Unity aient pris du retard.

    Peterson a déclaré que la prise en charge de C # 8.0 sera toujours basée sur Mono en 2021.2. Il a également exprimé l’espoir que C # 9.0, publié par Microsoft en novembre 2020, sera pris en charge, mais cela dépend de l’ajout de fonctionnalités à Mono et à IL2CPP (qui convertit le code .NET en C ++ pour la compilation), et pour cela sa confiance est descendue à 50 pour cent, dit-il.

    Quant à cette demande de migration vers .NET Core, ce n’est probablement pas de sitôt. Peterson a déclaré que Unity ignorera probablement .NET 5 au profit de .NET 6, qui est la prochaine version de support à long terme. Même alors, il a dit que “il semble que le runtime JIT ici sera Mono” mais il est incertain et a ajouté que “nous devrons peut-être passer directement à CoreCLR pour le support .NET 6”.

    L’un des problèmes est qu’une fonctionnalité de l’éditeur Unity appelée rechargement de domaine, qui réinitialise l’état de script, dépend d’une fonctionnalité (AppDomains) qui n’existe pas dans .NET Core. Peterson a déclaré que cela pourrait être mis en œuvre d’une autre manière, mais “ce sera un changement radical”. Pour les développeurs de jeux, .NET 6 constituera de toute façon un changement radical car “tout assemblage compilé avec mscorlib.dll à partir de l’écosystème .NET Framework ne fonctionnera pas et doit être recompilé”.

    La complexité autour de .NET Standard, .NET Framework, .NET Core et Mono est un défi pour les développeurs d’Unity et montre que l’unification de .NET par Microsoft est en réalité un processus, pas quelque chose qui s’est passé du jour au lendemain avec la sortie de .NET 5.0 l’année dernière.

    “La seule chose qui m’intéresse est la prise en charge de .NET 6. Le plus gros problème que j’ai rencontré était la lenteur des performances de l’éditeur et le temps d’itération long à mesure que la taille du projet augmente. J’ai actuellement abandonné Unity parce qu’il était trop pénible à utiliser et je suis passé à Unreal à droite maintenant “, a déclaré un autre utilisateur, ajoutant que” Mono sera bientôt de l’histoire et il n’a pas d’avenir “.

    Dans un article séparé, Peterson a souligné que “tout ce qui est discuté ici est sujet à changement. Veuillez ne pas considérer les discussions sur ce fil comme des annonces officielles.” Au lieu de cela, il a dit qu’ils offrent «un aperçu de nos progrès». ®

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *