okdkebm/-

游戏开发

★ 1Forks 0JavaScriptGitHub ↗Compare

README

星语剧场 · 新海诚剧情互动剧场

在新海诚的电影世界里,选择角色、走完主线剧情、解锁更多互动——最终把"你自己的故事"也变成可玩的剧本。

✨ 功能一览

模块 说明
🔐 登录 / 注册 账号密码(scrypt 哈希)+ 本地 SQLite 数据库(data/shinkai.db,纯本地、零云端)
🎬 5 部电影主线 《你的名字》《天气之子》《铃芽之旅》《言叶之庭》《秒速五厘米》共 25 关
🎭 角色选择 每部 2-3 个可选角色,每个角色展开不同互动细节
🌙 月球之旅番外 通关任一部主线解锁"与主人公去月球"的番外场景
💬 文字 + 语音 关卡旁白与台词以打字机呈现;Web Speech API 中文 TTS 自动朗读
🖼️ 合影卡 完成主线即获得 PNG 可下载的「与主人公合影纪念卡」
🏆 奖励机制 每章 +10、完成电影 +100、特殊称号、解锁条件等 18 类成就
🖌️ DIY 角色 通关全部 5 部后解锁 — 创建专属角色、可克隆通关角色
📷 生活剧本 通关全部后解锁 — 上传照片 + 写日记 → 自动生成"你的生活剧本"
🧵 Vibe Coding 通关全部后解锁 — 用自然语言 prompt 生成剧情(DeepSeek 接入)或手动搭建
📲 安装到手机/电脑 PWA(Progressive Web App)原生支持在手机/桌面浏览器中"添加到主屏幕"独立运行

🚀 启动

# Node 22.22.2 +(系统已自带,无需安装任何依赖)
node server/index.js

启动后控制台会输出:

==================================================
  星语剧场 · 新海诚剧情互动剧场 已启动
  本机访问:   http://localhost:3000
  分享给朋友: http://192.168.28.183:3000  (同一Wi-Fi内手机/电脑直接打开)
  AI 接入:    未配置 DeepSeek Key(可用内置剧情,配置后解锁 AI 创作)
  数据库:     C:\Users\lenovo\WorkBuddy\2026-08-11-18-08-57\shinkai-game\data\shinkai.db
  让远方的朋友也能玩: 见 README.md「一起玩」章节
==================================================

🌍 想让所有人一起玩? 完整教程见同目录下 一起玩指南.md:局域网直连、Tailscale / cpolar 内网穿透、云服务器部署三种方案,含防火墙放行与常见问题。

🧠 配置 DeepSeek-V4-flash(可选)

把 config.json 的 deepseekApiKey 填入你的 API Key 即可启用 AI 创作。模型名默认为 deepseek-v4-flash,若该模型名不可用会自动降级到 deepseek-chat。

{
  "port": 3000,
  "dev": true,
  "deepseekApiKey": "sk-你的DeepSeek密钥",
  "deepseekModel": "deepseek-v4-flash",
  "deepseekBase": "https://api.deepseek.com/v1"
}

启用后可用的 AI 能力:

  • 剧情中自由对话:对主人公说任何话,TA 会用角色口吻回应
  • 生活剧本生成:根据你导入的日记生成专属剧情
  • Vibe Coding AI 生成:用一句话描述,AI 帮你生成完整可玩剧本

即使不配置 Key,所有 5 部主线剧情、月球之旅、DIY 角色、Vibe Coding 手动搭建、生活剧本(模板版)均完全可用。

📲 安装到手机(Android / iOS)

  1. 确保手机和电脑在同一 Wi-Fi 下
  2. 在手机浏览器(Chrome / Safari)打开 http://<电脑的局域网IP>:3000
  3. Android:浏览器菜单 → "添加到主屏幕"
  4. iOS:Safari 分享 → "添加到主屏幕"

启动画面(splash)、全屏体验、离线缓存(service worker)都已经在 manifest.webmanifest + sw.js 中配置完毕。

💻 安装到电脑(Windows / Mac)

  • Chrome / Edge:右上角地址栏会出现"安装"图标 → 一键安装为独立应用
  • 安装后从桌面图标启动,不带浏览器地址栏的原生体验

🛠 开发模式

config.json 中 "dev": true 时:

  • 首页底部出现「一键解锁全部电影」按钮(仅用于开发测试)
  • 提供 POST /api/dev/unlock 接口

📂 项目结构

shinkai-game/
├── config.json             # 端口、AI Key 配置
├── server/                 # 零依赖后端
│   ├── index.js            # HTTP 服务 + 所有 API
│   ├── db.js               # SQLite 表 + scrypt 密码
│   ├── movies.js           # 5 部新海诚电影剧情内容
│   ├── ai.js               # DeepSeek 接入 + 降级生成
│   └── config.js
├── public/                 # 前端 PWA
│   ├── index.html
│   ├── manifest.webmanifest
│   ├── sw.js               # Service Worker(离线缓存)
│   ├── icons/              # 自动生成的 PWA 图标
│   ├── css/style.css       # 新海诚风格 CSS
│   └── js/
│       ├── api.js          # fetch + Toast + TTS
│       ├── scene-art.js    # SVG 场景艺术生成器
│       ├── views.js        # 所有视图
│       └── app.js          # 路由 + 启动
├── scripts/gen-icons.js    # PWA 图标生成器
├── data/                   # 运行时数据库(自动生成)
└── uploads/                # 生活照片(自动生成)

🗄 数据模型(SQLite)

  • users 用户
  • sessions 登录态
  • progress 电影通关进度
  • rewards 成就与合影卡
  • custom_chars DIY 角色
  • scenarios Vibe Coding 生成的剧情
  • game_sessions 游玩会话
  • life_profiles 生活剧本的用户资料

🎯 解锁规则

内容 解锁条件
第 1 部电影 注册即可
第 N 部电影 完成 N-1 部
月球之旅(任一) 完成该电影主线
DIY 角色 / Vibe Coding / 生活剧本 完成全部 5 部主线

🌟 主要 API 一览

接口 说明
POST /api/auth/register 注册
POST /api/auth/login 登录
GET /api/me 我的信息 + 解锁状态
GET /api/movies 电影列表(含解锁状态)
GET /api/movies/:id 电影详情 + 角色列表
POST /api/game/start 开始一场游玩(movie/moon/custom/life)
GET /api/game/:id 获取当前关卡视图
POST /api/game/:id/choose 推进剧情(选项)
POST /api/game/:id/free 自由对话(AI)
GET /api/rewards 我的奖励与合影
POST /api/characters 创建 DIY 角色
POST /api/ai/generate-scenario Vibe Coding AI 生成
POST /api/life/save 保存生活资料
POST /api/life/generate 生成生活剧本

💡 玩法提示

  • 主页 → 选一部电影 → 选一个角色 → 进入剧情
  • 剧情页面有"自动朗读"开关(在奖励页可全局切换)
  • 自由对话可输入任意话,AI 接入时会用角色口吻回应
  • 完成最后一关会弹奖励:合影卡 + 解锁提示
  • 全部通关后,顶栏的「角色工坊 / Vibe / 生活剧本」自动解锁
  • 合影卡在奖励页可一键下载为 PNG

享受星语剧场,愿你与每一个主人公,都写下属于自己的故事。✨

Contributors

okdkebm

Issues