README.md

Пример реализации модульной системы для хранения игрового прогресса

banner

Этот проект содержит материалы для статьи Современное хранение игрового прогресса в контексте Unity

⚠️ Структура проекта реализована в соответствии с примерами из статьи и не является общей рекомендацией по проектированию ⚠️

Стек:

  • Unity LTS 2022.3.45f1
  • Universal Render Pipeline
  • Odin Inspector
  • Unity CloudSave
  • Unity Gaming Services
  • Newtonsoft
  • UnityCypher

Структура директорий проекта:

Directories

  • Editor: файлы для работы в режиме редактора.
  • Plugins: все подключаемые внешние пакеты.
  • Example…: модули проекта.

Описание модулей проекта:

Modules

  • 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 операций

Настройка и конфигурация:

Config

  • Директория конфигураций: Assets/Example.Runtime/Configs
  • Выбор пресета: Assets/Example.Runtime/Configs/SO_Preferences.asset

Каждый пресет позволяет выбрать реализации для модулей системы сохранений.

В конфиге поддерживается валидация данных на основе Odin Inspector.

Preset


Инструкция по использованию:

Controller

  • Сцена для запуска: Assets/Example.Runtime/Scenes/Startup.unity.
  • Управление:
    • Объект: [LOGIC].
    • Компонент: GameController.
    • Область Game Data: текущие игровые данные.
    • Область Debug: текущий статус контроллера.
      • Контроллером можно пользовать только в статусе Ready.
    • Область Save Options: кнопки для сохранения и загрузки игровых данных.

Контакты:

Блог в соц. сетях:

Описание

Реализация системы сохранений для Unity

Конвейеры
0 успешных
0 с ошибкой