Movie Games 是一个基于 AI 的互动电影游戏生成平台。用户只需输入简单的想法(主题、类型、简介),AI 将自动扩写世界观、生成角色,并构建一个包含分支剧情和多重结局的复杂叙事树。
通过结合 Vue 3 的现代化前端交互与 Rust 的高性能后端处理,以及大语言模型(GLM-4)的创意生成能力,Movie Games 让每个人都能成为互动电影的导演。
- 🧙♂️ 向导模式: 零门槛创作,通过简单的表单引导,一步步生成完整的游戏剧本。
- 🎲 随机灵感: 内置随机主题生成器,一键获取创意灵感。
- 🤖 AI 智能扩写:
- 自动扩写剧情大纲,丰富故事细节。
- 根据剧情自动生成性格鲜明的角色阵容。
- 🎭 沉浸式体验:
- 3D 悬停卡片与流体光标效果。
- 自适应布局,支持 PC 与移动端。
- 🌳 剧情设计器:
- 可视化节点树编辑。
- 自由调整剧情分支与选项。
- 角色好感度系统。
- 💾 存档与分享:
- 支持导入/导出 JSON 存档。
- 一键分享游戏链接,邀请朋友体验你的作品。
- 🔒 数据安全:
- 敏感词过滤。
- 本地 API Key 配置支持。
- Framework: Vue 3 (Composition API)
- Build Tool: Vite
- Language: TypeScript
- Styling: Tailwind CSS
- Icons: Lucide Vue
- Language: Rust
- Web Framework: Axum
- Runtime: Tokio
- Database: PostgreSQL + SQLx
- LLM SDK: Custom GLM client
- Node.js (>= 18)
- pnpm
- Rust (>= 1.70)
- PostgreSQL (>= 14)
本项目使用 sqlx 进行数据库迁移。
- 创建 PostgreSQL 数据库(例如
movie_games)。 - 将
server/migrations目录下的 SQL 文件应用到数据库。# 如果安装了 sqlx-cli cd server export DATABASE_URL=postgres://USER:PASSWORD@localhost/movie_games sqlx migrate run
-
进入
server目录:cd server -
创建
.env文件:MOVIE_GAMES_DATABASE_URL=postgres://USER:PASSWORD@localhost/movie_games GLM_API_KEY=your-glm-api-key PORT=35275
-
运行服务器:
cargo run
-
进入
front目录:cd front -
安装依赖:
pnpm install
-
启动开发服务器:
pnpm dev
访问 http://localhost:5173 即可开始体验。
-
构建:
cd front pnpm build构建完成后,静态文件位于
front/dist目录。 -
Nginx 配置: 将
front/dist目录下的所有文件上传至服务器 Web 根目录(例如/var/www/movie-games)。 配置 Nginx 反向代理 API 请求到后端端口(默认 35275)。示例配置:
server { listen 80; server_name movie-games.example.com; root /var/www/movie-games; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://localhost:35275/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
-
构建:
cd server cargo build --release构建产物为
server/target/release/server二进制文件。 -
运行环境准备: 将编译好的二进制文件上传至服务器(例如
/srv/movie-games-server/server)。⚠️ 关键配置: 敏感词字典 后端服务启动时需要加载敏感词字典。由于生产环境通常没有 Cargo 缓存,必须在运行目录下手动创建dict目录并放入dict.txt。您可以将本地开发环境中的
sensitive-rs默认字典上传到服务器:- 本地源路径:
/Users/kuidi/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sensitive-rs-0.5.0/dict/dict.txt(版本号可能不同,请根据实际情况调整) - 服务器目标路径:
/srv/movie-games-server/dict/dict.txt
提示:您可以直接编辑
dict.txt文件,根据业务需求增加或删除敏感词。 - 本地源路径:
-
环境变量: 在运行目录下创建
.env文件:MOVIE_GAMES_DATABASE_URL=postgres://user:password@localhost/movie_games GLM_API_KEY=your_key_here PORT=35275
-
启动服务:
./server
推荐使用
systemd或supervisor进行进程守护。
欢迎提交 Pull Request 或 Issue!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交改动 (
git commit -m 'Add some AmazingFeature') - 推送分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目采用 MIT 协议开源。