1 месяц назад
История
README.md
Пример реализации модульной системы для хранения игрового прогресса
Этот проект содержит материалы для статьи Современное хранение игрового прогресса в контексте Unity
⚠️ Структура проекта реализована в соответствии с примерами из статьи и не является общей рекомендацией по проектированию ⚠️
Стек:
- Unity LTS 2022.3.45f1
- Universal Render Pipeline
- Odin Inspector
- Unity CloudSave
- Unity Gaming Services
- Newtonsoft
- UnityCypher
Структура директорий проекта:
- Editor: файлы для работы в режиме редактора.
- Plugins: все подключаемые внешние пакеты.
- Example…: модули проекта.
Описание модулей проекта:
- Example.Data: слой данных, включающий структуры данных для хранения игрового прогресса.
- Example.Presentation: слой представления, отвечающий отображение данных получение пользовательского ввода.
- Example.Logic: слой игровой логики, отвечающий за механики, правила игры и работу с данными.
- Example.Infrastructure: слой инфраструктуры, абстракции и базовые реализации сервисов и систем, не привязанных к конкретному проекту.
- Auth: авторизация пользователей, получение их идентификаторов.
- Backend: работа с бэкендом, получение данных и отправка запросов на сервер.
- Save: сохранение и загрузка данных.
- DI: начальная реализация фреймворка для Dependency Injection (но это ещё не DI).
- Example.Infrastructure.Impl: слой реализации инфраструктуры, конкретные реализации сервисов и систем для конкретного проекта.
- Example.Runtime: слой приложения, контроль потока исполнения, связь всех модулей между собой.
- Config: конфигурация приложения.
- Creation: создание зависимостей приложения.
- Application: основной исполняющий код приложения.
Компоненты системы сохранений:
- Данные:
ISaveData
- Сериализация:
JsonUtility
Newtonsoft Json
BinaryFormatter
- Декорирование
AesEncryption
- Ключи данных:
- Из типа данных
- Маппинг типа данных к ключу
- Декорирование добавлением префикса
- Модуль хранения данных:
- Локальные реализации:
- Файловая система
PlayerPrefs
- Удалённые реализации:
Unity CloudSave
- Комбинированные реализации на основе батчинга:
- Формирование батча за N сек
- Формирование батча за N операций
- Локальные реализации:
Настройка и конфигурация:
- Директория конфигураций:
Assets/Example.Runtime/Configs
- Выбор пресета:
Assets/Example.Runtime/Configs/SO_Preferences.asset
Каждый пресет позволяет выбрать реализации для модулей системы сохранений.
В конфиге поддерживается валидация данных на основе Odin Inspector.
Инструкция по использованию:
- Сцена для запуска:
Assets/Example.Runtime/Scenes/Startup.unity
. - Управление:
- Объект:
[LOGIC]
. - Компонент:
GameController
. - Область
Game Data
: текущие игровые данные. - Область
Debug
: текущий статус контроллера.- Контроллером можно пользовать только в статусе
Ready
.
- Контроллером можно пользовать только в статусе
- Область
Save Options
: кнопки для сохранения и загрузки игровых данных.
- Объект:
Контакты:
Блог в соц. сетях:
Описание
Реализация системы сохранений для Unity
Конвейеры
0 успешных
0 с ошибкой