[Из песочницы] Первые шаги в Xenko
Тот, кто интересуется миром игровых движков, знает, что с первого декабря 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.
- Элементы сцены
- Обозреватель решений (все папки и файлы, которые имеют отношение к проекту)
- Просмотр ресурсов (ассетов). При выборе ресурса, он на мгновение подсвечивается.
- Предпросмотр ресурса; История действий; Зависимости (здесь две вкладки: Referencees — показывает все ассеты, которые нужны для текущего ресурса; Referencers — наоборот, показывает все ассеты, которые зависимы от текущего)
- Редактор свойств
Для запуска игры достаточно нажать 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 с другого бесплатного движка (субъективно; думаю, это только пока)