{"id":48512910,"url":"https://github.com/ddv1982/space-explorer","last_synced_at":"2026-04-27T00:01:25.135Z","repository":{"id":349452559,"uuid":"1202185880","full_name":"ddv1982/space-explorer","owner":"ddv1982","description":"A retro arcade space exploration shooter","archived":false,"fork":false,"pushed_at":"2026-04-06T02:57:08.000Z","size":106,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T03:18:06.543Z","etag":null,"topics":["retro-shooter","space-explorer"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/ddv1982.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-04-05T17:58:14.000Z","updated_at":"2026-04-06T02:57:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ddv1982/space-explorer","commit_stats":null,"previous_names":["ddv1982/space-explorer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ddv1982/space-explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddv1982%2Fspace-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddv1982%2Fspace-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddv1982%2Fspace-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddv1982%2Fspace-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddv1982","download_url":"https://codeload.github.com/ddv1982/space-explorer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddv1982%2Fspace-explorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31522574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["retro-shooter","space-explorer"],"created_at":"2026-04-07T18:00:29.826Z","updated_at":"2026-04-22T01:02:50.852Z","avatar_url":"https://github.com/ddv1982.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Space Explorer\n\nA retro arcade space shooter built with [Phaser 4 RC](https://phaser.io), TypeScript, and Vite. Pilot a responsive ship through a **10-level campaign**, survive escalating hazards, defeat themed bosses, collect power-ups, and upgrade your ship between missions.\n\nPlayable here:\n[Space Explorer](https://space-explorer.net)\n\n![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue)\n![Phaser](https://img.shields.io/badge/Phaser-4.0.0--rc.7-green)\n![Vite](https://img.shields.io/badge/Vite-8.0-purple)\n\n## Quick start\n\n```bash\nbun install\nbun run dev\n```\n\nOpen `http://localhost:5173` in your browser.\n\n## Controls\n\n| Input | Action |\n|-------|--------|\n| Arrow keys / WASD | Move ship |\n| Space / Click | Fire weapons |\n\n## Game overview\n\n### Core loop\n\n```text\nMenu → Game → Planet Intermission → Game → ... → Victory\n```\n\n- Fight through enemy waves, hazards, and bosses\n- Lose HP on hits, but continue the run while you still have remaining lives\n- Respawn after death if lives remain\n- Spend score as credits between levels to upgrade your ship\n- Reach the end of the campaign to trigger the Victory flow\n\n### Campaign roster\n\n| Level | Name | Highlights | Boss |\n|------:|------|------------|------|\n| 1 | Solar Slipstream | high-contrast onboarding, rhythmic telegraphs | No |\n| 2 | Prism Reef | visibility pressure + ambush timing | No |\n| 3 | Magnetar Foundry | storm-and-gravity pressure, first wall | Arc Warden Khepri |\n| 4 | Fracture Convoy | frontal lane control and convoy choke points | Marshal Bront |\n| 5 | Cinder Vault | attrition gauntlet through ember hazards | Pyre Leviathan |\n| 6 | Graveyard Lattice | collapsing salvage corridors | Reliquary Crown |\n| 7 | Mirage Archive | deceptive calm, memory-fog ambushes | Archivist Shade |\n| 8 | Halo Cartography | fast orbital pattern prediction | Orbital Cantor |\n| 9 | Glass Rift Narrows | claustrophobic canyon precision flying | Rift Basilisk |\n| 10 | Eventide Singularity | full-system anomaly finale | Axiom Null |\n\n### Enemy roster\n\n- **Scout** — fast, low-HP contact threat\n- **Fighter** — mobile ranged pressure\n- **Bomber** — slower, heavier target that drops bombs\n- **Swarm** — fragile group attackers\n- **Gunship** — heavier enemy with spread fire\n- **Bosses** — named encounters with distinct styles such as barrage, pursuit, carrier, bulwark, and maelstrom patterns\n\n### Gameplay systems\n\n- **Scripted level sections** — pacing, hazard cadence, and encounter focus can shift inside a level\n- **Hazard scripting** — asteroid bursts, ring crossfire, nebula ambushes, gravity wells, and canyon-wall rock corridors\n- **Adaptive section pacing** — tension-arc shaping and fairness throttles smooth extreme overlap spikes\n- **Adaptive boss scaling** — boss durability scales with player upgrade investment and campaign progression\n- **Per-level procedural music** — each level and boss has its own Web Audio-driven music identity\n- **Power-up drops** — temporary pickups such as health, shield, and rapid-fire boosts\n- **Lives + respawn flow** — the run continues after death if lives remain\n- **Upgrade progression** — intermission upgrades unlock over time and obey progression caps\n\n### Upgrades\n\nBought during the planet intermission screen using score as currency:\n\n- **Hull Armor** — raises max HP\n- **Weapons** — increases damage\n- **Fire Rate** — improves firing speed\n- **Shield** — increases hit absorption\n\nSome upgrades unlock later in the campaign and use progression caps so the run scales in a controlled way.\n\n## Tech stack\n\n- **Phaser 4 RC (4.0.0-rc.7)** — game engine\n- **TypeScript** — strict typing across gameplay and config\n- **Vite 8** — dev server and production build\n- **Bun** — package manager / script runner\n\n## Project structure\n\nThe internal architecture rules live in [`docs/architecture-guidelines.md`](docs/architecture-guidelines.md).\n\n```text\nsrc/\n├── config/\n│   ├── LevelsConfig.ts          # public level-config entrypoint\n│   ├── UpgradesConfig.ts        # upgrade definitions and progression rules\n│   ├── playerConfig.ts          # player stat scaling\n│   └── levels/\n│       ├── types.ts            # level config types\n│       ├── selectors.ts        # getLevelConfig / campaign selectors\n│       ├── registry.ts         # ordered campaign registry\n│       ├── musicHelpers.ts     # procedural music config helpers\n│       └── definitions/        # one file per level\n├── entities/\n│   ├── Player.ts\n│   ├── PowerUp.ts\n│   ├── Asteroid.ts\n│   ├── BomberBomb.ts\n│   ├── Bullet.ts\n│   ├── EnemyBullet.ts\n│   └── enemies/\n├── scenes/\n│   ├── BootScene.ts\n│   ├── PreloadScene.ts\n│   ├── MenuScene.ts\n│   ├── GameScene.ts\n│   ├── PlanetIntermissionScene.ts\n│   ├── GameOverScene.ts\n│   └── VictoryScene.ts\n├── systems/\n│   ├── AudioManager.ts         # procedural audio and music\n│   ├── CollisionManager.ts\n│   ├── EnemyPool.ts\n│   ├── HUD.ts\n│   ├── LevelManager.ts\n│   ├── PlayerState.ts\n│   ├── WaveManager.ts          # config-driven enemy + hazard spawning\n│   └── ...\n└── utils/\n    ├── constants.ts\n    └── layout.ts\n```\n\n## Design notes\n\n- **Config-driven campaign** — levels, music, hazard sections, and bosses are authored through config\n- **Procedural presentation** — visuals and audio avoid external asset-heavy pipelines where possible\n- **Object pooling** — bullets, enemies, bombs, asteroids, and bullets are pooled for performance\n- **Arcade readability first** — later levels add complexity through authored pacing and hazards, not only stat inflation\n\n## Development\n\n```bash\nbun run dev      # start local dev server\nbun run build    # type-check and production build\nbun run preview  # preview production build\nbun run lint     # eslint\nbun run knip     # unused-code analysis\nbun run levels:validate # config validation for level authoring\n```\n\n## Docs\n\n- [`docs/architecture-guidelines.md`](docs/architecture-guidelines.md) — scene/system boundaries and coding rules\n- [`docs/procedural-music-system.md`](docs/procedural-music-system.md) — procedural music architecture, authoring contract, and deterministic QA workflow\n- [`docs/campaign-expansion-plan.md`](docs/campaign-expansion-plan.md) — historical expansion plan and design-reference notes\n\n## Release notes\n\n- [Latest](docs/releases/README.md)\n\n## Acknowledgements\n\nThis project was largely autonomously built using [Flow for OpenCode](https://github.com/ddv1982/flow-opencode), a planning-and-execution workflow plugin that turns goals into tracked, reviewer-gated feature sessions.\n\n## License\n\nMIT License. See [`LICENSE`](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddv1982%2Fspace-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddv1982%2Fspace-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddv1982%2Fspace-explorer/lists"}