You are on page 1of 17

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ


Факультет кібербезпеки та програмної інженерії
Кафедра інженерії програмного забезпечення

Методика проектування сервіс-


орієнтованих застосунків,
використовуючи ігровий рушій Unity3D
Бездітний В’ячеслав Миколайович
група ПІ-222м
Науковий керівник:
Горський Олексій Миколайович
Консультант:
Чебанюк Олена Вікторівна
Київ
2023
Актуальність роботи
1. Проблема вибору оптимального патерну через відсутність
жорстких обмежень на архітектуру в Unity.
2. Складність масштабування проекту за початковими
архітектурними рішеннями.
3. Складність тестування та рефакторингу у Unity у сильно
зв'язаних системах.
4. Проблема оптимізації продуктивності при вибрі архітектурного
патерну.
5. Необхідність раннього планування при інтеграції із зовнішніми
системами.
6. Проблема встановлення та узгодження стандартних і єдиних
архітектурних принципів на початкових етапах проектування.

2/17
Мета роботи

Розробити методику проектування


сервіс-орієнтованих застосунків, що
дозволить створити гнучку та
масштабовану архітектуру застосунку.

3/17
Завдання роботи

1. Провести аналіз предметної області проектування


застосунків у Unity3D, визначити переваги та недоліки
кожного з підходів.
2. Розробити методику проектування сервіс-
орієнтованих застосунків використовуючи патерн
«Service Locator».
3. Реалізувати запропоновану методику при розробці
застосунку.

4/17
Предмет, об’єкт та методи дослідження

Об’єкт дослідження – процес проектування сервіс-


орієнтованих застосунків за допомогою ігрового рушія
Unity3D.
Предмет дослідження – фундаментальні методи та засоби
та розробки сервіс-орієнтованих застосунків.
Методи дослідження: аналізу, порівняння, синтезу,
практичного застосування.
Стек технологій: Unity3D, Zenject, C#

5/17
Ігровий цикл застосунку

Bootstrap GameLoop Dispose

Перехідні Перехідні
процеси процеси

Bootstrap – це вхідна точка, місце де ініціалізуються сервіси, залежності,


завантажуються необхідні для запуску ресурси.
GameLoop – процес взаємодії з додатком, в якому відбувається вся ігрова
або бізнес-логіка.
Dispose – це стан додатку перед виходом, вивантаження ресурсів, сервісів,
тощо.

6/17
Порядок завантаження ігрового
застосунку
GameBootstrapper Game GameStateMachine

- Екран завантаження
- SceneLoader
...

BootstrapState LoadLevelState LoadProgressState

- Завантаження - Завантаження рівня гри


початкової сцени - Створення героя, ігрових
- Реєстрація сервісів об¶єктів
- Створення та ініціалізація
інтерфейсу користувача
7/17
Методика проектування сервіс-орієнтованої
архітектури

1.Визначення сервісів.

2.Інтерфейси сервісів.

3.Залежності та ін'єкція залежностей.

4.Менеджер сервісів.

5.Модульність та гнучкість.

6.Розгортання та оновлення сервісів.


8/17
Розробка класу Service Locator для
управління сервісами

1. Визначення інтерфейсів використовуваних сервісів.


2. Розробка к класів, що реалізують ці інтерфейси.
3. Розробка класу ServiceLocator, що зберігатиме
екземпляри всіх сервісів.
4. Реєстрація сервісів.
5. Отримання сервісів.
6. Ініціалізація та використання ServiceLocator.

9/17
Застосування Dependency Injection для
керування залежностями

1. Вибір або створення DI-контейнера.


2. Реєстрація сервісів у DI-контейнері.
3. Ін'єкція залежностей.
4. Ініціалізація контейнера.

10/17
Використання патерну «Factory» для
створення об'єктів

1. Створення фабрики (або фабрик). Для цього


визначається інтерфейс IFactory, який описує методи
для створення об'єктів.
2. Реєстрація фабрик у Service Locator як сервісів.
3. Використання фабрики через Service Locator при
створенні об'єктів.

11/17
Вхідна точка експериментального
застосунку
В експериментальному додатку вхідною точкою є
GameBootstrapper, який запускає гру та переводить
GameStateMachine у початковий стан BootstrapState.

12/17
Початковий стан застосунку

13/17
Приклад реалізації ServiceLocator

14/17
Приклад реалізації сервісу

15/17
Висновки
1. Проаналізовано різні патерни та підходи до
проектування застосунків. Було розкрито їх основні
переваги та обмеження в контексті можливості та
доцільності застосування в процесі розробки ігор та
застосунків на Unity.
2. Розроблено методику проектування архітектури
застосунку, що базується на принципах Service Oriented
Architecture та теорії категорій. Запропоновано
інтерпретацію ігрового циклу застосунку, як набору
станів програми, що переходять з одного в інший за
допомогою «State Machine».
3. Використання розробленої методики може значно
підвищити ефективність процесу розробки програмного
забезпечення та дає змогу краще адаптувати та
масштабувати проекти.
16/17
Дякую за увагу!

You might also like