Русский   English

Реферат за темою випускної роботи

При написанні даного реферату магістерська робота ще не завершена. Остаточне завершення: грудень 2014 Повний текст роботи та матеріали по темі можуть бути отримані у автора після зазначеної дати.

Зміст

Вступ
1. Актуальність теми
2. Мета і завдання дослідження, заплановані результати
3. Огляд типової структури ігрового рушія
3.1 Графіка
3.2 Штучний Інтелект (ШІ)
3.3 Фізика
3.4 Аудіо
3.5 Введення користувача
3.6 Фреймворк
3.7 Менеджери
4. Огляд джерел
5. Аналіз майбутнього проекту
Висновки
Список джерел

Вступ

Ігровий рушій — програмне ядро комплексної програмної системи (гри), що містить базову функціональність гри, але, при цьому, не включає код, специфічний для геймплейні функціональності конкретної гри [1].

У сучасних моделях ігрового програмування ігрові рушії використовуються як механічна основи ігор. Ігрові рушії складаються з безлічі компонентів-модулів, які реалізують ігровий функціонал у вигляді відображення і обробки графіки, звуку, штучного інтелекту та ін. Надалі залишається тільки накласти на рушій контент, який буде вже відповідати конкретно розробляємої грі. Модульний дизайн ігрових движків дозволяє гравцям і програмістам легко замінювати його частини, модифікувати їх з метою створення нових ігор з новими моделями, поліпшеною графікою, звуками, іншим сценарієм, змінювати існуючий матеріал і додавати нові функції [ 2 ]. Завдяки цьому на базі існуючих рушіїв було створено і створюється велика безліч нових ігор, при цьому кількість прикладених зусиль для їх створення виявляється значно скороченою.

Приклад гри-стратегії, реалізованої за допомогою ігрового рушія, який забезпечує виведення зображення всієї ігрової карти цілком, можна спостерігати на малюнку 1:

Стратегічна карта в динаміці. Гра "Machines at War"

Малюнок 1 — Стратегічна карта в динаміці. Гра Machines at War [3]
(анімація: 147 кілобайт, повторення 6 разів, 10 кадрів, інтервали показу кадрів [2с, 1с (8 кд.), 5с]

1. Актуальність теми

Для того, щоб пояснити важливість ігрових рушіїв, найлегше привести опис того в чому ж полягає їх практична користь.

Перш за все, використання рушія значно спрощує процес розробки ігор. Зазвичай для реалізації досить тривіальної задачі виведення зображення на екран або програвання декількох звуків одночасно з урахуванням їх модифікації в залежності від місць розташування ігрового персонажа і джерел звуків, використовуються сотні бібліотечних функцій, складно переплетених між собою. За допомогою ігрового рушія подібна конструкція спрощується у пару функцій, які об'єднують в собі всі попередні, більш того подібні функції в процесі розробки та експлуатації рушія проходять оптимізацію по мірі роботи програмістів над ними. Це дозволяє розробникам працювати над грою більш абстрактно, не замислюючись щодо низькорівневих представлень компонентів рушія і те, як вони працюють і як пов'язані між собою. Все що потрібно знати при використанні рушія – це те, як його використовувати, знання про те як він працює, можна опустити, це скорочує час розробки гри рівно на час розробки рушія (часто сам движок може становити 80% складності всього проекту), на якому б працювала розроблена гра. До того ж ігровий код написаний з використанням ігрового рушія виглядає більш організованим і більш керованим, що знижує кількість виникаючих програмних помилок.

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

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

2. Мета і завдання дослідження, заплановані результати

Метою дослідження є вивчення і застосування засобів розробки ігрових рушіїв для ігор у жанрі стратегія.

    Основні завдання дослідження:
  • Огляд і аналіз сучасних ігрових рушіїв.
  • Огляд і аналіз типової архітектура ігрового рушія.
  • Огляд і аналіз доступних компонентів для зборки ігрового рушія.
  • Розробка нового ігрового рушія орієнтованого для створення ігор у жанрі стратегія.
  • Програмна реалізація вищезгаданого рушія, а також гри-прикладу, що працює на створеному ігровому рушії.
  • Аналіз отриманих результатів, а також можливих варіантів їх подальшого використування.

Об'єкт дослідження: архітектура ігрового рушія і його компоненти.

Предмет дослідження: розробка ігрового рушія для комп'ютерних ігор жанру стратегія.

3. Огляд типової структури ігрового рушія

В цілому, архітектура переважної більшості існуючих ігрових рушіїв схожа між собою і в світовій практиці з плином часу виробилися загальноприйняті правила організації їх структури. Діаграму, що наочно демонструє типову структуру сучасного ігрового рушія, можна спостерігати на малюнку 2 [5].


Типова структура сучасного ігрового рушія

Малюнок 2 — Типова структура сучасного ігрового рушія


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

Далі за підрозділами слідують описання та пояснення до кожного з компонентів.

3.1 Графіка

За графіку в ігровому движку відповідає графічний движок. Найкраще визначення поняття графічний рушій знайдено на вікіпедії: Графічний рушій — це проміжне програмне забезпечення, програмний рушій, основним завданням якого є візуалізація (рендеринг) двомірної або тривимірної комп'ютерної графіки [6]. Варто відзначити, що графічні рушії можуть існувати (та існують), як окремі від ігрового рушія повноцінні продукти. Графічні рушії бувають різного виду і призначення, починаючи від призначених для візуалізації окремих зображень або комп'ютерного відео, закінчуючи рушіями призначеними для складної тривимірної графіки, формально званими кількома різними іменами – синонімами рендерер , відобразник або візуалізатор, які використовуються в комп'ютерних іграх або ж просто системах тривимірного моделювання (таких, як 3ds Max, Maya, Cinema 4D, Zbrush, Blender ).

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

У примітиві — беруть на себе типову задачу відобразити на екрані доступний для огляду простір, видимий з точки у напрямку... . Але також мають безліч параметрів-налаштувань, що впливають на якість і вид вихідного зображення, починаючи від роздільної здатності і кута огляду, продовжуючи такими вагомими параметрами як якість текстур , тіней та ефектів, і закінчуючи різними технологіями поліпшення якості зображення як фільтрація (білінейна, трилінейна, анізотропна), шейдери, mapping (bumpmapping, parallax mapping ), Anti-Aliasing (згладжування), тесселяція, вертикальна синхронізація, пост-обробка, High Dynamic Range, bloom, glow, film grain, motion blur, SSAO (Screen Space Ambient Occlusion - перегородження навколишнього світла в екранному просторі ), Cel shading, Depth of field (глибина різкості), з більш детальним описом яких можна ознайомитися за посиланнями у списку джерел [7] [8].

3.2 Штучний Інтелект (ШІ)

Ігровий штучний інтелект — набір програмних методик, які використовуються в комп'ютерних іграх для створення ілюзії інтелекту в поведінці персонажів, керованих комп'ютером. Ігровий ШІ, окрім методів традиційного штучного інтелекту, включає також алгоритми теорії управління, робототехніки, комп'ютерної графіки та інформатики в цілому [9].

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

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

Як компонент ігрового рушія, модуль штучного інтелекту надає розробнику набір дій, функцій і тригерів, які можуть виконувати об'єкти що володіють розумом, а також засоби зв'язування їх між собою і механізм завдання умов переходів між станами. Більш того, модуль ШІ часто включає в себе алгоритми оптимізації, пошуку найкращого рішення та інше. На сайті habrahabr.ru є відмінний набір статей про штучний інтеллект [10]

3.3 Фізика

Фізичний рушій — комп'ютерна програма, яка виробляє комп'ютерне моделювання фізичних законів реального світу у віртуальному світі, з тим або іншим ступенем апроксимації. Найчастіше фізичні движки використовуються не як окремі самостійні програмні продукти, а як складові компоненти (підпрограми) інших програм [11].

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

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

3.4 Аудіо

Звуковий рушій — програмний компонент ігрового рушія, за відтворення звуку (шумове і музичне оформлення, голосів персонажів) у комп'ютерній грі або іншій програмі. Звуковий рушій часто відповідає також за імітацію певних акустичних умов, відтворення звуку згідно з місцем розташування, відлуння і т. д. [12].

3.5 Введення користувача

Гра повинна якось реагувати на дії користувача при цьому реагувати вчасно і максимально точно, щоб користувач міг керувати будь-якими процесами в грі.

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

3.6 Фреймворк

Фреймворк (внутрішня інтегрована середа) — компонент, який об'єднує воєдино всі компоненти рушія ініціалізує їх роботу, а також зберігає в собі інформацію про сцену [5].

Цикл гри виконується у фреймворку и має наступний порядок (малюнок 3):

Основний цикл гри

Малюнок 3 — Основний цикл гри

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

3.7 Менеджери

Менеджери забезпечують підтримку глобальних функцій у рамках рушія і реалізуються у вигляді singleton-об'єктів, іншими словами, менеджер кожного типу доступний тільки в одному екземплярі [5]. Їх мета полягає в управлінні ресурсами рушія, реєстрації змін, плануванні завдань та обліку загального стану ігрового движка, дозволяючи як реалізовувати можливість роботи самого рушія як такого, але також і оптимізувати процес його роботи.

4. Огляд джерел

В результаті пошуку робіт, присвячених тематиці даної роботи, в інтернеті було знайдено безліч робіт із пов'язаною тематикою, інформація яких була використана при написанні даного реферату, ознайомитися з ними можна подивившись посилання у списку джерел даного реферату. Варто відзначити, що в інтернеті є рідкі, але досить інформативні та пізнавальні ресурси присвячені розробці ігрових рушіїв (наприклад 3D Game Engine Programming), однак виявлені ресурси, тісно пов'язані з тематикою даної роботи і якісно реалізовані, англомовні, тобто в російськомовних і україномовних спільнотах питання конструювання ігрових рушіїв висвітлюється набагато слабше, обмежуючись переважно описом API вже розроблених ігрових рушіїв та інструкціями щодо їх використання.

Локально, на порталі магістрів ДонНТУ було виявлено достатню кількість робіт з теми, що мають відношення щодо 3D рендерингу та розробці інтерактивних програм, ознайомитися з ними можна в розділі ссылки. Окремо варто відзначити з них одну найбільш релевантну роботу Ількуна В.П. Інструментальні засоби для розробки комп'ютерних ігор жанру екшн від першої і третьої особи [13].

5. Аналіз майбутнього проекту

Кінцева ціль роботи — написання простого тривимірного ігрового рушія, на якому потім буде реалізована гра-приклад жанру стратегія, якщо бути більш точним , то стратегія в реальному часі. Оскільки проект досить складний, вимоги до графіки занижені, основна мета — швидкодія ігрової системи, прийнятна для комфортної гри. Детальність графічного оформлення матиме чисто символічний характер і, ймовірно , декілька приголомшить любителів красивої графіки своєю примітивністю. Однак з огляду на сучасні тенденції до спрощень в сучасній ігровій індустрії (згадаймо, наприклад Minecraft), подібний крок більш ніж прийнятний.

В якості середовища розробки ігрового рушія буде використана Visual Studio 2012. Використовувана мова програмування — C++. В якості графічної системи буде використаний примітивний рендерер, написаний з використанням OpenGL. Відтворення звуку буде здійснюватися за допомогою OpenAL, який-небудь серйозний фізичний рушій для гри жанру стратегія не потрібен, фізичних процесів, що вимагають якого-небудь розрахунку — мінімум. Оскільки гра комп'ютерна, управління буде заточене, очевидно, під клавіатуру і мишу. У рушії будуть передбачені команди управління штучним інтелектом об'єктів відповідного військової стратегії типу (піхота, танки, авіація), для написання алгоритмів поведінки юнітів буде використана скриптова мова Python.

У майбутньому, проект повинен буде представляти як практичну, так і академічну користь. Оскільки у випадку його успішної реалізації, його можна буде розвинути далі, а релізна версія, написана у максимально простому (можливо все ж, у кілька неоптимальному) вигляді може надалі використовуватися як шаблон/приклад, яким зможуть скористатися всі бажаючі для того, щоб ознайомитися з архітектурою ігрових рушіїв на конкретному прикладі.

Висновки

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


Список джерел

  1. GameDev.ru / Программирование / Термины / Движок (игровой движок) [Электронный ресурс]. — Режим доступа: http://www.gamedev.ru/...
  2. Чеканов Д. Анатомия игровых движков [Электронный ресурс]. — Режим доступа: http://www.3dnews.ru/...
  3. Machines at War. A real time strategy on massive scale [Электронный ресурс]. — Режим доступа: http://www.isotope244.com/... (использована анимация)
  4. Robotex Пишем игровой движок, статья на habrahabr.ru [Электронный ресурс]. — Режим доступа: http://habrahabr.ru/...
  5. Эндрюс Дж. Проектирование архитектуры параллельного игрового движка [Электронный ресурс]. — Режим доступа: http://www.uraldev.ru/...
  6. Википедия. Графический движок [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  7. Настройки графики в играх и на что они влияют [Электронный ресурс]. — Режим доступа: http://itc.ua/...
  8. Белокриницкий А. Настройки графики в играх: с чувством, с толком, с расстановкой [Электронный ресурс]. — Режим доступа: http://www.notebook-center.ru/...
  9. Википедия. Игровой Искусственный Интеллект [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  10. Искусственный интеллект. Раздел сайта habrahabr.ru [Электронный ресурс]. — Режим доступа: http://habrahabr.ru/...
  11. Википедия. Физический движок [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  12. Википедия. Звуковой движок [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  13. Илькун В.П. Инструментальные средства для разработки компьютерных игр жанра экшн от первого и третьего лица [Электронный ресурс]. — Режим доступа: http://masters.donntu.ru/...