Тот, кто интересуется миром игровых движков, знает, что с первого декабря 2015 года бывший Paradox3D сменил название на Xenko, но так как на Хабре нет туториалов ни по первому, ни по второму — я решил сделать небольшую статью для тех, кто хочет попробовать что-то новое (или не очень) и рассказать об особенностях Xenko. Если вас это заинтересовало — добро пожаловать под кат!



Лицензия


Движок практически open-source (GitHub), под лицензией GPL v3, использование его бесплатное в двух случаях:

  • Если вы используете оф. релизы, то можете делать сколько угодно игр без открытия исходного кода
  • Также вы можете модифицировать и компилить движок, но тогда вместе с игрой должны выложить и исходный код

Насчет других вариантов лицензии нужно связаться с разработчиками.

Особенности разработки


Последняя версия Xenko (на момент написания — 1.5 Beta) поддерживает запуск только на 64-битной версии Windows 7 SP1+/8+/10, для написания скриптов требуется наличие одного из следующих IDE:

  • Visual Studio 2012, 2013 или 2015 (начиная с версии Professional)
  • Visual Studio Community 2013 или 2015
  • Visual Studio 2012/2013 Express
  • Xamarin Studio

Поддержка платформ для которых можно делать игры желает лучшего. Сейчас можно разрабатывать для семейства Windows (Desktop, Store, 10 Universal, Phone), а также для Android и іOS (только с наличием лицензии Xamarin), но Silicon Studio уверяет, что скоро будет и на MacOSX, и на Linux, и даже на next-gen консолях.

Начало работы


Первым делом нужно установить сам движок, а также дополнительные элементы для работы с .NET. Установка вместе с загрузкой всего ПО занимает порядка 25 минут. С Xenko Launcher'а можно как установить новую версию, так и переключаться между установленными версиями.



Запускаем нужный вариант, создаем новый проект (все настройки можно оставить по умолчанию) и ждем пока загрузится наш Xenko Studio.

Нас встречает довольно обычный UI, отдаленно напоминающий Visual Studio.



  1. Элементы сцены
  2. Обозреватель решений (все папки и файлы, которые имеют отношение к проекту)
  3. Просмотр ресурсов (ассетов). При выборе ресурса, он на мгновение подсвечивается.
  4. Предпросмотр ресурса; История действий; Зависимости (здесь две вкладки: Referencees — показывает все ассеты, которые нужны для текущего ресурса; Referencers — наоборот, показывает все ассеты, которые зависимы от текущего)
  5. Редактор свойств

Для запуска игры достаточно нажать F5 — ваш проект скомпилируется и запустится с помощью MSBuild (что, кстати, не очень быстро).
Добавлять новые сущности можно с помощью "+" слева, а новые ресурсы — снизу.



Выбрав предмет, все его свойства можно просмотреть в окне справа (Property Grid). Здесь и трансформация, и текстуры, и физика, и другие компоненты.

Между прочем, без ресурса текстуры наша модель не будет отображаться (это можно сделать, нажав на небольшую «руку» во вкладке Material.

На этом визуальные способности практически заканчиваются. Среди недостатков навигации можно отметить сложность управления в 3D пространстве (главные функции осуществляются с помощью WASD и Shift/Alt + ЛКМ/ПКМ/СКМ) и невозможность отобразить область столкновения (collision volume), что в некоторых случаях существенно усугубляет ситуацию.

Робота с кодом


Поскольку Xenko Studio хорошо работает в связке с Visual Studio — я его и использую. Сверху в меню выбрав VS, нам откроется наш проект в Visual Studio.



В том же Solution Explorer можно увидеть, что сейчас есть только один файл (MyGameApp.cs в моем случае), который запускает нашу игру. Если вы при создании проекта выбрали больше платформ — у вас будет отдельные каталоги под каждую платформу.

Для примера заставим нашу модель двигаться. Сначала нужно создать отдельный класс Moving.cs и добавить в него код ниже.



using System;
using SiliconStudio.Xenko.Engine;

namespace MyGame
{
    public class Moving : SyncScript //скрипт должен запускаться со Студии, поэтому делаем его public
    {
        public override void Update() //наш код будет выполняться каждый фрейм
        {
            if (Game.IsRunning) //проверяем, запущена ли игра
            {
//если нажали стрелку влево/вправо - двигаем по оси X
                if (Input.IsKeyDown(SiliconStudio.Xenko.Input.Keys.Right))
                {
                    this.Entity.Transform.Position.X += 0.1f;
                }
                if (Input.IsKeyDown(SiliconStudio.Xenko.Input.Keys.Left))
                {
                    this.Entity.Transform.Position.X -= 0.1f; 
                }
//если нажали стрелку вверх/вниз - двигаем по оси Z (не Y, т.к. это вертикальная ось)
                if (Input.IsKeyDown(SiliconStudio.Xenko.Input.Keys.Up))
                {
                    this.Entity.Transform.Position.Z += 0.1f;
                }
                if (Input.IsKeyDown(SiliconStudio.Xenko.Input.Keys.Down))
                {
                    this.Entity.Transform.Position.Z -= 0.1f;
                }
            }
        }
    }
}

Сохраняем в папке MyGame.Game; проверяем нет ли ошибок (Ctrl+Shift+B билдит проект).



В Xenko Studio, выбрав нашу сферу, кликаем Add component -> Scripts и добавляем наш скрипт.

Билдим (ждём), и видим, что наша сфера двигается при нажатии на стрелки. Если у вас нет в списке нашего скрипта — скорее всего нужно перезагрузить проект (File -> Reload Project) или у вас ошибки в коде.



P.S. если ваша сфера двигается не туда куда надо — измените в коде -= на += и наоборот. Это зависит от расположения камеры

Поддержка, сообщество и документация


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



Поэтому полагайтесь только на свои силы и на помощь зала.

Заключение


Xenko — довольно интересный движок, но т.к. на стадии beta — не может пока предложить что-то очень новое для мира GameDev'а. Если вы работали в Unity — вам будет легко работать в Xenko. Для новичков же он покажется слишком сложным и непонятным, но, думаю, в ближайших релизах это исправят.

Плюсы:

  • Open source
  • Бесплатное использование в 99% случаев
  • Отличный движок для рендера «с коробки»
  • C# — отличный язык для скриптового программирования (субъективно)

Минусы:

  • Поддержка только нескольких платформ, а сам Xenko Studio работает только на Windows (обещают исправить)
  • Для разработки на Android/iOS нужна лицензия Xamarin (во втором случае — Business и выше + наличие MacBook)
  • Недостаточно документации и небольшое сообщество, из-за чего не подойдет для новичков
  • Нет причин переходить на Xenko с другого бесплатного движка (субъективно; думаю, это только пока)

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


  1. KumoKairo
    25.01.2016 18:48

    А можете написать немного своих собственных впечатлений от работы с этим движком?


    1. SpyceR
      25.01.2016 19:37

      Мне он понравился, но я все еще использую UE4 и Unity для 3D игр. Если срочно нужна будет платная лицензия, а я не смогу ее позволить — подумаю, может буду пользоваться Xenko. Или они внезапно сделают что-то очень уж интересное и новое.


      1. gltrinix
        25.01.2016 23:09
        +1

        Если вы используете и UE4 и Unity, то не могли бы дать ссылку на качественное сравнение этих двух движков (или сами сравните), ибо всё что я находил субъективно в сторону одного из движков.


        1. SpyceR
          26.01.2016 00:06
          +1

          К сожалению, ссылку дать не могу, т.к. сам не знаю таких :)
          А вкратце сравнить могу:

          • Знаете C++ — UE4: Знаете C# — Unity (не знаете ничего — UE4 с Blueprint)
          • 3D-игры AAA-класса — UE4: Мобильные игры/ 2D — Unity
          • Очеееень важна графика — UE4: Нет? Unity
          • Нет денег — UE4: Есть — Unity Pro

          P.S. Это тоже очень субъективно.


          1. Singerofthefall
            26.01.2016 12:13

            Нет денег — UE4: Есть — Unity Pro
            Можете пояснить этот момент? Бесплатный Unity можно использовать до тех пор, пока ваш годовой доход не превысит $100000, а с UE4 вы будете платить 5% роялти уже после 3000 долларов. Или вы имели в виду набор фич, доступных в бесплатных версиях?


            1. SpyceR
              26.01.2016 12:51

              Или вы имели в виду набор фич, доступных в бесплатных версиях?

              Именно. За Pro версию Unity (если вы делаете игры для Android+iOS) нужно будет заплатить 4500$ или 225$/мес.


              1. Leopotam
                26.01.2016 13:32
                +1

                С 5-ки все платные штуки прошки — только онлайн сервисы, которые нужны для ускорения / оптимизации работы крупной конторы, а не инди-разработчика / небольшой команды.


                1. elmm
                  26.01.2016 13:43

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


                  1. Leopotam
                    26.01.2016 14:17
                    +1

                    Я просто хотел сказать, что смысла в про-подписке для инди нет совершенно. Может только из-за level11, но оно сомнительно.


          1. elmm
            26.01.2016 12:52

            А чем вариант — нет денег, Unity без про версии?
            С пятёркой там много плюшек доступно, которые в 4 были только в про.


    1. bashis
      26.01.2016 11:48

      Интересная особенность Xenko — в отличие от Unity, здесь заявляется поддержка .Net 4.6 и, соответственно, C# 6. Unity, если мне не изменяет память, застряла где-то на .Net 3.5. Хотя, говорят, если компилировать через Visual Studio, этот эффект насколько-то можно нивелировать.


  1. SirEdvin
    25.01.2016 22:55
    +1

    Почему все внезапно начали писать игровые движки на C#? Есть какой-то невидимый профит?


    1. SpyceR
      25.01.2016 23:54

      C# — отличный язык для скриптового программирования (субъективно)

      Думаю, это единственная причина. А еще Unity его использует — вот все и гонятся.


    1. yadobr
      26.01.2016 12:46

      Для скриптинга в играх он очень хорошо подходит. Удобночитаемый синтаксис. Много синтаксических фишек, по сравнению с С++.

      Я, честно говоря, устал делать простые вещи на С++ в UE. C++ он для более низкоуровневых вещей. Если вам нужно, например, как в статье, менять положение модельки — С# очень хорошо подходит.

      Для меня загадка, почему Epic не сделают поддержку C#.


      1. SirEdvin
        26.01.2016 13:18

        Не особо понимаю, почему именно он.
        Есть куча других языков, которые даже еще и кросс-платформены.


        1. yadobr
          26.01.2016 13:57

          Видимо потому, что есть много разработчиков с опытом программирования/гемй-дева на си шарпе.


        1. Ogoun
          01.02.2016 18:07

          Отличная IDE (лучше еще не видел), приятный синтаксис языка (говорю сравнивая с C/C++/Delphi/basic/Javascript), наличие хорошо структурированной документации, кроссплатформенность. Открытый исходный код. Нет причин почему бы не выбрать этот язык.
          UPD: конечно же строгая типизация еще


          1. SirEdvin
            01.02.2016 18:49

            Это вы Java описали?


  1. elmm
    26.01.2016 12:51

    Судя по описанию и скриншотам это попытка сделать опенсорсный юнити.
    Но пока единственным преимуществом выглядит поддержка более свежего шарпа. (чего в юнити с il2cpp вроде пока не предвидится).
    Но при этом минус — надо покупать xamarin, который тоже денег стоит.


    1. SpyceR
      26.01.2016 13:06

      Или вы студент, тогда он бесплатен :)