Blender game engine - андрей трупів

Blender заслужено вважається перлиною спільноти Open Sources і одним з найпотужніших інструментів для роботи з 3D-графікою не тільки для Linux, але і Windows. Але так чи так він хороший з позиції розробки ігор? У цій статті буде розглянуто ігровий движок Blender Game Engine, який є вбудованим компонентом Blender.

ЗМІСТ

Blender game engine - андрей трупів

1. Історія розвитку

На цьому історія Blender могла закінчитися, якби не було потужного спільноти - шанувальників програми. На подив усьому світу, всього за два місяці було зібрано суму в 100000 євро, яка послужила своєрідним викупом за свободу Blender. З цього моменту розвиток програми пішло по законам Open Sources.

На старті розробки передбачалося, що BGE (Blender Game Engine) послужить всього-лише майданчиком для створення і обкатки прототипу гри, а основне навантаження на себе візьме Crystal Space - за всіма параметрами більш технологічний движок також з табору Open Sources. В процесі роботи команда розробників прийшла до рішення випустити гру в обох варіантах. Цікавий факт, що варіант з BGE виявився більш виграшний, як за якістю промальовування картинки, так і по насиченню рівнів.

Для вирішення поставленого завдання розробникам довелося значно розширити і доповнити стандартні можливості движка. І до цього дня, кожен реліз програми продовжує балувати своїх користувачів новими фичами BGE.

2. Ода на славу BGE

Всупереч головному канону журналістики - підходити виважено і обдумано до розкриття теми статті, ми зібралися вивалити на читача (тобто на вас), гору хвалебною інформації по BGE і цьому є свої причини.

Що таке ігровий движок? Це сукупність програмного коду, що дозволяє реалізувати - графічний і фізичний світ гри; підтримку AI і мережевого режиму; звукового супроводу і інтерфейсу користувача. Візьмемо, наприклад, відомий графічний движок OGRE. На його основі і цілком успішно випущені кілька комерційних ігор, що позитивно говорить про його придатності до масштабних проектів. Ось тільки одне АЛЕ - це ГРАФИЧЕСКИЙ движок, а не ігровий. Його завдання вивести на екран красиву картинку і мало-мальськи забезпечити взаємодію з користувачем. Звичайно, за рахунок модульної структури до нього можна "прикрутити" фізику, звук і мережу, але на це потрібні зайві людино-годин.

Blender в цьому відношенні більш зручний. У своєму складі він має вбудований фізичний движок Bullet. підтримку мережі через скрипти Python, графічний рендер з повноцінною підтримкою шейдеров.

Blender game engine - андрей трупів

Кожен більш-менш просунутий розробник намагається скоротити час і зусилля за рахунок маси утиліт, що виконують всю чорнову роботу: прорахунок lightmap, створення ландшафту, наповнення об'єктами рівнів, скріптованія і т.д. і т.п.

Мало який з вільних движків може всім цим похвалитися, але тільки не Blender. У розпорядженні розробника є стандартний інструментарій програми, що дозволяє моделі і текстурувати; розміщувати об'єкти на сцені і налаштовувати фізику; створювати логіку і в кінці роботи компілювати вихідні. Зауважте, що всі ці маніпуляції можна проводити не написавши жодного рядка коду. Blender надає чудовий інтерфейс конструктора, де ігрова логіка налаштовується простим клацанням миші. Ті, кому цієї можливості мало, можуть через написання скриптів Python безпосередньо звертатися до API движка і управляти грою. По суті справи, для створення гри немає необхідності виходити з програми, так як все необхідне в ній вже є.

Blender game engine - андрей трупів

Як відомо, голод гравців на нововведення справді непереможний: стенсільние тіні, динамічне освітлення, paralax mapping, rigid і ragdol - вже не викликають захоплений писк, а є стандартною вимогою. Ігри, які вийшли за все років п'ять тому виглядають примітивно у порівнянні з сучасними. Відповідно, ігрові движки повинні своєчасно вводити нові фічі, щоб не відстати від вимог часу і апетитів гравців. А як справа йде у BGE?

З моменту виходу Apricot графічний рендер движка (ми говоримо про ігровому движку, а не стандартному рендер програми) зазнав значних змін. Сучасного вигляду візуальної частини гри неможливий без використання шейдеров. До зазначеного релізу розробник міг використовувати шейдери, власноруч написавши необхідний блок коду на мові GLSL, через підтримку Python. Однак зараз є можливість використання вбудованих шейдеров матеріалів без етапу програмування. Наприклад, налаштований матеріал об'єкта з normal map буде однаково оброблятися, як стандартним рендером, так і realtime-движком. Мало того, 3D-вікно програми дозволяє переглядати роботу шейдеров без безпосереднього запуску движка. Природно, залишена можливість написання своїх власних процедур на GLSL. Так вже є непогана добірка шейдерних програм, адаптованих спеціально під BGE (можна знайти на форумі спільноти Blender - www.blenderartists.org).

З версії 2.49 Blender обзавівся новим релізом фізичного движка Bullet. Цікаво, що багато його смачні можливості виявилися доступними і для ігрового режиму. Обробка в реальному часі ефектів soft body, rigid body ставить BGE на сходинку вище до великим монстрам комерційних ігрових движків індустрії. Хоча Blender позиціонується, як середовище для розробки тривимірних ігор, в новому релізі з'явився режим роботи фізичного движка в двомірному просторі, що, на думку розробників програми, може підстьобнути інтерес до створення казуальних ігор.

Blender game engine - андрей трупів

Останнім часом в сучасних іграх стало модним використовувати постобработку вже відрендерене картинки. Прикладами можуть служити гри серіалу NFS або той же самий Constantine. Пам'ятайте ефект форсажу в першому прикладі або підрівні пекла в другому?

Blender також дозволяє використовувати постобработку, яка в його термінології отримала назву фільтр. Подібне нововведення з'явилося пару релізів назад і тепер від версії до версії колекція фільтрів все збільшується. Нехай на даний момент їх кількість обчислюється десятком, але при відсутності необхідного програміст може написати свій власний.

Blender game engine - андрей трупів

3. А як на практиці?

Blender game engine - андрей трупів

Однак не поспішайте скидати BGE з рахунків! Давайте розберемося для яких ігор його можна використовувати, а де небажано. Зрозуміло, що для жанрів типу покрокової стратегії або квесту особливо не критичний низький fps, тому можна використовувати всі можливості BGE на повну котушку, але на іграх активної дії слід зупинитися докладніше.

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

Розглянемо спочатку шутер. Розрізняють три види шутерів, з точки зору оточення - це indoor (закритий простір), outdoor (відкритий простір) або змішаний. Здається, зрозуміло, що гра з дією в закритому приміщенні набагато простіше для прорахунку, ніж з великим простором. Проблема полягає ще в тому, що неможливо одночасно завантажувати весь простір в пам'ять машини. Зазвичай ігрові движки, оптимізовані для роботи з відкритим ландшафтом, вміють працювати з так званої сторінкової завантаженням, тобто коли ігрова зона поділяється на сектори і в потрібний момент ядро ​​підвантажує необхідний блок, причому непомітно для користувача. BGE, на жаль, на це не здатен. Можна, звичайно, вручну розділити простір на зони і зберегти їх в окремі проектні файли або сцени, але непомітно продовжити ландшафт все ж не вдасться. Тут ми стикаємося з відсутністю такої необхідної речі, як портал. Втім, якщо рівень з відкритим простором відносно невеликий - варіант з окремими файлами сцен цілком підходить.

Наступна проблема - фізика. BGE вміє працювати зі звичайними зіткненнями, soft body, rigid body, частками. Все це на досить сучасному рівні. Але при великій кількості об'єктів з фізичними властивостями падіння швидкості неминуче. Розробники в останній версії програми 2.49, на момент написання статті, значно оптимізували код пов'язаний з розрахунком фізики. Працює дійсно швидше, але недостатньо для активної гри. Вихід може бути в відключенні фізики для тих об'єктів, які вже відпрацювали за сценарієм. Версія 2.49 має необхідні функції управління станом фізики, які доступні як з скриптів, так і логічних блоків.

BGE може з легкістю крутити сцени з сотнями тисяч полігонів. Але додайте сюди розрахунки фізики, обробку текстур, логіки і ваш герой буде рухатися зі швидкістю черепахи. Використовуйте нізкополігональних моделі з normal map. Так як подібні розрахунки бере на себе графічний чіп, то центральний процесор буде звільнений для більш важливих завдань.

Певну складність може надати особливості ліцензування Blender, правда лише в тому випадку, якщо гра передбачається бути комерційної та без відкриття початкових кодів. Нагадаємо, що ліцензія GNU GPL передбачає вільне використання, поширення або зміна коду програми. У випадку з контентом створеним в Blender - він є власністю творця, який може поширювати або продавати його на будь-яких умовах, в тому числі по інший ліцензії. Але ось код, скомпільований Blender потрапляє під діючу ліцензію GPL. Виходить, що продавати його можна лише з наявністю відкритих початкових кодів. Звичайно, в деяких випадках це незручно. Виходом може служити варіант підказаний самими розробниками Blender - використовувати первинний код лише для завантаження основного blend файлу (адже проектний файл є власністю його творця). Але виникає наступне питання, а як приховати вміст проектного файлу від цікавих очей?

4. Висновок

Важливим виглядає можливість реалізації проекту без виходу з самої програми. Та й набір пропонованих технологій вельми вражає: частинки, білборди, динамічні світло і тіні; кольорові тіні; просунута фізика і скриптова система; підтримка звуку і мережі; графічний конструктор; вбудовані і призначені для користувача шейдери; кроссплатформенность.

Здається, ця програма і її движок цілком підходять не тільки для початківців, але і просунутих розробників ігор. Спробуйте - не пошкодуєте!

Blender game engine - андрей трупів