а одного. Даний процес описуємо механіку гри. До системи взаємодії об'єктів можна віднести:
бойову механіку;
інтерактивні об'єкти (двері, пульти управління і т.д.);
управління персонажем за допомогою миші/клавіатури;
колізію об'єктів, що володіють фізичними властивостями;
звукову підсистему (звуки кроків, пострілів і т.д.);
штучний інтелект комп'ютерних персонажів (ботів).
Всі ці елементи є головними складовими ігрового циклу.
На малюнку 3.6 представлений знімок ігрового процесу. На ньому представлено взаємодію персонажа, керованого користувачем, і бота, контрольованого штучним інтелектом. Гравцю необхідно навести лазерний приціл на бота і знищити його, а бот намагається завдати шкоди головному персонажу і в теж час ухилиться від атак гравця.
Малюнок 3.6 - Ігровий процес
Всі ігрові підсистеми повністю реалізовані і успішно інтегровані в єдину ігрову систему, яка дозволяє запустити ігровий процес.
4. Архітектура системи і ієрархія класів
В якості основної парадигми програмування використовується об'єктно-орієнтований підхід [6]. ООП орієнтоване на розробку великих програмних комплексів. Об'єктно-орієнтоване проектування полягає в описі структури та поведінки проектованої системи, тобто, фактично, у відповіді на два основних питання:
з яких частин складається система;
в чому полягає відповідальність кожної з частин.
Виділення частин проводиться таким чином, щоб кожна мала мінімальний за обсягом і точно певний набір виконуваних функцій (обов'язків), і при цьому взаємодіяла з іншими частинами якнайменше.
Подальше уточнення призводить до виділення більш дрібних фрагментів опису. У міру деталізації опису і визначення відповідальності виявляються дані, які необхідно зберігати, наявність близьких по поведінці агентів, які стають кандидатами на реалізацію у вигляді класів із загальними предками. Після виділення компонентів і визначення інтерфейсів між ними реалізація кожного компонента може проводитися практично незалежно від інших (зрозуміло, при дотриманні відповідної технологічної дисципліни).
Велике значення має правильна побудова ієрархії класів. Ієрархії класів підсистем представлені у додатку Г. Одна з відомих проблем великих систем, побудованих за ООП-технології - так звана проблема крихкості базового класу. Вона полягає в тому, що на пізніх етапах розробки, коли ієрархія класів побудована і на її основі розроблено велику кількість коду, виявляється важко або навіть неможливо внести будь-які зміни в код базових класів ієрархії (від яких породжені всі або багато працюють в системі класи ). Навіть якщо внесені зміни не торкнуться інтерфейс базового класу, зміна його поведінки може непередбачуваним чином відбитися на класах-нащадках. У разі більшої системи розробник базового класу просто не в змозі передбачити наслідки змін, він навіть не знає про те, як саме базовий клас використовується і від яких особливостей його поведінки залежить коректність роботи класів-нащадків.
Сукупність усіх підсистем, реалізованих за допомогою ООП і представлених у вигляді ієрархії класів, визначають внутрішню структуру ПП. Архітектура даного проекту відображена в додатку Д.
Малюнок 4.1 - Прототип архітектури ігрового движка
На малюнку 4.1 зображений прототип архітектури ігрового движка, на основі якого розроблялася дана система. Суцільною стрілкою відображена ієрархія підсистем, а пунктирною - інтерфейс між системами.
5. Тестування
Тестування програмного забезпечення - процес дослідження, випробування програмного продукту, що має дві різні цілі:
переконатися, що програма відповідає вимогам;
виявити ситуації, в яких поведінка програми є неправильним, небажаним.
Існує кілька рівнів тестування програмного забезпечення:
модульне тестування (юніт-тестування) - тестується мінімально можливий для тестування компонент, наприклад, окремий клас або функція;
інтеграційне тестування - тестуються інтерфейси між компонентами, підсистемами або системами;
системне тестування - тестується інтегрована система на її відповідність вимогам;
альфа-тестування - імітація реальної роботи з системою штатними розробниками, або реальна робота з системою потенційними користувачами/замовником;
Бета-тестування - в де...