image

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

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

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

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

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

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

Движок 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 и Эктоном можно прочитать на английском по ссылке. По всей видимости, публикация исходного кода — это еще один важный шаг для нового курса компании.

Комментарии (39)


  1. babylon
    25.03.2018 22:31
    +1

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


    1. nochkin
      26.03.2018 06:52

      Народ уже форки делает во всю.


  1. Alexsey
    26.03.2018 01:36

    2018 год на дворе, а Unity до сих пор страдает ерундой и делает костыли в виде reference исходников и Scriptable Render Pipeline вместо того чтобы последовать примеру конкурентов и опубликовать исходники под нормальной лицензией.


    1. Feelnside
      26.03.2018 07:20

      «Конкурент» требуют % от прибыли со всеми вытекающими проблемами в виде «как его нормально платить», «как потом ломать голову над уплатой налогов с такими оплатами», «от какой суммы считать процент», «какие дополнительные документы нужно будет создавать» и прочий бред, над которым большинству разработчиков не будет желания тратить и так не достающее время.


      1. norlin
        26.03.2018 10:34

        как его нормально платить
        А в чём проблема?

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

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

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

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


        1. Feelnside
          26.03.2018 14:29

          Зделаю ремарку, что я из Беларуси, хотя с Россией обычно одно и то же.

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

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

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

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

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

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


          1. norlin
            26.03.2018 14:48

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


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

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


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

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


      1. Alexsey
        26.03.2018 23:13

        Если не устраивает Unreal — всегда есть CryEngine, который вообще не требует роялти.


        1. Feelnside
          27.03.2018 07:28

          Уж лучше Unity :)


          1. Focushift
            27.03.2018 16:06

            Subnautica лучшая антиреклама юнити, плюс вспоминаем дичайшие тормоза в Homeworld.
            Мне этих примеров хватило.


            1. wataru
              27.03.2018 17:50

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


              1. Focushift
                27.03.2018 23:58

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

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

                И еще, это не какая-то бета версия 0.8, это уже релизная версия, которую 2-3 года тестировали в раннем доступе.


        1. Tutanhomon
          27.03.2018 12:03

          А 5% это не роялти?


    1. maisvendoo
      26.03.2018 16:12

      2018 год на дворе, а Unity до сих пор страдает ерундой и делает костыли в виде…


      Совершенно с Вами согласен, не понимаю, за что народ минусует этот комментарий. Давно пора. Видимо таблетка от жадности на них не действует (


      1. maisvendoo
        27.03.2018 08:50
        -2

        Вот те поклонники юнити, что набежали тут минусовать, пусть и объяснят мне, тупому, почему на одном и том же проекте в их любимом движке GTX 580 и GTX 1080 Ti выдает совершенно одинаковое количество FPS, запуская при этом 42 потока на CPU, и как с этим бороться?


        1. Feelnside
          27.03.2018 09:39
          +2

          Невозможно решить уравнение, в котором из ста параметров известен только один.
          — где выдают FPS, в редакторе или в конечном билде?
          — проект на мобильную платфору или PC?
          — включена ли вертикальная синхронизация?
          — какой вообще FPS? 30? 60? 360? 2042?
          — что это за проект такой? Сколько вертексов в кадре, сколько вызовов отрисовки?
          Может быть у вас процессор — bottleneck, а вы тут пытаетесь видеокарты менять. Да хоть 10 титанов в sli поставьте, если bottleneck в процессоре/скорости оперативки или ещё в каких параметрах, смена видеокарты не поможет. Нужно смотреть профайл, смотреть что дольше всего обрабатывается. Может у вас видеокарта на 10% загружена.


          1. maisvendoo
            27.03.2018 10:30

            Да ради бога.

            Конфигурация системы

            Память 8Gb DDR4


            1. Feelnside
              27.03.2018 16:09

              Этого мало, чтобы узнать причину, нужно полностью ковырять профайл в редакторе.


              1. maisvendoo
                28.03.2018 06:58

                нужно полностью ковырять профайл в редакторе

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

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


                1. Tutanhomon
                  28.03.2018 10:05

                  Хреново можно сделать на любом движке и на любом железе. У анрила больше оптимизаций из коробки, это факт. Но кривые руки — проблема не движка.


                  1. maisvendoo
                    28.03.2018 10:23

                    Хреново можно сделать на любом движке и на любом железе

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

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

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


  1. datacompboy
    26.03.2018 02:33
    +2

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


    1. Andrey2008
      26.03.2018 09:20
      +3

      Спасибо за информацию.


  1. Marui
    26.03.2018 08:11
    -2

    1) Выкладываешь исходники, которые никому толком не нужны. Томучто тупа подскриптовая прослойка.
    2) Ловишь 100500 фиксов забесплатно от топов рынка.
    3) ROFIT


    1. Mendel
      26.03.2018 09:50
      +2

      Не удержусь. Покормлю.
      Откуда 100500 фиксов если «исходники никому не нужны»?
      И почему именно «от топов рынка», если топы и так имели исходники (за отдельные деньги, но имели)?


      1. Marui
        26.03.2018 09:59
        -3

        Корми сколько хочешь, бро. Они слили старые коды. Новые пишут вместе с Mike Acton (@mike_acton). Эти не нужны.


        1. Leopotam
          26.03.2018 10:17

          Фишка в том, что слиты только managed-исходники, которые уже до этого лежали в открытом доступе на гитхабе. Автор репа реверснул сборки в код (reflector / dotpeek / ilspy, etc) и периодически спрашивал разрабов — все ли ОК и можно ли так делать, на что получал утвердительный ответ, что он ничего не нарушает. Так продолжалось несколько лет, а 7 февраля началась драма: twitter.com/mattrix/status/961265699573428224
          Теперь стало понятно, зачем они так сделали. Теоретически, стало лучше — решились все потенциальные проблемы с IP и шарингом кода. Практически — никто не знает как часто будет обновляться реп, юнитеки очень ленивые и непоследовательные ребята.


        1. maisvendoo
          26.03.2018 16:22

          Они слили старые коды

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


    1. berezuev
      26.03.2018 13:00

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

      Вы так говорите, как будто это что-то плохое.


  1. maisvendoo
    26.03.2018 12:52

    А толку с этого, если ядро рендера, которое на C++ не открыто? Этот код никак не отвечает на те вопросы, которые я задаю весьма часто, работая с юнити. А что касается C# кода, так и я сам смотрел его рефлектором, то же мне, облагодетельствовали (


  1. berezuev
    26.03.2018 12:59

    Особенно понравился комментарий в первом (и пока единственном) 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. maisvendoo
    26.03.2018 15:11

    Посмотрел код. Черт, ни одного толкового комментария. Сплошняком идет код и всё, за исключением вот этой ооочень информативной байды в начале каждого файла

    // Unity C# reference source
    // Copyright (c) Unity Technologies. For terms of use, see
    // https://unity3d.com/legal/licenses/Unity_Reference_Only_License
    


    За такое надо руки отрывать по хорошему, а вставленными на их место спичками заставлять комментить код как следует


    1. Tutanhomon
      26.03.2018 15:15
      +1

      а вы ожидали увидеть качественный код у Юнитехов?


      1. maisvendoo
        26.03.2018 15:17

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


        1. Tutanhomon
          26.03.2018 15:24
          +1

          Чуть более удобное, может. Но да, так и есть.


          1. maisvendoo
            26.03.2018 15:28

            Попробовал скомпилить в MonoDevelop под линуксом. И надо же — оно собралось!

            Результат компиляции исходников UnityCsReference


          1. maisvendoo
            26.03.2018 15:36
            +1

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

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


  1. mynameco
    26.03.2018 15:30

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


    1. maisvendoo
      26.03.2018 15:35
      +1

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