Skip to content
yurii.levchenko edited this page Mar 17, 2026 · 1 revision

Services

Сервисы — основные функциональные модули движка. Каждый сервис отвечает за определённую область и управляется через ServiceProviderInterface.


Сервисный паттерн

class ServiceInterface : public Factorable, public Lifecycleable
{
    virtual const Char * getServiceId() const = 0;
    virtual bool availableService() = 0;
    virtual bool initializeService( ServiceProviderInterface * _serviceProvider ) = 0;
    virtual void finalizeService() = 0;
    virtual bool runService() = 0;
    virtual void stopService() = 0;
};

Жизненный цикл: availableinitializerunstopfinalize

Макросы:

Макрос Описание
SERVICE_DECLARE(ID) Объявить сервис со статическим ID
SERVICE_FACTORY(Name, Impl) Определить фабрику сервиса
SERVICE_CREATE(Name, Doc) Создать экземпляр сервиса
SERVICE_GET(Type) Получить сервис
SERVICE_IS_AVAILABLE(Type) Проверить доступность сервиса
SERVICE_WAIT(Type, Lambda) Дождаться готовности сервиса
SERVICE_DEPENDENCY(Type, Dep) Объявить зависимость сервиса

Каталог сервисов

Ресурсы и контент

Сервис Описание
ResourceService Управление игровыми ресурсами (текстуры, звуки, данные)
PackageService Управление пакетами ресурсов
LoaderService Загрузка ресурсов из файлов
PrefetcherService Предзагрузка ресурсов
CodecService Кодирование / декодирование данных
ConverterService Конвертация форматов ресурсов
ArchiveService Работа с архивами (ZIP, LZ4)
FileService Абстракция файловой системы

Рендеринг

Сервис Описание
RenderService Основной сервис рендеринга
RenderMaterialService Управление материалами
RenderTextureService Управление текстурами

Звук

Сервис Описание
SoundService Проигрывание звуков и музыки
AmplifierService Управление громкостью и амплификацией звука

Ввод

Сервис Описание
InputService Обработка пользовательского ввода (клавиатура, мышь, тачскрин)
PickerService Определение объектов под курсором / тач-позицией

Игровая логика

Сервис Описание
GameService Управление состоянием игры
SceneService Управление сценами
UpdateService Система обновления (тиков)
PrototypeService Реестр прототипов объектов
FactoryService Управление фабриками объектов
EnumeratorService Генерация уникальных идентификаторов
FollowService Система слежения объектов

Учётные записи и данные

Сервис Описание
AccountService Управление учётными записями пользователей
UserdataService Хранение пользовательских данных
SecureService Безопасное хранение данных

Текст и шрифты

Сервис Описание
TextService Управление текстовыми ресурсами и локализацией
FontService Управление шрифтами
StringizeService Интернирование строк (ConstString)

Время и анимация

Сервис Описание
ChronometerService Измерение интервалов времени
TimerService Таймеры и отложенные вызовы
TimepipeService Конвейер обработки временных событий
TimelineService Управление таймлайнами
EasingService Функции плавности (easing) для анимаций

Сеть

Сервис Описание
HttpService HTTP-запросы

Конфигурация

Сервис Описание
ConfigService Чтение конфигурационных файлов
SettingsService Управление настройками
OptionsService Параметры командной строки

Аналитика и мониторинг

Сервис Описание
AnalyticsService Система сбора аналитики
StatisticService Статистика и метрики движка
WatchdogService Мониторинг состояния системы

Скрипты и модули

Сервис Описание
PluginService Управление загрузкой и жизненным циклом плагинов
ModuleService Управление модулями
ScriptProviderService Предоставление скриптового окружения

Системные

Сервис Описание
LoggerService Система логирования
ThreadService Управление потоками
NotificationService Глобальная система уведомлений
LifecycleService Управление жизненным циклом
ComponentService Компонентная система
DataService Сервис работы с данными
DocumentService Документирование и диагностика
VocabularyService Реестр именованных объектов
ProviderService Сервис провайдеров

Зависимости между сервисами

Сервисы объявляют свои зависимости через SERVICE_DEPENDENCY. ServiceProvider автоматически разрешает граф зависимостей и инициализирует сервисы в правильном порядке.

Пример типичных зависимостей:

RenderService → FileService, ConfigService
SoundService → FileService, CodecService
ResourceService → FileService, CodecService, ArchiveService
SceneService → ResourceService, RenderService
GameService → SceneService, AccountService

См. также

  • Architecture — обзор архитектуры
  • Systems — платформозависимые системы
  • Plugins — расширения движка

Clone this wiki locally