Vortex SDK

Namespace: Vortex.Sdk.* Слой: 3 (AppSDK) Пакетов: 11 (Core, Quests, MiniGamesSystem, AudioLocalizationSystem, CharacterViewSystem, EffectSpawnSystem, MapLevels, RewardsSystem, SdkSettingsSystem, UIs/RoofTransparentSystem, UIs/SaveLoad)


Что такое SDK

SDK — третий слой архитектуры Vortex. Если Core определяет «как устроено приложение», а Unity адаптирует это к движку — то SDK отвечает на вопрос «что такое игра».

Здесь появляются понятия, которых нет ни в Core, ни в Unity-слое: игровая сессия, победа и поражение, квесты, миниигры. Это не абстракции — это конкретная доменная логика, общая для семейства проектов.

SDK опирается на оба нижних слоя. Он использует Singleton и ComplexModel из Core, Timer и MonoBehaviourSingleton из Unity. Но ни Core, ни Unity ничего не знают о SDK — зависимость строго однонаправленная.


Зачем отдельный слой

Можно было бы реализовать игровую сессию прямо в проекте. Но тогда каждый новый проект начинался бы с копирования того же GameController, тех же состояний, той же логики паузы при потере фокуса. SDK устраняет это дублирование.

При этом SDK не привязывает к конкретной игре. GameController управляет состояниями, но не знает, что такое «уровень» или «персонаж». QuestController запускает квесты, но логика каждого квеста определяется в проекте. MiniGamesSystem предоставляет жизненный цикл миниигры, но не диктует, как она выглядит.

SDK — это контракт: «в наших проектах игра устроена вот так». Всё уникальное для конкретного продукта живёт выше, в слое AppLocale.


Архитектурная роль

GameController как центральная шина

GameController — сердце SDK. Это статический контроллер-синглтон, который владеет GameModel — составной моделью всех игровых данных.

Любой пакет может зарегистрировать свои данные в GameModel через интерфейс-маркер IGameData. Квесты хранят там QuestModels, миниигры — MiniGamesStatisticsData. Доступ — через GameController.Get<T>(). Это расширение паттерна Database-шины на уровень игровой сессии.

Состояния как язык

Шесть состояний GameStatesOff, Play, Win, Fail, Paused, Loading — пронизывают весь SDK. Условия показа UI (GameStateCondition), переключатели состояний (GameStateHandler), миниигры (зеркальный MiniGameStates) — всё привязано к этому перечислению.

Состояние меняется только через контроллер. UI наблюдает, но не решает.

Расширяемость через partial

GameController и QuestController — partial-классы. Пакеты расширяют их, не модифицируя основной файл. QuestControllerExtEditor добавляет editor-логику, QuestControllerExtIndex — запросы к индексу. Тот же принцип, что и SettingsModel в Core.


Состав

Пакет Assembly Назначение
Core ru.vortex.sdk.game.core Игровая сессия: состояния, пауза, сериализация, реактивная модель данных
Quests ru.vortex.sdk.game.quests Квестовая система: условия, асинхронное выполнение логик, автозапуск
MiniGamesSystem ru.vortex.sdk.minigames + конкретные игры Фреймворк миниигр: Hub → Controller → Data → View
AudioLocalizationSystem ru.vortex.sdk.localization.audio Локализованная озвучка реплик: привязка voice к Sound по языку
CharacterViewSystem ru.vortex.sdk.playablecharacter Играбельный персонаж: шина, контроллеры, view, сохранение/загрузка
EffectSpawnSystem ru.vortex.sdk.effectspawn Спавн визуальных эффектов из каталога по ключу через пул
MapLevels ru.vortex.sdk.maplevels Стриминговые уровни на карте: переключение, загрузка/выгрузка
RewardsSystem ru.vortex.sdk.game.rewards Система наград
SdkSettingsSystem sdk.settings.system Конфиг активации SDK-пакетов через define-символы
UIs/RoofTransparentSystem ru.vortex.sdk.ui.rooftransparent Прозрачность крыш при заслонении персонажа
UIs/SaveLoad ru.vortex.sdk.game.uis.saveload UI-обёртка сохранения/загрузки

Границы слоя

SDK определяет:

  • Что такое игровая сессия и как она управляется
  • Жизненный цикл квестов — от условий старта до завершения
  • Жизненный цикл миниигры — от конфигурации до статистики
  • Контракт расширения через IGameData и partial-классы

SDK не определяет:

  • Конкретные правила и механики проекта
  • Содержание квестов и их логику
  • Визуальное оформление и UI
  • Работу с ресурсами и сценами (это Unity-слой)