GameConfig04 / 12

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

В одном месте свяжем системы движка, ресурсы, сцены и DI.

GameConfig — описание запуска игры. Он передаётся в Engine.run и задаёт, какие системы и сцены подготовить. В Block Puzzle это статическое поле BlockPuzzleGameConfig.config.

Сокращённая структура game.config.ts:

static readonly config: GameConfig = {
  system: {
    canvasBackground: '#1d57c8',
    screen: {
      land: { width: 960, height: 540 },
      port: { width: 540, height: 960 },
      dpr: 'auto',
      maxDpr: 2,
    },
    boot: { configs: { engineStartBundles: ['configs'] } },
  },
  assets: { bundles: BlockPuzzleAssetsManifest.bundles, preload: ['configs'] },
  scenes: {
    initial: 'boot',
    map: { boot: BootSceneDefinition.config, game: GameSceneDefinition.config },
  },
  di: new BlockPuzzleDiDefinitionRoot(),
};
systemЭкран, звук, политика старта и сохранений
assetsКакие ресурсы известны и что загрузить до первой сцены
scenesНачальный ключ и описания сцен
diКакими классами и фабриками удовлетворять зависимости
Конфигурация связывает части проекта; правила размещения фигур в неё не входят.

Размеры land и port задают виртуальные профили экрана. Они не фиксируют размер браузера: ScreenManager рассчитывает масштаб для текущего окна. Ограничение maxDpr влияет на плотность рендера, а не на размеры клеток в правилах игры.

Дополнительное поле layouts.textStylesConfigId подключает каталог стилей текста. data хранит произвольные данные приложения; при чтении неизвестной структуры её всё равно нужно проверить схемой.

Ключ scenes.initial должен существовать в scenes.map. Для каждого ключа требуется соответствующее определение SceneDiDefinition. Ошибка в этих связях обнаруживается при старте, а не после первого хода.

Источники ↗

Block Puzzle · game.config.ts↗Связи конфигурации в Block Puzzle.