# 万界道友
一款 AIGC 驱动、高自由度文字体验、修仙世界观的开源游戏项目。
> 本仓库默认入口已迁至 `NestJS + React SPA`,迁移收口进度见 [迁移记录](docs/nestjs-migration.md)。这里的说明以现有代码为准,已不再适用于旧版 Next.js 架构。
---
## 项目愿景
**《万界道友》** 旨在打造一套"修仙宇宙的开源骨架"。它不仅是一个可以直接游玩的文字修仙游戏,更是一套高度结构化、AIGC 友好的底层架构。我们希望通过**高自由度的输入 + AIGC 反馈**,结合**严格的数值与战斗模型**,让创作者能够在此基础上快速搭建属于自己的修仙世界。
- **玩法层面**:鼓励玩家通过文字描述塑造角色,AI 实时生成反馈,带来"千人千面"的体验。
- **系统层面**:保持系统的稳定、正交与可组合性,确保数值平衡与逻辑自洽。
- **表现层面**:坚持"文字即界面",采用水墨意境 UI,适配移动端体验。
## 核心特色
- 🤖 **AIGC 深度集成**:角色背景、战斗播报、奇遇故事、物品描述全流程 AI 生成,每一次体验都独一无二。当前统一使用 DeepSeek。
- ⚔️ **深度战斗引擎**:基于时间轴的回合制战斗,支持神通、法宝、状态效果(Buff/Debuff)、五行克制、伤害管道等复杂机制。
- ☯️ **严谨修仙体系**:完整的境界(炼气至渡劫)、灵根(金木水火土风雷冰)、功法、命格、炼丹炼器系统。
- 📱 **水墨风 UI**:基于 `Ink` 组件库(21 个组件)打造的纯文字 UI,简洁优雅,沉浸感强。
- 🛠️ **开发者友好**:清晰的分层架构(Engine/Service/API),TypeScript 全栈开发,易于扩展与二创。
## 🌌 万界
「万界」收录基于本仓库开源部署、由不同维护者运营的《万界道友》服务器。各界可能拥有不同的玩法、设定与社区生态,欢迎选择感兴趣的世界游历。
| 界名 | 特色 | 网站入口 | 源代码 | 维护者 |
| --- | --- | --- | --- | --- |
| 万界道友 | 官方维护,提供原版玩法与最新功能体验 | [进入此界](https://client.daoyou.org) | [ChurchTao/Daoyou](https://github.com/ChurchTao/Daoyou) | [ChurchTao](https://github.com/ChurchTao) |
| 云梦界 | 扩展暗巷黑市、拍卖行与灵田等玩法,侧重玩家交互、经济系统和长期养成 | [进入此界](https://yzdoc.cn/game) | [sclzboywow/daoyou](https://github.com/sclzboywow/daoyou) | [sclzboywow](https://github.com/sclzboywow) |
### 加入万界
如果你运营着基于本项目部署的服务器,可以通过[「万界」收录申请](https://github.com/ChurchTao/Daoyou/issues/new?template=submit-world.yml)提交界名、特色、网站入口及源代码地址。申请需满足以下条件:
- 界名由 2–5 个汉字组成,不得冒充官方或与已收录界名混淆。
- 当前部署版本的完整源代码必须公开可访问,并保留本项目署名及许可证声明。
- 网站入口必须公开可访问,并明确说明特色玩法、维护者和涉及的付费、广告或用户数据收集情况。
- 不得包含违法、欺诈、恶意收集用户信息或明显侵权的内容。
- 长期无法访问、停止公开源代码或违反上述规则的服务器可能被移出名录。
> 「万界」仅提供社区服务器索引,收录不代表官方对其安全性、可用性、内容或运营行为作出背书。请勿在不同服务器间复用密码,并自行判断账号、数据及付费风险。
## 🖼 游戏画面
## 技术概览
- 服务端:`NestJS 12` + `Node.js 24`,pnpm workspace管理依赖,Turborepo编排任务
- 前端:`React 19` + `React Router 7` + `Vite 8`
- 样式:`Tailwind CSS 4`
- 数据库:`PostgreSQL` + `Drizzle ORM`
- 缓存 / 分布式协调:`Redis`
- 消息与实时广播:`NATS JetStream` + `NATS Core`
- 认证:`Better Auth`
- AI 能力:`AI SDK` + `DeepSeek`
## 仓库布局
```text
.
├── apps/api/ # NestJS API(nest build → dist/main.js)
│ ├── src/ # 按功能划分的 Nest 模块及服务端基础设施
│ └── scripts/ # 数据维护工具
├── apps/web/ # React SPA(Vite → dist/)
│ ├── src/
│ └── public/
├── packages/constants/ # 稳定基础词汇
├── packages/game-domain/ # 领域模型、Schema 与不变量
├── packages/combat-core/ # 确定性战斗内核
├── packages/game-content/ # 游戏内容与数值表
├── packages/game-rules/ # 纯玩法计算、生成与投影
├── packages/contracts/ # 请求响应、资源与消息协议
├── drizzle/ # 业务表迁移
├── drizzle-auth/ # Better Auth 独立迁移
├── scripts/ # 部署、Compose 与 SponsorKit 工具
└── docker/Dockerfile.app # 仅包含 API 生产依赖和构建产物
```
## 本地开发与部署
环境要求、环境变量、数据库初始化、本地开发、构建、Docker、生产 cron 与部署脚本说明已整理到 [docs/development.md](docs/development.md)。
首次将 `env/local.example.env` 复制为 `env/local.env`(已有文件保留),安装依赖后执行 `pnpm run services up -d --wait` → `pnpm run db:migrate` → `pnpm run dev`,访问 `http://127.0.0.1:5174`。预发布调试使用 `pnpm run prd`,读取被 Git 忽略的 `env/staging.env`;两组均可独立启动 `:api`/`:web`。详见 [本地开发指南](docs/local-development.md) 与 [测试规范](docs/testing.md)。
## 贡献指南
欢迎道友们共建这个修仙世界!
1. Fork 本仓库。
2. 创建特性分支 (`git checkout -b feature/NewFeature`)。
3. 提交更改 (`git commit -m 'Add some NewFeature'`)。
4. 推送到分支 (`git push origin feature/NewFeature`)。
5. 提交 Pull Request。
开发与部署的完整约定请参见 [本地开发与部署](#本地开发与部署)。
## 💬 交流群
欢迎加入《万界道友》QQ交流群,与其他道友共同探讨修仙大计:
- 1群: 1107586928
- 2群: 308933047
## 💖 赞助与鸣谢
感谢每一位帮助《万界道友》持续维护与成长的道友。新的赞助统一通过 [爱发电](https://afdian.com/u/baef2b20501311f09da252540025c377) 进行;具体规则请见 [赞助说明](SPONSORING.md),公开赞助人名单与历史鸣谢请见 [SPONSORS.md](SPONSORS.md)。
赞助名单不会展示支付信息或具体金额,赞助不会影响游戏数值、账号权益或项目决策权。
## 🤝 致谢
特别鸣谢以下贡献者:
- [tpoisonooo](https://github.com/tpoisonooo):在 [Issue #25](https://github.com/ChurchTao/Daoyou/issues/25) 中提供了宝贵的 LLM 优化思路与方法论,极大地提升了游戏的 AIGC 体验。
## 开源协议
本项目采用 [GNU General Public License v3.0](LICENSE) 协议开源。
这意味着你可以自由地:
- 共享:在任何媒介或格式下复制和分发材料
- 改编:混合、转换和构建材料
但必须遵守以下条款:
- **署名**:必须提供适当的归属。
- **相同方式共享**:如果你混合、转换或基于该材料进行构建,你必须在相同的协议下分发你的贡献。
详情请查阅 [LICENSE](LICENSE) 文件。
---
愿你在万界中得一二知己,共证长生。