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 с ошибкой