Unity выложила исходный C#-код на Github

    image

    Возрадуйтесь все, кому хоть раз в силу жизненной необходимости приходилось декомпилировать .NET-код Unity! Теперь код C#-части движка и редактора Unity доступен для изучения на Github. Доступны все основные ветки, начиная с версии 2017.1 и заканчивая свежей 2018.1.0b12.

    Код был выложен вчера, официальный анонс состоится только в понедельник.

    Ложка дегтя: код может быть использован только в справочных целях. Полную лицензию на использование можно посмотреть здесь.

    Впрочем, это ничуть не остановило товарища, уже оформившего пулл-реквест с фиксом производительности.

    Далеко не секрет, что крупные студии (например, авторы Cities: Skylines) имеют доступ к исходному коду (и C#, и C++) уже довольно давно — для этого необходимо приобретать отдельную лицензию. Раньше это было критически необходимым, если вам требовалось модифицировать стандартный процесс рендеринга (начиная с версии 2018, можно будет менять все под себя при помощи SRP и кода на C#).

    За данную инициативу дружно благодарим Aras Pranckevičius, который занимался подготовкой кода к публикации последние несколько недель.

    Движок Unity становится более модульным и проходит масштабное обновление: в нем появился пакетный менеджер, появилась система задач C# (позволяющая писать безопасный многопоточный код), была переработана система ECS (Entity Component System) с учетом низкоуровневых оптимизаций, а к версии 2018.3 наконец-то появятся (sic!) Nested Prefabs.

    Глубокий уход Unity в сторону data-oriented design происходит под чутким надзором Майка Эктона (Mike Acton, бывший глава разработки движков в Insomniac Games), присоединившегося к компании прошлой осенью вместе с другим соратником по Insomniac, чей подход к игровой оптимизации приобрел широкую известность после доклада на CppCon 2014 «Data-Oriented Design and C++»).

    Интересное недавнее интервью CTO Unity, главой R&D и Эктоном можно прочитать на английском по ссылке. По всей видимости, публикация исходного кода — это еще один важный шаг для нового курса компании.
    Поделиться публикацией

    Похожие публикации

    Комментарии 40
      +1

      Надо брать пока не передумали:)

      –3
      2018 год на дворе, а Unity до сих пор страдает ерундой и делает костыли в виде reference исходников и Scriptable Render Pipeline вместо того чтобы последовать примеру конкурентов и опубликовать исходники под нормальной лицензией.
        +2
        «Конкурент» требуют % от прибыли со всеми вытекающими проблемами в виде «как его нормально платить», «как потом ломать голову над уплатой налогов с такими оплатами», «от какой суммы считать процент», «какие дополнительные документы нужно будет создавать» и прочий бред, над которым большинству разработчиков не будет желания тратить и так не достающее время.
          +4
          как его нормально платить

          А в чём проблема?


          как потом ломать голову над уплатой налогов с такими оплатами

          Зачем ломать голову? УСН 6% – и расходы не учитываешь.


          от какой суммы считать процент

          От суммы свыше $3000/квартал. Это однозначно прописано, даже FAQ есть.


          какие дополнительные документы нужно будет создавать

          какие ещё документы?


          В целом, у "конкурента" самая понятная и прозрачная политика в плане оплаты и использования движка.

            +2
            Зделаю ремарку, что я из Беларуси, хотя с Россией обычно одно и то же.
            А в чём проблема?

            Проблема с оплатой в том, что для этого нужно завести отдельную карточку ИП, ибо оплачивать можно только с карточки ИП для нужд бизнеса (конечно можно нарушать закон и платить как физ лицо, в надежде что не найдут)
            Зачем ломать голову? УСН 6% – и расходы не учитываешь.

            Если в России это так, то вам невероятно повезло. В Беларуси есть налог на доходы иностранной организации. Оплачивая % от прибыли, придется 15% от этой суммы платить налог. Конечно, этого можно избежать, если Epic Games (или кому там идут выплаты) зарегистрирован в той стране, в которой есть закон об избежании двойного налогообложения, но для этого придется писать письма в Epic Games с просьбой предоставить справку, подтверждающие, что они действительно находятся в стране, с которой у нас есть закон об избежании двойного налогообложения. В общем, головная боль. Плюс помимо этого нужно смотреть, возникает ли агентский НДС (даже если ИП без НДС, от агентского НДС никто не освобождал), что опять же, геморрой.
            От суммы свыше $3000/квартал. Это однозначно прописано, даже FAQ есть.

            В Unity данная сумма равна 100к$ в год. Что равняется 25 000$ в квартал. Куда приятнее, причем при превышении нужно будет просто купить подписку, без всяких отчислений на банковские счета.
            какие ещё документы?

            Ну нужно же как-то показать, что ты заработал 5000$ (например) а не 250 000$, им же нужно понять, с какой суммы ты должен платить процент. Видимо нужно будет составлять инвоисы, или ещё что, что опять же, лишняя головная боль по сравнению с Unity, где при превышении нужно будет всего лишь купить платную подписку (которая будет гораздо дешевле, чем требуемый процент у конкурента).

            Потому в этом плане останусь при мнении, что Unity куда проще и привлекательнее в этом плане.
              0

              Простите, с законами Беларуси не знаком :( В России ИП может спокойно платить с личного счёта, если хочет. Вот получать деньги желательно на специальный счёт ИП, хотя это тоже не 100% строго.


              Ну нужно же как-то показать, что ты заработал

              Судя по докам и FAQ достаточно самостоятельно отправлять им отчёт через форму на сайте


              Unity куда проще и привлекательнее в этом плане.

              Как минимум, Юнити с бесплатной подпиской имеет ограничения. Например, splash screen, возможно что-то ещё, не знаю. То есть, для полной версии, нужно уже брать подписку с ежемесячными платежами.

            0
            Если не устраивает Unreal — всегда есть CryEngine, который вообще не требует роялти.
              0
              Уж лучше Unity :)
                0
                Subnautica лучшая антиреклама юнити, плюс вспоминаем дичайшие тормоза в Homeworld.
                Мне этих примеров хватило.
                  0

                  Я как-то пропустил, а что не так с Subnautica?

                    0
                    -дикий своп даже на ссд
                    -рыбки, пузырьки со дна проплывающие сквозь стены базы
                    -можно выпасть на дно из подлодки и игра будет считать что ты в помещении
                    -освещение от семян водорослей которое просвечивает сквозь стены
                    -простая графика и адские тормоза на 12ти ядерном проце с 4х канальной памятью при разрешении 1080р на GTX980

                    вот такой краткий список, и это точно проблемы движка, если скажете что там огромный мир и т.п., то посмотрите на финальный уровень в последнем homeworld, во время роликов система просто ложится (на момент когда вышла игра, видеокарта конечно была слабее).

                    И еще, это не какая-то бета версия 0.8, это уже релизная версия, которую 2-3 года тестировали в раннем доступе.
                      +1
                      а причём тут Юнити? Что, на %favorite_engine% так нельзя сделать?
                0
                А 5% это не роялти?
              –2
              2018 год на дворе, а Unity до сих пор страдает ерундой и делает костыли в виде…


              Совершенно с Вами согласен, не понимаю, за что народ минусует этот комментарий. Давно пора. Видимо таблетка от жадности на них не действует (
                –3
                Вот те поклонники юнити, что набежали тут минусовать, пусть и объяснят мне, тупому, почему на одном и том же проекте в их любимом движке GTX 580 и GTX 1080 Ti выдает совершенно одинаковое количество FPS, запуская при этом 42 потока на CPU, и как с этим бороться?
                  +2
                  Невозможно решить уравнение, в котором из ста параметров известен только один.
                  — где выдают FPS, в редакторе или в конечном билде?
                  — проект на мобильную платфору или PC?
                  — включена ли вертикальная синхронизация?
                  — какой вообще FPS? 30? 60? 360? 2042?
                  — что это за проект такой? Сколько вертексов в кадре, сколько вызовов отрисовки?
                  Может быть у вас процессор — bottleneck, а вы тут пытаетесь видеокарты менять. Да хоть 10 титанов в sli поставьте, если bottleneck в процессоре/скорости оперативки или ещё в каких параметрах, смена видеокарты не поможет. Нужно смотреть профайл, смотреть что дольше всего обрабатывается. Может у вас видеокарта на 10% загружена.
                    0
                    Да ради бога.
                    Конфигурация системы

                    Память 8Gb DDR4


                    Сцена


                    В кадре порядка 27М вертексов. FPS=24-25. Билд релизный, разрешение 1920х1080
                      0
                      Этого мало, чтобы узнать причину, нужно полностью ковырять профайл в редакторе.
                        0
                        нужно полностью ковырять профайл в редакторе

                        а ничего, что в тот момент когда это разрабатывалось профайлера вроде как и не было в personal edition?
                        И таки где тут бутылочное горлышко в предъявленной конфигурации? Какая конфигурация не будет бутылочной? У нас что, у каждого первого вот прям такой компьютер?

                        В то же время на том же анреал аналогичная сцена (с трехмерной травой и цветочками!) дает уже 120 FPS. При этом в нем нет редакций разного уровня полноты, весь исходный код доступен. И роялти взимается только за прибыль выше определенного порога, что справедливо. Но никак не за увеличенный функционал движка или исходники рендера.
                          0
                          Хреново можно сделать на любом движке и на любом железе. У анрила больше оптимизаций из коробки, это факт. Но кривые руки — проблема не движка.
                            0
                            Хреново можно сделать на любом движке и на любом железе

                            Это правда. Но! В документации к юнити куча информации о том как сделать из кирпичиков стену и как кисточками рисовать ландшафт. А по оптимизации, по нюансам движка в ней содержаться лишь общие фразы. При закрытом ядре.

                            У анрила больше оптимизаций из коробки, это факт.

                            Так о чем и речь. Из коробки. Так и, цитируя реплику товарища, с поста которого начался этот разговор кто же «страдает ерундой»?
              +36

              Кастуем сюда pvs-studio гуру?
              Andrey2008 EvgeniyRyzhkov — тут мясо для битья выложили!

                +13
                Спасибо за информацию.
                –12
                1) Выкладываешь исходники, которые никому толком не нужны. Томучто тупа подскриптовая прослойка.
                2) Ловишь 100500 фиксов забесплатно от топов рынка.
                3) ROFIT
                  +10
                  Не удержусь. Покормлю.
                  Откуда 100500 фиксов если «исходники никому не нужны»?
                  И почему именно «от топов рынка», если топы и так имели исходники (за отдельные деньги, но имели)?
                    –10
                    Корми сколько хочешь, бро. Они слили старые коды. Новые пишут вместе с Mike Acton (@mike_acton). Эти не нужны.
                      +2
                      Фишка в том, что слиты только managed-исходники, которые уже до этого лежали в открытом доступе на гитхабе. Автор репа реверснул сборки в код (reflector / dotpeek / ilspy, etc) и периодически спрашивал разрабов — все ли ОК и можно ли так делать, на что получал утвердительный ответ, что он ничего не нарушает. Так продолжалось несколько лет, а 7 февраля началась драма: twitter.com/mattrix/status/961265699573428224
                      Теперь стало понятно, зачем они так сделали. Теоретически, стало лучше — решились все потенциальные проблемы с IP и шарингом кода. Практически — никто не знает как часто будет обновляться реп, юнитеки очень ленивые и непоследовательные ребята.
                        0
                        Они слили старые коды

                        Тут можно долго спорить, но — откуда в ветке 2018.1 поддержка Boo, которую вроде выпилили больше года назад, если мне не изменяет память

                      +3
                      2) Ловишь 100500 фиксов забесплатно от топов рынка.

                      Вы так говорите, как будто это что-то плохое.
                      +4
                      А толку с этого, если ядро рендера, которое на C++ не открыто? Этот код никак не отвечает на те вопросы, которые я задаю весьма часто, работая с юнити. А что касается C# кода, так и я сам смотрел его рефлектором, то же мне, облагодетельствовали (
                        –3
                        Особенно понравился комментарий в первом (и пока единственном) PR:
                        You do realise that by even writing the code for this PR, you've violated the «Reference Only» license that this source code is provided under, right?


                        Хочется верить, что это все-таки стёб ))
                          +1
                          Посмотрел код. Черт, ни одного толкового комментария. Сплошняком идет код и всё, за исключением вот этой ооочень информативной байды в начале каждого файла
                          // Unity C# reference source
                          // Copyright (c) Unity Technologies. For terms of use, see
                          // https://unity3d.com/legal/licenses/Unity_Reference_Only_License
                          


                          За такое надо руки отрывать по хорошему, а вставленными на их место спичками заставлять комментить код как следует
                            +2
                            а вы ожидали увидеть качественный код у Юнитехов?
                              +3
                              Нет, совершенно не ожидал. Взгляд на эти исходники только укрепил меня в моем личном отношении к этой конторе

                              То есть по сути, этот репозиторий дает не больше информации, чем самодеятельное ковыряние сборок движка в рефлекторе
                                +2
                                Чуть более удобное, может. Но да, так и есть.
                                  0
                                  Попробовал скомпилить в MonoDevelop под линуксом. И надо же — оно собралось!
                                  Результат компиляции исходников UnityCsReference

                                    +3
                                    Но! Первым пулл реквестом я бы научил этих ребят использовать .gitignore

                                    Такие крутые, и такого не предусмотрели, ай-ай-ай…
                              0

                              Чтобы я не пытался вытянуть из сборок редактора для своих кастомных инспекторов и окон, все ведет в натив.

                                +1
                                Аналогично. Пытался раскрыть механизм загрузки бандлов (когда бандлов ещё не было в бесплатке). Всё упирается в нативный внешний код. Дальше не полез, ибо скилл реверс-инженера не так уж и высок (

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое