# 《星穹对撞》· Star Collide

> 微信小游戏 · 同屏双人对战 · 完整闭环交付：概念 → 设计 → 开发 → 资源 → 测试 → 部署指引
>
> **一句话玩法**：一台手机上下分屏，两人各操控一艘星舰把能量球拍向对方——先得 5 分者胜；没人陪？单人挑战 AI 三档。

---

## 玩法

竖屏、一机双人（也能单人打 AI）。在自己半场内**拖动**控制星舰，把能量球弹回对方半场；**长按**（0.3 秒）在自己半场释放**引力井**扭曲球路；接住金色**分裂道具**会裂出第二颗球，双球同场瞬间爆炸。每次命中球 +6% 加速，越打越快、压迫感拉满。先到 5 分获胜，回合纪录（最长连击）上好友排行榜。

## 快速开始

### 浏览器试玩（30 秒）

```bash
cd star-collide
python3 -m http.server 8000
# 浏览器打开 http://localhost:8000/web/
```

> 桌面浏览器可用鼠标模拟双人（多点触控走 Pointer Events）；手机浏览器两个手指各控半场。

### 微信开发者工具（小游戏本体）

1. 下载安装 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)（稳定版）。
2. 导入项目：目录选 `game/`；AppID 用实际号，或临时改 `"touristappid"` 免注册试玩（不能上传/取不到好友榜）。
3. 「预览」扫码真机试玩（真机多指触摸才是双人完全体）；「上传」可提交代码（正式 AppID + 小游戏类目）。

## 目录结构

```
star-collide/
├── docs/
│   ├── 01-concept.md          # 推荐报告：为什么新颖、为什么吸引人、传播/商业化/风险
│   ├── 02-gamedesign.md       # 权威设计文档：反弹物理/回合加速/引力井/道具/AI/UI/音效数值表
│   └── 03-deploy-qa.md        # 部署上线 + QA 验收清单（照着做即可发布）
├── game/                      # 微信小游戏工程（开发者工具导入此目录）
│   ├── game.js / game.json / project.config.json
│   ├── src/                   # CommonJS 源码，可单测
│   │   ├── world.js           #   纯逻辑：星舰/反弹/加速/计分/双球/引力井/AI（零渲染依赖）
│   │   ├── render.js / ui.js / main.js / fx.js / audio.js / platform.js / math.js
│   ├── open-data/index.js     # 开放数据域好友排行榜（按最长连击 maxrallies 排序）
│   └── assets/                # 程序化生成：icon.png、share.png、sfx/*.wav ×11
├── web/                       # 浏览器试玩版（adapter.js 模拟 wx + bundle.js）
└── scripts/
    ├── gen-audio.js           #   生成 11 个音效 WAV
    ├── gen-icons.js           #   生成 icon.png(144) + share.png(500×400)
    ├── build-web.js           #   打包 web 试玩版
    ├── test-logic.js          #   world 纯逻辑单测（18 项）
    └── smoke-test.js          #   mock wx+canvas 完整对局冒烟（菜单/对局/结算/暂停/单人AI）
```

## 构建与自测

```bash
# 在 star-collide/ 目录（需 Node.js ≥ 14）
node scripts/gen-audio.js      # 音效
node scripts/gen-icons.js      # 图标/分享图
node scripts/build-web.js      # 重新打包 web 试玩版
node scripts/test-logic.js     # 18 项逻辑单测（全绿退出码 0）
node scripts/smoke-test.js     # 完整对局冒烟
```

实测基准（本仓库当前代码）：

```
单测 PASS ×18（反弹角度/回合加速封顶/得分发球/双球分裂/引力井弹道与冷却/AI 三档/
             五局终局/同种子确定性/长局稳定…）
冒烟：固定种子完整一局到终局（结算 5:3）· 菜单/对局/结算/重开/暂停/单人AI/帮助/音效 全链路 OK
主包 420KB（远低于 4MB 上限）
```

## 备注

- 广告/内购 V1 未接（合规）：无版号不得商业化发布；规划中的"败方看广告追平 1 分"见 docs/03 §5。
- 同屏双人依赖真人同桌；AI 三档兜底，V1.4 规划异地联机（房间码）。
- 数值/机制权威来源：[docs/02-gamedesign.md](docs/02-gamedesign.md)；改动代码需同步标注。
