Использование Blender Game Engine

В этом уроке будут рассмотрены некоторые аспекты Blender Game Engine, описаны особенности работы в редакторе Logic Editor, запуск игры и ее экспорт во внешний исполняемый файл, пригодный для автономного распространения.

Игровой движок (game engine) с точки зрения непрограммиста можно описать как своего рода дополнительную функциональность, предназначенную для разработки игр. В Blender доступ к ней предоставляется через графический интерфейс, то есть кнопки, поля, панели и т. п.

Когда мы "пишем" логику игры в Blender, то как бы собираем конструктор, а не описываем алгоритм на языке программирования. Blender сам переводит наши настройки, сделанные через интерфейс, в программный код.

Основной доступ к функционалу игрового движка происходит через редактор Logic Editor. Вы можете сами его установить в одной из областей. Однако в Blender есть готовый для разработки игр вариант окна:

Экран Game Logic

В случае выбора Game Logic в окне открываются пять редакторов помимо Info. Это 3D View, Outliner, Text Editor, Logic Editor, Properties:

Редакторы экрана Game Logic

В Text Editor подготавливаются скрипты на языке программирования Python. Поскольку наш курс этого не предполагает, то можно заменить этот редактор на еще один Properties. Имея две области с этим редактором, вы сможете открывать разные его вкладки. Кроме того, всегда будет быстрый доступ к редактору свойств, независимо от того, работаете ли вы с 3D View или у вас увеличена область с Logic Editor.

Прежде чем перейти к рассмотрению Logic Editor, выясним как запускается игровой процесс и создается исполняемый файл. Первым делом надо поменять движок рендеринга с Blender Render на Blender Game.

Выбор движка Blender Game

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

При переключении на движок Blender Game также частично изменяется содержимое вкладок редактора Properties, там появляются настройки специфичные для игрового движка, а не для обычного рендеринга.

Теперь, чтобы запустить игровой процесс, надо нажать клавишу P, когда курсор находится в 3D View. Игра запустится непосредственно в 3D View и с той точки зрения, в которой 3D находится в данный момент, т. е. не обязательно вид будет из камеры. Поскольку пока нет никакой игровой логики, то мы увидим неподвижный куб на сером фоне. Выйти из игры можно, нажав клавишу Escape.

Другой вариант – запуск игры в отдельном окне. Для этого надо нажать кнопку Start на панели Standalone Player, которая находится на вкладке Scene редактора Свойств. В этом случае вид будет исключительно из камеры.

Настройки Standalone Player

Окно плейера будет того размера, которое указано в полях Resolution. Если включить флажок Fullscreen, то окно развернется на весь экран. Однако его разрешение останется прежним. Чтобы полноэкранный режим учитывал разрешение текущего монитора, надо включить флажок Desktop. В этом случае указанное в настройках разрешение игнорируется.

Теперь что касается исполняемого файла. Сначала надо включить дополнение Save as Game Engine Runtime (сохранить как игровой движок реального времени), которое находится во вкладке дополнений (Add-ons) редактора User Preferences (Ctrl+Alt+U). Здесь надо выбрать категорию Game Engine и включить соответствующий флажок.

После этого в меню редактора Info появится вариант экспорта в автономный исполняемый файл, содержащий все необходимые библиотеки:

Сохранение игры в исполняемый файл

При запуске полученного таким образом файла экранные настройки будут соответствовать тем, которые были сделаны на панели Standalone Player.

Вернемся к главному – редактору Logic Editor. Не считая заголовка, он состоит из двух регионов. На одном находится панель Properties (не путать с одноименным редактором, который мы упоминали выше), второй является главным. Содержимое главного региона можно масштабировать колесом мыши и перемещаться по нему, зажав колесо.

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

Главный регион условно разделен на три части – сенсоры, контроллеры и активаторы. Сенсор регистрирует какое-либо событие. Это может быть движение мыши, нажатие клавиши, столкновение объектов в игре и т. д. Активатор запускает какое-либо действие. Например, перемещение объекта, проигрывание звукового эффекта, перезагрузку сцены.

Находящийся между сенсором и активатором контроллер связывает их согласно требуемой логике. Например, объект будет перемещаться (то есть сработает контроллер), только если он находится в пределах определенной области и нажата конкретная клавиша (то есть зарегистрированы сразу два события).

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

Первым делом надо выделить куб. После этого в разделе сенсоров Logic Editor из выпадающего списка Add Sensor выбрать вариант Keyboard (клавиатура). В появившемся логическом блоке надо нажать на поле Key. Там появится надпись Press a key, после чего нажать необходимую клавишу на клавиатуре. Пусть это будет стрелка влево.

Далее добавляем контроллер. Это может быть как AND, так и OR. В данном случае разницы нет, так как обрабатываться будет только один сенсор, а не два и более.

После этого добавляем активатор типа Motion (движение). В появившемся логическом блоке изменяем значения полей строки Loc (location – положение). Так если вы не меняли положения камеры, смотрите сцену из камеры и указали в Loc X и Loc Y значения -0.1, то куб будет двигаться влево на 0.1 единицу на каждом такте игры (если зажата соответствующая клавиша клавиатуры).

Теперь надо установить связь между логическими блоками. У блока сенсора есть "точка" у правого верхнего угла. У блока контроллера есть две точки – слева и справа от него. У блока активатора точка находится у левого верхнего угла.

Для установления связи нужно зажать левую кнопку мыши на точке сенсора и переместить курсор мыши до левой точки контроллера. При этом появляется линия. Далее аналогично соединить контроллер с активатором. Если потребуется отменить связь, то делается это так же, так как если линия существует, то при повторном "перетягивании" она исчезает.

В результате должно получиться так:

Связанные сенсор, контроллер и активатор

Если запустить игру из вида из камеры, то при нажатии стрелки влево куб поедет влево.

Обратите внимание на кнопку L в конце строк Loc и Rot активатора Motion. Если она включена, то движение происходит относительно локальных осей объекта. Если выключена – относительно глобальных. Если куб не был повернут, то разницы нет.

Движение в другие стороны настраивается подобно описанному выше. В результате получается четыре группы блоков сенсор-контроллер-активатор. Блоки можно сворачивать и переименовывать для удобства.

Логические блоки куба

Практическая работа

Создайте "игру", в которой объект с помощью стрелок влево и вправо поворачивается, а стрелок вверх и вниз – поднимается и опускается. Движение вперед относительно локальной оси обеспечивается любой другой клавишей.

Примечание. За поворот отвечают поля строки Rot в блоке Motion.

Создано

Обновлено