-
-
Notifications
You must be signed in to change notification settings - Fork 9
Services
yurii.levchenko edited this page Mar 17, 2026
·
1 revision
Сервисы — основные функциональные модули движка. Каждый сервис отвечает за определённую область и управляется через 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;
};Жизненный цикл: available → initialize → run → stop → finalize
Макросы:
| Макрос | Описание |
|---|---|
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 — расширения движка