feat: electron packaging, build scripts, gitignore and docs update

This commit is contained in:
2026-06-09 23:53:32 +08:00
parent 48fb89449a
commit 25d73f5443
7 changed files with 260 additions and 94 deletions

View File

@@ -925,6 +925,84 @@ QTE 成功 / 到达隐藏结局 / 通关等"事件型"成就,通过在对应 e
- [x] `src/App.vue` — 使用 `MainMenu` 替代散装 `start-overlay` 按钮 + `game-end-overlay`;移除 60 行旧 CSS
- [x] 验证TypeScript + Vite build 通过
### P18 视频加载失败恢复(待实现)
目标:视频加载失败时显示错误画面 + 重试/跳过按钮,不再 `play().catch(() => {})` 静默黑屏。
**改动点:**
- [ ] `engine/core/VideoManager.ts``play`/`switchTo` 增加错误回调(`onerror` 事件 + `play()` reject
超时检测5 秒未 `canplay` 视为失败);重试逻辑(最多 3 次,指数退避 1s/2s/4s
- [ ] `src/components/VideoErrorOverlay.vue` — 错误画面:警告图标 + "视频加载失败" + [重试] [跳过此场景] 按钮
- [ ] `src/stores/gameStore.ts``videoError` 状态(`{ sceneId: string, message: string, retryCount: number }`
- [ ] `src/App.vue` — 整合 VideoErrorOverlay跳过逻辑重试当前场景或调用 `engine.skipCurrentScene()` 强制跳过
- [ ] 验证:断网播放 → 错误画面 → 重试恢复 → 跳过进入下一场景
### P19 制作者工具链 — HTML / macOS / Windows 打包 ✅ 已完成 2026-06-09
目标:制作者 clone `moviegame` 源码后可直接开发。`npm run dev` 已有 Vite HMR 实时预览,
提供三行命令打包为 Web zip、macOS 可执行应用、Windows 可执行应用。
**命令设计:**
```bash
npm run dev # Vite 实时预览(已有)
npm run pack:html # 打包 Web 版 → release/mygame.zip → 上传 itch.io (HTML)
npm run pack:mac # 打包 macOS → release/MyGame-darwin-arm64/ 可执行文件夹
npm run pack:win # 打包 Windows → release/MyGame-win32-x64/ 可执行文件夹
```
**实施方案:**
| 工具 | 技术 | 选择原因 |
|------|------|---------|
| Web 打包 | `vite build` + `zip dist/` | Vite 标准做法,产物直接上传 itch.io |
| 桌面打包 | Electron + **`@electron/packager`** | 比 `electron-builder` 简单:一行 CLI零配置不需安装向导。产出的可执行文件夹本地可直接双击运行也可以直接分发 |
**Electron 包装结构:**
```
electron/
├── main.js # Electron 主进程,全屏 + 加载 dist/index.html
└── package.json # electron + @electron/packager 依赖
```
核心逻辑:
```js
// electron/main.js
const { app, BrowserWindow } = require('electron')
app.whenReady().then(() => {
new BrowserWindow({
fullscreen: true,
autoHideMenuBar: true,
webPreferences: { nodeIntegration: false }
}).loadFile('dist/index.html')
})
app.on('window-all-closed', () => app.quit())
```
```bash
# pack:mac
npx @electron/packager . MyGame --platform=mas --arch=arm64,x64 --out=release
# pack:win
npx @electron/packager . MyGame --platform=win32 --arch=x64 --out=release
```
**实现清单:**
- [x] `scripts/pack-html.cjs``vite build` + JSON 验证 + 复制 public 资源 + zip 打包
- [x] `electron/main.js` — Electron 主进程,全屏窗口 + 加载 dist
- [x] `electron/package.json``electron` + `@electron/packager` 依赖 + pack scripts
- [x] `package.json` — 新增 `pack:html`/`pack:mac`/`pack:win` scripts
- [x] `README.md` — 面向制作者重写入门指南
- [x] `public/videos/` — 只保留 1 个示例视频
- [x] 删除 `moviegame-starter` 目录
- [x] 验证:`pack:html` 生成 release/mygame.zip
## 依赖清单
```json