Донецкий техникум промышленной автоматики

Game Maker. Створюємо гру без програмування

Модуль пошуку не встановлено.

05.05.2004

Сергій Балабанов

Інтерес до комп'ютерних ігор останнім часом зростає в геометричній прогресії. У них грають не тільки і не стільки діти і підлітки, скільки вже дорослі люди. Це пов'язано, перш за все, з тим, що сучасна комп'ютерна гра - це не просто гра в нормальному розумінні цього слова - найчастіше це цілий віртуальний світ, "жити" в якому часом набагато цікавіше, ніж в світі цьому.

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

Що ж виходить - якщо у вас немає мільйонів і команди досвідчених ігроробів, шлях до створення геніальної гри закритий для вас назавжди? Зовсім ні. Сьогоднішні комп'ютерні технології дозволяють реалізувати ваш талант, не маючи нічого з цього. Більш того - ви можете не бути професійним програмістом, художником, дизайнером, композитором, і створити цілком хорошу і якісну гру. Все, що вам знадобиться, - це бажання творити, трохи терпіння і програма Game Maker.

Знайти та завантажити її можна на офіційному сайті www.gamemaker.nl . Остання на сьогоднішній день версія даної програми - 5.2.

Game Maker була придумана і розроблена голландським програмістом Марк Овермарс Game Maker була придумана і розроблена голландським програмістом Марк Овермарс. Ця програма була задумана як конструктор ігор, працювати з яким можна зовсім без знань програмування (хоча, незважаючи на це, в Game Maker вбудований власний нескладна мова програмування, проте його абсолютно не обов'язково застосовувати). Користуватися Game Maker надзвичайно легко. Весь процес розробки гри зводиться до створення так званих об'єктів (objects) (це все те, з чого складається гра - зброя, персонажі, дерева і т.д.) і відносин між ними. Припустимо, об'єкт "куля" при попаданні в об'єкт "людина" знищує його. Або, наприклад, об'єкт "танк" при зіткненні з об'єктом "стіна" припиняє свій рух. Саме такі умови визначають взаємодію об'єктів один з одним.

Абсолютно ясно, що кожен з них повинен мати своє, відмінне від інших, графічне зображення. Об'єкт "людина" повинен мати картинку, схожу на людину, а "танк" - на зображення танка. За візуальне відображення об'єкта в Game Maker відповідають спрайт (sprites). Спрайт - це картинка, або набір картинок, які використовуються об'єктом для власного відображення на екрані.

Крім того, об'єкти повинні переміщатися, взаємодіяти один з одним в будь-якому закритому просторі. Ці простору в Game Maker отримали назву кімнат (rooms).

З загальною теорією, схоже, все, тепер саме час перейти до ознайомлення з інтерфейсом програми:

Як бачите, він дуже простий. На верхній графічної панелі розташовані кілька груп робочих інструментів. Перша з них складається з трьох кнопок, які створюють, відкривають і зберігають файли, в яких зберігається ваша гра (формат * .gmd). Друга група дозволяє запускати гру. Третя є основною - тут розташовані кнопки, за допомогою яких в ігровій проект додаються основні "будівельні цеглинки": спрайт, звуки, кімнати і фони для них, об'єкти і т.д. Всі вони сортуються в розкривних папках зліва.

Тепер спробуємо створити невелику гру, на розробку якої у мене пішло близько однієї години. Ось як вона виглядає:

Це простенька аркада, в якій, керуючи літаком, потрібно знищити якомога більше ворожої авіації, уникаючи зіткнення з нею. Все спрайт, використані в цій грі, я взяв зі стандартного набору Game Maker - gmaker / sprites (картинки, які я використовував, поставляються не з усіма версіями Game Maker, так що якщо у вашому наборі їх не виявиться, можна легко замінити їх будь-якими іншими ).

Почнемо з додавання потрібних нам спрайтів Почнемо з додавання потрібних нам спрайтів. Натисніть на кнопку Add Sprite, розташовану на панелі інструментів, а в розпочатому далі вікні Sprite Properties на Load Sprite. Тепер знайдіть в папці Sprites / Transport файли "AV8A.bmp" і "B1.bmp", додайте їх в гру. Так як літаки в грі будуть рухатися в чотирьох напрямках, кожен спрайт повинен містити рівно стільки ж зображень: для літака, що летить вперед, назад, вліво і вправо. Для цього потрібно активувати Sprite Editor кнопкою Edit Sprite. Потім в меню Animation необхідно вибрати пункт Set Length і вказати число кадрів, рівне чотирьом. Тепер потрібно розгорнути кожну з створених картинок, натиснувши на неї, і у вікні, Image Editor активувати команду Transform / Rotate. Перший кадр слід розгорнути на 90 градусів, другий - залишити як є, третій - на 270, останній - на 180.

Отже, ви створили спрайт літака, яким будете управляти в грі, тепер необхідно проробити те ж саме для спрайту ворожих літаків на основі малюнка "B1.bmp". Також нам потрібно буде зробити спрайт кулі (рисунок Sprites / breakout / ball2.gif), спрайт вибуху (рисунок Sprites / Various / explode2.gif), табло для окулярів (будь-який малюнок).

Кнопкою Add a Backgroung додайте в проект фон (Backgrounds / sky.gif).

Усе. Підготовча частина закінчена. Тепер приступимо до створення об'єктів.

Натисніть на кнопку Add an Object, розташовану на панелі інструментів. У вікні налаштувань створеного об'єкта в списку Sprite виберіть спрайт вашого літака. Точно так же створіть об'єкт зі спрайтом ворожого літака і об'єкти з усіма залишилися спрайтами. Загалом має вийти п'ять об'єктів: ваш літак, літак ворога, куля, вибух і табло для окулярів.

Створіть нову кімнату (Add a Room) і розмістіть в ній об'єкт, який відповідає за ваш літак. Виберіть фон кімнати, використовуючи список Background image used в закладці Background.

Нашої першорядним завданням є створення призначеного для користувача керування літаком. Для того щоб реалізувати його, потрібно відкрити вікно Object Properties нашого літака і за допомогою кнопки Add Event вибрати події Key Press / <Left>, Key Press / <Up>, Key Press / <Right>, Key Press / <Down>. Тим самим ми додали в гру події, що виконуються при натисканні на клавіатурі кнопок "вліво", "вгору", "вправо" і "вниз". Тепер потрібно створити самі дії, що здійснюються за ці події. Абсолютно логічно, що при натисканні на клавіатурі кнопки "вліво" літак повинен рухатися вліво, і т.д., тому в вікно Action, розташоване навпроти списку подій, потрібно додати дію Start moving a direction, після чого слід відредагувати його напрямок для кожної події і вказати швидкість руху, рівну семи.

Запустіть гру Запустіть гру. Як бачите - керування літаком працює, проте його спрайт відображається некоректно. Тепер необхідно зробити так, щоб при русі в будь-яку сторону на об'єкт накладався відповідний кадр спрайту. Для цього потрібно створити нову подію під назвою Step і приписати до нього дію Set the value of a variable (Установка значення змінної), тому що нам необхідно зробити так, щоб кожен раз при зміні руху літака змінювалася змінна, що відповідає за номер фрагмента спрайту. В Game Maker вона носить назву "image_single". Слід відредагувати властивості дії Set the value of a variable, вказавши в графі variable змінну "image_single", а в графі її значення Value - "direction * image_number / 360":

Тобто, номер фрагмента = напрямку руху літака * номер картинки / 360 градусів.

Запустіть гру знову. Літак летить на всі боки, а фрагмент спрайту змінюється відповідно до напряму його руху.

Саме час приступити до створення ворожої авіації. В поле подій об'єкта вашого літака додайте таймер (Alarm 0). Як ви вже, напевно, здогадалися, ця подія здійснюється при завершенні будь-якого проміжку часу. Створіть дію Create an instance of an object (Створення зразка об'єкта). У налаштуванні цієї дії в списку object виберіть об'єкт ворожого літака. В поле x: напишіть "random (800)", а в полі y: - "random (600)". Поясню, що все це означає. Ми створили дію, яке будуть створювати ворожі літаки кожен раз через рівні проміжки часу в довільній позиції на екрані. Однак цього мало, тому що ще потрібно вказати тривалість цього часового проміжку.

Створіть подію Create. Воно буде виконуватися один раз, на самому початку гри. В поле Actions додайте дію Set an alarm clock. Воно встановлює час таймера. Налаштуйте цю дію. В поле number of steps: вкажіть число 100, а в in alarm no виберіть таймер Alarm 0. Точно таку ж дію слід додати і в подія Alarm0.

Запустивши гру і почекавши якийсь час, ви виявите, що ворожа авіація хоч і з'являється на ігровому екрані, але при цьому залишається абсолютно нерухомою. Для того щоб вона рухалася постійно, в довільному напрямку, необхідно створити подія Alarm0 для об'єкта ворожого літака і додати в нього дію Start moving a direction, налаштувавши його наступним чином:

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

Літаки рухаються, однак гри поки немає Літаки рухаються, однак гри поки немає. Саме час приступити до створення стрільби. Додайте в вікно Events: об'єкта вашого літака подія натискання клавіші Ctrl - Press Key / <Ctrl>. У список Actions: помістіть дію Create an instance of an object. Внесіть необхідні зміни, вибравши в списку object: об'єкт куля, в поля x: і y: внесіть значення x + 10 і y + 10 відповідно. Тепер, запустивши гру, ви можете переконатися, що при натисканні на клавішу Ctrl біля вашого літака з'являється куля, проте вона нерухома - ваше завдання змусити її рухатися. Для цього потрібно відкрити вікно Object Properties об'єкта кулі і додати нову подію Create. Потім - в список Actions: помістити Set direction and speed of motion. Змініть властивості цієї дії, вказавши в графі direction: "об'єкт вашого самолета.direction", а в графі speed: число 15.

Наступне наше завдання - зробити так, щоб при попаданні кулі у ворожий літак він знищувався. Відкриваємо вікно властивостей об'єкта ворожого літака. Додаємо нову подію зіткнення з об'єктом кулі - Collision. У список дій переміщаємо дії: Destroy the instances (Воно знищить ворожий літак), Create an instance of an object (Ця дія буде створювати об'єкт вибуху на місці знищеного літака. У графі object: вкажіть об'єкт вибуху, в x: - x, а в y: - y). Здається, все. Але ні - ще одна маленька деталь. Справа в тому, що, закінчивши анімацію, об'єкт вибуху не зникає з екрану. Це незручно і некрасиво. Його слід відредагувати, внісши в вікно Events: подія Other / Animation and, а навпаки, в список дій, знайоме нам вже дію Destroy the instances. Таким чином, після закінчення анімації свого спрайту, об'єкт вибуху зникає.

Залишився останній і найголовніший штрих - створення системи підрахунку очок і життів. Реалізувати її нескладно. Для початку створіть подію Create для об'єкта табло. Навпаки, в список Actions: додайте два однакових дії - Set the value of a variable. Відредагуйте їх властивості, вказавши в пунктах variable: нові змінні - global.life і global.score. У першій дії визначте значення змінної global.life рівне трьом, а в другому - змінної global.score рівне нулю. Ми створили дві змінні, одна з яких відповідає за підрахунок ваших життів, інша - за кількість набраних очок. Тепер потрібно зробити так, щоб при зіткненні з ворожою авіацією ваш літак втрачав одне життя, а при нульовому їх кількості гра б закінчувалася. Відкрийте вікно Object Properties об'єкта вашого літака і додайте нову подію зіткнення з ворожим літаком (Collision / Об'єкт ворога). У список Actions: помістіть дії: Destroy the instance, Create an instance of an object (вкажіть у вікні властивостей цієї дії об'єкт вибуху, що з'являється в точці x, y), Set the value of a variable (variable: global.life, value: global.life-1). Для перевірки наявності життів створіть наступні дії: If an expression is true (в пункті expression: властивостей даного об'єкта введіть умова global.life> 0), Create an instance of an object (для об'єкта вашого літака, що створюється в точці x: - random ( 800), y: - random (600). з життями розібралися. Тепер потрібно створити систему нарахування очок. Відкрийте вікно властивостей об'єкта ворожого літака і додайте в список дій події зіткнення з кулею нову дію - Set the value of a variable. у пункті variable : пропишіть змінну global.score, а в пункт value: значення global.score + global.score + 1. Таким чином, кількостей очок буде постійно збільшуватися з кожним новим збитим літаком. Так, за перший ви отримаєте всього 1 очко, за другий - 3, за третій - 7 і т.д.

Тепер потрібно зробити так, щоб кількість життів і набраних очок відображалося на екрані. Відкрийте вікно властивостей об'єкта табло і додайте в список events: нове подія Draw (Подія малювання). У вікно навпроти додайте дію вибору шрифту для мальованої тексту - Set a font for drawing text. Відредагуйте це дія, вибравши будь-який з вподобаних вам шрифтів. Далі помістіть дію Draw a text (Малювати текст). Також внесіть необхідні зміни, вказавши в графі text: наступний текст: "Life:" + string (global.life). У графі x: помістіть x, відповідно в y: - x. Додайте ще одну дію Draw a text, вказавши в пункті text: - "Score:" + string (global.score), в графі x: - x + 200, а в y: - y.

Здається, все. Створюйте свої власні цікаві ігри. Успіхів!


Що ж виходить - якщо у вас немає мільйонів і команди досвідчених ігроробів, шлях до створення геніальної гри закритий для вас назавжди?