{"id":47593975,"url":"https://github.com/trivox-io/mini-arcade","last_synced_at":"2026-04-01T17:51:01.130Z","repository":{"id":342087583,"uuid":"1156238013","full_name":"trivox-io/mini-arcade","owner":"trivox-io","description":"Python-first mini game engine for building small arcade games and reusable gameplay systems.","archived":false,"fork":false,"pushed_at":"2026-03-31T12:35:08.000Z","size":1052,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T13:31:39.414Z","etag":null,"topics":["cpp","game-development","game-framework","python"],"latest_commit_sha":null,"homepage":"http://mini-arcade.trivox.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trivox-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-12T12:25:12.000Z","updated_at":"2026-03-31T12:19:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/trivox-io/mini-arcade","commit_stats":null,"previous_names":["trivox-io/mini-arcade"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/trivox-io/mini-arcade","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trivox-io%2Fmini-arcade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trivox-io%2Fmini-arcade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trivox-io%2Fmini-arcade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trivox-io%2Fmini-arcade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trivox-io","download_url":"https://codeload.github.com/trivox-io/mini-arcade/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trivox-io%2Fmini-arcade/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","game-development","game-framework","python"],"created_at":"2026-04-01T17:51:00.427Z","updated_at":"2026-04-01T17:51:01.109Z","avatar_url":"https://github.com/trivox-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mini Arcade\n\n\u003e A Python-first mini game engine and toolkit for building small arcade games.\n\n[![CI](https://github.com/trivox-io/mini-arcade/actions/workflows/ci.yml/badge.svg)](https://github.com/trivox-io/mini-arcade/actions/workflows/ci.yml)\n[![License](https://img.shields.io/github/license/trivox-io/mini-arcade)](./LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/mini-arcade)](https://pypi.org/project/mini-arcade/)\n[![Docs](https://img.shields.io/badge/docs-in%20repo-blue)](./docs)\n\nMini Arcade is a monorepo with a simulation-first engine core, swappable backends\n(native SDL2 and pygame), runnable examples, and reference games.\n\n## Status\n\nCurrent status: alpha.\n\nThe project is actively developed and APIs may still evolve.\n\n## Quick Start\n\nInstall:\n\n```bash\npip install mini-arcade\n```\n\nRun from an installed environment:\n\n```bash\nmini-arcade run --example config/engine_config_basics\nmini-arcade run --game deja-bounce\n```\n\nEquivalent module form:\n\n```bash\npython -m mini_arcade.main run --example config/engine_config_basics\npython -m mini_arcade.main run --game deja-bounce\n```\n\n## Local Development\n\nFrom the monorepo root:\n\n```powershell\n./scripts/dev_install.ps1\npython .\\manage.py run --example config/engine_config_basics\npython .\\manage.py run --game space-invaders\n```\n\nNotes:\n\n- `manage.py` is the preferred local entrypoint for games and examples.\n- The runner prepends local `packages/*/src` paths so workspace code wins over\n  installed wheel metadata.\n- When `backend.provider: native` is selected, Mini Arcade now honors that\n  choice strictly. It does not silently fall back to `pygame`.\n- The native backend uses Python source from the repo plus a compiled `_native`\n  extension from the active environment. If Python and C++ changes drift out of\n  sync, rebuild with:\n\n```powershell\npython -m pip install -e .\\packages\\mini-arcade-native-backend\n```\n\n## Core Features\n\n- Scene registry and scene stack with overlays\n- System pipeline with ordered phases\n- Command queue for scene/game actions\n- Runtime services (window, input, render, audio, capture, files)\n- Render pipeline passes (begin, world, lighting, ui, postfx, end)\n- Built-in capture hooks (screenshot, replay, video frame capture)\n- Swappable backends:\n  - `mini-arcade-pygame-backend`\n  - `mini-arcade-native-backend`\n\n## CLI Usage\n\nRun a game:\n\n```bash\nmini-arcade run --game asteroids\n```\n\nRun an example:\n\n```bash\nmini-arcade run --example config/backend_swap\n```\n\nRun all examples as a tour:\n\n```bash\nmini-arcade run tour\n```\n\nForward args to the example runner:\n\n```bash\nmini-arcade run --example config/backend_swap --pass-through --backend native --fps 72\n```\n\n## API Usage (Core)\n\n```python\nfrom mini_arcade_core import EngineConfig, SceneConfig, run_game\nfrom mini_arcade_pygame_backend import PygameBackend, PygameBackendSettings\n\nbackend_settings = PygameBackendSettings.from_dict(\n    {\n        \"window\": {\"width\": 960, \"height\": 540, \"title\": \"My Game\"},\n        \"renderer\": {\"background_color\": (20, 20, 20)},\n    }\n)\nbackend = PygameBackend(settings=backend_settings)\n\nengine_config = EngineConfig(\n    fps=60,\n    virtual_resolution=(960, 540),\n    enable_profiler=False,\n)\nscene_config = SceneConfig(\n    initial_scene=\"menu\",\n    discover_packages=[\"my_game.scenes\", \"mini_arcade_core.scenes\"],\n)\n\nrun_game(\n    engine_config=engine_config,\n    scene_config=scene_config,\n    backend=backend,\n)\n```\n\n## Create Your Own Game\n\nUse the detailed guide:\n\n- [docs/source/tutorials/create_game.md](./docs/source/tutorials/create_game.md)\n\nThat guide includes:\n\n- required folder and metadata layout\n- complete `settings.yml` template\n- minimal runnable scene and commands\n- full bootstrap (`manage.py` + `app.py`) pattern used by current games\n\n## Monorepo Layout\n\n```text\nmini-arcade/\n|- packages/\n|  |- mini-arcade/\n|  |- mini-arcade-core/\n|  |- mini-arcade-pygame-backend/\n|  `- mini-arcade-native-backend/\n|- games/\n|- examples/\n|- docs/\n`- scripts/\n```\n\n## Documentation\n\n- [Quickstart](./docs/source/quickstart.md)\n- [Architecture](./docs/source/concepts/architecture.md)\n- [Capabilities](./docs/source/concepts/capabilities.md)\n- [Backends](./docs/source/concepts/backends.md)\n- [Tutorials](./docs/source/tutorials/index.md)\n- [Games](./docs/source/games/index.md)\n- [Contributing](./docs/source/contributing/index.md)\n\n## Contributing\n\nSee:\n\n- [docs/source/contributing/dev_setup.md](./docs/source/contributing/dev_setup.md)\n- [docs/source/contributing/release_process.md](./docs/source/contributing/release_process.md)\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrivox-io%2Fmini-arcade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrivox-io%2Fmini-arcade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrivox-io%2Fmini-arcade/lists"}