Поддержка движка отстает и исправить это непростая задача
Разработчик программного обеспечения Unity Джош Петерсон рассказывает нам о будущем поддержки .
NET в широко используемом движке разработки игр.
В соответствии с опрос, проведенный в конце прошлого года Использование C# при разработке игр является одной из основных причин популярности C#, но его реализация в Unity несколько беспорядочна.
Механизм сценариев C# использует Mono, но разработчики также могут использовать .
NET Framework при работе в Windows. Mono — это старая реализация .
NET с открытым исходным кодом, созданная до того, как Microsoft выпустила .
NET Core. Microsoft взяла под свой контроль Mono с помощью Xamarin в 2016 году, и теперь Mono использует много общего с .
NET Core, но это по-прежнему отдельный продукт, который в некоторых сценариях по-прежнему использует среду выполнения.
Unity поддерживает собственный форк Mono, который, по словам слова Петерсон, «отстает примерно на два года от исходного кода».
Сейчас команда обновляет его до последней версии кода из исходного репозитория Mono — изменение, в котором он «уверен на 95%», войдет в следующую версию Unity 2021.2. Он добавил, что эта работа улучшит производительность и исправит ошибки, но сама по себе «не представит никаких новых функций .
NET» — хотя и закладывает основу для функций, которые будут добавлены в будущем.
Однако Петерсон ожидает, что в Unity 2021.2 будет добавлена поддержка .
NET Standard 2.1, но на этот раз с «75% уверенностью».
Версии .
NET Standard определяют набор API, которые должна поддерживать реализация .
NET. Сложный аспект .
NET Standard 2.1 заключается в том, что .
NET Framework навсегда привязана к .
NET Standard 2.0. Петерсон говорит: «Хотя .
NET Framework не поддерживает .
NET Standard 2.1, библиотеки классов Mono поддерживают, поэтому мы сможем построить хороший мост к экосистеме на основе .
NET Core».
Это обновление не может произойти быстро, поэтому некоторые разработчики разочарованы медленным прогрессом.
«Предпринимаются ли какие-либо шаги в направлении отказа от Mono в пользу полной интеграции .
NET? Особенно сейчас, когда .
NET становится настолько кроссплатформенной».
пользователь спросил в августе прошлого года.
Запрошенные функции включают Span , представленный в C# 7.2, и оператор диапазона, представленный в C# 8.0. Microsoft выпустила C# 8.0 в сентябре 2019 года, и реализация полного набора функций Unity заняла много времени.
Пользователи также обеспокоены задержкой производительности .
NET в Unity. Петерсон говорит, что поддержка C# 8.0 в 2021 году по-прежнему будет основана на Mono. Он также выразил надежду, что C# 9.0, выпущенный Microsoft в ноябре 2020 года, также будет поддерживаться, но это зависит от добавления функций в Mono и IL2CPP (который преобразует код .
NET в C++ для компиляции), в отношении чего его уверенность упала до 50. % , он сказал.
Что касается перехода на .
NET Core, то он вряд ли произойдет в ближайшее время.
Петерсон сказал, что Unity, скорее всего, откажется от .
NET 5 в пользу .
NET 6, которая является предстоящим выпуском с долгосрочной поддержкой.
Даже тогда он отметил, что «похоже, что JIT-средой выполнения здесь будет Mono», но он не уверен в этом и добавил, что «нам, возможно, придется перейти непосредственно на CoreCLR для поддержки .
NET 6».
Одна из проблем заключается в том, что функция редактора Unity, называемая перезагрузкой домена, которая сбрасывает состояние сценария, зависит от функции (AppDomains), которой нет в .
NET Core. Петерсон говорит, что это можно было бы сделать по-другому, но «это было бы радикальное изменение».
Для разработчиков игр .
NET 6 в любом случае станет кардинальным изменением, поскольку «любые сборки, скомпилированные с использованием mscorlib.dll из экосистемы .
NET Framework, не будут работать и должны быть перекомпилированы».
Сложность, связанная с .
NET Standard, .
NET Framework, .
NET Core и Mono, является проблемой для разработчиков Unity и показывает, что унификация .
NET, к которой стремится Microsoft, на самом деле является длительным процессом, а не чем-то, что может произойти в одночасье с выпуск .
NET 5.0 в прошлом году.
«Единственное, что меня беспокоит, — это поддержка .
NET 6. Самой большой проблемой, с которой я столкнулся, была низкая производительность редактора и длительное время итераций по мере роста размера проекта.
В настоящее время я отказался от Unity, потому что им было слишком неудобно пользоваться, и перешёл на Unreal».
сказал другой пользователь добавил, что «Моно скоро уйдет в историю и не имеет будущего».
В отдельный пост Петерсон подчеркнул, что «все, что здесь обсуждается, может быть изменено.
Пожалуйста, не рассматривайте обсуждения в этой теме как официальные объявления».
Вместо этого он сказал, что это скорее дает нам «понимание их прогресса».
В преддверии старта курса «Unity Game Developer. Professional» приглашаем всех желающих посетить бесплатный двухдневный интенсив, в ходе которого мы разработаем все необходимые инструменты и архитектуру диалоговой системы (чтобы наш персонаж мог общаться с неигровыми персонажами), реализуем инвентарь, добавляем в игру торговцев и создаём систему квестов.
Всего два урока и почти готовая РПГ у вас в кармане.
- Интенсив: «Диалоговая система, инвентарь и квесты в Unity».
1 день
- Интенсив: «Диалоговая система, инвентарь и квесты в Unity».
День 2
NET
-
Как Бороться Со Шпионским По
19 Oct, 24 -
Несколько Слов В Защиту Костной Проводимости
19 Oct, 24 -
Цифровая Экономика И R-Экосистема
19 Oct, 24 -
Усовершенствованный Термостат Для Дома.
19 Oct, 24