在压迫中挣扎求存 · 在绝望中寻找出路
一款探索修仙世界中阶级固化、债务螺旋与生存压力的赛博朋克风格模拟经营游戏
- AI 驱动内容生成:集成 Groq LLM,根据玩家状态动态生成个性化事件
- 因果涌现引擎:5 个独立模块模拟情感记忆、因果链、社会网络等复杂系统
- 身体抵押赎身机制:指数增长赎身公式,创造"越陷越深"的债务螺旋体验
- 社会画像系统:四维评估玩家行为模式,动态影响事件触发和难度
- 657 个单元测试:100% 覆盖核心逻辑,确保代码质量和可维护性
修仙欠费中是一款沉浸式的修仙模拟经营游戏,玩家扮演一名背负债务的高中生,在修仙高中的体系中挣扎求存。游戏核心机制围绕四个主题展开:
- 分数 = 权限:每 7 天一次月考,决定你的分班(示范班/普通班/末位班)和待遇
- 债务 = 倒计时:利息按时间段滚动,逾期会触发催收事件
- 身体 = 耗材:炼体与补给能加速修行,但疲劳会吞噬专注与效率
- 系统的恶意:老师推销、零工诱惑、催收羞辱,将你拉回现实
游戏采用赛博朋克/反乌托邦美学风格,通过视觉设计强化"债务压迫"和"系统剥削"的核心体验。
- 三段式时间系统:每天分为清晨、午后、深夜三个时间段,每段只能执行一次行动
- 多维度属性系统:道心、法力、肉体强度、疲劳、专注等多项指标相互影响
- 动态分班系统:月考成绩决定分班,不同班级享受不同待遇和资源
- 债务管理系统:本金、利息、日利率、逾期等级、系统费用池,模拟真实的债务压力
- 身体抵押与赎身机制:6 个身体部位可抵押偿还债务,抵押后债务锁定,需支付指数增长的赎身金解锁
- 契约反噬系统:请神契约的缠绕度与监工 vigilance 追踪,反噬倒计时强制选择
- 社会画像系统:财务风险、教育信用、制度顺从、身体资产四维评估,动态影响事件触发
- 随机事件系统:催收提醒、老师推销、零工通知、请神契约等多种事件
- 因果涌现引擎(CEE):情感记忆、因果图预测、涌现事件生成、社会网络、隐变量追踪
- 推演沙盘:玩家可预览行为后果,辅助决策
- AI 事件生成:集成 Groq LLM(llama-3.3-70b),根据玩家实时状态动态生成个性化事件
- 存档系统:
localStorage单键容器,含autosave+ 三个手动槽;根级saveSchemaVersion(当前为2)
- 当前存储键:
kunxu_sim_save_v2(localStorage),JSON 根级含saveSchemaVersion。 - 自动存档与双写:手动存盘时,当前槽与
autosave会一并更新(活跃槽为autosave时只写一次);写入带 ~500ms 防抖 合并落盘。 - 不再兼容旧实验存档:历史键
kunxu_sim_save_v1不提供导入与自动迁移;若你曾使用极早期本地数据,请在开局页 新开一局(旧数据不会被升级进 v2 容器)。 - 进站流程:始终从开局页
/进入再载入,避免书签直进/game与未落盘写入竞态。
- 现代化技术栈:Nuxt 3 + Vue 3 Composition API + TypeScript
- 原生 CSS 设计系统:完整的 CSS 变量系统,支持赛博朋克主题
- 响应式设计:支持桌面端、平板端和移动端
- 组件化架构:原子组件(Button, Card, ProgressBar, Pill)+ 复合组件(StatPanel, LogPanel, DebtDashboard, EventModal, DeductionSandbox)
- 状态管理:基于 Vue 3 Composition API 的
useGamecomposable(含 CEE 集成),无需 Vuex/Pinia - 因果涌现引擎:5 个独立 CEE 模块(情感记忆、因果图、涌现事件、社会网络、隐变量)
- AI 事件生成:服务端集成 Groq API,客户端智能 Prompt 设计,状态感知数值生成
- 类型安全:完整的 TypeScript 类型定义(687 行,含 CEE 类型)
- 100% 单元测试覆盖:Vitest 框架,657 个测试用例,覆盖核心逻辑与边缘场景
- 性能优化:CEE 模块动态导入 +
requestIdleCallback延迟加载,首页轻量级 composable
- 自定义角色名、城市、出身(贫民/中产/富户)
- 选择天赋(无灵根/伪灵根/天灵根)
- 设置初始债务(0-20万灵石)
与代码中 ActionId 一致:study(上课/刷题)、tuna(吐纳)、train(炼体)、parttime(打工)、buy(买补给)、rest(休息)。借贷/还款为面板操作,不占用单段行动槽。
- 借贷:快速获得现金,但利息会不断累积
- 还款:偿还债务,优先偿还利息
- 逾期后果:逾期等级上升,触发更频繁的催收事件
- 每 7 天进行一次月考
- 成绩决定分班:示范班(最佳待遇)、普通班(中等待遇)、末位班(最差待遇)
- 不同分班影响餐补、专注加成等资源获取
直接访问 https://no-money-xiuxian.vercel.app/,无需安装任何东西。
- Node.js 18.x 或更高版本
- npm / pnpm / yarn / bun
# 克隆仓库
git clone https://github.com/your-username/xiuxian-sim.git
cd xiuxian-sim
# 安装依赖(选择一种)
npm install
# 或
pnpm install
# 或
yarn install
# 或
bun install启动开发服务器,访问 http://localhost:3000:
npm run dev# 构建生产版本
npm run build
# 预览生产构建
npm run preview# 运行所有单元测试
npm run test
# 运行测试并生成覆盖率报告
npm run test:coverage
# 验证事件数据格式
npm run validate:events项目使用 Vitest 作为测试框架,包含 657 个测试用例:
- 游戏引擎测试:考试分数计算、分班逻辑、事件门控
- 经济系统测试:借贷、还款、利息计算、逾期处理
- 身体抵押与赎身测试:估值算法、赎身倍率、状态变更
- CEE 模块测试:情感记忆、因果图、涌现事件、社会网络、隐变量
- 存档系统测试:序列化、反序列化、版本迁移、防抖策略
- AI 事件生成测试:Prompt 构建、JSON 解析、数值校验
所有测试位于 app/**/*.spec.ts,覆盖核心逻辑与边缘场景。
xiuxian-sim/
├── app/
│ ├── assets/css/
│ │ └── main.css # 全局样式和赛博朋克设计系统
│ ├── components/
│ │ ├── ui/ # 原子组件(Button, Card, Pill, ProgressBar…)
│ │ └── game/ # 游戏组件(StatPanel, LogPanel, DebtDashboard, EventModal, HumanModelViewer, DeductionSandbox…)
│ ├── composables/ # Vue 组合式函数(44个文件)
│ │ ├── useGame.ts # 主编排器(221行,统一导出所有子模块)
│ │ ├── useGameState.ts # 核心响应式状态管理
│ │ ├── useGameActionExecutor.ts # 行动执行编排
│ │ ├── useGameEconomyActions.ts # 经济操作(借贷/还款/赎身)
│ │ ├── useGameEventResolver.ts # 事件解析与触发
│ │ ├── useGameComputed.ts # 派生指标计算(生存压力、债务比等)
│ │ ├── useGameStorage.ts # localStorage 容器、槽位、防抖落盘
│ │ ├── useGameStorage.helpers.ts # 存档 schema、双写策略(可单测)
│ │ ├── useEmotionalMemory.ts # 情感记忆 CEE 模块
│ │ ├── useCausalGraph.ts # 因果图 CEE 模块
│ │ ├── useAiEventGenerator.ts # AI 事件生成客户端
│ │ └── useGameForIndex.ts # 首页轻量级 composable(避免加载 CEE)
│ ├── logic/ # 纯函数规则引擎(19个文件)
│ │ ├── gameEngine.ts # 核心规则(1341行,考试/分班/事件门控/身体抵押/赎身)
│ │ ├── gameEngine.redemption.spec.ts # 赎身机制单元测试
│ │ ├── emotionalMemoryLayer.ts # CEE Phase 1: 情感记忆层
│ │ ├── causalGraphEngine.ts # CEE Phase 2: 因果图引擎
│ │ ├── emergentEventGenerator.ts # CEE Phase 3: 涌现事件生成器
│ │ ├── socialNetworkEngine.ts # CEE Phase 4: 社会网络引擎
│ │ └── hiddenVariableEngine.ts # CEE Phase 5: 隐变量引擎
│ ├── pages/
│ │ ├── index.vue # 开局页(存档槽、继续、新局)
│ │ ├── game.vue # 游戏主页(含推演按钮)
│ │ └── dev/ # 开发/实验页(AI 事件生成器等)
│ ├── types/
│ │ └── game.ts # TypeScript 类型定义(687行,含 CEE 类型)
│ └── utils/
│ ├── events.ts # 事件辅助函数
│ └── rng.ts # 随机数生成器(seeded)
├── data/
│ ├── events.json # 基础事件数据(1638行)
│ └── eventTemplates.json # 涌现事件模板(CEE 驱动)
├── server/api/ # Nuxt 服务端 API
│ ├── generate-events.post.ts # AI 事件生成接口(Groq LLM)
│ ├── test-env.get.ts # 环境变量测试接口
│ └── test-groq.get.ts # Groq API 连通性测试
├── docs/ # 项目文档
│ ├── ARCHITECTURE.md # 架构设计文档
│ ├── 事件创作指南.md # 面向非开发者的事件 JSON 编写说明
│ ├── 交互流程图.md # 页面流、核心循环与存档/契约要点
│ ├── 系统逻辑总览.md # 属性、行动数值、事件与联动关系
│ └── 代码全流程与功能事件概率总览.md # 从页面到引擎的概率门控总览
├── public/models/ # 3D 模型资源(人体模型)
└── nuxt.config.ts # Nuxt 配置
单测:app/**/*.spec.ts(Vitest,25 个测试文件,657 个测试用例)。
useGame 组合式架构
useGame.ts (主编排器)
├── useGameState() # 核心响应式状态
├── useGameStorage() # 存档槽管理
├── useCausalGraph() # 因果图追踪(动态导入 + requestIdleCallback)
├── socialNetwork # 社交网络引擎
├── useGameComputed() # 派生指标(生存压力、债务/现金比等)
├── useEmotionalMemoryStorage() # 情感记忆存储
├── useGameEconomyActions() # 经济操作(借贷/还款/赎身)
├── useGameEventResolver() # 事件解析与触发
├── useGameActionExecutor() # 行动执行编排
└── useAiEventGenerator() # AI 事件生成(可选)
设计原则
- 关注点分离: 每个模块处理单一领域,便于维护和测试
- 依赖注入: 模块通过参数接收依赖,支持独立单元测试
- 纯函数规则引擎:
gameEngine.ts等文件提供可测试的纯函数,与 Vue 解耦 - 向后兼容:
useGame()返回 API 保持不变,子模块可独立扩展 - 性能优化: 首页使用轻量级
useGameForIndex,避免加载重型 CEE 模块
base = 400 + daoXin*8 + faLi*6.5 + rouTi*35 + focusBonus - debtPenalty - fatiguePenalty - workPenalty
base = 0.15(单时段)
delinquencyBonus = 逾期等级 × 0.05
droughtBonus = min(干旱天数 × 0.08, 0.40)
final = clamp(base + bonuses, 0.15, 0.70)
| 部位 | 基础价格 |
|---|---|
| 左手掌 | 8,000 |
| 右手掌 | 8,000 |
| 左手臂 | 15,000 |
| 右手臂 | 15,000 |
| 左腿 | 18,000 |
| 右腿 | 18,000 |
动态估值受法力、肉体强度、疲劳、补剂劣化度影响。
赎身金额 = lockedDebtAmount × 1.5 × 2^(n-1)
(n 为累计抵押次数,倍率指数增长)
| 班级 | 分数要求 | 待遇 |
|---|---|---|
| 示范班 | >= 600 | 餐补 160/日,专注 +10 |
| 普通班 | >= 540 | 餐补 40/日,专注 +0 |
| 末位班 | < 540 | 无餐补,专注 -6 |
游戏集成了基于 Groq LLM 的 AI 事件生成系统,能够根据玩家实时状态动态生成个性化事件。
- 服务端 API:
/api/generate-events(POST),接收玩家画像和游戏上下文 - LLM 模型:llama-3.3-70b-versatile(Groq 平台)
- 智能 Prompt:状态感知指令 + 数值设计指南,确保生成数值与玩家处境匹配
- 客户端集成:
useAiEventGeneratorcomposable,提取派生状态(生存压力、债务比、属性危急程度)
AI 生成系统会考虑以下派生指标:
- 生存压力指数(0~100):综合现金、债务、属性状态计算
- 债务/现金比:判断玩家财务健康状况
- 属性危急程度:疲劳、专注是否处于危险阈值
- 距离上次还款天数:评估拖延倾向
- 事件严重程度匹配:根据压力等级调整事件强度
AI 严格遵守以下规则:
- 现金 < 500 时,避免生成大额支出选项
- 债务 > 50,000 时,现金收益应在 1,000~3,000 才有意义
- 疲劳 > 80 时,避免生成高疲劳代价选项
- 选项之间必须有实质差异(安全/冒险/拒绝选项的权衡)
在项目根目录创建 .env 文件:
GROQ_API_KEY=your_api_key_here前往 Groq Console 获取 API Key。
当债务无法偿还时,系统提供"身体偿还"选项:
- 6 个身体部位可独立抵押(左右手掌、手臂、腿)
- 每个部位有基础定价,动态估值受当前状态影响
- 偿还后身体完整度下降,影响所有行动增益
- 债务进入锁定状态(
bodyLocked),无法通过普通还款解除
抵押后玩家可通过赎身解锁债务:
- 倍率公式:
1.5 × 2^(n-1)(n 为累计抵押次数) - 第一次赎身:锁定金额的 1.5 倍
- 第二次赎身:锁定金额的 3 倍
- 第三次赎身:锁定金额的 6 倍
- 现金不足时,系统会提示具体差额
创造"越陷越深"但保留一丝希望的游戏体验,反映现实中的债务螺旋困境。
系统对玩家进行多维度评估,影响事件触发和难度:
interface SocialProfile {
financialRisk: 'low' | 'medium' | 'high' | 'extreme' // 财务风险等级
educationCredit: 'discarded' | 'unstable' | 'investable' | 'preferred' // 教育信用等级
compliance: 'resistant' | 'softened' | 'obedient' | 'domesticated' // 制度顺从程度
bodyAsset: 'intact' | 'marked' | 'mortgaged' | 'depleted' // 身体资产状态
tags: ProfileTagId[] // 系统标签(如"高风险修士"、"可投资优等生"等)
}画像动态更新,影响:
- 事件触发概率和类型偏好
- AI 生成事件的情境设计
- NPC 态度和互动方式
- 事件创作指南 — 面向非开发者的事件 JSON 编写说明
- 交互流程图 — 页面流、核心循环与存档/契约要点
- 系统逻辑总览 — 属性、行动数值、事件与联动关系
- 代码全流程与功能事件概率总览 — 从页面到
useGame/ 引擎与概率门控的总览(适合评审与 onboarding) - UI/UX 设计规范 — UI/UX 设计系统(若目录存在)
单机 Web 可玩版本,包含以下核心功能:
基础游戏系统
- 无限天三时段循环(清晨/午后/深夜)
- 债务管理系统(本金、利息、逾期等级、系统费用池、催收事件)
- 动态分班系统(月考成绩决定分班与待遇)
- 随机事件系统(催收、推销、零工、契约等)
- localStorage 存档(schema v2、双写、防抖)
- 响应式主流程(桌面/平板/移动端)
因果涌现引擎(CEE)
- 情感记忆层:记录玩家行为模式与情绪反应(最多 50 个会话)
- 因果图引擎:追踪因果链条,预测潜在事件(最多 1000 个节点)
- 涌现事件生成器:基于上下文动态生成独特叙事
- 社会网络引擎:NPC 关系动态演化(affinity, trust, fear, respect)
- 隐变量引擎:追踪压力、焦虑等隐藏状态
- 推演沙盘:玩家可预览行为后果
契约反噬与心理主题收束(无硬 Game Over)
AI 事件生成系统
- 集成 Groq LLM(llama-3.3-70b-versatile)
- 状态感知 Prompt 设计,动态提取派生指标
- 数值设计指南,确保生成数值与玩家处境匹配
- 智能 JSON 解析与校验过滤
身体抵押与赎身机制
- 6 部位独立抵押系统,动态估值
- 指数增长赎身公式,创造债务螺旋体验
- 债务锁定状态机,与普通还款隔离
社会画像系统
- 四维评估:财务风险、教育信用、制度顺从、身体资产
- 动态标签系统,影响事件触发偏好
代码架构
useGamecomposable 重构为多个专用 composable(useGameEventResolver、useGameActionExecutor、useGameEconomyActions、useEmotionalMemoryStorage、useGameComputed)- 首页使用轻量级
useGameForIndexcomposable,避免加载重型 CEE 模块 - 因果图引擎采用动态导入 +
requestIdleCallback延迟加载 - SSR 水合问题修复(SaveSlotList 组件使用
<ClientOnly>包裹) - 657 个测试用例,100% 单元测试覆盖
首页存档列表 UI 重新设计
- 响应式网格布局(桌面 4 列 → 平板 3 列 → 移动端 2 列 → 小屏 1 列)
- 存档卡片视觉重构(内边距/圆角优化、债务压力进度条动态渐变、空状态圆形虚线容器、活跃状态勾选徽章)
- SwipeableCard 滑动删除交互集成(带确认弹窗)
- 存档管理 Bug 修复:
- 修复
storageVersion响应式断裂导致的 UI 不更新问题 - 修复删除逻辑缺陷,新增独立
deleteSlot()方法 - 修复空存档下红色删除区域穿透问题
- 修复
AI 事件生成系统
- 集成 Groq LLM API,支持动态生成个性化事件
- 状态感知 Prompt 设计,提取生存压力、债务比、属性危急程度等派生指标
- 数值设计指南,确保 AI 生成的数值与玩家当前状态匹配
- 智能 JSON 解析器,支持多种响应格式
- 服务端校验过滤,防止无效或模板化事件
身体抵押赎身机制
- 6 个身体部位独立抵押系统,动态估值算法
- 指数增长赎身公式(1.5 × 2^(n-1)),创造"越陷越深"体验
- 债务锁定状态机,与普通还款逻辑隔离
- 经济操作集成,优化失败提示显示具体差额
社会画像系统完善
- 四维评估体系完整实现
- 动态标签系统,影响事件触发概率和 AI 生成偏好
- 派生指标计算(生存压力指数、债务/现金比、事件严重程度匹配)
测试与优化
- 新增 168 个测试用例(总计 657 个)
- 赎身机制完整单元测试覆盖
- CEE 模块性能优化(动态导入 + 延迟加载)
- 成就系统:记录玩家的"生存轨迹"
- AI 辅助事件生成工具:集成免费本地大模型(WebLLM/Qwen2.5),开发
/dev/event-generator页面,辅助批量创作高质量事件 JSON - 更多涌现事件模板:结合 AI 工具丰富事件多样性,目标新增 20-30 个涌现事件
- NPC 关系追踪面板:可视化展示 NPC 态度变化
- 隐变量 UI:压力/焦虑等状态可视化
- 高级设置表单交互优化:提升配置体验
- 试功/试药系统:企业试功事件,可能造成内伤/奖励现金/获得新功法
- 法赛系统:奖金驱动的竞赛,投入资源冲刺 vs 保守稳债
- 灵根租赁系统:短期效率暴涨 vs 债务与副作用上升
- 静室系统:付费获得更好的修炼环境
- 老师推销系统扩展:更多"正规货"与羞辱选项
- 债务重组系统扩展:学校补助、班主任介入
- 多结局系统:根据玩家选择触发不同结局
- 云存档与账号系统(需评估与「孤立受压」主题的一致性)
欢迎贡献代码、报告问题或提出建议!
游戏的所有事件都存储在 data/events.json(基础事件)和 data/eventTemplates.json(涌现事件模板)中,你可以:
- 复制现有事件,修改文案和数值
- 提交 Pull Request 或在 Issue 中分享你的点子
详见 事件创作指南。
在 Issues 中提交 Bug 报告,请包含:
- 复现步骤
- 预期行为 vs 实际行为
- 截图或录屏(如果可能)
在 Discussions 中分享你的想法:
- 新的游戏机制
- UI/UX 改进建议
- 平衡性调整
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 使用 TypeScript 进行类型检查
- 遵循 Vue 3 Composition API 最佳实践
- 保持组件单一职责
- 编写清晰的注释和文档
- 运行
npm run validate:events验证事件数据 - 运行
npm run test确保测试通过 - 遵循项目代码质量标准(功能正确性、设计架构、可读性、健壮性、规范一致性、性能安全)
- 阅读 事件创作指南
- 复制
data/events.json中的现有事件 - 修改
id(确保唯一)、title、body、options - 确保
effects使用合法的 target 字段 - 运行
npm run validate:events验证格式 - 提交 Pull Request 或在 Issue 中分享
本游戏的核心设计灵感源于小说《没钱修什么仙?》(作者:熊狼狗)。小说对修仙世界中分数、债务与系统性压迫的深刻探讨,启发了我们创作这款游戏。
- 赛博朋克 2077:霓虹美学、反乌托邦氛围
- Blade Runner:压抑的视觉风格
- Papers, Please:系统性压迫的游戏化表达
- This War of Mine:生存压力与道德困境
本项目仅供学习和交流使用。
如有问题或建议,欢迎通过以下方式联系:
- 提交 Issue
- 发起 Discussion
- 提交 Pull Request
如果你喜欢这个项目,请给我们一个 Star ⭐️


