Информационно развлекательный портал
Поиск по сайту

Blender игры. Настройка цепочки основных логических блоков. Завершение урока по основам GE

Этот урок расскажет вам, как создать с нуля простую трехмерную игру в Блендере. После завершения урока полученные навыки позволят вам создать свою собственную 3D-игру. Урок подразумевает наличие элементарных знаний Блендера, но не встроенного в него игрового движка (GE). Будут затронуты только те аспекты Блендера, которые относятся к созданию простых игр.

Вам потребуется приблизительно 2 часа, чтобы создать с нуля 3D-игру.

Уровень: начинающий - средний

Изучение основ Blender Game Engine Вы можете войти и выйти из режима Game Engine, используя клавиши [P] и .

Мы сосредоточимся на особенностях Блендера, относящихся к GE. Начнем с самой важной горячей клавиши в Блендере, той, который запускает GE. Переместите свой курсор мыши в область 3D-окна, и нажмите [P], чтобы начать игру. Поздравляем, вы только что играли в свою первую игру в Блендере!!! Насколько это было легко?

Пока мы не сказали GE, что делать, на сцене ничего не будет происходить.

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

Прежде, чем начать, сбросим сцену в Блендере в первоначальное состояние. Это может быть сделано любым из следующих способов:.

  • Выберите в меню File > New, и нажмите на пункт Erase All.
  • Нажмите , и выберите пункт Erase All.
  • Нажмите , чтобы выйти из Блендера (в версиях 2.42, и ниже используйте [Q]) и запустите его снова.

Теперь пришло время посмотреть, насколько хорошо вы владеете Блендером. Настройте вид сцены, как показано на рисунке справа. Чтобы сделать это, вам надо выполнить следующие действия.

  • Поверните сцену, используя среднюю кнопку мыши (MMB).
  • Установите вид в режим перспективы, используя View > Perspective (или нажав ).
  • Добавьте куб и лампу (предполагается, что вы удалили их ранее, и их нет на начальной сцене).



Полезные комбинации клавиш при работе с GE

Одна из полезных горячих клавиш при работе с Blender GE - это клавиша, которая максимизирует текущее 3D-окно.

Поместите указатель мыши в область 3D-окна, и нажмите (или ). Это развернет текущее 3D-окно в полный экран. Если Вы нажмете снова, то окно будет восстановлено в предыдущее состояние.

Вернитесь чуть-чуть назад и попрактикуйтесь с этим:

  • Максимизируйте 3D-окно, используя
  • Нажмите [P], чтобы запустить текущую сцену в GE (ничего не произойдет)
  • Нажмите , чтобы вернуться в режим моделирования
  • Восстановите 3D-окно обратно в нормальный вид, используя

На рисунке справа показан процесс использования клавиш разворачивания/восстановения окна с начальной сценой Блендера.


Выбор правильного режима прорисовки сцены для GE

Еще раз войдите в режим GE, поместив указатель мыши в 3D-окно и нажав [P]. Вы заметите, что сцена в режиме GE выглядит плоской. Нажмите , чтобы вернуться в режим моделирования. У Блендера есть несколько типов прорисовки сцены в 3D-окне, которые используются для различных задач. Панель, где указан текущий режим прорисовки показана ниже.

Рисунки ниже показывают, как выглядит основная сцена в GE, в различных режимах прорисовки.

  • Solid mode не учитывает освещение в сцене.
  • Shading mode учитывает освещение в сцене.
  • Textured mode учитывает освещение и отображает текстуры. Этот режим наиболее близок к тому, как должна выглядеть игра, и он должен быть выбран всегда, когда вы начинаете новый проект в GE.


Лучший режим прорисовки для GE является Textured mode. Выберите этот режим из списка, и снова нажмите [P]. Вы заметите, что теперь освещение влияет на всю окружающую среду в GE, делая общий вид более реалистичным. Не забывайте выбирать Textured mode при запуске своей сцены в GE и ваша сцена не будет выглядеть плоской.


Главная панель логики игры


Ниже 3D-окна расположена панель, которая содержит множество различных кнопок для управления различными инструментами Блендера.

Вы можете увидеть панель, относящуюся к GE, нажав на фиолетовую иконку, похожую на Pacman"а, или же нажав .

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

Блендер использует визуальную систему click-and-drag, для создания основных взаимодействий в игре. Это позволяет использовать GE даже тем 3D-художникам, у которых нет навыков программирования. Блендер также понимает язык программирования Python, который может использоваться для создания более сложных взаимодействий в игре.

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

Визуальное управление GE – логические блоки Сенсор, Актуатор и Контроллер


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

Есть три различных типа логических блоков - Сенсоры, Контроллеры и Актуаторы - каждый со своим набором различных блоков.

Сенсоры

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

Актуаторы

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

Контроллеры

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

Настройка цепочки основных логических блоков

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

Панель GE. Удостоверьтесь, что панель логики (Logic) открыта (нажмите на фиолетового Pacman"а в окне Buttons или нажмите ), и выделите куб в 3D-окне.

В каждой из трех основных секций панели логики вы можете видеть название выделенного объекта, и кнопку Add рядом с ним. Щелкните эту кнопку один раз в каждой из секций: Сенсор, Контроллер и Актуатор.

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

Изображения иллюстрируют этапы настройки простой цепочки логических блоков, и объединение их в одну систему.

Нажмите [P], чтобы запустить игру. Вы заметите, что, хотя мы и добавили некоторые настройки в GE, но, по-прежнему, ничего не происходит. Это будет объяснено в следующем разделе. Нажмите , чтобы вернуться в Блендер.

Распределение событий в системе GE

Посмотрим, что же происходит с нашей только что созданной системой в GE. Тип сенсора установлен в Always. Он постоянно (каждый фрейм) посылает сигнал в связанный с ним контроллер, и активизирован на всем протяжении игры.

Контроллер установлен в AND. Когда у него на входе появляются сигналы от всех, связанных с ним, сенсоров (в данном случае, один), он автоматически вызывает связанный с ним актуатор.

Актуатор управляет параметрами движения (Motion) объекта. Из-за того, что сенсор, связанный с контроллером, установлен в Always, этот актуатор срабатывает в каждом фрейме.

Если мы сейчас нажмем [P], актуатор Motion будет постоянно срабатывать, но, поскольку все параметры актуатора установлены в ноль, актуатор не будет перемещать объект.

Создание движения куба без использования физики

Попробуем сначала воспользоваться прямым управлением для перемещения куба в пределах сцены. Позже, мы сделаем подобную сцену, но уже будем использовать физику. При использовании встроенного физического движка (он называется Bullet), более сложные взаимодействия сцены, такие, как столкновения и сила тяжести, будет обработаны автоматически.

Взгляните на актуатор Motion, особенно на три числовых параметра рядом с меткой dLoc. Каждый из этих трех параметров может использоваться для настройки изменения местоположения объекта вдоль осей X, Y и Z соответственно.

Установите значение среднего параметра dLoc (ось Y, движение вперед), в 0.10.

Теперь нажмите [P]. Вы увидите, что куб непрерывно движется вдоль оси Y. Нажмите , чтобы вернуться в Блендер. Нажмите [P] снова. Вы увидите, что опять происходит та же самая последовательность событий. Нажмите , чтобы снова вернуться в Блендер.

Резюмируем, что же происходит в GE. Сенсор каждый фрейм посылает сигнал контроллеру. Тот посылает сигнал актуатору, который в свою очередь применяет к объекту Motion, что перемещает куб на 0.1 единицу вдоль оси Y. Так, как это происходит в каждом фрейме, мы видим, что куб непрерывно перемещается. Если вы оставите игру запущенной, куб, в конце концов, уедет в бесконечность. Это настолько же интересно, как и наблюдать, как растет трава, поэтому продолжаем урок дальше!

Управление кубом с помощью клавиш курсора

Сейчас за перемещение куба отвечает сенсор Always. Мы изменим это так, чтобы теперь перемещение можно было контролировать нажатиями клавиш.

Щелкните по параметру Always сенсора (или нажмите <> справа от него). Это вызовет список доступных типов сенсора (см. рисунок справа).

Выберите из списка Keyboard. Сенсор теперь изменится и покажет варианты настройки клавиатуры.

Эта новая панель сенсора позволит нам выбрать клавишу, нажатие которой пошлет сигнал контроллеру, который, в свою очередь, передаст сигнал на актуатор. Щелкните по кнопке, обозначенной, как Key, и, когда на ней появится надпись “Press a key”, нажмите на клавиатуре кнопку [Вверх].

Нажмите [P], чтобы запустить игру. Куб больше не перемещается автоматически. Нажмите клавишу [Вверх], и он начнет двигаться. Когда вы прекратите нажимать на клавишу, куб остановится. Нажмите клавишу снова, и куб опять начнет двигаться. Нажмите , чтобы вернуться в Блендер.

Добавление дополнительных средств управления клавиатурой



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

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

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

Во вновь добавленном сенсоре, измените его тип на Keyboard, и назначьте клавишу [Вниз]. В новом актуаторе Motion, установите значение Y (2-я колонка) параметра dLoc на -0.1.

Нажмите [P], чтобы запустить игру. Если логические блоки были настроены правильно, вы теперь можете двигать куб вперед и назад, используя клавиши [Вверх] и [Вниз].

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

Добавьте три новых логических блока, соедините их, и измените тип сенсора на Keyboard. Назначьте сенсору клавишу [Влево].

Теперь заставим актуатор Motion вращать куб. Мы будем вращать объект вокруг его оси Z. В параметре dRot установите значение Z (3-я колонка) в -0.1.

Запустите игру. Теперь, когда нажмете клавишу [Влево], куб будет вращаться. А когда, повернув куб, вы нажмете клавишу [Вверх], куб станет двигаться в том направлении, куда вы его повернули. Нажмите , чтобы вернуться в Блендер. Добавим возможность вращать объект в другую сторону.

Как и раньше, добавьте три новых логических блоках, соедините их, и измените тип сенсора на Keyboard.

Назначьте сенсору клавишу [Вправо], и установите в актуаторе Motion значение Z (3-я колонка) параметра dRot в 0.1.

Снова запустите игру. Теперь вы можете двигать куб по всей сцене, используя клавиши управления курсором. Заметьте, что вы можете добавить такую логику игры к любому объекту в Блендере (независимо от его формы и размера), и он будет перемещаться точно так же, как и наш куб. Нажмите , чтобы вернуться в Блендер.

Немного о хранении настроек GE


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

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

Нажмите в панели логики, чтобы развернуть ее в полный экран. В первой панели сенсора, рядом с типом сенсора, вы можете видеть текстовое поле, где написано sensor. Это название надо заменить на и что-то более информативное. Измените этот текст на "up key". Затем, нажмите на кнопку со стрелкой, справа от текстового поля, чтобы свернуть панель сенсора.

Повторите это для других сенсоров. Сделайте то же самое для актуаторов, давая им названия (например "move forward", "turn left", и т.д.).

Нажмите еще раз, чтобы восстановить панель логики в ее нормальный размер.

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

Удаление логических блоков и связей

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

Создание движения куба с помощью физики

Одна из самых мощных особенностей игрового движка Блендера - встроенный физический движок Bullet.

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

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

Сцена будет состоять из сферы, использующей физику.

Прежде, чем начать, сбросим сцену в Блендере в начальное состояние, и настроим вид 3D-окна, как показано на рисунке справа. Чтобы сделать это, проделайте следующие действия:

  • Выберите File > New, и нажмите на Erase All.
  • Поверните сцену, используя среднюю кнопку мыши (MMB)
  • Измените вид в режим перспективы, используя View > Perspective (или )
  • Измените режим прорисовки в 3D-окне на Textured mode (можно нажать )
  • Откройте панель логики (Logic) игры

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

  • Добавьте сферу, Add > Mesh > UVSphere (меню Add можно так же вызвать нажатием клавиши [Пробел]).
  • В параметрах сферы укажите Segments: 32, Rings: 32.
  • Выйдите из режима Edit, нажав клавишу , и вернитесь в режим Object.
  • Нажмите , чтобы очистить параметры поворота сферы (сфера все еще должна быть выделена).

Создание физической модели в GE

В панели логики вы можете найти кнопку Actor.

Нажмите эту кнопку, и вам станет доступен ряд настроек для выделенного объекта.

Включите кнопку Dynamic. Это скажет GE, что выбранная модель - физический объект. Так же появится ряд дополнительных настроек для объекта.

Укажите следующие настройки:

  • Rigid Body. Объект будет правильно вращаться с помощью физического движка GE. Если эта опция не будет включена, объект сможет лишь перемещаться, но не сможет вращаться.
  • No sleeping. Объект никогда не будет деактивироваться (“засыпать”).

Теперь нажмите [P], чтобы войти в GE. Вы увидите, что, даже при том, что мы не добавляли никаких логических блоков, сфера начинает двигаться. Это происходит потому, что сила тяжести действует на сферу, и она начинает падать. Это иллюстрирует одну из особенностей взаимодействия в пределах физического мира сцены. Нажмите , чтобы вернуться в Блендер.

Нам нужно добавить в сцену что-то, на что сфера может упасть.

Добавьте в сцену поверхность (Add > Mesh > Plane).

Нажмите , чтобы сменить режим Edit на Object.

Нажмите , чтобы очистить параметры поворота объекта.

Поместите поверхность под сферой, и нажмите [P]. Вы увидите, что теперь сфера падает на поверхность и останавливается.

Теперь нам надо увеличить поверхность так, чтобы у нас было больше места для того, чтобы перемещать сферу по поверхности.

Смените тип 3D курсора с режима перемещения в режим масштабирования ().

Увеличьте поверхность так, чтобы она стала приблизительно в десять раз больше по осям X и Y.

Рисунки справа иллюстрируют процесс добавления, перемещения и масштабирования поверхности.

Перемещение физического объекта в GE

Теперь мы применим физические силы к сфере, заставив ее перемещаться по сцене.

ВНИМАНИЕ. Убедитесь, что сфера выделена. Если вы только что создали поверхность, она все еще будет выделенной. Чтобы снова выделить сферу, вам надо щелкнуть по ней правой кнопкой мыши.

Добавьте сфере новые сенсор, контроллер и актуатор в панели логики, и соедините их.

В актуаторе Motion нам надо установить значения параметра Force, чтобы перемещать объект по сцене.

Установите значение Y (2-я колонка) параметра Force в 1.


Теперь нажмите [P]. Вы можете видеть, что сфера падает на поверхность и начинать катиться.

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


Чтобы поправить это, мы изменим направление действия силы с локальной оси на глобальную. Чтобы сделать это, отключите кнопку L справа от параметра Force. Нажмите [P] снова, и вы увидите, что сфера непрерывно катится в нужном направлении.

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

Кроме того, как только сфера достигнет края поверхности, она будет информирована движком об этом факте, и продолжит падать.

Это всего лишь некоторые примеры использования физики в GE.

Нажмите , чтобы вернуться в Блендер.

Управление сферой с помощью клавиш курсора


Теперь возьмем сферу под свой контроль, используя клавиши управления курсором.

Измените тип сенсора на Keyboard, и назначьте ему клавишу [Вверх].

Теперь добавьте новые сенсоры, контроллеры и актуаторы, соедините их между собой, и настройте следующим образом:

  • сенсор клавиши [Вниз] управляет актуатором Motion со значением -1 в поле Y (2-й) параметра Force (с отключенной кнопкой L).
  • сенсор клавиши [Влево] управляет актуатором Motion со значением -1 в поле X (1-й) параметра Force (с отключенной кнопкой L).
  • сенсор клавиши [Вправо] управляет актуатором Motion со значением 1 в поле X (1-й) параметра Force (с отключенной кнопкой L).

Когда вы снова нажмете [P], вы сможете управлять сферой и перемещать ее по поверхности. Нажмите , чтобы вернуться в Блендер.

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

Можете поэкспериментировать со значениями в актуаторах от 1 до 2, и от -1 до-2.



Добавление препятствий в сцену

Добавьте в сцену куб (Add > Mesh > Cube). Нажмите , чтобы выйти режима Edit. Нажмите , чтобы очистить параметры поворота объекта, и поместите куб куда-нибудь, на поверхность.

Повторите этот шаг, добавив на поверхность еще несколько различных объектов.

Теперь, нажмите [P]. Вы увидите, как сфера сталкивается и отскакивает от объектов, которые вы добавили. Это еще один пример использования физики в GE.

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

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

Создание нескольких физических объектов

Выделите куб, который вы добавили в сцену. В панели логики, установите те же параметры физики, которые вы устанавливали для сферы (только не включайте No sleeping, чтобы позволить объекту “заснуть”; когда объект это освобождает ресурсы для вычислений в физическом движке)

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

Однако, куб перемещается очень странным способом - он фактически катится, словно он круглый.

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

Найдите кнопку Bounds ниже секции Actor. Нажмите эту кнопку, и в дополнительном списке можно будет выбрать различные модели взаимодействий. По умолчанию это - Box.

В случае куба модель будет замечательно работать. Однако, если у Вас будет более сложная форма объекта, то вам, возможно, поможет модель “Convex Hull Polytope”.

Выберите какой-нибудь, другой объект из тех, которые вы добавили в сцену, и повторите те же шаги, только выбрав модель взаимодействия “Convex Hull Polytope”.

Нажмите [P], и покатайте сферу к разным объектам, заставляя из двигаться. Нажмите , чтобы вернуться в Блендер.


Переименование объектов

Когда вы добавляете новый объект, Блендер назначает этому объекту название по умолчанию (например. Cube, или Cube.001, если Cube уже существует).

Хорошей практикой является переименование объектов согласно их роли в сцене. Это сделает вашу сцену более понятной как вам, так и другим людям, изучающим вашу сцену. Чтобы переименовать объект, вы можете выбрать панель Object, и изменить название в поле OB вкладки Object and Links.

Вы можете также переименовать объект в панели Editing, во вкладке Link and Materials.



Завершение урока по основам GE

Поздравляем! Вы завершили урок по основам использования Blender Game Engine! У вас теперь есть основные навыки использования GE. Но вам еще нужно набраться опыта по следующим темам:

  • Соединение сенсоров, контроллеров и актуаторов в панели логики.
  • Использование актуатора Motion для прямого перемещения объектов.
  • Использование актуатора Motion для перемещения объектов с помощью физики.
  • Управление объектами игры с помощью клавиатуры.
  • Создание простой 3D-игры.
  • Создание в GE новых объектов с физикой.

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

На данном этапе, вы, возможно, захотите построить заключительную сцену заново, чтобы проверить, насколько далеко вы сможете пройти, не читая урока. Если вы сможете восстановить все по памяти, значит вы находитесь на пути к становлению продвинутым пользователем Blender GE!

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

Создание более сложных уровней игры и взаимодействий

Создание прыжка сферы


Сейчас мы заставим нашу сферу подпрыгнуть, когда мы нажмем клавишу [Пробел].

Добавьте новый сенсор, контроллер и актуатор к сфере и соедините их. Измените тип сенсора на Keyboard, и назначьте ему клавишу [Пробел].

В секции Force актуатора Motion, установите значение Z (2-я колонка) в 250. Отключите кнопку L, чтобы усилие применялось относительно глобальной системы координат, а не локальной системы координат объекта.

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

Нажмите [P], и в игре нажмите клавишу [Пробел]. Вы заметите, что сфера подпрыгнет прямо в воздухе. А если вы будете постоянно держать клавишу [Пробел] нажатой, то сфера будет постоянно подниматься вверх.



Мы должны создать дополнительное ограничение - сфера может подпрыгнуть только тогда, когда она касается поверхности. Чтобы сделать это, мы будем использовать сенсор типа Touch. Добавьте еще один сенсор к сфере, и измените его тип на Touch. Теперь соедините этот сенсор с тем же контроллером, с которым связан сенсор клавиши [Пробел].

Контроллер пошлет сигнал в связанный с ним актуатор только тогда, когда к нему поступят сигналы от двух сенсоров одновременно, т.е. будет нажата клавиша [Пробел] и сфера будет касаться другого объекта, например, поверхности.


Рестарт игры по событию

Когда сфера коснется определенного объекта, мы заставим GE перезапустить игру.

  • Добавьте новый объект в сцену (мы будем использовать цилиндр), и разместите его где-нибудь, недалеко от сферы (но не касаясь ее). Удостоверьтесь, что новый объект выделен.
  • Откройте панель логики, добавьте объекту сенсор, контроллер и актуатор и соедините их вместе.
  • Измените тип актуатора на Scene. Действие по умолчанию актуатора Scene - Restart.

Теперь, нажмите [P], чтобы запустить игру. Будет похоже, что ничто не происходит. Это потому, что сенсор Always постоянно вызывает актуатор Scene, а тот, в свою очередь, рестартует игру.


  • Измените тип сенсора на Keyboard, и назначьте ему клавишу [R].
  • Нажмите [P], и вы снова сможете двигать сферу.

Нажатие же клавиши [R] перезапустит игру.

Нажмите , чтобы выйти из игры.

Теперь измените тип сенсора на Touch.

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

Нажмите , чтобы выйти из игры.

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

Сбор предметов в игре

Мы добавим в сцену объекты, которые игрок сможет собрать, когда подходит к ним.

  • Добавьте на сцену сферу и поместите ее на некотором расстоянии от главной сферы.
  • Добавьте этой сфере сенсор, контроллер и актуатор, и соедините их.
  • Измените тип сенсора на Near
  • Измените тип актуатора на Edit Object.
  • В настройках актуатора измените Add Object на End Object.
  • Включите кнопки Actor и Ghost. Параметр Ghost означает, что никакие другие объекты не смогут взаимодействовать с данным объектом.

Запустите игру. Теперь, когда вы будете двигаться около этой сферы, она исчезнет.

Нажмите , чтобы вернуться в Блендер.

Подсчет собранных объектов

Когда мы подбираем объект, нам нужно как-то это запомнить, чтобы показать общее количество собранных объектов.

Для этого будем использовать актуатор Message, который посылает сигнал другому объекту сцены, у которого есть сенсор Message. Этот сенсор будет реагировать на сообщение от актуатора, и увеличивать количество собранных объектов.

  • Добавьте еще один актуатор к сфере, которую мы будем подбирать, и измените его тип на Message.
  • Соедините этот актуатор с существующим контроллером.


  • Измените поле Subject актуатора на что-нибудь, понятное, например "pickup". Важно запомнить это название, поскольку оно потребуется для настройки сенсора Message.

Когда сенсор Near сработает, будут вызваны сразу оба актуатора, и актуатором Message будет послано сообщение всем объектам в сцене.

Для хранения информации о количестве собранных объектов мы будет использовать другой объект. Для этой цели можно использовать объект Empty. Он будет присутствовать на сцене, но, поскольку у него нет никакой геометрии, его не будет видно в GE.

  • Добавьте объект Empty на сцену (Add > Empty).
  • Когда этот объект выделен, нажмите на кнопку Add Property в панели логики.
  • Измените название добавленного свойства (Property) объекта на items, и смените его тип с Float на Int (целое число). Тут мы будем хранить количество собранных объектов.
    • Добавьте объекту Empty сенсор, контроллер и актуатор, и соедините их.
    • Измените тип сенсора на Message, и наберите в поле Subject "pickup" (то самое название, которое вы указали в поле Subject актуатора Message собираемого объекта).
    • Измените тип актуатора на Property, и смените в его настройках Assign на Add.
    • Измените поле Prop на "items" (название свойства, которое нужно увеличивать), и установите Value в 1.

    Теперь, нажмите [P], чтобы запустить игру, и подберите объект - вы увидите, что когда вы его подберете, значение items увеличится.

    Нажмите , чтобы вернуться в Блендер.

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

    Добавление цвета в игру с помощью Материалов

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

    • Откройте панель Materials, нажав на иконку с серой сферой, или нажав клавишу .
    • Выделите нашу основную сферу в 3D-окне правой кнопкой мыши (RMB).
    • Нажмите на кнопку Add New. Это добавит сфере новый материал. Появится большое количество настроек для материала. Нам сейчас надо только изменить цвет материала.
    • Нажмите по полю, обозначенному, как Col, которое задает основной цвет материала.
    • Появится диалог выбора цвета. Выберите в нем красный цвет, и уведите курсор мыши с окна диалога. Сфера на сцене станет красной.

    Повторите эти шаги для других объектов в сцене, назначив им различные цвета.

    Создание автономной версии игры

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

    В меню Блендера, выберите File > Save Runtime.

    В диалоге Save введите имя исполняемого файла для игры (например ball_game). Это создаст файл ball_game.exe.

    Краткий обзор всех типов сенсоров, контроллеров и актуаторов Блендера

    Сенсоры

    • Joystick - реагирует на сигналы от джойстика (Влево/вправо, вверх/вниз, кнопки).
    • Message - срабатывает, когда приходит сообщение. Вы можете послать сообщения другим объектам, используя актуатор Message.
    • Ray - срабатывает, когда объект находится около заданной оси координат. Вы можете дополнительно проверить, материал объекта или значение Property.
    • Random - срабатывает случайным образом. Частота срабатываний регулируется параметром Seed (или используйте генератор случайных чисел в Python).
    • Property - срабатывает, когда значение свойства находится между заданными минимумом и максимумом, или равно заданной величине.
    • Radar - срабатывает, когда объект появляется заданной области (задается расстоянием и углом).
    • Near - срабатывает, когда объект появляется на заданном расстоянии от объекта с сенсором.
    • Collision - срабатывает, когда объект вступает во взаимодействие (сталкивается) с другим объектом. Вы можете задать материал или свойство, которые должен иметь объект.
    • Touch - срабатывает, когда объект касается объекта с сенсором.
    • Mouse - срабатывает, когда происходит заданное событие мыши, например клик кнопкой мыши, перемещение мыши и т.д.
    • Keyboard - срабатывает, когда нажата заданная клавиша.
    • Always – срабатывает непрерывно.

    Контроллеры

    • AND - вызывает связанный актуатор, если сработали все связанные с ним сенсоры.
    • OR - вызывает связанный актуатор, если сработал хотя бы один связанный с ним сенсор.
    • Expression – Вычисляет выражение.
    • Python - вызывает скрипт на языке Python.

    Актуаторы

    • Visibility - Показывает или скрывает объект.
    • Game - Перезапускает или останавливает игру. Может также загрузить новую сцену.
    • CD – Позволяет управлять музыкальными треками на компакт-диске.
    • Message - Посылает сообщение во все объекты сцены, или в заданный объект. Это сообщение принимает сенсор Message.
    • Random – Устанавливает случайное значение в свойстве объекта.
    • Scene - Позволяет управлять сценой - загрузка, игра, пауза и т.д. Этот актуатор очень полезен для показа различных сцен, таких как заставка или меню. Когда пользователь хочет начать игру, сенсор клавиатуры (например нажатие клавиши [Пробел], чтобы начать игру) можно привязать к актуатору Scene, который загрузит сцену игры. Также этот актуатор позволяет вам указывать, как камера будет смотреть на сцену.
    • Edit object - дает контроль за добавлением, редактированием и удалением объектов в сцене во время игры. Может быть использован, например, чтобы выпустить пулю из оружия. Умеет также отслеживать объекты.
    • Property - Установка значений свойств объектов.
    • Sound - Позволяет управлять звуком. Доступны только те звуковые треки, которые были загружены в Блендер.
    • Camera - Позволяет камере отслеживать объект. Камера может быть помещена позади объекта (а также по осям X или Y) и закреплена на заданном расстоянии (минимум и максимум) от объекта, и на заданной высоте.
    • IPO - Позволяет управлять анимацией объекта в игре.
    • Constraint - Ограничивает возможные положения объекта.
    • Motion - Позволяет управлять движением объекта. Управление может быть как прямое (dLoc и dRot), так и с помощью физики (Force и Torque)

    Продолжение работы с Blender Game Engine

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

    Полезные ссылки

    Это один из лучших ресурсов для пользователей GE. Если вы хотите задать какие-нибудь вопросы по работе с GE, опубликовать какие-то ваши работы, или просто улучшить свои знания GE, вы обязательно должны посетить этот форум.

Издание второе, переработанное и дополненное


Данный урок расскажет вам, как с нуля (ну, в Blender, естественно) создать простую трехмерную игру. Совершенно без какого-либо программирования на языках, хотя это возможно. Вам необходимо иметь базовые знания о Blender. Я рассчитываю на то, что вы уже неплохо разбираетесь в интерфейсе, и на мелочах вроде наведения курсора, нажатия левой кнопки мыши, отпускания левой кнопки мыши, нажатия и отпускания кнопки G для перемещения и последующего щелчка и т.п. я задерживаться не буду.

Для тех, у кого индивидуальная непереносимость русского перевода:

Русские картинки
Английские картинки


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

Далее вы можете сделать удобный вам интерфейс, но в Blender уже всё заготовлено. Выбрав макет «Game Logic», вы получите удобный интерфейс.

Включите режим отображения Текстура (Texture), чтобы игра выглядела как нам надо.


Запустить игру вы можете, наведя курсор на нужный 3D-вид (если вы успели сделать их несколько) и нажав P (английскую, по-русски З, между Щ и Х:)). Можно запустить игру и через меню Игра - Запустить игровой движок (Game - Start Game Engine). Если вы попробуете запустить игру сейчас, то ничего интересного не произойдёт, будет лишь серый кубик на сером фоне. Нажмите Esc, чтобы выйти из игры. Но это не поможет, если вы задействуете в игре эту клавишу, так то будьте осторожны;)

Перед запуском игры вы можете нажать Shift+Пробел или Ctrl+Вверх/Вниз, чтобы развернуть окно, над которым находится курсор, во весь экран и чтобы не проверять игру на маленьком, еле-заметном 3D-окошке. Также вы можете нажать T или N, чтобы скрыть левую и правую панель 3D-вида соответственно.

Вы можете спрятать «мусор» вроде пустышек, 3D-курсора, сетки и пр., нажав N (предварительно наведя курсор на 3D-вид) и в появившейся панели во вкладке Отображение (Display) выбрав Только визуализируемое (Only Render). При этом фон изменит цвет на тот, что установлен в настройках мира (World).


В этой же панели через меню Затенение (Shading) вы можете включить GLSL вместо мультитекстурного, позволяющий делать более красивую графику (например, тени).

Создание материалов для игры в целом совпадает с созданием для Blender Internal Render (пока что это рендер по умолчанию, но скоро его заменит Cycles), но есть ограничения. Например, не работают все процедурные текстуры, трассировка лучей (и, как следствие, нет теней у некоторых ламп), гало. Рекомендуется создавать UV-текстуры. Нет частиц, но их можно имитировать с помощью большого количества объектов (нет, копировать вручную не надо; их добавление во время игры рассматривается ниже). Без GLSL ограничений ещё больше, а освещение совсем уже некрасивое.

Статья будет полезна начинающим разработчикам игр. В ней мы рассмотрим преимущества и способы создания и рендеринга трёхмерных объектов для изометрических 2D-игр на примере Blender. В статье не будет каких-то сложных операций, достаточно начальных знаний 3D-редактора. Для примера рендеринга и анимации я взял башню из Dune2, и, чтобы ей было не так скучно одной, дополнил двумя постройками из Desert Strike.

Преимущества такого подхода по сравнению с отрисовкой в 2D : скорость и удобство создания анимаций, простота модернизации моделей (например, для создания апгрейдов зданий), достаточно хорошие результаты при низких затратах времени.

Недостатки : снижение «душевности» изображений и, собственно, необходимость знания 3D-моделирования.

Начало работы, подготовка сцены

По умолчанию «пустой» файл Blender создается с тремя объектами: камерой, источником света и кубиком в центре. Начнём настройку с камеры, в её свойствах переключимся с режима Perspective на Orthographic, затем укажем для неё в панели Properties следующие параметры:

Transform
X: 12.0
Y: -12.0
Z: 12.0

(как видите, координаты имеют вид N, -N, N, при этом N может быть любым, ведь у нас ортогональная камера)

Rotation
X: 54.8°
Y: 0°
Z: 45°

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

Попробовав отрендерить (F12 ) первую изометрическую пробу, вы убедитесь, что грани куба освещены очень неравномерно. Займемся же светом! Во-первых, в свойствах мира (вкладка World) включим Ambient Occlusion и укажем для него нужное значение Factor (в примере установлено 0.5). Во-вторых, сменим тип источника света с Point на Sun. Это нужно, чтобы все тени были направлены в одну сторону и не зависели от положения объекта относительно источника света.


Пример рендера с источником света Point


Пример рендера с источником света Sun

Кстати о тенях, не повторяйте моей ошибки! Если вы по какой-то причине хотите, чтобы все игровые объекты находились на одной сцене и рендерились одновременно (например, чтобы не склеивать spritesheet из отдельных изображений), то следите за тем, чтобы друг на друга они никак не влияли и их тени и освещение (неоновые вывески, фонари и т.д.) не перекрывали другие объекты. На изображении в начале статьи заметно, что тень от башни падает на дозорную вышку.

Кубики наши рендерятся на некрасивом сером фоне, который конечно же нужно отключить, чтобы не мучаться потом с вырезанием фона объектов. Для этого во вкладке Render найдите раздел Shading и измените режим Alpha со Sky на Transparent (если вы используете рендер Blender Render) или поставьте галочку Transparent в разделе Film (в Cycles Render).

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


Башня бодро вращается

Во многих стратегиях используется визуальное отображение строительства зданий: сначала возводится фундамент, затем стены и так далее. Попробуем сделать что-нибудь подобное. Выделим все объекты в сцене (A ), затем дублируем их (Shift-D ) и переместим во второй слой (M и выбрать нужный слой). Операцию можно повторять столько раз, сколько нам нужно фаз строительства. Перейдём во второй слой и «разрушим» башню.


Повторим нужное количество раз, et voila!

Постпроцессинг

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


Примеры работы Freestyle

Надеюсь, я доказал, что создание элементов для двухмерных игр в «трехмерье» во многих случаях быстрый и удобный процесс. Спасибо за внимание!