Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/8828| Title: | Розробка Віртуальна реальність-додатку для практичного навчання англійської мови у мультиплеєрному середовищі |
| Authors: | Голуб, Сергій Васильович Гребенюк, Павло Михайлович |
| Keywords: | ВІРТУАЛЬНА РЕАЛЬНІСТЬ;АНГЛІЙСЬКА МОВА;ГОЛОСОВА ВЗАЄМОДІЯ;ГЕЙМІФІКАЦІЯ;UNITY;PHOTON;Віртуальна реальність-ДОДАТОК;ОСВІТА;ОКУЛЯРИ QUEST;МУЛЬТИПЛЕЄР;VIRTUAL REALITY;ENGLISH LANGUAGE;VOICE INTERACTION;GAMIFICATION;UNITY;PHOTON;EDUCATION;QUEST HEADSET;MULTIPLAYER |
| Issue Date: | 21-Jun-2025 |
| Abstract: | АНОТАЦІЯ
Кваліфікаційна робота бакалавра студента Гребенюка Павла Михайловича на
тему «Програмне забезпечення віртуального класу вивчення англійської мови»
спеціальність 121 «Інженерія програмного забезпечення»
Черкаський державний технологічний університет, місто Черкаси 2025 рік
містить 50 сторінки, 2 таблиці, 7 рисунків, список використаних джерел з 9
найменувань.
Метою виконання кваліфікаційної роботи бакалавра є проектування та
конструювання програмного забезпечення інформаційної технології
практичного навчання англійської мови у форматі віртуальної реальності для
вдосконалення комунікативних навичок іноземної мови.
У процесі ООП проектування програмного продукту розроблена архітектура,
реалізована мультиплеєрна взаємодія з використанням Photon PUN 2,
забезпечено голосовий зв’язок, створено ігровий сценарій, а також проведено
комплексне тестування.
Об’єкт розробки:
Процес розробки програмного забезпечення інформаційної системи
віртуальних взаємодій користовучів.
Предметом розробки:
Процес побудови програмного забезпечення інформаційної технології
віртуальних взаємодій користовучів при вивченні іноземної, зокрема
англійської, мови.
Виконано наступні завдання:
- проведено аналіз існуючих підходів до мовного навчання у Віртуальна
реальність;
- розроблено функціональну модель системи;
- реалізовано прототип додатку в Unity;
- забезпечено синхронізацію гри та передачу голосу; перевірено коректність
роботи системи шляхом тестування. ANNOTATION Bachelor’s Qualification Thesis of Pavlo Mykhailovych Grebenyuk Title: Virtual Classroom Software for English Language Learning Specialty: 121 Software Engineering Cherkasy State Technological University, Cherkasy, 2025 The thesis consists of 50 pages, 2 tables, 7 figures, and a list of 9 references. The goal of this bachelor’s qualification thesis is to develop a software product in the format of virtual reality to enhance English language communication skills through voice interaction between users in a gamified environment. The main tasks in designing the software product included: developing the architecture, implementing multiplayer interaction using Photon PUN 2, enabling voice communication, creating a game-based learning scenario, and conducting comprehensive testing. Object of development: The object of development is a software system that implements a multi-user Віртуальна реальність environment for learning English, featuring voice interaction and gamification of the educational process. Subject of development: The subject of development is the architecture and implementation of a gamified Віртуальна реальність system with multiplayer functionality. The following tasks have been completed: An analysis of existing approaches to language learning in Віртуальна реальність was conducted; A functional model of the system was developed; A prototype of the application was implemented in Unity; Game synchronization and voice transmission were ensured; The system’s functionality was verified through testing. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/8828 |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Кваліфікаційнв робота бакалавра Гребенюк Павло Михайлович.pdf Restricted Access | 23.96 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
бакалавра
на тему: «Програмне забезпечення віртуального класу вивчення
англійської мови»
Виконав: студент 4 курсу, групи ПЗС-2104
спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студент Гребенюк П.М.
(прізвище та ініціали)
Керівник Голуб С.В.
(прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Черкаси 2025
Черкаський державний технологічний університет
повне найменування вищого навчального закладу
Факультет інформаційних технологій і систем________________________________
Кафедра програмного забезпечення автоматизованих систем___________________
Освітній рівень бакалавр______________________________________________________
Спеціальність 121 «Інженерія програмного забезпечення»_________________________
Освітня програма Інженерія програмного забезпечення______________________________
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
____________________ С. Голуб
«___» _______________ 2025 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Гребенюк Павло Михайлович____________________________
(прізвище, ім’я, по батькові)
1. Тему проекту (роботи) Розробка Віртуальна реальність-додатку для практичного навчання англійської мови у
мультиплеєрному середовищі___________________________________________________
Керівник проекту (роботи) Голуб Сергій Васильйович д.т.н., професор_________________
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від «25» лютого 2025 року № 53/03-03
2. Строк подання студентом проекту (роботи) 16 червня 2025 року
3. Вхідні дані до проекту (роботи) Методичні матеріали до кваліфікаційної роботи; Unity 3D, Photon PUN 2, Meta
XR SDK; Пристрій Oculus Quest 2 або 3; Вимоги до навчальних Віртуальна реальність-додатків; Базові знання з
англійської мови_______________________________________________________________________
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити) Вступ; існуючі методи та
засоби розв’язання поставлених завдань; впровадження результатів досліджень у практику проектування
програмного забезпечення інформаційних систем; розробка та тестування програмного забезпечення
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту;
Діаграмасцен проекту;_Діаграма обєктів на сцені;_Діаграма взаємодії обєктів;_Таблиця тест-
кейсів;_Скріншоти_візуальної реалізації.
6. Консультанти розділів роботи
7. Дата видачі завдання 02 грудня 2024 р.
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
№ п/ етапів
Назва етапів випускної роботи Примітки
п кваліфікаційноїроб
оти
1 Постановка задачі 05.12.2024 виконано
2 Підготовка завдання 13.12.2024 виконано
3 Погодження завдання 16.12.2024 виконано
4 Затвердження завдання 19.02.2025 виконано
Основна стадія
1 Підбір матеріалів 27.02.2025 виконано
2 Аналіз шляхів вирішення поставленої задачі 04.02.2025 виконано
3 Розрахунок основних параметрів роботи 10.03.2025 виконано
4 Вибір кінцевого варіанту проектного рішення 17.03.2025 виконано
5 Оформлення первісної редакції роботи 25.03.2025 виконано
Заключна стадія
1 Узгодження прийнятих проектних рішень з керівником 31.04.2025 виконано
2 Оформлення пояснювальної записки роботи в кінцевій 13.05.2025 виконано
редакції
3 Попередній захист роботи 21.05.2025 виконано
4 Затвердження роботи 02.06.2025 виконано
5 Рецензування роботи 19.06.2025 виконано
6 Захист роботи 20.06.2025
Студент _____________________ Гребенюк П.М.
(підпис) (прізвище та ініціали)
Керівник роботи _____________________ Голуб С.В.____
(підпис) (прізвище та ініціали)
АНОТАЦІЯ
Кваліфікаційна робота бакалавра студента Гребенюка Павла Михайловича на
тему «Програмне забезпечення віртуального класу вивчення англійської мови»
спеціальність 121 «Інженерія програмного забезпечення»
Черкаський державний технологічний університет, місто Черкаси 2025 рік
містить 50 сторінки, 2 таблиці, 7 рисунків, список використаних джерел з 9
найменувань.
Метою виконання кваліфікаційної роботи бакалавра є проектування та
конструювання програмного забезпечення інформаційної технології
практичного навчання англійської мови у форматі віртуальної реальності для
вдосконалення комунікативних навичок іноземної мови.
У процесі ООП проектування програмного продукту розроблена архітектура,
реалізована мультиплеєрна взаємодія з використанням Photon PUN 2,
забезпечено голосовий зв’язок, створено ігровий сценарій, а також проведено
комплексне тестування.
Об’єкт розробки:
Процес розробки програмного забезпечення інформаційної системи
віртуальних взаємодій користовучів.
Предметом розробки:
Процес побудови програмного забезпечення інформаційної технології
віртуальних взаємодій користовучів при вивченні іноземної, зокрема
англійської, мови.
Виконано наступні завдання:
- проведено аналіз існуючих підходів до мовного навчання у Віртуальна
реальність;
- розроблено функціональну модель системи;
- реалізовано прототип додатку в Unity;
- забезпечено синхронізацію гри та передачу голосу; перевірено коректність
роботи системи шляхом тестування.
КЛЮЧОВІ СЛОВА: ВІРТУАЛЬНА РЕАЛЬНІСТЬ, АНГЛІЙСЬКА МОВА,
ГОЛОСОВА ВЗАЄМОДІЯ, ГЕЙМІФІКАЦІЯ, UNITY, PHOTON, Віртуальна
реальність-ДОДАТОК, ОСВІТА, ОКУЛЯРИ QUEST, МУЛЬТИПЛЕЄР.
ANNOTATION
Bachelor’s Qualification Thesis of Pavlo Mykhailovych Grebenyuk
Title: Virtual Classroom Software for English Language Learning
Specialty: 121 Software Engineering
Cherkasy State Technological University, Cherkasy, 2025
The thesis consists of 50 pages, 2 tables, 7 figures, and a list of 9 references.
The goal of this bachelor’s qualification thesis is to develop a software product in the
format of virtual reality to enhance English language communication skills through
voice interaction between users in a gamified environment.
The main tasks in designing the software product included: developing the architecture,
implementing multiplayer interaction using Photon PUN 2, enabling voice
communication, creating a game-based learning scenario, and conducting
comprehensive testing.
Object of development:
The object of development is a software system that implements a multi-user
Віртуальна реальність environment for learning English, featuring voice interaction
and gamification of the educational process.
Subject of development:
The subject of development is the architecture and implementation of a gamified
Віртуальна реальність system with multiplayer functionality.
The following tasks have been completed:
An analysis of existing approaches to language learning in Віртуальна реальність
was conducted; A functional model of the system was developed; A prototype of the
application was implemented in Unity; Game synchronization and voice
transmission were ensured; The system’s functionality was verified through testing.
KEYWORDS: VIRTUAL REALITY, ENGLISH LANGUAGE, VOICE
INTERACTION, GAMIFICATION, UNITY, PHOTON, Віртуальна реальність
APPLICATION, EDUCATION, QUEST HEADSET, MULTIPLAYER
ЗМІСТ
ВСТУП…………………………………………………………………………………..6
РОЗДІЛ 1. ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ………. …………………………………………………………………….8
1.1 Методологічні основи дослідження в контексті
програмної інженерії…………………………………………………………..………8
1.2 Актуальні проблеми цифрового мовного навчання………………………8
1.3 Огляд цифрових платформ для вивчення мов……………….……………9
1.4 Існуючі Віртуальна реальність-рішення для мовної освіти ……………9
1.5 Гейміфікація як дидактичний та інженерний підхід…………………….11
1.6 Існуючі технічні рішення та їх недоліки…………………………………11
1.7 Визначення цілей дослідження та новизна підходу……………………..11
1.8 Висновки до розділу 1……………………………………………………..12
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ РОБОТИ У ПРАКТИКУ
ПРОЄКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ
СИСТЕМ З ВІРТУАЛЬНИМ СЕРЕДОВИЩЕМ……………………………………13
2.1 Моделювання предметної області ……………………………….…….13
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області. ……………………………………………….………13
2.1.2 Елементи моделювання предметної області…………………….20
2.2 Формування та аналіз вимог………………………………………………25
2.2.1 Формування вимог до програмного забезпечення. ……………25
2.3 Проєктування логічної структури програмного комплексу……………..27
2.3.1 Діаграма класів……………………………………………………27
2.3.2 Діаграма пакетів…………………………………………………..28
Змн. Арк. № докум. Підпис Дата
Розроб. Гребенюк П.М. «Програмне забезпечення Літ. Лист Листів
Перевір. Голуб С.В. віртуального класу вивчення англійської 3
Рецензент Біда А.Ю. мови»
Н. Контр. Півень О.Б. ФІТІС, кафедра ПЗАС, ПЗС-2104
Пояснювальна записка.
Затверд. Голуб С.В.
2.4 Архітектурне проєктування…………..……………..…………………….29
2.4.1 Діаграма компонентів ……………………………………………30
2.4.2 Діаграма розгортання…………………………………………….32
2.5 Моделювання поведінки системи…………………………..…………….33
2.5.1 Діаграма діяльності ………………………………………………33
2.6 Висновки до розділу……………………………………………………….36
РОЗДІЛ 3. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ..37
3.1 Розробка програмного комплексу ………………………………………37
3.1.1 Обґрунтування вибору засобів реалізації……………….………37
3.1.2 Опис структурної схеми………………….………………………38
3.1.3 Опис логічної схеми системи. …………….……………………38
3.1.4 Розробка бази даних ……………………………………………38
3.1.5 Розробка інтерфейсу користувача. ……………………………..38
3.1.6 Опис розробки програмних компонентів……………………….39
3.2 Тестування системи……………………………………………………….39
3.2.1 Модульне тестування. …………………………………………..39
3.2.3 Системне тестування……………………………………………..40
3.2.4 Приймальне тестування………………………………………….41
3.3 Висновки до розділу 3……………………………………………….……43
ВИСНОВКИ…………………………………………………………………………..44
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ…………………………………………….46
ДОДАТОК А………………………………………………………………………….47
ДОДАТОК Б…………………………………………………………………………..49
ДОДАТОК В……………………………………………………………………..……67
ДОДАТОК Г …………………………………………………………………………70
ЧДТУ 252406.002 ПЗ
Змн. Арк. № докум. Підпис Дата
ЧДТУ 252406.002 ПЗ
ВСТУП
Актуальність теми:
Один з технологічних підходів до вирішення задачі проектування
програмного забезпечення інформаційної системи- що використовує
віртуальну реальність є побудова навчального середовища. В ньому
користувачі можуть тренувати мовні навички в умовах, максимально
наближених до реального спілкування. Це відкриває можливості для
розробки гейміфікованих рішень, які поєднують практику мовлення,
багатокористувацьку взаємодію та голосовий інтерфейс у реальному часі.
Мета і завдання розробки. Метою даної роботи є розробка - додатку у
віртуальній реальності для практичного навчання англійської мови через
інтерактивну комунікацію між користувачами.
Завдання, які вирішуються в роботі:
- аналіз існуючих підходів до вивчення мов у віртуальному середовищі;
- розробка функціоналу мультиплеєрної взаємодії;
- створення ігрової механіки типу Alias для практики лексики;
- забезпечення голосової комунікації між користувачами;
- проведення тестування і оцінка ефективності рішення.
Об’єкт розробки. Об’єктом розробки є програмна система, що реалізує
мультикористувацьке середовище віртуальної реальності для вивчення
англійської мови з можливістю голосової взаємодії та гейміфікації
навчального процесу.
Методи проектування та конструювання:
У розробці використовувались методи об’єктно-орієнтованого
проектування, моделювання UML, програмна реалізація у середовищі Unity
3D з використанням OpenXR та Photon Networking. Аналіз вимог та побудова
сценаріїв взаємодії здійснювались за допомогою діаграм варіантів
використання.
Опис отриманих результатів:
6
ЧДТУ 252406.002 ПЗ
В результаті розробки створено додаток, у якому двоє або більше
користувачів можуть з’єднуватись у спільну віртуальну сцену, бачити один
одного у вигляді аватарів, спілкуватись голосом, отримувати завдання (слово
для пояснення) та заробляти бали за правильно вгадані відповіді.
Практичне значення отриманих результатів:
Створене рішення може використовуватись як інструмент додаткового
навчання у мовних школах або для індивідуального практикування. Воно
сприяє розвитку мовної комунікації, розширенню словникового запасу та
формуванню мовного мислення в реальному часі.
Особистий внесок автора:
Усі етапи розробки - від постановки завдань, розробки функціоналу до
тестування - виконані автором самостійно, включаючи програмну
реалізацію, дизайн середовища та налаштування голосової взаємодії.
7
ЧДТУ 252406.002 ПЗ
РОЗДІЛ 1. ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
1.1 Методологічні основи дослідження в контексті програмної
інженерії
Програмна інженерія як наука охоплює систематичні підходи до
проектування, реалізації, тестування та підтримки програмного
забезпечення, що відповідає визначеним вимогам як функціональним, так і
нефункціональним [1, c. 14]. Розробка навчального програмного
забезпечення на основі віртуальної реальності (VR) для практики іноземної
мови вимагає врахування методів моделювання користувацької взаємодії,
інтерфейсів реального часу та забезпечення когерентної архітектури
системи.
У дослідженні поставлено завдання розробити систему, яка об'єднує VR-
середовище, голосову взаємодію, мультиплеєрну синхронізацію та ігрову
механіку. Для цього було вивчено сучасні наукові підходи до створення
мовних освітніх систем, використання ігрових сценаріїв у навчанні, а також
технічні рішення щодо реалізації таких систем у середовищі Unity з
використанням Photon PUN 2. Основою розгляду є принципи інженерії
програмного забезпечення, викладені у працях І. Соммервілла [2], А.
Пресмана [3] та актуалізовані в контексті цифрових освітніх технологій.
1.2 Актуальні проблеми цифрового мовного навчання
Англійська мова залишається основним засобом міжнародної комунікації
у сфері освіти, технологій та бізнесу. Водночас традиційні методи навчання
недостатньо орієнтовані на розвиток усного мовлення. Як зазначено в роботі
В. Гуревича [4, c. 102], однією з ключових проблем є відсутність автентичної
ситуації спілкування, що ускладнює закріплення комунікативних моделей.
Поширені цифрові платформи (Duolingo, Babbel, Busuu тощо) орієнтовані
переважно на тренування лексики та граматики. За дослідженням K. Godwin-
Jones [5], такі рішення не забезпечують природного мовного занурення,
оскільки не містять голосової взаємодії або підтримки ситуаційного
8
ЧДТУ 252406.002 ПЗ
контексту. Отже, для досягнення цілей розвитку комунікативної
компетентності необхідно реалізовувати середовище з високим рівнем
присутності і соціальної взаємодії.
1.3 Огляд цифрових платформ для вивчення мов
Duolingo, Busuu, Babbel, LingQ - це відомі приклади мобільних додатків,
орієнтованих на самостійне вивчення мови. Вони базуються на методі
повторення та коротких вправ, часто із гейміфікаційними елементами (рівні,
бали, нагороди). Хоч ці платформи популярні, вони мають наступні недоліки:
- користувач навчається ізольовано, без живої взаємодії;
- вправи спрямовані на запам’ятовування, а не реальне спілкування;
- функціонал не підтримує повноцінного діалогу чи пояснення в
контексті.
- Такі сервіси можуть бути хорошим доповненням до навчального
процесу, але не замінюють реальну мовну практику.
1.4 Існуючі Віртуальна реальність-рішення для мовної освіти
З появою Віртуальна реальність технологій почали з’являтись спроби
інтегрувати їх у навчання мов. Розглянемо кілька прикладів:
Mondly Віртуальна реальність
Рисунок 1.1 - Логотип компанії Мондлі
- Один із перших масових Віртуальна реальність-додатків для вивчення
мов. Користувач обирає мову, проходить сценарії спілкування (аеропорт,
готель, магазин), де слухає фрази та повторює їх вголос. Aле є недоліки:
- відсутня реальна взаємодія з іншими людьми;
- сценарії заскриптовані та обмежені;
- голосовий аналіз простий (розпізнається лише факт повторення, а
не якість мови).
9
ЧДТУ 252406.002 ПЗ
Рисунок 1.2 - Логотип компанії Імерс
Immerse - платформа для мовних шкіл, яка дозволяє проводити
Віртуальна реальність-уроки з викладачем. Працює по підписці. Дає
можливість обговорювати теми в групах, моделювати життєві ситуації, але є
недоліки:
- платформа закрита, не підтримує кастомні сценарії;
- не орієнтована на неформальну мовну гру;
- ціна підписки досить висока.
Рисунок 1.3 - Логотипи компаній Інгєйч та Спатал
ENGAGE та Spatial - Хоч не є суто мовними платформами, ці Віртуальна
реальність-середовища використовуються для онлайн-зустрічей та подій.
Можуть бути адаптовані для мовної практики, але є недоліки:
- не мають гейміфікаційної логіки;
- складні у використанні для недосвідченого користувача;
- не підтримують словникові або навчальні сценарії «із коробки».
1.5 Гейміфікація як дидактичний та інженерний підхід
Ігрові елементи у навчанні (гейміфікація) забезпечують підвищення
мотивації та залученості користувачів. Механіка гри Alias, заснована на
поясненні слова без його прямого вживання, є ефективним інструментом
10
ЧДТУ 252406.002 ПЗ
розвитку мовного мислення та активного словникового запасу [9]. У
дослідженнях S. Deterding [10] наголошено, що гейміфікація сприяє
формуванню автономної мотивації в навчанні.
З погляду реалізації у VR, ігрові сценарії потребують обробки голосових
даних, таймерів, чергування ролей, підрахунку балів і синхронізації між
учасниками. У рамках програмної інженерії це вимагає модульного підходу
до проєктування та використання надійної мережевої бібліотеки, такої як
Photon PUN 2.
1.6 Існуючі технічні рішення та їх недоліки
Більшість сучасних освітніх рішень реалізовані як монолітні програми
без можливості масштабування. Вони не враховують мультиплатформеність,
автономність VR-пристроїв та відсутність постійного підключення до
інтернету. Як вказує R. Azuma [11], створення повноцінного інтерактивного
VR-середовища вимагає спеціалізованих архітектурних підходів до
синхронізації станів, управління просторовим звуком і обробки подій в
реальному часі.
1.7 Визначення цілей дослідження та новизна підходу
У ході аналізу було встановлено, що жоден з проаналізованих продуктів
не поєднує в собі одночасно:
- мультиплеєрної взаємодії у VR;
- голосової комунікації у реальному часі;
- ігрової механіки Alias;
- відкритої можливості розширення сценаріїв під навчальні потреби.
Таким чином, у межах кваліфікаційної роботи запропоновано розробити
програмне забезпечення, яке впроваджує всі зазначені компоненти,
б а зуючи с ь н а принцип а х модул ь н о с т і , ма сшт а б о в а н о с т і ,
кросплатформеності та орієнтації на користувача. Система створюється в
середовищі Unity із використанням OpenXR, Photon PUN 2 та
ScriptableObject-архітектури.
11
ЧДТУ 252406.002 ПЗ
1.8 Висновки до розділу 1
На підставі аналізу наукових джерел та огляду існуючих VR-рішень для
мовного навчання встановлено, що потреба у системі, яка поєднує голосову
взаємодію, віртуальне занурення та ігрову практику, залишається
незадоволеною. Розробка такого програмного продукту є актуальною як з
теоретичної, так і з практичної точки зору, що підтверджується сучасними
дослідженнями та поточними технологічними трендами.
1.9 Список використаних джерел:
1. IEEE Guide to the Software Engineering Body of Knowledge (SWEBOK
V3.0). IEEE, 2014.
2. Соммервілл І. Інженерія програмного забезпечення: Підручник. – К.:
Видавництво "Діалектика", 2016. – 656 с.
3. Пресман Р. Основи програмної інженерії. – К.: Вільямс, 2002. – 784 с.
4. Гуревич В. Ю. Методика навчання іноземної мови. – К.: Освіта, 2010.
– 248 с.
5. Godwin-Jones, R. (2014). Emerging Technologies: Games in Language
Learning. Language Learning & Technology, 18(2), 9–16.
6. Mondly VR. https://www.mondly.com/virtual-reality
7. Immerse VR. https://www.immerse.online/
8. Parmaxi, A. (2021). Virtual reality in language learning: A systematic
review. Education and Information Technologies, 26(2), 263–282.
9. Kapp, K. M. (2012). The Gamification of Learning and Instruction. San
Francisco: Pfeiffer.
10.Deterding, S. et al. (2011). From Game Design Elements to Gamefulness:
Defining "Gamification". In: Proceedings of the 15th International Academic
MindTrek Conference. ACM, pp. 9–15.
11.Azuma, R. (1997). A Survey of Augmented Reality. Presence:
Teleoperators and Virtual Environments, 6(4), 355–385.
12
ЧДТУ 252406.002 ПЗ
РОЗДІЛ 2. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ РОБОТИ У
ПРАКТИКУ ПРОЄКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ІНФОРМАЦІЙНИХ СИСТЕМ З ВІРТУАЛЬНИМ СЕРЕДОВИЩЕМ
2.1 Моделювання предметної області
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області
Предметна область охоплює систему віртуальної взаємодії користувачів
з метою практики англійської мови у гейміфікованому Віртуальна
реальність-середовищі. Система реалізована у вигляді Віртуальна
реальність-додатку, який включає три логічно пов’язані сцени: Login, Lobby,
та School. Вони відображають повний життєвий цикл користувача:
авторизація → вибір середовища → мовна взаємодія.
Загальна структура та логіка роботи системи:
Login Scene - початкова сцена, де користувач вводить нікнейм або обирає
вхід анонімно. Після підтвердження система ініціалізує з’єднання через
PhotonNetwork.
Lobby Scene - проміжна сцена у вигляді віртуальної кімнати. Тут
користувач обирає одне з доступних навчальних оточень. На даний момент
доступна одна сцена (School), проте проєкт передбачає розширення.
School Scene - головне Віртуальна реальність-середовище, у якому
відбувається мовна гра Alias із голосовою взаємодією.
Рисунок 2.1 - Структурна логіка системи
Login Scene
Основна задача: підключення користувача до Photon-сервера з
нікнеймом або в анонімному режимі.
13
ЧДТУ 252406.002 ПЗ
Основні об'єкти сцени:
Environment - Група графічних елементів, що формують візуальне
оточення сцени. Не впливає на логіку.
LoginManager - Відповідає за підключення до Photon, зчитування
введених даних (нікнейму) та перенаправлення до наступної сцени.
XR Interaction Manager - Системний об'єкт XR Interaction Toolkit, що
координує взаємодію з UI та іншими інтерактивними елементами у
Віртуальна реальність.
InputActionManager - Обробляє події введення: натискання кнопок,
переміщення контролерів тощо.
LoginUIManager - Відповідає за оновлення інтерфейсу: активація полів,
кнопок, повідомлень.
Віртуальна реальністьKeyBoardManager - Керує виведенням та
роботою Віртуальна реальність-клавіатури. Дає змогу вводити нікнейм
вручну.
XR Origin (XR Rig) - Представляє користувача у Віртуальна реальність.
Містить камеру (голову), контролери, що дозволяють бачити інтерфейс і
взаємодіяти з ним.
LoginUI - Візуальна частина інтерфейсу: поле введення нікнейму, кнопки
входу. Розміщується в полі зору користувача.
Рисунок 2.1 - Екран авторизації Рисунок 2.2 - Вікно вводу імені
Lobby Scene
Основна задача: дати користувачу змогу обрати сцену для приєднання.
Основні об'єкти сцени:
14
ЧДТУ 252406.002 ПЗ
Environment - Статичне Віртуальна реальність-оточення, приватна
кімната з дзеркалом, інтерфейсом і простором для навігації.
XR Interaction Manager - Координує Віртуальна реальність-взаємодії:
натискання кнопок, взаємодію з UI-елементами сцени.
InputActionManager - Обробляє події введення (взаємодії контролера з
UI).
RoomManager - Відповідає за вибір сцени та завантаження відповідної
сцени через PhotonNetwork.LoadLevel.
XR Origin (XR Rig) - У цій сцені, на відміну від Login, аватар гравця
включає: голову (камера), контролери (руки), рух ніг/тулуба (імітація руху
через джойстик або телепорт). В дзеркалі гравець бачить свій аватар.
UI_OpenWorlds - Меню вибору сцени. Відображається у вигляді панелі з
інтерактивними кнопками.
Рисунок 2.3 - Меню вибору середовища
15
ЧДТУ 252406.002 ПЗ
Рисунок 2.4 - Вигляд користувача
World_School Scene
Центральна сцена, де відбувається мовна гра в реальному часі.
Основні об'єкти сцени:
Environment - Віртуальне шкільне оточення. Статична сцена, в якій
розміщуються гравці.
AliasManager - Керує ігровим процесом: обирає слово, запускає таймер,
визначає хід, фіксує відповіді. Має зв’язок з UI та Photon-сервісами для
синхронізації.
XR Interaction Manager - Забезпечує коректну Віртуальна реальність-
взаємодію з об’єктами сцени: планшетом зі словом, кнопками.
InputActionManager - Обробка користувацьких подій: навігація,
натискання кнопок, перемикання погляду.
SpawnerManager - Відповідає за створення гравця через
PhotonNetwork.Instantiate("GenericВіртуальна реальністьPlayer") та
розміщення його в просторі
PhotonVoiceManager - Підключає мікрофон користувача та передає аудіо
через Photon Voice. Забезпечує голосову взаємодію в реальному часі.
Generic Віртуальна реальність Player - Структура аватара гравця, що
включає:
- XR Origin - корінь XR-системи;
16
ЧДТУ 252406.002 ПЗ
- XR Camera - відображає поле зору користувача;
- Photon View - для синхронізації положення в мультиплеєрі;
- Avatar Animator - синхронізує рухи рук, голови, тіла;
- Voice Recorder - компонент Photon Voice для передачі мови;
- Movement Controller - переміщення через джойстик або телепорт.
Рисунок 2.5 - Кілька користувачів в одному середовищі
Рисунок 2.6 - Ігровий процес
Модель предметної області
Модель предметної області відображає логічну структуру системи, її
основні компоненти та взаємозв’язки між ними. У центрі моделі -
17
ЧДТУ 252406.002 ПЗ
Користувач, який взаємодіє з системою через три послідовні сцени: Login,
Lobby та School. Кожна з них має власні сутності та логіку.
Основні сутності моделі:
- Користувач
Властивості: userId, nickname, isAnonymous, avatarModel
Зв’язки:
- підключається до PhotonServer
- обирає Room
- взаємодіє з AliasGame
- PhotonServer
Властивості: serverAddress, region, connectionStatus
Функції: авторизація, створення/підключення до кімнат, передача голосу.
- Scene (Login, Lobby, School)
Властивості: sceneName, UIElements, environment
Зв’язки: кожна сцена має власний SceneManager
Користувач послідовно переходить між сценами
- AliasGame
Властивості: currentWord, timer, score
Функції: запуск гри, вибір слова, підрахунок балів, керування ходами
Зв’язки:
- пов’язаний з AliasManager
- використовує VoiceInput
- VoiceInput
Властивості: microphone, isTransmitting
Функції: захоплення та передача голосу через PhotonVoice
Зв’язки:
- належить до Користувача
- синхронізується через PhotonVoiceManager
- VR Avatar
Властивості: headPosition, handPosition, animationState
Зв’язки:
18
ЧДТУ 252406.002 ПЗ
- є візуальним представленням User
- взаємодіє з UI, Environment, OtherPlayers
Взаємозв’язки між об’єктами:
User → керує AliasGame
AliasGame → працює в межах School Scene
SceneManager → завантажує нову Scene залежно від вибору користувача
PhotonVoiceManager → забезпечує передачу голосу між Users
Словник основних термінів предметної області
Таблиця 2.1
Основні терміни предметної області
Термін Пояснення
Окремий етап взаємодії користувача з
Сцена (Scene) Віртуальна реальність-додатком (Login, Lobby,
SКcоhрoиoсlт)увач, що приєднався до гри через
Гравець (Player) Віртуальна реальність-пристрій
PhotonNetwork Бібліотека для реалізації мультиплеєра у Unity
Базова структура представлення користувача у
XR Origin Віртуальна реальність
Графічні елементи інтерфейсу, з якими взаємодіє
UI користувач
AliasManager Компонент, що керує логікою гри Alias
Віртуальна
реальність- Віртуальний елемент введення тексту в
клавіатура середовищі Віртуальна реальність
19
ЧДТУ 252406.002 ПЗ
2.1.2 Елементи моделювання предметної області
Модель предметної області Віртуальна реальність-додатку будується
навколо об'єктно-орієнтованого підходу, де кожна сцена (Login, Lobby,
World_School) включає окремі логічні компоненти, що взаємодіють між
собою як частини єдиної системи. Усі елементи об’єднані головною метою
— забезпечити безперервний користувацький досвід: від моменту запуску
застосунку до безпосередньої участі у мовній грі.
Користувач (Player) - Головний актор системи. Представлений у вигляді
аватара в сцені World_School, користувач проходить через усі фази:
- Введення або підтвердження нікнейму (Login).
- Вибір середовища для гри (Lobby).
- Участь у грі Alias (School).
У техн ічн ій ре ал і з ац і ї гравець предст авлений об ’єктом
GenericВіртуальна реальністьPlayer, який містить всі необхідні
компоненти:
- XR Rig (XR Origin) — базова Віртуальна реальність-конфігурація;
- PhotonView — синхронізація рухів у мультиплеєрі;
- Voice Recorder — передача мови;
- Avatar Animator — анімація рухів (руки, голова);
Гравець може виконувати дії: переміщатися, взаємодіяти з UI, натискати
кнопки, пояснювати слова, слухати інших гравців, відповідати.
Логіка гри (AliasManager)
AliasManager — центральний компонент, що керує всією логікою раунду.
Він виконує роль "ігрового двигуна" всередині сцени School. Основні
обов’язки:
- запуск нового раунду;
- вибір гравця, який буде пояснювати;
- подача випадкового слова;
- запуск таймера;
- очікування натискання кнопки "Correct" або завершення часу;
- зміна ходу;
20
ЧДТУ 252406.002 ПЗ
- нарахування балів.
Компонент тісно інтегрується з Photon (синхронізація ходу, слів, подій) та з
UI-менеджерами.
Рисунок 2.7 - Послідовність ігрової логіки
Сценічні менеджери (LoginManager, RoomManager, SpawnerManager)
Ці компоненти відповідають за перехід між станами додатку:
LoginManager: обробляє вибір користувача (нікнейм чи анонім), ініціалізує
з'єднання з Photon Server та переводить до Lobby.
RoomManager: відповідає за вибір і завантаження сцени з доступного
переліку (у перспективі — School, Park, Market тощо).
SpawnerManager: під час завантаження World_School викликає
PhotonNetwork . Ins tant ia te( ) для створення Gener icВіртуальна
реальністьPlayer на сцені.
Таким чином, ці менеджери відповідають за динамічне створення
середовища з урахуванням статусу користувача.
Система управління взаємодією (XR Interaction Manager,
InputActionManager)
Компоненти, які забезпечують роботу з Віртуальна реальність-інтерфейсом і
фізичними пристроями введення:
21
ЧДТУ 252406.002 ПЗ
XR Interaction Manager - основний координатор XR-подій. Він
відстежує, які об'єкти доступні для взаємодії, передає події взаємодії (hover,
select, activate) між пристроями та сценічними елементами.
InputActionManager - карта подій введення (натискання тригера,
джойстик, вибір у Віртуальна реальність UI), яка працює через Input Action
Asset від XR Toolkit.
Ці компоненти присутні на кожній сцені та працюють разом із UI-
менеджерами.
Кори с т у в а ц ький і н т е рф е й с ( U I M a n a g e r, В і р т у а л ьн а
реальністьKeyBoardManager, UI_OpenWorlds)
Система інтерфейсу змінюється в кожній сцені, але має спільну структуру:
- LoginUIManager - обробляє взаємодію з полем введення та кнопками
входу.
- Віртуальна реальністьKeyBoardManager - віртуальна клавіатура,
яка передає текст до LoginUIManager.
- UI_OpenWorlds - у Lobby-сцені відображає кнопки вибору сцени та
ініціює перехід при натисканні.
Усі UI-компоненти реалізовані з урахуванням UX-дизайну для Віртуальна
реальність: великі кнопки, розміщення в полі зору, інтеракція лазером.
Рисунок 2.8 - логіка авторизації Рисунок 2.9 - вибір середовища
Голосова взаємодія (Photon Voice Manager)
22
ЧДТУ 252406.002 ПЗ
Голосова комунікація реалізована за допомогою Photon Voice, кожен
гравець має компонент Recorder, який передає аудіо. PhotonVoiceManager
ініціалізує канал голосу, підключає мікрофон. Гравці чують одне одного в
реальному часі, незалежно від позиції в просторі (наразі — без spatial audio).
Цей модуль не лише підвищує реалізм, а й реалізує головну освітню мету —
практику мовлення.
Сцени як логічні стани (Login / Lobby / School)
Кожна сцена в системі - не просто окрема локація, а логічна фаза
життєвого циклу користувача:
Login - підключення до системи.
Lobby - підготовка, вибір ролі чи локації.
School - основний етап навчання, взаємодії, гри.
Між цими сценами здійснюється керований перехід через менеджери,
зберігаючи стани (нікнейм, ID, аватар).
2.1.3 Робоча область моделювання
Робоча область моделювання описує логіку взаємодії користувача з
інформаційною системою у вигляді послідовності дій, які реалізуються на
різних сценах (Login, Lobby, School) з використанням функціональних
компонентів, описаних у попередньому розділі.
Цей сценарій охоплює повний цикл від входу користувача до участі у мовній
Віртуальна реальність-грі та повторення раундів у кооперативному режимі.
Він лягає в основу побудови діаграм варіантів використання, активності та
послідовності, які відображають функціональні залежності між
підсистемами.
Основний сценарій взаємодії гравця з системою:
Запуск додатку - Користувач одягає Віртуальна реальність-гарнітуру,
запускає застосунок і потрапляє у Login Scene. На екрані з’являється
інтерфейс для введення нікнейму та кнопки входу.
Введення імені або анонімний вхід - Через віртуальну клавіатуру
(Віртуальна реальністьKeyBoard) користувач вводить своє ім’я або натискає
23
ЧДТУ 252406.002 ПЗ
кнопку «Увійти як гість». LoginManager зчитує введене значення, ініціалізує
з'єднання з Photon Server.
Перехід у Lobby - Після успішного з’єднання система автоматично
завантажує Lobby Scene. Користувач опиняється у віртуальній кімнаті з
дзеркалом, де бачить свого аватара в повний зріст.
Вибір середовища (навчальної сцени) - Перед гравцем з’являється UI-
панель з вибором доступної локації (наприклад, «Школа»). RoomManager
передає команду на завантаження сцени через PhotonNetwork.LoadLevel.
Створення аватара у шкільній сцені - Користувач потрапляє до
W o r l d _ S c h o o l S c e n e , д е а в т о м а т и ч н о в и к о н у є т ь с я
PhotonNetwork.Instantiate("GenericВіртуальна реальністьPlayer").
SpawnerManager створює повноцінного аватара: XR Rig, камера, руки,
анімації, ім’я над головою.
Очікування інших гравців - Коли підключаються ще користувачі, усі
аватари з’являються у сцені, йде синхронізація голосу через Photon Voice
Manager.
Запуск гри Alias - Один з гравців (хто зайшов перший) стає активним - на
його планшеті з’являється слово. AliasManager запускає таймер (60 секунд),
координує логіку ходу.
Гравець пояснює слово англійською мовою - Інші слухають пояснення
голосом і намагаються вгадати слово. Якщо гравець натискає кнопку
«Correct», бал зараховується, і хід переходить до наступного.
Завершення таймера або відповіді - Якщо час закінчився бал не
нараховується, і право ходу переходить далі.
Циклічність раундів - Гра продовжується, поки не буде досягнуто певної
кількості балів або гравці не вийдуть із кімнати.
Альтернативні сценарії:
Втручання: один з гравців виходить під час гри - Photon Network
автоматично видаляє його аватар, AliasManager переобирає активного
гравця.
24
ЧДТУ 252406.002 ПЗ
Перевантаження сцени або відключення зв’язку - У разі помилки
підключення користувач повертається до Login Scene з відповідним
повідомленням.
Розширення: вибір іншої сцени в Lobby, майбутньому буде реалізовано
вибір між декількома освітніми сценами (наприклад, "ринок", "аеропорт",
"готель").
2.2 Формування та аналіз вимог
2.2.1 Формування вимог до програмного забезпечення
Первинні (вимоги замовника):
- Додаток має працювати у Віртуальна реальність (Oculus Quest 2/3).
- Підтримка 2-х і більше користувачів у сесії.
- Можливість голосової взаємодії між гравцями.
- Сценарій гри: пояснення слів, нарахування балів, таймер.
Деталізовані (вимоги розробника):
- Система має видавати слова випадково з локального словника.
- Таймер синхронізується за допомогою PhotonNetwork.Time.
- Кожен гравець бачить рухи аватарів інших користувачів у реальному
часі.
- Управління UI має відбуватись через Віртуальна реальність-
інтеракцію (XR Ray Interactor).
- Гравець, що пояснює, бачить планшет; інші — лише слухають.
Функціональні вимоги:
- Авторизація гравця (нік).
- Створення сесії або приєднання до неї.
- Подача слова на планшеті.
- Відлік часу (60 сек).
- Передача голосу через Photon Voice.
- Нарахування балів і перехід ходу.
Нефункціональні вимоги:
- Стабільна робота в Віртуальна реальність.
- Час затримки голосу <150 мс.
25
ЧДТУ 252406.002 ПЗ
- Підтримка 4 гравців без втрати продуктивності.
2.2.2 Формування вимог за допомогою діаграми прецедентів
Було побудовано діаграми прецедентів, що описують взаємодію між
гравцем і системою.
Основні актори:
Гравець: може створювати сесію, приєднуватись, пояснювати слово,
вгадувати, натискати кнопки.
Система: генерує слова, відображає UI, запускає таймер, обчислює бали,
синхронізує стан між клієнтами.
Варіанти використання:
- Створити сесію
- Пояснити слово
- Угадати слово
- Натиснути "Correct"
- Перейти до наступного ходу
Рисунок 2.10 - Діаграма Прецедентів
26
ЧДТУ 252406.002 ПЗ
2.3 Проєктування логічної структури програмного комплексу
Логічна структура програмного комплексу визначає взаємозв’язки між
основними модулями системи та розподіл відповідальностей між ними. У
рамках проєкту система розділена на три логічні блоки, що відповідають
етапам користувацької взаємодії: Login, Lobby та Scene.
Кожна сцена реалізована як окремий функціональний модуль з власними
менеджерами та службами:
Login - модуль аутентифікації користувача та підключення до мережі.
Lobby - модуль вибору навчального середовища.
Scene - основний модуль, де реалізована гейміфікована мовна взаємодія.
Комунікація між модулями здійснюється за допомогою Photon Network.
Кожен модуль містить спеціалізовані компоненти: обробники введення,
інтерфейсні менеджери, менеджери ігрової логіки та голосового зв’язку.
Проєктування логічної структури дало змогу забезпечити модульність,
масштабованість і повторне використання компонентів системи.
2.3.1 Діаграма класів
Рисунок 2.10 - Загальна діаграма класів
У логічній моделі деталізовано реалізацію класів, їхні атрибути, методи
та зв’язки: агрегації, наслідування, асоціації.
27
ЧДТУ 252406.002 ПЗ
Рисунок 2.11 - Детальна діаграма класів
2.3.2 Діаграма пакетів
Для структуризації проєкту та зручної підтримки Віртуальна реальність-
застосунку розроблено логічну модульну архітектуру, яка складається з
незалежних, слабо зв’язаних пакетів. Така організація дозволяє легко
масштабувати, модифікувати та повторно використовувати окремі
компоненти системи.
Опис пакетів:
Managers - Визначає поведінку системи під час переходу між сценами,
старту гри, генерації подій. Включає класи, відповідальні за управління
потоком застосунку:
- LoginManager
- RoomManager
- AliasExperienceManager
- SpawnerManager
Networking - Забезпечує мультиплеєрну синхронізацію, передачу голосу,
створення мережевих об’єктів. Містить класи та компоненти, пов’язані з
Photon:
- PhotonNetwork (інтеграція)
- PhotonVoiceManager (голос)
- RPC-виклики в AliasManager
28
ЧДТУ 252406.002 ПЗ
GenericВіртуальна реальністьPlayer - Представляє модель користувача
у Віртуальна реальність, анімація рук, камера, PhotonView. Відповідає за
фізичну присутність гравця у віртуальному просторі.
UI - Реалізовано з урахуванням UX у Віртуальна реальність (великий шрифт,
інтерактивність лазером). Компоненти взаємодії з інтерфейсом:
- LoginUIManager
- UI_OpenWorlds
- В і р т у а л ь н а р е а л ь н і с т ь к л а в і а т у р а ( В і р т у а л ь н а
реальністьKeyboardManager)
Core - Базові об’єкти сцени, інфраструктурна логіка:
- XR Interaction Manager
- InputActionManager
- XR Origin (камери, контролери)
- Environment (графічна сцена)
Data - Зберігання слів, параметрів гри:
ScriptableObject зі списком слів
В майбутньому —потенційно підключення до LMS або зовнішніх API
Рисунок 2.11 - Діаграма пакетів
29
ЧДТУ 252406.002 ПЗ
2.4 Архітектурне проєктування
Архітектура програмного комплексу побудована за модульним принципом
із використанням шаблону MVC (Model-View-Controller) та орієнтована на
поділ відповідальностей між окремими компонентами. Це дозволяє досягти
високої гнучкості, масштабованості та зручності супроводу системи.
Основні архітектурні компоненти:
Model - логіка обробки даних, наприклад: AliasManager,
PhotonVoiceManager, RoomManager, які відповідають за стан гри, голосову
взаємодію та управління кімнатами.
View - візуальні компоненти: VR-інтерфейси, UI-елементи, аватари та
віртуальне середовище, з якими взаємодіє користувач.
Controller - посередники, які реагують на події та передають дані між
Model і View, наприклад: InputActionManager, LoginManager, UIManager.
Комунікація в мультиплеєрі реалізована через Photon Network, що
забезпечує синхронізацію об’єктів, сцен та голосу між усіма учасниками.
Голосова взаємодія реалізується за допомогою Photon Voice, яка працює
незалежно від основного потоку логіки.
Архітектурне рішення також враховує специфіку VR-платформи (Oculus
Quest 3) - зокрема, компоненти XR Interaction Toolkit використовуються для
обробки введення, а XR Origin відповідає за позиціювання користувача у
віртуальному просторі.
2.4.1 Діаграма компонентів
Діаграма компонентів демонструє архітектурну побудову програмної
системи як набір взаємопов’язаних логічних блоків (компонентів), що
взаємодіють між собою у процесі запуску та виконання Віртуальна
реальність-додатку.
В основі архітектури лежить поділ на високорівневі функціональні
компоненти, що відповідають за окремі підсистеми: мережеву взаємодію,
управління життєвим циклом гри, рендеринг Віртуальна реальність-
оточення, взаємодію з користувачем тощо.
30
ЧДТУ 252406.002 ПЗ
Компоненти системи:
Віртуальна реальність Application Core
Основний компонент додатку, що містить XR Origin, XR Camera, систему
управління вводом (InputActionManager), базові UI елементи.
Відповідає за: відображення сцени, взаємодію користувача з оточенням.
Login Module
Складається з:
LoginManager.cs
Віртуальна реальністьKeyboardManager
LoginUIManager
Функція: забезпечує введення імені користувача, ініціалізацію Photon
з'єднання, передачу даних до Lobby.
Lobby Module
Містить RoomManager, UI_OpenWorlds та базовий UI. Функція: надає
користувачу інтерфейс вибору навчальної сцени, взаємодіє з Photon Network
для завантаження обраної сцени.
Game Logic Module
Ключовий ігровий компонент:
- AliasExperienceManager
- WordManager (словник на базі ScriptableObject)
- ScoreSystem (вбудований у AliasManager)
Функція: управління раундом, подача слова, хід, таймер, перемикання
гравців, завершення гри.
Player Module
Представлення кожного користувача:
Generic Player Віртуальна реальність (Prefab з PhotonView, PhotonVoice,
XR Hands, NameTag)
Функція: синхронізує положення гравця, передає мову, дозволяє бачити і
чути інших гравців.
Networking Module
Інкапсулює взаємодію з Photon:
31
ЧДТУ 252406.002 ПЗ
PhotonNetwork, PhotonVoiceNetwork, PhotonVoiceRecorder
Функція: створення кімнат, RPC, синхронізація об'єктів, передача голосу.
Рисунок 2.12 - Діаграма компонентів
2.4.2 Діаграма розгортання
Розгортання Віртуальна реальність-додатку реалізується за гібридною
архітектурою: клієнтська частина виконується безпосередньо на автономних
Віртуальна реальність-пристроях, а серверна логіка — на хмарній платформі
Photon Cloud. Такий підхід дозволяє забезпечити низьку затримку, реальний
час взаємодії між гравцями та масштабованість мережевих сесій без
необхідності розгортання власного сервера.
Основні вузли розгортання:
1 Пристрій користувача (Oculus Quest 2/3)
Це основна виконавча платформа додатку. Кожен користувач використовує
свій автономний Віртуальна реальність-пристрій з попередньо встановленим
додатком, зібраним у Unity під Android (OpenXR).
Локально обробляється:
- рендеринг віртуального середовища (XR Origin, камери, контролери);
- взаємодія з UI та сценами;
32
ЧДТУ 252406.002 ПЗ
- обробка подій введення;
- анімація аватара;
- генерація голосу через мікрофон.
Програмні компоненти:
- Unity App (LoginManager, AliasManager, UI, PhotonView, PhotonVoice,
XR Toolkit);
- XR Runtime (Meta Quest);
- Android OS.
2 Photon Cloud Server (PUN + Voice) Це хмарна інфраструктура, яка
обслуговує:
- створення/керування кімнатами (Lobby/Room);
- обробку RPC-викликів та синхронізацію об'єктів між гравцями;
- передачу голосу в режимі реального часу (через Photon Voice).
Photon Cloud дозволяє не мати власного сервера, забезпечуючи високу
надійність, доступність та масштабованість сесій.
2.5 Моделювання поведінки системи
2.5.1 Діаграма діяльності
Рисунок 2.13 - Діаграма діяльності
Діаграма діяльності (Activity Diagram) відображає послідовність дій, які
виконує система та користувачі в межах життєвого циклу взаємодії — від
33
ЧДТУ 252406.002 ПЗ
запуску застосунку до участі у грі Alias. Цей тип діаграми дозволяє
моделювати логіку поведінки, включаючи розгалуження, умови, паралельні
дії та цикли.
Опис основного процесу діяльності:
1 Початок сценарію
Користувач запускає застосунок на пристрої Oculus Quest 2/3.
Відкривається сцена Login.
2 Введення нікнейму
Користувач взаємодіє з UI (віртуальна клавіатура).
Обирає спосіб входу: "Увійти з ім’ям" або "Анонімно".
Запускається відповідний метод LoginManager.ConnectWithName() або
ConnectAnonymously().
3 З’єднання з Photon
Застосунок ініціалізує з’єднання з сервером Photon.
Успішне підключення → перехід у Lobby.
4 Вибір кімнати
Користувач бачить інтерфейс вибору середовища (поки що доступна одна
— "School").
Натискає кнопку → RoomManager.LoadScene("School").
5 Створення гравця
У сцені School запускається SpawnerManager, який створює мережевий
об’єкт GenericВіртуальна реальністьPlayer через PhotonNetwork.Instantiate().
6 Початок гри
M a s t e r C l i e n t ( п е р ш и й г р а в е ц ь ) з а п у с к а є м е т о д
AliasExperienceManager.StartGame().
Визначається перший активний гравець.
7 Ігрова взаємодія
Активний гравець натискає X → отримує слово.
Таймер запускається (StartTimer()), гравець пояснює слово англійською.
Інші гравці слухають пояснення через Photon Voice.
8 Перевірка відповіді
34
ЧДТУ 252406.002 ПЗ
Якщо слово вгадано → натискається A → зараховується бал, викликається
EndTurn(). Якщо час вийшов → бал не зараховується, EndTurn()
викликається автоматично.
9 Цикл раундів
Система змінює активного гравця та запускає новий раунд.
Повторюється до досягнення maxScore.
2.5.2 Діаграма послідовності
Діаграма послідовності (Sequence Diagram) демонструє взаємодію між
об'єктами у часі під час реалізації конкретного сценарію. У нашому випадку
це сценарій:
«Гравець натискає кнопку початку пояснення (X), отримує слово, система
запускає таймер і синхронізує його між усіма гравцями».
Учасники діаграми:
- Player (Local) — активний гравець, який натискає кнопку.
- GenericВіртуальна реальністьPlayer — його аватар, який виводить
слово на планшет.
- AliasExperienceManager — головний контролер логіки гри.
- PhotonView / PhotonNetwork — забезпечує RPC-виклики та
синхронізацію.
- Other Players — інші гравці в кімнаті, які отримують сигнал про
запуск таймера.
Player UI AliasManager Photon Network
Player UI AliasManager Other Player
35
ЧДТУ 252406.002 ПЗ
Рисунок 2.14 - Діаграма послідовності
Висновки до розділу 2
У другому розділі було здійснено повноцінне впровадження результатів
проєктування віртуального програмного комплексу, спрямованого на
розвиток мовних навичок у гейміфікованому VR-середовищі. Було детально
змодельовано предметну область системи, визначено її основні об’єкти,
взаємозв’язки та поведінку користувача в рамках трьох основних сцен:
Login, Lobby та World_School.
Сформовано вимоги до програмного забезпечення як на рівні замовника,
так і на рівні технічної реалізації, включаючи функціональні та
нефункціональні критерії. Проєктування логічної та архітектурної структури
дозволило досягти модульності, масштабованості та зручності супроводу.
Інтеграція Photon Network забезпечила багатокористувацьку синхронізацію і
голосову взаємодію в режимі реального часу. Адаптація під платформу
Oculus Quest дала змогу повноцінно використовувати VR-можливості,
включаючи трекінг положення, віртуальну клавіатуру та взаємодію з UI.
Таким чином, на основі сформованої моделі було створено технічно
обґрунтовану архітектуру програмної системи, готову до реалізації освітніх
сценаріїв у VR-середовищі з акцентом на інтерактивність, спільну участь
користувачів та розвиток комунікативних навичок.
36
ЧДТУ 252406.002 ПЗ
РОЗДІЛ 3. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
3.1 Розробка програмного комплексу
Розробка програмного комплексу здійснювалась з урахуванням принципів
модульності, повторного використання коду та гнучкої інтеграції
компонентів. Основною платформою для реалізації виступив ігровий рушій
Unity у зв’язці з Photon PUN 2 для мультиплеєрної взаємодії та Photon Voice
для голосового зв’язку.
У процесі розробки були реалізовані три основні сцени:
Login Scene - авторизація користувача, підключення до мережі.
Lobby Scene - вибір навчального середовища, підключення до кімнати.
School Scene - реалізація гри Alias з голосовою взаємодією.
Проєкт реалізовано з використанням OpenXR та XR Interaction Toolkit, що
дозволяє забезпечити підтримку VR-пристроїв, зокрема Oculus Quest 3.
Кожна сцена містить власні керуючі компоненти (менеджери), які
забезпечують логіку сцени, взаємодію з UI та користувачем, а також
мережеву синхронізацію.
Код проєкту структуровано відповідно до сучасних практик
програмування в Unity - використання префабів, ScriptableObject, подієвих
систем (Events), а також налаштування Input System для зручної взаємодії у
VR-середовищі.
Усі компоненти були реалізовані, протестовані та інтегровані в єдиний
VR-застосунок, що забезпечує повний цикл користувацької взаємодії: від
входу до проходження мовної гри.
3.1.1 Обґрунтування вибору засобів реалізації
Для реалізації Віртуальна реальність-додатку обрано ігровий рушій Unity 3D
(версія 2022.3 LTS), оскільки він має:
- підтримку XR-пристроїв (Oculus Quest 2/3) через Meta XR SDK та
OpenXR;
- потужну екосистему (Photon, XR Toolkit, UI Toolkit);
37
ЧДТУ 252406.002 ПЗ
- зручний інтерфейс для швидкого прототипування Віртуальна
реальність-досвіду. Мережева взаємодія реалізована за допомогою Photon
PUN 2 (Photon Unity Networking) для синхронізації гравців і Photon Voice
для передачі голосу.
3.1.2 Опис структурної схеми
Проєкт поділено на такі функціональні модулі:
- NetworkManager - відповідає за створення/під’єднання до сесій.
- GameManager - містить основну логіку геймплею: вибір слів,
черговість гравців, таймер, підрахунок балів.
- UIManager - керує інтерфейсом: панелі підказок, кнопки відповіді.
- WordTablet - об’єкт у Віртуальна реальність, який відображає поточне
слово для пояснення.
- ScoreSystem - відповідає за нарахування та виведення балів.
- VoiceChatManager - реалізує голосовий зв’язок через Photon Voice.
3.1.3 Опис логічної схеми системи
Основна логіка представлена у вигляді сценарію:
- Гравці приєднуються до кімнати через NetworkManager.
- GameManager випадково обирає першого гравця.
- Обраному гравцеві на WordTablet показується слово.
- Таймер запускається.
- Інші гравці слухають пояснення та намагаються вгадати.
- Якщо хтось натискає кнопку "Correct" — додається бал, перехід
ходу.-
- Якщо час вичерпано — хід переходить без нарахування балу.
3.1.4 Розробка бази даних
Оскільки додаток не потребує збереження даних між сесіями, база даних
не використовується. Список слів для пояснення реалізовано як локальний
ScriptableObject що зберігає структуру для завдання користувачу.
3.1.5 Розробка інтерфейсу користувача
UI реалізовано з урахуванням вимог до Віртуальна реальність UX:
- планшет (WordTablet) закріплено перед гравцем, який пояснює слово;
38
ЧДТУ 252406.002 ПЗ
- кнопки "Correct", "Pass", "Start Round" - використовуються кнопками
на контролері;
- таймер зворотного відліку - на планшеті з словом(завданням) .
3.1.6 Опис розробки програмних компонентів
GameManager контролює стани гри: Waiting, Explaining, Evaluating,
NextPlayer. Він взаємодіє з Photon для відправки подій, які синхронізуються
на всіх клієнтах.
WordTablet - має компонент WordCanvas, який активується лише на
клієнті гравця, який пояснює.
ScoreSystem - окремий компонент, який веде рахунок кожного гравця та
оновлює UI.
VoiceChatManager - автоматично активує мікрофон для всіх гравців при
вході в сесію.
3.2 Тестування системи
Тестування Віртуальна реальність-додатку є критично важливим етапом
розробки, оскільки включає перевірку не лише окремих модулів, але й
синхронізації в мультиплеєрному середовищі, відображення аватарів,
голосового зв’язку та інтеракції у просторі. Для виявлення помилок і
валідації функціональності було проведено чотири типи тестування:
модульне, інтеграційне, системне та приймальне.
3.2.1 Модульне тестування
Цей етап передбачає перевірку окремих скриптів та компонентів:
- GameManager - Перевірялась логіка черговості ходів, запуск та
зупинка таймера, зміна станів гри (Waiting, Explaining, Evaluating). Усі
стани змінювались коректно, події викликались у правильному порядку.
- LobbyManager - Модуль відповідає за створення/вхід у кімнату через
Photon. Тестування показало стабільну роботу навіть за одночасного
підключення 3+ користувачів.
- WordManager - Відповідає за видачу випадкових слів із JSON-файлу.
Усі слова подавались без повторів під час сесії.
39
ЧДТУ 252406.002 ПЗ
- ScoreSystem - Логіка підрахунку балів та оновлення UI. Бал
зараховується лише у разі натискання "Correct" у межах таймера.
3.2.2 Інтеграційне тестування
Цей етап перевіряв коректну взаємодію між окремими модулями:
- Синхронізація таймера між клієнтами. Таймер реалізований через
PhotonNetwork.Time для точного обчислення часу раунду. Таймер
відображав однакові значення на всіх пристроях, незалежно від затримки
підключення.
- Аватари: рух голови, рук, тулуба. Синхронізація реалізована через
PhotonView. Усі учасники бачили точні рухи аватарів в реальному часі з
мінімальними затримками.
- Голосовий чат - Тестували активацію мікрофону та передачу звуку
через Photon Voice. Зв'язок стабільний, шумоподавлення працює
коректно, єдина затримка — до 100 мс, не критична для комунікації.
- Телепорт у Віртуальна реальність-просторі. Реалізовано через XR Ray
Interactor + Locomotion Provider. Гравці могли безпечно переміщуватись у
визначеній зоні, без провалів через підлогу або застрягання в геометрії.
- Поведінка кнопок UI у Віртуальна реальність. Тестували натискання
кнопок "Start", "Correct", "Pass" лазерним променем. Усі кнопки
реагували на взаємодію з ray interactor; натискання на одному клієнті не
впливало на UI інших, окрім передбачених команд.
3.2.3 Системне тестування
Проводилось на фізичних пристроях Oculus Quest 2 та Quest 3 з
використанням тестових акаунтів:
- Підключення 2–4 гравців. Сесія залишалась стабільною протягом 30+
хв без розривів. Гравці бачили один одного, чули, переміщувались і
виконували завдання без збоїв.
- Перевірка просторової взаємодії. Всі елементи (планшет зі словом,
таймер, кнопки) з’являлись у правильних координатах сцени, не
перекривалися.
40
ЧДТУ 252406.002 ПЗ
- Віртуальна реальність UX Loggin Room. Кнопки були легкодоступні
для натискання, шрифт достатньо великий, колірна палітра зручна для
очей.
- Edge case: Вихід одного гравця під час гри. При виході гравця сесія не
зависала, GameManager перевизначав порядок ходу.
3.2.4 Приймальне тестування
Фінальне тестування проводилось у форматі демонстраційної гри серед
студентів. Параметри перевірки:
- Чіткість правил гри.
- Відсутність затримок при перемиканні гравців.
- Наскільки зрозумілий інтерфейс новачкам у Віртуальна реальність.
- Чи сприяє формат грі вільному використанню англійської мови.
Усі тести були пройдені успішно. 100% гравців змогли пояснити слово та
вгадати без підказок. Відгуки підтвердили комфорт використання та «ефект
присутності».
Таблиця 3.1
Тест-кейсів для Віртуальна реальність додатка
ID Компонент Опис тесту Очікуваний результат Результат
TC-0 LobbyManag Створення Кімната створена/ Успішно
1 er та підключено
підключення до без помилок
кімнати через
Photon
TC-0 GameManage Запуск раунду Однаковий час на всіх Успішно
2 r та синхроні клієнтах
зація таймера
41
ЧДТУ 252406.002 ПЗ
TC-0 WordManage Подача Жодне слово не Успішно
3 r унікального повторюється у
слова для межах
кожного раунду гри
TC-0 ScoreSystem Нарахування Бали додаються лише Успішно
4 балу при за натискання кнопки
правильній 'Correct'
відповіді
TC-0 XR Телепорт у Гравець Успішно
5 Locomotion межах переміщується без
дозволеної застрягання
TC-0 Photon Avatar Сзоиннихронізація Інші гравці бачать Успішно
6 Sync положення точне положення тіла
голови, рук та в реальному часі
тулуба
TC-0 Photon Voice Голосова Чітке двостороннє Успішно
7 передача між звучання без значних
двома гравцями затримок
TC-0 UI Interaction Натискання Кнопки активуються Успішно
8 Віртуальна при наведені й
реальність- натисканні
кнопок
лазерним
променем
TC-0 Game Flow Автоматичне Хід переходить до Успішно
9 переключення наступного гравця
ходу після 60
секунд
42
ЧДТУ 252406.002 ПЗ
Висновки до розділу 3
У третьому розділі було розглянуто практичну реалізацію програмного
комплексу, спрямованого на гейміфіковану мовну взаємодію у VR-середовищі.
На основі попередньо спроєктованої логічної структури реалізовано повноцінну
систему з багатокористувацькою підтримкою, голосової комунікації та
інтерактивного інтерфейсу у віртуальній реальності.
Розробка здійснювалась із використанням Unity 2022.3 LTS, Photon PUN
2, Photon Voice та XR Interaction Toolkit, що забезпечило стабільну роботу
додатку на VR-пристроях (Oculus Quest 2/3). Архітектура проєкту побудована
на принципах модульності, повторного використання коду та гнучкості при
масштабуванні. Кожна сцена системи реалізована як незалежний модуль із
власною логікою та мережевою взаємодією.
Особливу увагу приділено інтерфейсу користувача, адаптованому для
умов VR, та голосовій взаємодії, яка є ключовим елементом освітнього процесу.
Слова для гри зберігаються локально за допомогою ScriptableObject, що
виключає потребу в зовнішній базі даних.
Усі основні компоненти пройшли комплексне тестування: модульне,
інтеграційне, системне та приймальне. Тести підтвердили коректну
синхронізацію дій у мультиплеєрі, надійність голосового зв’язку та інтуїтивну
зрозумілість інтерфейсу навіть для нових користувачів VR. Реальні гравці
успішно виконували завдання без підказок, що свідчить про ефективність
розробленої системи як освітнього інструменту.
Таким чином, у межах даного етапу було повністю реалізовано,
перевірено та готово до використання VR-рішення для практики англійської
мови у форматі командної гри Alias.
43
ЧДТУ 252406.002 ПЗ
ВИСНОВКИ
У межах виконаної бакалаврської кваліфікаційної роботи було розроблено
Віртуальна реальність-додаток для практичного навчання англійської мови в
інтерактивному середовищі з підтримкою мультиплеєра та голосової
взаємодії. В ході роботи реалізовано і протестовано функціонал, що дозволяє
двом і більше користувачам одночасно знаходитись у віртуальному просторі,
отримувати мовні завдання, пояснювати та вгадувати слова у форматі гри за
принципом «Alias».
На основі аналізу існуючих цифрових та Віртуальна реальність-рішень було
визначено, що сучасні мовні платформи або не мають повноцінної усної
комунікації, або позбавлені інтерактивного, гейміфікованого підходу. Це
обґрунтовує актуальність створення системи, яка поєднує розважальний
формат з освітнім контекстом.
Основні результати роботи:
- проведено огляд сучасних мовних платформ та Віртуальна реальність-
засобів;
- сформульовано вимоги до програмного забезпечення;
- створено логічну та архітектурну моделі системи;
- реалізовано функціональний Віртуальна реальність-прототип у Unity з
використанням Photon PUN 2 та Photon Voice;
- виконано повноцінне тестування всіх ключових сценаріїв: мережевих
підключень, руху аватарів, голосового зв’язку, геймплею.
Практична цінність роботи полягає у тому, що розроблена система може
бути використана як у мовних школах, так і для самостійної практики усного
мовлення в ігровому форматі. Рішення легко розширюється та може
інтегрувати нові слова, теми та механіки.
Перспективи подальшого розвитку:
- додавання AI-підказок та оцінки мовлення;
- розширення кількості ігрових режимів;
- інтеграція з LMS (системами дистанційного навчання);
44
ЧДТУ 252406.002 ПЗ
- застосування у форматі навчальних турнірів.
45
ЧДТУ 252406.002 ПЗ
Список використаних джерел
1. Qiu, L., & Bai, X. (2020). Effects of Віртуальна реальність-based instruction
on second language acquisition. Journal of Educational Computing Rese arch,
58(2), 456–475.
2. Parmaxi, A. (2021). Virtual reality in language learning: A systematic review.
Education and Information Technologies, 26(2), 2231–2252.
3. Lin, T.-J., & Lan, Y.-J. (2019). Language learning in virtual reality
environments: The role of learner agency. Interactive Learning Environments,
27(4), 530–546.
4. Юмашев А.Н. UML 2.0: Об'єктно-орієнтований аналіз та проектування. –
СПб.: Питер, 2012. – 384 с.
5. Методичні рекомендації до підготовки кваліфікаційної роботи бакалавра
для здобувачів вищої освіти зі спеціальності 121 «Інженерія програмного
забезпечення». – Черкаси: ЧДТУ, 2023. – 96 с.
6. Турсунов Б.А. Інформаційні системи та технології: проектування та
реалізація. – Харків: ХНУРЕ, 2020. – 240 с.
7. Documentation – Photon Engine. https://doc.photonengine.com
8. Unity Manual: XR Interaction Toolkit, Meta XR SDK. https://
docs.unity3d.com
9. Oculus Developer Guide. Meta Platforms, Inc. https://developer.oculus.com
46
ДОДАТОК А
ЗАТВЕРДЖЕНО:
Зав. кафедрою ПАЗС,
професор
_________________Голуб С.В.
“______”____________2025 р.
«Програмне забезпечення
віртуального класу вивчення англійської мови»
Специфікація
482 ЧДТУ 252406 12 01
Листів 2
Розробник. ________________ Гребенюк П.М.
Керівник ________________ Голуб С.В.
Черкаси 2025
482 ЧДТУ 252406 12 01
Позначення Найменування Примітки
Документація
482 ЧДТУ 252406 12 01 Текст програми
482 ЧДТУ 252406 34 01 Інструкція користувача
482 ЧДТУ 252406 90 01 Графічні матеріали
48
ДОДАТОК Б
«Програмне забезпечення
віртуального класу вивчення англійської мови»
Текст програми
482 ЧДТУ 252406 12 01
Листів 16
Розробник ________________________ Гребенюк П.М.
Черкаси 2025
482 ЧДТУ 252406 12 01
ЛІСТИНГ
LogginManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using TMPro;
public class LogginManager : MonoBehaviourPunCallbacks
{
public TMP_InputField PlayerName_InputName;
#region UI Callback Methods
public void ConnectAnounimously()
{
PhotonNetwork.ConnectUsingSettings();
}
public void ConnetWithName()
{
if (PlayerName_InputName != null)
{
PhotonNetwork.NickName = PlayerName_InputName.text;
PhotonNetwork.ConnectUsingSettings();
}
50
482 ЧДТУ 252406 12 01
}
#endregion
#region Photon Callbacks Methods
//Called when server available
public override void OnConnected()
{
Debug.Log("OnConnected is called and Server is available");
}
//Called when conection seccesfull
public override void OnConnectedToMaster()
{
PhotonNetwork.LoadLevel("HomeScene");
}
#endregion region;
}
LogginUIManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
51
482 ЧДТУ 252406 12 01
public class LogginUIManager : MonoBehaviour
{
public GameObject ConnectOptionsPanelGameObject;
public GameObject ConnectWithNamePanelGameObject;
#region Unity Methods
void Start()
{
ConnectOptionsPanelGameObject.SetActive(true);
ConnectWithNamePanelGameObject.SetActive(false);
}
#endregion
}
GenericVRPlayer.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using TMPro;
using Photon.Voice.PUN;
using UnityEngine.Profiling;
public class GenericVRPlayer : MonoBehaviourPun
{
public GameObject currentWordCanvas;
52
482 ЧДТУ 252406 12 01
public TextMeshProUGUI wordText;
public TextMeshProUGUI timerText;
public TextMeshProUGUI DebugText;
void DelayedFixVoice()
{
var voiceView = GetComponent<PhotonVoiceView>();
var view = GetComponent<PhotonView>();
if (voiceView != null && voiceView.RecorderInUse != null)
{
voiceView.RecorderInUse.UserData = view.ViewID;
Debug.Log("Manually set Recorder.UserData to: " + view.ViewID);
}
}
public void ShowWord(string word)
{
if (!photonView.IsMine) return;
currentWordCanvas.SetActive(true);
wordText.text = word;
}
public void HideWord()
{
if (!photonView.IsMine) return;
currentWordCanvas.SetActive(false);
53
482 ЧДТУ 252406 12 01
}
public void SetTimerText(float timeRemining)
{
if (timerText == null) return;
timerText.text = (timeRemining > 10) ? "00:" + timeRemining :
"00:0"+timeRemining;
}
}
PlayerNetworkSetup.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Unity.XR.CoreUtils;
public class PlayerNetworkSetup : MonoBehaviourPunCallbacks
{
[SerializeField] GameObject MainAvatar;
[SerializeField] PhotonView PView;
[SerializeField] GameObject LocalXRRigObject = null;
[SerializeField] GameObject AvatarHeadGameObject = null;
[SerializeField] GameObject AvatarBodyGameObject = null;
// Start is called before the first frame update
void Start()
54
482 ЧДТУ 252406 12 01
{
InitSetup();
}
void InitSetup()
{
if (LocalXRRigObject == null || PView == null) return;
if (PView.IsMine)
{
LocalXRRigObject.SetActive(true);
SetLayerRecurcively(AvatarHeadGameObject, 7);
SetLayerRecurcively(AvatarBodyGameObject, 6);
MainAvatar.AddComponent<AudioListener>();
}
else
{
LocalXRRigObject.SetActive(false);
SetLayerRecurcively(AvatarHeadGameObject, 0);
SetLayerRecurcively(AvatarBodyGameObject, 0);
}
}
void SetLayerRecurcively(GameObject go, int layerNumber)
{
55
482 ЧДТУ 252406 12 01
go.layer = layerNumber;
}
}
MicCapture.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;
[RequireComponent(typeof(AudioSource))]
public class MicCapture : MonoBehaviour
{
private AudioSource audioSource;
private string micDevice;
private bool micInitialized = false;
void Start()
{
#if UNITY_ANDROID
if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
{
Permission.RequestUserPermission(Permission.Microphone);
return;
}
#endif
56
482 ЧДТУ 252406 12 01
InitializeMicrophone();
}
void InitializeMicrophone()
{
if (Microphone.devices.Length > 0)
{
micDevice = Microphone.devices[0];
audioSource = GetComponent<AudioSource>();
audioSource.loop = true;
audioSource.clip = Microphone.Start(micDevice, true, 1, 44100);
while (!(Microphone.GetPosition(micDevice) > 0)) { }
audioSource.Play();
micInitialized = true;
}
else
{
Debug.LogWarning("No microphone devices found.");
}
}
void OnDisable()
{
if (micInitialized)
{
Microphone.End(micDevice);
57
482 ЧДТУ 252406 12 01
}
}
}
AliasExperianceManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using TMPro;
public class AliasExperianceManager : MonoBehaviourPunCallbacks
{
public static AliasExperianceManager Instance;
[Header("Game Settings")]
public float roundDuration = 60f;
public int maxScore = 10;
public WordsDataBase words;
private List<string> wordList = new List<string>();
private int currentPlayerActorNumber;
private int player1Score = 0;
58
482 ЧДТУ 252406 12 01
private int player2Score = 0;
private double startTime;
private bool isRoundActive = false;
private string currentWord;
private GenericVRPlayer localPlayer;
void Awake()
{
if (Instance == null) Instance = this;
StartGame();
}
private void Start()
{
foreach (var word in words.words)
{
wordList.Add(word);
}
ShowLocalCanvasToActivePlayer();
if (!
UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Andro
id.Permission.Microphone))
{
59
482 ЧДТУ 252406 12 01
UnityEngine.Android.Permission.RequestUserPermission(UnityEngine.Android.Per
mission.Microphone);
}
}
void Update()
{
if (isRoundActive)
{
float elapsed = (float)(PhotonNetwork.Time - startTime);
float remaining = roundDuration - elapsed;
if (localPlayer != null)
{ localPlayer.SetTimerText(Mathf.CeilToInt(remaining)); }
if (remaining <= 0f)
{
photonView.RPC("StopTimer", RpcTarget.All);
EndTurn();
}
}
}
public void StartGame()
60
482 ЧДТУ 252406 12 01
{
if (PhotonNetwork.IsMasterClient)
{
currentPlayerActorNumber = PhotonNetwork.PlayerList[0].ActorNumber;
photonView.RPC("StartTurn", RpcTarget.All, currentPlayerActorNumber);
}
}
public void OnPressX()
{
if (PhotonNetwork.LocalPlayer.ActorNumber == currentPlayerActorNumber
&& !isRoundActive)
{
currentWord = GetRandomWord();
foreach (var playerObj in FindObjectsOfType<GenericVRPlayer>())
{
if (playerObj.photonView.IsMine)
{
playerObj.ShowWord(currentWord);
break;
}
}
startTime = PhotonNetwork.Time;
61
482 ЧДТУ 252406 12 01
isRoundActive = true;
photonView.RPC("StartTimer", RpcTarget.All, startTime);
}
}
public void OnPressA()
{
if (PhotonNetwork.LocalPlayer.ActorNumber == currentPlayerActorNumber
&& isRoundActive)
{
if (currentPlayerActorNumber ==
PhotonNetwork.PlayerList[0].ActorNumber)
player1Score++;
else
player2Score++;
UpdateScoreUI();
isRoundActive = false;
photonView.RPC("StopTimer", RpcTarget.All);
if (player1Score >= maxScore || player2Score >= maxScore)
{
62
482 ЧДТУ 252406 12 01
EndGame();
}
else
{
EndTurn();
}
}
}
void EndTurn()
{
foreach (var playerObj in FindObjectsOfType<GenericVRPlayer>())
{
if (playerObj.photonView.IsMine)
{
playerObj.HideWord();
break;
}
}
isRoundActive = false;
int playerCount = PhotonNetwork.CurrentRoom.PlayerCount;
if (playerCount < 2)
{
63
482 ЧДТУ 252406 12 01
Debug.Log("Only one player in room, reassigning same player.");
}
else
{
currentPlayerActorNumber = (currentPlayerActorNumber ==
PhotonNetwork.PlayerList[0].ActorNumber)
? PhotonNetwork.PlayerList[1].ActorNumber
: PhotonNetwork.PlayerList[0].ActorNumber;
}
photonView.RPC("StartTurn", RpcTarget.All, currentPlayerActorNumber);
}
void EndGame()
{
isRoundActive = false;
if (player1Score >= maxScore)
Debug.Log("Player 1 wins!");
else
64
482 ЧДТУ 252406 12 01
Debug.Log("Player 2 wins!");
}
string GetRandomWord()
{
if (wordList.Count == 0) return "No words!";
int index = Random.Range(0, wordList.Count);
string word = wordList[index];
wordList.RemoveAt(index);
return word;
}
// RPC:
[PunRPC]
void StartTimer(double serverStartTime)
{
startTime = serverStartTime;
isRoundActive = true;
Debug.Log("Timer: "+ roundDuration.ToString());
}
[PunRPC]
65
482 ЧДТУ 252406 12 01
void StartTurn(int actorNumber)
{
currentPlayerActorNumber = actorNumber;
ShowLocalCanvasToActivePlayer();
}
void ShowLocalCanvasToActivePlayer()
{
if (PhotonNetwork.LocalPlayer.ActorNumber == currentPlayerActorNumber)
{
foreach (var playerObj in FindObjectsOfType<GenericVRPlayer>())
{
if (playerObj.photonView.IsMine)
{
playerObj.ShowWord("Press X To Start");
localPlayer = playerObj;
break;
}
}
}
}
[PunRPC]
void StopTimer()
{
isRoundActive = false;
}
}
66
ДОДАТОК В
«Програмне забезпечення
віртуального класу вивчення англійської мови»
Інструкція користувачеві
482 ЧДТУ 252406 34 01
Листів 3
Розробник ________________________ Гребенюк П.М.
Черкаси 2025
482 ЧДТУ 252406 34 01
Запустивши программу на окулярах Oculus Quest користувач має обрати
спосіб підключення “Анонімно” або “Вказати Імя”. При виборі підключення з
вказанням імені, зʼявиться клавіатура для вводу.
Рисунок В.1 - Інтерфейс для підключення
Після підключення користувач опиняється в Лоббі де обирає локацію в
якій буде відбуватися основна сесія.
Рисунок В.2 - інтерфейс вибору локації
73
482 ЧДТУ 252406 34 01
Опинившись в основній локації, після доєднання інших користувачів,
можна починати гру Alias, завдання пояснити на англійській мові слово яке
вказано на планшеті.
Рисунок B.3 - Ігровий процес
74
ДОДАТОК Г
«Програмне забезпечення
віртуального класу вивчення англійської мови»
Графічні матеріали
482 ЧДТУ 252406 90 01
Листів 2
Розробник ________________________ Гребенюк П.М.
Черкаси 2025
482 ЧДТУ 252406 90 01
Рисунок Г.1 - Віртуальна клавіатура
Рисунок Г.2 - Аватар користувача
71
482 ЧДТУ 252406 90 01
Рисунок Г.3 - Основна локація
Рисунок Г.4 - Ігровий процес
72