gamebox-workshop-arcade
ТЗ на Gamebox Практикум для направления Unity
Автор: Войнаренко Сергей Михайлович
Билд: ссылка
Управление:
W, A, S, D / Стрелки управления курсором — перемещение героя
Клик левой кнопкой мыши — атака
Клик правой кнопкой мыши — перезарядка
Вращение колеса мыши — увеличение / уменьшение масштаба
Escape — пауза
Структура проекта:
/Imported — дополнительные сторонние библиотеки
/Materials — материалы
/Plugins — внешние плагины
/Prefabs/
Hero — префабы игрока и боеприпаса
Hud — префабы HUD и дочерних элементов
Infrastructure — префабы, необходимые для запуска игры
Level — префабы элементов игрового уровня
UI — префабы окон
/Resources/StaticData — классы ScriptableObject
с настройками
/Scenes/
Initial — сцена инициализации
Menu — сцена главного меню
Main — сцена игрового уровня
EndGame — сцена завершения игры
/Scripts/
Infrastructure/
GameBootstrapper.cs
— точка входа в игру
SceneLoader.cs
— загрузчик сцен
States/GameStateMachine.cs
— машина состояний игры
Data — классы, содержащие динамические данные и статические методы
Services/
Input/InputService.cs
— сервис пользовательского ввода
Loot/LootService.cs
— сервис выпадающих предметов
Progress/ProgressService.cs
— сервис прогресса игрока
StaticData/StaticDataService.cs
— сервис статичных данных
Window/WindowService.cs
— сервис окон пользовательского интерфейса
AllServices.cs
— контейнер сервисов для внедрения зависимостей
Logic — вспомогательные и общие классы
Factory/
GameFactory.cs
— основная фабрика
LootFactory.cs
— фабрика выпадающих предметов
UiFactory.cs
— фабрика пользовательского интерфейса
UI — классы пользовательского интерфейса
Level — классы игрового уровня
Hero — классы героя
Bullet — классы боеприпаса
/Settings/InputSystem — настройки InputSystem
Иерархия объектов в сценах:
GameRunner — вспомогательный объект, создающий GameBootstrapper
Main Camera — основная камера
Virtual Camera — виртуальная камера Cinemachine
Directional Light — источник света
EventSystem — объект, содержащий обработчики входа, рэйкастинга и отправки событий
Plane — плоскость для конвертации координат курсора
NavMeshSurface — навигационная сетка
NavMeshGenerator — вспомогательный объект для рантайм инициализации NavMeshSurface
InputSupport — вспомогательный объект для отслеживания пользовательского ввода
Архитектура:
GameBootstrapper.cs
— точка входа. При запуске инстанциирует из префаба загрузочную штору _curtainPrefab
, создаёт новый экземпляр класса Game
, переводит машину состояний в BootstrapState
и переносит себя в DonDestroyOnLoad
.
В BootstrapState
происходит регистрация всех сервисов, после чего происходит переход в LoadProgressState
.
В LoadProgressState
инициируется новый прогресс игрока или загружается сохранённый, происходит переключение в LoadMenuState
и загружается сцена Menu.
Внедрение зависимостей происходит в GameStateMachine
для каждого из состояний, а для создаваемых объектов — в соответствующих фабриках.
Описание
ТЗ на Gamebox Практикум для направления Unity июнь 2024
Языки
C#
- ShaderLab
- GLSL
- HLSL