Ігри створені на движку blender. Створення більш складних рівнів гри та взаємодій

Цей урок розповість вам, як створити з нуля просту тривимірну гру у Блендері. Після завершення уроку отримані навички дозволять вам створити власну 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, ви обов'язково маєте відвідати цей форум.

Стаття буде корисна початківцям розробникам ігор. У ній ми розглянемо переваги та способи створення та рендерингу тривимірних об'єктів для ізометричних 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

До речі про тіні, не повторюйте моїх помилок! Якщо ви з якоїсь причини хочете, щоб усі ігрові об'єкти перебували на одній сцені і рендерувалися одночасно (наприклад, щоб не склеювати спрітехеет з окремих зображень), то стежте за тим, щоб один на одного вони ніяк не впливали і їх тіні і освітлення (неонові вивіски, ліхтарі тощо) не перекривали інші об'єкти. На зображенні на початку статті помітно, що тінь від вежі падає на дозорну вежу.

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

З налаштуванням ми закінчили, перейдемо до створення об'єктів, наприклад тієї самої вежі. Думаю, не варто докладно розглядати процес її моделювання, відразу скористаємося тими перевагами, які дає нам тривимірний об'єкт.


Башта бадьоро обертається

У багатьох стратегіях використовують візуальне відображення будівництва будівель: спочатку зводиться фундамент, потім стіни і так далі. Спробуємо зробити щось подібне. Виділимо всі об'єкти в сцені ( A), потім дублюємо їх ( Shift-D) і перемістимо в другий шар ( Mта вибрати потрібний шар). Операцію можна повторювати стільки разів, скільки нам потрібно фази будівництва. Перейдемо в другий шар і зруйнуємо вежу.


Повторимо потрібну кількість разів, et voila!

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

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


Приклади роботи Freestyle

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

Стаття буде корисна початківцям розробникам ігор. У ній ми розглянемо переваги та способи створення та рендерингу тривимірних об'єктів для ізометричних 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

До речі про тіні, не повторюйте моїх помилок! Якщо ви з якоїсь причини хочете, щоб усі ігрові об'єкти перебували на одній сцені і рендерувалися одночасно (наприклад, щоб не склеювати спрітехеет з окремих зображень), то стежте за тим, щоб один на одного вони ніяк не впливали і їх тіні і освітлення (неонові вивіски, ліхтарі тощо) не перекривали інші об'єкти. На зображенні на початку статті помітно, що тінь від вежі падає на дозорну вежу.

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

З налаштуванням ми закінчили, перейдемо до створення об'єктів, наприклад тієї самої вежі. Думаю, не варто докладно розглядати процес її моделювання, відразу скористаємося тими перевагами, які дає нам тривимірний об'єкт.


Башта бадьоро обертається

У багатьох стратегіях використовують візуальне відображення будівництва будівель: спочатку зводиться фундамент, потім стіни і так далі. Спробуємо зробити щось подібне. Виділимо всі об'єкти в сцені ( A), потім дублюємо їх ( Shift-D) і перемістимо в другий шар ( Mта вибрати потрібний шар). Операцію можна повторювати стільки разів, скільки нам потрібно фази будівництва. Перейдемо в другий шар і зруйнуємо вежу.


Повторимо потрібну кількість разів, et voila!

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

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


Приклади роботи Freestyle

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

Blender – програма для створення анімованої комп'ютерної графіки та виробництва відео. Це насправді 3D-редактор, який підтримується багатьма користувачами завдяки відкритому вихідному коду. Але на даному 3D-редакторі завдяки вбудованому ігрового двигуна"Blender Game Engine", можна створювати і ігри будь-якого типу, спрямованості та жанру. Як виявляється, ігри на ньому можна створювати не вдаючись до скриптової мови, яка, до речі, є (Python) для деяких потреб. Стверджують, що ігри на ньому можна створювати за п'ять хвилин. Є довідки та посібники як з користування, і зі створення ігор. Можна ще розраховувати на велике ком'юніті користувачів Blender'а, до яких можна звернутися по допомогу. 3D-графіка має всі навороти OpenGL, різні високі дозволи, підтримка практично всіх популярних аудіо та відео форматів.

Підтримуються всі основні формати 2D графіки: TGA, JPG, PNG, OpenEXR, DPX, Cineon, Radiance HDR, Iris, SGI Movie, IFF, AVI та Quicktime GIF, TIFF, PSD, MOV та ін.

Підтримуються всі основні формати 3D графіки: 3D Studio, AC3D, COLLADA, FBX Export, DXF, Wavefront OBJ, DEC Object File Format, DirectX, Lightwave, MD2, Motion Capture, Nendo, OpenFlight, PLY, Pro Engineer, Radiosity, Raw Triangle, Softimage, STL, TrueSpace, VideoScape, VRML, VRML97, X3D Extensible 3D та ін.

Є можливість використовувати фізичний двигун Bullet Physics Library. Графіка в іграх може бути будь-якої складності, залежить від ваших умінь. Програма є абсолютно безкоштовною.

Для операційних систем: Windows 2000, XP, Vista, Mac OS X (PPC та Intel), Linux (i386), Linux (PPC), FreeBSD 5.4 (i386), SGI Irix 6.5, Sun Solaris 2.8 (sparc).




Graphical logical editor для визначення interactive behavior без програмування. Collision detection and dynamics simulation now support Bullet Physics Library. Бульба є відкритим джерелом з'єднання походження і міцні динамічні library розроблені для Play Station 3. Типи типів: Convex polyhedron, box, sphere, cone, cylinder, capsule, compound, and static triangle mesh with auto deactivation mode. Відтворення послідовності виявлення для RigidBody simulation. Support for in-game activation dynamic constraints. Full support for vehicle dynamics, including spring reactions, stiffness, damping, tyre friction etc. Python scripting API для sophisticated control and AI, fully defined advanced game logic. Увімкнути всі OpenGLTM lighting modes, включаючи transparencies, Animated and reflection-mapped textures. Спосіб для multimaterials, multitexture and texture blending modes, per-pixel lighting, dynamic lighting, mapping modes, GLSL vertexPaint texture blending, toon shading, animated materials, support for Normal Maping and Parallax Mapping. Playback of games і interactive 3D вміст без compiling або preprocessing. Audio, використовуючи SDL toolkit. Multi-layering Scenes for overlay interfaces.



 

Можливо, буде корисно почитати: