Коротка історія розвитку ігрових движків

Про розробку ігор та становленні ігрової індустрії



image

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

Загальна для ігор функціональність — графічні рішення, ігрові механіки, розрахунок фізики та інше — стала виділятися в окремі бібліотеки, але, для того щоб бути «ігровим движком» було ще далеко. Багато в чому це було пов'язано з серйозною відмінністю програмно-апаратних платформ і невизначеності в самих іграх. Адже жанри і типи ігор ще треба було винайти, при тому, що багато перші ігри були текстовими. Власне, саме для ранніх адвенчур і платформерів і стали виникати ігрові движки, особливо з розвитком графіки — хорошим прикладом можна назвати Adventure Game Interpreter (AGI). При розробці king's Quest в далекому 1984 році, програмісти Sierra On-Line зіткнулися з незручністю низькорівневої розробки настільки складною і перспективною по графіку в ті часи гри — і розробили набір рішень, яким і став AGI. Все на ньому було випущено 14 різних ігор за 5 років на 7 різних платформах, тому поняття «кросплатформеність» було важливим вже тоді.
Однак, движки того часу рідко виходили за межі початкової компанії-розробника і, як правило, були досить вузькоспеціалізованими під конкретний жанр гри.

Початок

Ситуація почала змінюватися в 1993-му році після виходу гри Doom від компанії id Software. Хоча при її розробці використовувалися напрацювання гри Wolfenstein 3D, з точки зору можливостей і модульності в ній був здійснений справжній технологічний прорив. У той час відеопроцесори були не здатні ефективно працювати з тривимірною графікою, тому Джон Кармак (провідний програміст движка) виконував всі необхідні математичні обчислення, службовці для маніпуляції з тривимірними об'єктами, світлом, затіненням, накладенням текстур і іншого самостійно. В результаті, зображення виглядало тривимірним, насправді таким не є. Тому Doom engine (перша версія id Tech) був не істинно тривимірним, а псевдотрехмерным. Але важливо те, що технічна складова цієї гри поставила стандарт для того, що могло називатися ігровим движком. А саме, движок Doom був модульним, представляв з себе набір підсистем, в ньому кожен чітко відокремлений програмний шар відповідав за обробку своєї порції даних. В результаті, використовувати його для різних ігор (Hexen, Єретик, Strife) і силами сторонніх розробників (Raven Software і Rogue Entertainment) стало набагато простіше. Тому поява ігрових движків відносять до середини 90-х років 20-го століття, тобто тоді остаточно сформувалося визначення ігрового движка в сучасному сенсі.

image

Ігровий движок представляє своєрідну вузькоспеціалізовану операційну систему, оскільки включає всі модулі останньої. У нього входять: система управління пам'яттю, графічна підсистема, система введення, аудіо підсистема, штучний інтелект, фізична підсистема, мережева підсистема, редактор ігрових рівнів і інше. Крім того ядро движка може надавати особливий підхід до роботи з файлами – файлову (ресурсну) систему, а так само відрізняються від основної операційної системи засоби роботи з багатопоточністю. Сучасний ігрові движки додатково включають інтерпретатор скриптової мови, заточеного для опису ігрової логіки, а нерідко і повністю візуальний її редактор. Його використання дозволяє абстрагуватися від опису низькорівневих команд і інструкцій, а сконцентруватися на геймплеї. На цьому складові движок компоненти не обмежуються, їх може бути як більше, так і менше.

Цілі

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

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

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

Генезис графічних систем

У середині 90-х після появи відеопроцесорів, здатних обробляти тривимірну графіку стали з'являтися програмні інтерфейси, що спрощують її розробку. Слідом за кросплатформним OpenGL на сцену у складі DirectX вийшов Direct3D для Windows. Ці 2 візуалізатора на багато років уперед визначили способи графічного виводу в іграх.

У 1996-му році вийшла гра Quake на Quake Engine. Цей движок надав колосальний вплив на ігрову індустрію.
image
Дерево движків, заснованих на Quake Engine

Майже до кінця десятиліття на ринку проміжного програмного забезпечення для ігор (іншими словами, ігрових движків) практично одноосібно задавала ритм id Software. Проте в 1998-му році компанія Epic Games випустила успішну гру Unreal на однойменному движку — з справжнім технологічним проривом по рівню графіки. Провідним програмістом движка став засновник Epic Тім Суїні. Тім нарівні з Кармак є найбільш значущою фігурою в історії движків ігрової індустрії — і Unreal Engine в його 3 і 4 версіях дуже популярний і зараз. Рік потому від Epic вийшла стала ще більш популярною гра Unreal Tournament.
image

У цей же самий час конкуруюча компанія-розробник – id Software випустила мультиплеєрну гру Quake 3 Arena (на движку id Tech 3), рівно як Unreal Tournament включає мережеві баталії.
image

Ці дві гри стали флагманами індустрії, визначивши її розвиток на роки вперед.

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

Ситуація почала докорінно змінюватися приблизно в середині першого десятиліття 21-го століття. Тоді на ринку і у вільному доступі стало з'являтися велика кількість засобів для розробки ігор. Бізнес проміжного програмного забезпечення (middleware) став набирати обертів. Спочатку ринок заповнився графічними фреймворками: Ogre, DarkGDK та ін., надають програмісту високорівневу прошарок над графічним API. В той же час відрізняються від ігрових движків повною відсутністю внутрішньоігрових редакторів.

Потім на ринок прийшли повноцінні ігрові движки за цінами, доречним для невеликої інді-команди розробників, серед них: Torque 3D, Unity 3D, і багато інших. Навіть стартували як флагманські движки — наприклад, CryEngine від Crytek і раніше згаданий Unreal Engine — стали використовувати набагато більш доступну цінову політику і стали доступні навіть початківцям розробникам.

image
Torque 3D

Важливим трендом ігрової індустрії стали казуальні ігри. Ці, по своїй суті, простенькі, але барвисті, не потребують скаженого взаємодії з клавіатурою і мишкою головоломки з технічної точки зору були простіше тривимірних хардкорних шутерів, тому для їх розробки не знадобилося сильної модифікації універсальних движків. Але, зате, в індустрії з'явилися нові гравці, такі як: Torque Game Builder, HGE та інші.

image
Torque Game Builder

В цей же час, завдяки World of Warcraft, в ігровій індустрії стали дуже популярні MMORPG — а паралельно багато жанри робили все більшу ставку на мултиплеер. Цілий ряд движків не зміг надати користувачам нову функціональність для клієнт-серверних додатків, тому вони пішли в небуття. Інші движки були адаптовані для мультиплеєрного світу шляхом розробки для них серверних рішень, так для Unity 3D були розроблені Photon і SmartFox. Третій тип універсальних движків, спочатку будучи клієнт-серверним, не відчув змін. До нього відноситься Torque 3D. Також на ринку з'явилися нові двигуни, призначені для глобальних багатокористувацьких ігор, наприклад HeroEngine, BigWorld, що об'єднують масштабоване під тисячі гравців серверне рішення і доступний конкретного гравця клієнт.

image
HeroEngine

На ринку ще з 90х існували браузерні гри, а потім друге народження їм дали соціальні мережі. необхідність ефективно створювати ігри для браузера не залишилася непоміченою. Розробники універсальних движків, наприклад Torque 2D/3D, Unity 3D відреагували на це досить оперативно, випустивши плагіни для браузерів, які дозволили відображати графіку прямо у вікні останніх. Спочатку популярність завоював візуалізатор на основі технології Flash, але з цілого ряду причин ця технологія все більше втрачає свою частку на ринку. Тому зараз для візуалізації в інтернеті часто використовується бібліотека для мови JavaScript — WebGL, яка дозволяє створювати інтерактивну 3D-графіку. Однак, із-за недоліків мови, таких як відсутність багатопоточності, бібліотека не може повноцінно задовольнити потреби игроделов. Їй на зміну консорціумом W3C (куди входять: Microsoft, Google, Mozilla та ін) розробляється новий низькорівневий бінарний компільований формат WebAssembly.

image
WebAssembly

Під кінець першого десятиліття 21-го століття дуже швидко розвивалися мобільні технології. Як грім серед ясного неба з'явилися мобільні пристрої по потужності порівнянні з ПК середньої цінової категорії і здатні запускати потужні ігрові програми з усіма спецефектами, якими володіли низькорівневі графічні інтерфейси. На що розробники ігрових движків відповіли в деяких випадках створенням спеціалізованих конверторів, що створюють нативний для конкретного устаткування код (як, наприклад, Unity 3D), а в інших — модернізували свої продукти для кроссплатформенности (наприклад, Torque 2D(http://t2d-dev.ru), Cocos 2DX). Також, на ринку з'явилися нові гравці, які пропонують кросплатформені движки для всього парку мобільних пристроїв, які виконуються зі швидкістю нативного коду. Приклади подібних засобів: Corona SDK, Marmalade SDK, AGK (App Game Kit).

image
Corona SDK

Також, виник цілий ряд кросплатформених движків, що дозволяють розробити гру при мінімальному знанні програмування. Прикладами можна назвати Construct 2 і GameMaker Pro. Використовуючи готові рішення і візуальні редактори, можна швидко — іноді протягом декількох годин — створювати прості ігри. Це виявилося особливо поширеним на мобільному ринку, де поширення моделі free2play і коротка ігрова сесія зробили «прості» гри цілком успішним жанром.

Новинки ігрової індустрії

Галузеві програмні інтерфейси: OpenGL, DirectX розвиваються у відповідності з відеоадаптерами. Раз в 1 — 2 роки з'являються нові версії, які підтримують і дають прикладним програмістам (розробників движків) реалізувати всю функціональність заліза. DirectX вже досяг 12-ї версії. З іншого боку на зміну OpenGL прийшов Vulkan — новий багатоплатформовий графічний api, що розробляється консорціумом Khronos Group, куди входять виробники заліза і софта.

VR

image

Останній на даний момент тренд ігрової індустрії — віртуальна/доповнена реальність. Переважна більшість сучасних ігрових движків вже обзавелися підтримкою даної технології, серед них: Torque 3D, Unity 3D, Unreal Engine 4. Розроблено та безліч сторонніх розширень, таких як Vuforia Unity Extension. Щоб реалізувати підтримку очок VR розробників движків треба не тільки додати візуалізацію на другий екран (для другого ока) з відмінним від першого вмістом (так як, перший і другий очі можуть бачити відрізняються сцени), але і так само додати підтримку управління з нових пристроїв введення, які різні для різних гарнітур VR і поки не стандартизовані.

Підсумки

За роки існування ігрової індустрії в ній утворилися 5 великих типів ігор з точки зору ігрових движків:

1) Однокористувацькі гри (зі своєю специфікою для ПК і консолей)
2) Багатокористувацькі онлайн ігри
3) Ігри для соціальних мереж і браузерні гри в цілому
4) Мобільні ігри (зі специфікою для телефонів і планшетів, і Android/iOS)
5) Ігри для VR/AR

Крім того, існують і інші платформи — від SmartTV до ігрових автоматів.

Для розробки кожного типу є певний набір движків, тому що з технічної сторони між усіма типами ігор є великі відмінності. На ринку зараз представлені десятки движків на будь-який смак: кросплатформені і спеціалізовані, які потребують активної роботи з початковим кодом движка і доступні без знань програмування взагалі, з різними продуктивністю, якістю документації і ціною. Детальніше про сучасних движках і про те, як вибрати правильний для своїх цілей, я розповідаю на дисципліни «Технічні основи розробки ігор» нашої програми "Менеджмент ігрових інтернет-проектів" ВШБИ. До речі, 11 лютого у нас буде одноденна конференція з безкоштовним входом (треба тільки зареєструватися), де я в 12:00 буду читати одну зі своїх лекцій про ігрові движки, заходьте :)
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.