mini_arcade.modules.settings

Settings module for mini-arcade.

Example settings files can be found under examples/settings/ in the monorepo, and are loaded automatically when running examples using mini-arcade run –example <example_id>.

```python

print(“Loaded settings:”) shared = Settings(SettingsArgs(scope=”example”, required=False)) print(shared.as_dict()) engine_config_basics = Settings(

SettingsArgs(

scope=”example”, name=”config/engine_config_basics”, required=False,

)

) print(engine_config_basics.as_dict()) backend_swap = Settings(

SettingsArgs(

scope=”example”, name=”config/backend_swap”, required=False,

)

) print(backend_swap.as_dict()) s_asteroids = Settings(

SettingsArgs(scope=”game”, name=”asteroids”, required=False)

) print(s_asteroids.as_dict()) s_space = Settings(

SettingsArgs(scope=”game”, name=”space-invaders”, required=False)

) print(s_space.as_dict()) s_deja = Settings(

SettingsArgs(scope=”game”, name=”deja-bounce”, required=False)

) print(s_deja.as_dict())

```

Attributes

Classes

SettingsArgs

Arguments for loading settings.

Settings

Settings reader with optional profile scoping.

Package Contents

class mini_arcade.modules.settings.SettingsArgs[source]

Arguments for loading settings.

config_path: str | pathlib.Path | None = None
scope: str | None = None
name: str | None = None
required: bool = True
force_reload: bool = False
class mini_arcade.modules.settings.Settings(args: SettingsArgs | None = None, **kwargs: Any)[source]

Settings reader with optional profile scoping.

Supported sources: - explicit config_path - MINI_ARCADE_CONFIG_PATH env var - monorepo game-local settings under games/<game_id>/settings/ - monorepo example settings under examples/settings/ - repo-level defaults under settings/settings.yml|yaml

Profile convention under monorepo root: - games: games/<game_id>/settings/settings.yml|yaml - examples: examples/settings/<example_id>.yml|yaml - shared examples: examples/settings/settings.yml|yaml - default: settings/settings.yml|yaml

classmethod for_game(game_id: str, *, required: bool = False, force_reload: bool = False) Settings[source]

Load settings profile for one game.

classmethod for_example(example_id: str | None = None, *, required: bool = False, force_reload: bool = False) Settings[source]

Load settings profile for one example.

If example_id is None, loads shared example settings profile.

property config_path: pathlib.Path | None

Path to currently loaded settings file.

get(key_: str, default: Any = None) Any[source]

Get nested key using dot notation.

section(key_: str) dict[str, Any][source]

Return one section as dict.

project_root() pathlib.Path[source]

Resolve project root for this settings profile.

Priority: 1) project.root / paths.project_root key in yaml 2) inferred from scope/name:

  • game -> <repo>/games/<game_id>

  • example -> <repo>/examples/catalog/<example_id>

  1. repo root

  2. cwd

assets_root() pathlib.Path[source]

Resolve assets root for this settings profile.

resolve_path(path_value: str | pathlib.Path, *, default_to_cwd: bool = False) pathlib.Path[source]

Resolve one path using token/env expansion and project-root defaults.

Supported placeholders: - ${repo_root} - ${project_root} - ${assets_root} - ${settings_dir} - ${cwd}

resolve_asset_path(path_value: str | pathlib.Path) pathlib.Path[source]

Resolve one asset path relative to assets root when not absolute.

engine_config_defaults() dict[str, Any][source]

Engine settings defaults aligned to mini_arcade_core.engine.game_config.EngineConfig.

scene_defaults() dict[str, Any][source]

Scene bootstrap defaults aligned to mini_arcade_core.engine.game_config.SceneConfig.

gameplay_defaults() dict[str, Any][source]

Gameplay settings defaults consumed by runtime gameplay settings.

backend_defaults(*, resolve_paths: bool = False) dict[str, Any][source]

Backend settings defaults for backend-specific settings builders.

as_dict() dict[str, Any][source]

Return full settings dictionary.

mini_arcade.modules.settings.settings