Similar presentations:
Презентация. Защита дипломного проекта Тускун
1. ДИПЛОМНЫЙ ПРОЕКТ на тему: РАЗРАБОТКА КОМПЬЮТЕНОЙ ИГРЫ НА UNITY «Сказания Якутии»
НЕГОСУДАРСТВЕННОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ«ЯКУТСКИЙ КОЛЛЕДЖ ИННОВАЦИОННЫХ ТЕХНОЛОГИЙ»
(НПОУ «ЯКИТ»)
Специальность 09.02.07 «Информационные системы и программирование»
ДИПЛОМНЫЙ ПРОЕКТ
НА ТЕМУ:
РАЗРАБОТКА КОМПЬЮТЕНОЙ ИГРЫ
НА UNITY «СКАЗАНИЯ ЯКУТИИ»
Тимирдяев Т.Н.
КИСП-9-22(2)
2. Цели и задачи
ЦЕЛИ И ЗАДАЧИЦель работы — разработать компьютерную визуальную новеллу «Сказания Якутии» в 2D-формате
на движке Unity с использованием языка программирования C# и инструментария Visual Studio.
Задачи
• Изучить особенности жанра визуальных новелл и его образовательные возможности.
• Проанализировать якутский фольклор (сказания, мифы, легенды) как основу для сценария
новеллы.
• Разработать сценарий и нарративную структуру новеллы с учётом культурных особенностей.
• Создать визуальный стиль проекта, вдохновлённый якутским искусством и природой.
• Реализовать программную часть новеллы в Unity (2D Universal Render Pipeline) с
использованием C# и Visual Studio.
• Внедрить интерактивные элементы (выбор диалогов, ветвление сюжета).
• Протестировать работоспособность и юзабилити новеллы.
• Оценить потенциал проекта для образовательных и культурно-просветительских целей.
3. Объект и предмет исследования
ОБЪЕКТ И ПРЕДМЕТ ИССЛЕДОВАНИЯОбъект исследования — процесс разработки интерактивного цифрового контента на базе
культурного наследия.
Предмет исследования — технологии создания визуальных новелл в среде Unity (2D) с
применением C# и инструментов Visual Studio.
4. ИСПОЛЬЗованные инструменты для разработки дипломного проекта
ИСПОЛЬЗОВАННЫЕ ИНСТРУМЕНТЫ ДЛЯ РАЗРАБОТКИДИПЛОМНОГО ПРОЕКТА
Движок: Unity
Язык программирования: C#
Все элементы игры (система выбора, ветвление сюжета, отслеживание поэтических очков, визуальные эффекты, анимация переходов,
работа с диалогами и сохранение прогресса) реализованы на C# в среде Unity.
5. Архитектура проекта (структура каталогов)
АРХИТЕКТУРА ПРОЕКТА (СТРУКТУРА КАТАЛОГОВ)Структура каталогов в Unity:
Art: Папка со спрайтами
Prefabs: Папка для шаблона кнопки перехода между сценами
Scenes: Включает в себя виды сцен начиная от сцен выбора до финала
Scripts: DialogueChoiceHandler, DialogueManager,
GameManager, GameState, PathChoiceManager, MainMenu, SceneDialogue,
TestDialogue
6. Иерархия игровой сцены
ИЕРАРХИЯ ИГРОВОЙ СЦЕНЫОсновные элементы сцены Prologue:
• Main Camera — статичная камера
• Canvas — корневой элемент UI
• DialoguePanel
• NameText, DialogueText
• SpeakerImage
• NextButton
• EventSystem — обработка сенсорного ввода
• GameManager
• DialogueStarter
7. Система диалогов: принцип создания
СИСТЕМА ДИАЛОГОВ: ПРИНЦИП СОЗДАНИЯСистема диалогов реализуется через скрипт SceneDialogue в Unity.
Как это работает:
1.
Диалоги для конкретной сцены вручную записываются в массив sceneDialogue внутри скрипта.
2.
Тип сцены задаётся с помощью перечисления SceneType (например: Prologue, PowerChapter2, Choice_Forge и
т. д.).
3.
После завершения диалога игра переходит на сцену, указанную в поле nextSceneName.
4.
UI-элементы диалога (панель, текст имени, текст диалога, кнопка продолжения) автоматически ищутся и
подключаются при запуске сцены.
8. Главный управляющий скрипт: координация игровых систем
ГЛАВНЫЙ УПРАВЛЯЮЩИЙ СКРИПТ: КООРДИНАЦИЯИГРОВЫХ СИСТЕМ
GameManager: координация игровых процессов и диалогов
1. Гарантирование единственного экземпляра (паттерн Singleton):
• статическое свойство Instance предоставляет глобальный доступ
к GameManager;
• в методе Awake() проверяется наличие экземпляра: если его нет
— текущий объект становится Instance, если уже есть — новый
объект уничтожается (Destroy(gameObject));
• отказ от DontDestroyOnLoad — GameManager создаётся в
каждой сцене заново.
9. GameManager: взаимодействие с DialogueManager и запуск диалогов
GAMEMANAGER: ВЗАИМОДЕЙСТВИЕ С DIALOGUEMANAGER И ЗАПУСК ДИАЛОГОВ
Инициализация DialogueManager (в Start()):
• поиск на текущем объекте: GetComponent<DialogueManager>();
• если не найден — поиск по сцене: FindAnyObjectByType<DialogueManager>();
• логирование результата (✅ / ❌).
Запуск диалогов (метод StartDialogue):
• передача массива реплик (dialogues) и имени следующей сцены (nextScene) в
DialogueManager;
• проверка на null и вывод ошибки при отсутствии dialogueManager
10. Центральный менеджер диалогов: отображение реплик и навигация
ЦЕНТРАЛЬНЫЙ МЕНЕДЖЕР ДИАЛОГОВ: ОТОБРАЖЕНИЕРЕПЛИК И НАВИГАЦИЯ
Структуры данных
• DialogueLine: реплика (имя, текст, спрайт, звук).
• Dialogue: массив реплик (DialogueLine[]).
Ключевые функции
• Инициализация (Start):
• поиск и настройка UI-элементов (nameText,
dialogueText, speakerImage, continueButton и др.);
• скрытие панелей dialoguePanel и choicePanel.
Запуск диалога (StartDialogue):
• заполнение очереди реплик (dialogueLinesQueue);
• активация dialoguePanel;
• первой реплики (DisplayNextSentence).
Отображение реплик (DisplayNextSentence):
• обновление UI (имя, изображение, текст);
• воспроизведение звука (audioSource.PlayOneShot);
• запуск анимации набора текста (TypeSentence).
Анимация текста (TypeSentence):
• посимвольное отображение с задержкой 0,04 с;
• возможность прерывания нажатием кнопки.
Завершение (EndDialogue):
• скрытие dialoguePanel;
• загрузка следующей сцены
(SceneManager.LoadScene).
Выбор вариантов (ShowChoices):
• отображение панели с кнопками-вариантами;
• возврат к диалогу после выбора (ClearChoices).
11. Центральный менеджер диалогов: отображение реплик и навигация
ЦЕНТРАЛЬНЫЙ МЕНЕДЖЕР ДИАЛОГОВ: ОТОБРАЖЕНИЕРЕПЛИК И НАВИГАЦИЯ
12. Тестовый диалог: отладка и проверка работы системы
ТЕСТОВЫЙ ДИАЛОГ: ОТЛАДКА И ПРОВЕРКА РАБОТЫ СИСТЕМЫ
TestDialogue: проверка работы диалоговой системы
Скрипт для тестирования системы диалогов: запускает тестовый диалог с задержкой, пров
еряет работоспособность DialogueManager.
Ключевые параметры:
startDialogue — массив диалогов для теста (задаётся в инспекторе);
nextScene — сцена после завершения диалога (по умолчанию "MainMenu").
Процесс работы:
Задержка запуска (0,5 с) через StartCoroutine(StartDialogueWithDelay()).
Поиск DialogueManager в сцене (FindAnyObjectByType<DialogueManager>()).
Проверки:
найден ли DialogueManager (null → ошибка);
задан ли startDialogue в инспекторе (null или пустой → ошибка);
существует ли dm.dialoguePanel (null → ошибка).
Запуск диалога через dm.StartDialogue(startDialogue,
nextScene) при успешном прохождении проверок.
Логирование в консоль
Debug.Log("TestDialogue: Start вызван!") — старт скрипта;
Debug.LogError("❌ DialogueManager не найден!") и аналогичные — ошибки;
Debug.Log("✅ DialogueManager найден!") — успех поиска;
Debug.Log($"✅ Диалог найден, {startDialogue.Length} блоков") — подтверждение данных.
13. Отслеживание состояния игры: сохранение прогресса и контекста
ОТСЛЕЖИВАНИЕ СОСТОЯНИЯ ИГРЫ: СОХРАНЕНИЕ ПРОГРЕССА И КОНТЕКСТА
GameState: отслеживание прогресса сюжета
Хранит глобальное состояние игры, влияющее на:
ветвление сюжета;
доступность концовок;
разблокировку секретных элементов.
Ключевые переменные
currentPath — текущий сюжетный путь.
hasKyyaskanAlliance — союз с Кыйасканом.
hasManchaaryDeal — сделка с Манчаары.
poeticChoices — счётчик поэтичных выборов.
Важная функция
Reset() — сбрасывает все параметры в начальное состояние.
14. Обработка выбора в диалоге: управление ветвлениями сюжета
ОБРАБОТКА ВЫБОРА В ДИАЛОГЕ: УПРАВЛЕНИЕ ВЕТВЛЕНИЯМИ СЮЖЕТА
DialogueChoiceHandler: обработка выборов и смена сцен
Назначение
Обрабатывает выборы игрока в диалогах:
обновляет GameState (путь, флаги, счётчик поэтичных выборов);
загружает новую сцену через SceneManager.
Ключевые методы
MakePrologueChoice — выбор основного пути ("Power" / "Doubt").
ForgeChoice, ManchaaryChoice, KyyaskanChoice (Путь Силы) — влияют на poeticChoices, hasManchaaryDeal, hasKyyaskanAlliance.
RefusalChoice, DarkShamanChoice (Путь Сомнения) — могут перевести на другой путь или запустить Секретный путь.
PowerFinalChoice, DoubtFinalChoice — проверяют poeticChoices ≥ 3 для перехода на Секретный финал.
Основные механизмы
Обновление состояния: меняет currentPath, poeticChoices (+1/+2), флаги альянсов.
Условие Секретного пути: разблокируется при poeticChoices ≥ 3.
Смена сцен: SceneManager.LoadScene() — переход к новой главе/финалу.
15. Менеджер сюжетных путей: контроль разветвлений и условий
МЕНЕДЖЕР СЮЖЕТНЫХ ПУТЕЙ: КОНТРОЛЬ РАЗВЕТВЛЕНИЙ И УСЛОВИЙ
Скрипт предоставляет простой интерфейс для выбора начального сюжетного пути —
служит точкой ветвления сразу после пролога.
Ключевые методы
ChoosePowerPath():
• устанавливает GameState.currentPath = "Power";
• загружает сцену "PowerPath_Chapter2";
• выводит в консоль: «Путь Силы выбран, загрузка PowerPath_Chapter2».
ChooseDoubtPath():
• устанавливает GameState.currentPath = "Doubt";
• загружает сцену "DoubtPath_Chapter2";
• выводит в консоль: «Путь Сомнения выбран, загрузка DoubtPath_Chapter2».
Основные функции
• Обновление глобального состояния: записывает выбранный путь в GameState.currentPath.
• Навигация по сценам: мгновенно загружает стартовую главу выбранного пути через
SceneManager.LoadScene().
• Отладка: логирование выбора в консоль для контроля процесса.
16. Главное меню игры: навигация и запуск игровых режимов
ГЛАВНОЕ МЕНЮ ИГРЫ: НАВИГАЦИЯ И ЗАПУСК ИГРОВЫХ РЕЖИМОВ
Скрипт реализует функционал главного меню визуальной новеллы: обработку нажатий кнопок, воспроизведение звуков, загрузку сцен и выход
из игры.
Ключевые методы
• StartGame() — запускает игру:
• воспроизводит звук клика (PlayClickSound());
• загружает сцену пролога: SceneManager.LoadScene("Prologue").
• QuitGame() — завершает работу:
• в редакторе Unity останавливает режим воспроизведения;
• в сборке вызывает Application.Quit().
• OpenSettings() — открывает панель настроек (заглушка с логированием).
• OpenCredits() — отображает информацию об игре (версия, разработчик и т. д.).
Основные функции
• Управление курсором: делает курсор видимым и разблокированным (Cursor.visible = true, Cursor.lockState = CursorLockMode.None).
• Звуковое сопровождение: метод PlayClickSound() проигрывает клик при нажатии кнопок (с проверкой на null).
• Кросс-платформенность: корректная работа как в редакторе Unity, так и в собранной версии игры.
• Отладка: логирование в консоль при отсутствии звука или вызове заглушек.
Итог: MainMenu обеспечивает удобный и интерактивный стартовый экран —
игрок может начать игру, выйти, ознакомиться с информацией или открыть настройки (в перспективе).
17. Главное меню игры: навигация и запуск игровых режимов
ГЛАВНОЕ МЕНЮ ИГРЫ: НАВИГАЦИЯ И ЗАПУСК ИГРОВЫХ РЕЖИМОВ
18. Сюжет игры: ключевые сцены и этапы развития
СЮЖЕТ ИГРЫ: КЛЮЧЕВЫЕ СЦЕНЫ И ЭТАПЫ РАЗВИТИЯ
19. ЗАДУМКА СЮЖЕТА: ПРОЕКТИРОВАНИЕ
Основа сюжета:Сюжет создан на основе якутского героического эпоса Олонхо — древнейшего сказания народа саха, включённого ЮНЕСКО в
список нематериального культурного наследия человечества.
Что взято из Олонхо:
• Деление мира на Верхний, Средний и Нижний (Абааһы)
• Образ шамана как посредника между мирами
• Духи-покровители, испытания болью («железная кузница»)
• Моральная дилемма: сила ≠ добро
Что добавила фантазия автора дипломного проекта:
• Система «поэтических выборов» (эмоция vs эффективность)
• Личная драма: сестра, Сардаана, отказ от дара
• Возможность стать чудовищем или отдать власть
• Гибкое ветвление: 6 финалов + секретные пути
20. Пролог — Печать в трёх мирах
ПРОЛОГ — ПЕЧАТЬ В ТРЁХ МИРАХГлавный герой: Эрчим
Наставник: Айталын Куо («Владелица нити»)
Ключевая сцена:
• Айталын Куо вонзает в руку Эрчима серебряную иглу «Кылыс».
Эффект: левый глаз становится чёрным (видит Верхний мир), правый — белым (видит Нижний
мир).
Цель игры:
Найти утерянную маску «Куох Мас» — легендарную берестяную маску первого шамана.
21. Испытания и союзники (главы 2–4)
ИСПЫТАНИЯ И СОЮЗНИКИ (ГЛАВЫ 2–4)Железная кузница (Тимир Дьэбил)
• В Олонхо: шаман проходит физическую смерть и перерождение
• В игре: тело переплавляют заживо → награда: Копьё Солнца (убивает только злых духов)
Манчаары (дух-обманщик)
• Архетип трикстера из якутского фольклора
• Признаётся: украл маску 50 лет назад из молодой глупости
• Маска спрятана в желудке щуки Булуус на дне Озера Семи Душ
Кыыскан (огненная дева)
• Дочь повелителя духов Абааһы
• Атакует цепями из человеческих зубов
• Совет Айталын Куо: «Не убивай, разорви связь с отцом»
• Авторская идея: врага нельзя убить, его нужно освободить
22. Финал Пути Силы — 3 варианта
ФИНАЛ ПУТИ СИЛЫ — 3 ВАРИАНТАФинал
Тип
Итог
Связь с олонхо
Атаковать Кыыскан
Трагический
Эрчим — каменный страж. Сардаана плачет у
подножия
Наказание за гордыню (общий
мотив эпоса)
Разорвать связь с
отцом
Героический
Кыыскан — союзник (огненная птица). Каждую весну
прилетает к горе
Классический финал богатыряолонхосута
Исцелить Кыыскан
Поэтический
Кыыскан стала человеком. Поёт колыбельные
каменному Эрчиму ночами
Авторское отступление: сила в
уязвимости
23. Путь Сомнения — отказ от дара
ПУТЬ СОМНЕНИЯ — ОТКАЗ ОТ ДАРАТриггер: Эрчим вырывает иглу «Кылыс» из руки
Что нарушается:
• В Олонхо отказ от дара предков — непростительный грех
• Айталын Куо исчезает в гневе
• Тьма накрывает родной улус
Похититель: Толбонноох — дух забытых душ
• Авторская сущность: крадёт тех, о ком никто не вспомнит
• Первой похищают сестру Эрчима
Путь вниз:
• Отчаяние → поход к Манчаары
• Предложение: «Стань не шаманом света, а шаманом чёрного неба»
• Чёрная татуировка на спине — клеймо и источник тёмной силы
24. Финал Пути Сомнения — 3 варианта
ФИНАЛ ПУТИ СОМНЕНИЯ — 3 ВАРИАНТАФинал
Итог
Ключевой образ
Владыка Нижнего мира
Трон из костей. Справедливый, но суровый. Сардаана приходит раз
в год — он её не помнит. Вдвоём, но не вместе
«Любовь, побеждённая властью»
Исчезновение
Снимает печать, бросает маску в пропасть. Тело становится
прозрачным. Растворяется в воздухе как утренний туман. Сардаана
ждёт всю жизнь
«Ничего не осталось»
Власть Сардаане (поэтический)
Отдаёт маску ей. Теряет силу, обретает свободу. Строят дом в
тайге. Живут долго и счастливо
Единственный финал без жертвы
25. Схема ветвления (итоговая)
СХЕМА ВЕТВЛЕНИЯ (ИТОГОВАЯ)СТАРТ
Пролог: Игла «Кылыс» вонзается в руку
ПУТЬ СИЛЫ (Свет)
ПУТЬ СОМНЕНИЯ (Тьма)
• Железная кузница → Копьё Солнца
• Вырывает иглу → отказ от дара
• Манчаары → ключ от щуки Булуус
• Тьма накрывает улус → Толбонноох крадёт сестру
• Кыыскан (выбор: атака / разрыв / исцеление)
• Манчаары → шаман чёрного неба (чёрная
татуировка)
• → 3 финала: Трагический / Героический /
Поэтический
• Союз с Кыыскан (свергнуть отца / заточить)
• → 3 финала: Владыка / Исчезновение / Власть
Сардаане
26. Результаты тестирования производительности
РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯПРОИЗВОДИТЕЛЬНОСТИ
Частота кадров (ФПС):
Режим тестирования
Средний ФПС
Минимальный ФПС
Unity (эмулятор)
144 кадров в секунду
141 кадров в секунду
Персональный компьютер
300 кадров в секунду
296 кадров в секунду
Итоговый вывод под таблицей: Игра работает плавно, без
зависаний и фризов