# 打包发布指南 ## 准备工作 ```bash npm install npm run build # 先构建,自动校验 JSON 合法性 ``` 构建产物在 `dist/`,是纯静态文件,可直接部署到任意 HTTP 服务器。 ## Web 版发布 ### 一键打包 ```bash npm run pack:html ``` 生成 `release/mygame.zip`,上传到任意平台: | 平台 | 上传方式 | |------|---------| | **itch.io** | 直接上传 zip | | **Netlify** | 拖拽 `dist/` 文件夹到 Drop | | **GitHub Pages** | 推送 `dist/` 到 `gh-pages` 分支 | | **自有服务器** | 上传 `dist/` 到任意静态文件服务(Nginx, Apache, Caddy) | ### 域名/CDN 如果把素材放到 CDN,只需改一行: ```json { "assetBase": "https://cdn.example.com/mygame/" } ``` 所有 `videoUrl: "scene_1/video.mp4"` 自动拼为 `https://cdn.example.com/mygame/scene_1/video.mp4`。 ## 桌面版发布 ### macOS ```bash npm run pack:mac ``` 生成 `release/MyGame-darwin-arm64/`。将整个文件夹打包为 `.dmg` 或直接分发文件夹。用户双击 `MyGame.app` 即可运行。 ### Windows ```bash npm run pack:win ``` 生成 `release/MyGame-win32-x64/`。运行 `MyGame.exe`。 ## 桌面版命令行参数 打包后的应用支持 `--scene` 参数指定剧情文件: ```bash # macOS ./MyGame.app/Contents/MacOS/MyGame --scene=./scenes/my_story.json # Windows MyGame.exe --scene=./scenes/my_story.json ``` ## 素材管理 ### 本地开发 所有素材放在 `public/` 下,Vite 自动 serve。 ### 生产发布 - 视频/音频通常较大(几百 MB),建议单独分发或放 CDN - `.gitignore` 中已排除 `public/videos/`,视频不提交到 Git - 打包脚本自动复制 `public/` 到 `dist/`,无需手动处理 ### 目录规范 ``` public/demo/ ← 示例数据 scenes/demo.json locales/{zh,en,ja}.json intro/video.mp4 shared/bgm.mp3 public/your_story/ ← 你的游戏(复制此结构) scenes/main.json locales/{zh,en}.json scene_1/video.mp4 ``` ## 常见问题 ### Q: 构建时提示 "JSON 不合法" 检查 JSON 文件是否有多余逗号(最后一项不能有逗号)。 ### Q: 打包后视频不加载 检查 `assetBase` 配置,确保路径拼接正确。开发模式 `assetBase: ""`,发布到 CDN 时改为完整 URL。 ### Q: 打包体积太大 - 视频是最大的文件,建议单独制作低码率预览版(2Mbps)用于小体积分发 - 音频用 MP3 128kbps 即可 - 缩略图 JPG 质量 60% 足够 ### Q: 如何制作安装包(.dmg / .exe 安装程序) 参考 `docs/electron/packaging-guide.md`。