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-шины на уровень игровой сессии.
Состояния как язык
Шесть состояний GameStates — Off, 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-слой)