Features: - Combat system with AP/EP hit calculation and three-layer defense - Auto-combat/farming mode - Item system with stacking support - Skill system with levels, milestones, and parent skill sync - Shop system with dynamic pricing - Inventory management with bulk selling - Event system - Game loop with offline earnings - Save/Load system Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
50 KiB
文字冒险游戏设计文档 v2.0
改进版 - 深度挂机养成系统
1. 游戏概述
1.1 游戏类型
- 类型:文字冒险 + 深度挂机养成 + RPG
- 平台:小程序/网页/app(uni-app框架)
- 风格:纯文字UI,末世生存主题
- 灵感来源:Proto23、Yet Another Idle RPG
- 核心理念:通过技能驱动成长,强调策略性和深度
1.2 核心玩法循环
获取技能 → 提升技能等级 → 解锁新内容 → 战斗/探索 → 获取更强装备 → 挑战更强敌人
↑ ↓
└──────────────────── 离线收益系统 ──────────────────────────────────┘
核心玩法特色:
- 技能驱动系统:几乎所有成长都通过技能提升来实现
- 深度养成:技能不仅有等级,还有里程碑奖励和特殊效果
- 策略性选择:通过装备、技能搭配、战斗姿态等体现玩家策略
- 挂机友好:支持长时间挂机,离线有收益,但在线玩效率更高
- 渐进式解锁:新内容通过技能等级、区域通关、NPC对话等方式逐步解锁
2. 核心系统设计
2.1 玩家属性系统(参考 Yet Another Idle RPG)
主要属性(Primary Stats)
| 属性 | 说明 | 初始值 | 影响因素 |
|---|---|---|---|
| 力量(Strength) | 影响物理攻击力 | 10 | 技能加成、装备 |
| 敏捷(Agility) | 影响闪避率 | 8 | 技能加成、装备 |
| 灵巧(Dexterity) | 影响命中率 | 8 | 技能加成、装备 |
| 智力(Intuition) | 影响魔法威力、少量命中/闪避 | 10 | 技能加成、装备 |
| 防御力(Defense) | 减少受到的伤害(仅装备) | 0 | 装备提供 |
次要属性(Secondary Stats)
| 属性 | 说明 | 计算公式 |
|---|---|---|
| 最大生命(Max HP) | 角色生命上限 | 基础值 + 技能加成 + 装备加成 |
| 攻击力(Attack Power) | 最终攻击力 | 武器攻击力 × (力量系数 或 智力系数) |
| 攻击速度(Attack Speed) | 攻击频率 | 基础速度 × 装备加成 × 技能加成 |
| 暴击率(Crit Rate) | 暴击概率 | 基础值 + 技能加成 |
| 暴击伤害(Crit Mult) | 暴击伤害倍数 | 基础值(1.5) + 技能加成 |
| 命中值(AP) | 攻击点数,影响命中率 | 技能、环境修正等因素综合 |
| 闪避值(EP) | 闪避点数,影响闪避率 | 技能、环境修正等因素综合 |
| 护盾(Shield) | 可吸收伤害 | 装备提供 |
战斗资源
| 资源 | 说明 | 初始值 | 消耗机制 |
|---|---|---|---|
| 耐力(Stamina) | 影响战斗效率 | 100 | 攻击消耗、技能训练消耗 |
| 精神(Sanity) | 影响某些事件判断 | 100 | 特殊事件消耗 |
最终属性计算规则
// 示例计算逻辑
finalStats = {
// 基础属性 + 技能加成 + 装备加成
strength: baseStats.strength + skills.bonus + equipment.bonus,
// 攻击力 = 武器基础 × (1 + 力量/100)
attackPower: weapon.baseDamage * (1 + finalStats.strength / 100),
// 命中值和闪避值采用非线性计算
attackPoints: calculateAP(dexterity, intuition, skills, environment),
evasionPoints: calculateEP(agility, intuition, skills, environment)
}
主等级系统(简化)
- 定位:作为整体实力的参考指标,不是主要成长手段
- 经验来源:
- 技能达到特定等级(里程碑)
- 完成书籍阅读
- 击败新敌人(图鉴解锁)
- 区域首次通关
- 升级效果:
- 提供少量基础属性加成
- 解锁高级技能的等级上限
- 作为某些内容的前置条件
2.2 技能系统(核心深度系统)
技能分类体系
-
战斗技能(Combat Skills)
- 武器精通类:木棍精通、剑术、斧头精通等
- 战斗姿态类:攻击姿态、防御姿态、平衡姿态
- 防御类:闪避训练、盾牌掌握、铁皮
- 攻击类:重击、快速打击、连击
-
生活技能(Life Skills)
- 阅读类:阅读(提升阅读速度和效率)
- 生存类:饮食、坚韧、夜视
- 资源获取类:采集、狩猎、采矿
-
特殊技能(Special Skills)
- 信仰、领导力
- 讨价还价(降低交易差价)
- 一心多用(允许同时进行多个活动)
-
被动技能(Passive Skills)
- 被动获得经验,只需满足特定条件
- 示例:在黑暗区域待着自动获得夜视经验
-
父技能(Parent Skills)
- 不直接提供属性加成
- 核心功能:如果子技能等级低于父技能,提供经验倍率加成
- 父技能等级始终等于最高级子技能的等级
- 示例:父技能"战斗"包含子技能"剑术"、"斧头精通"等
技能解锁机制
-
物品触发解锁
- 获得书籍 → 解锁"阅读"
- 获得武器 → 解锁对应武器精通
- 获得技能书 → 解锁特殊技能
-
NPC对话解锁
- 与特定NPC对话 → 解锁新技能
- 完成特定剧情 → 解锁技能
-
技能等级解锁
- 某技能达到X级 → 解锁相关技能
- 示例:阅读5级 → 解锁"快速阅读"
-
区域解锁
- 首次进入特定区域 → 解锁相关技能
- 示例:首次进入洞穴 → 解锁"夜视"
技能经验获取机制
-
主动训练
- 在训练场消耗耐力训练武器技能
- 阅读书籍获得阅读经验
- 工作获得相关技能经验
-
战斗获得
- 使用武器攻击 → 武器技能经验
- 成功闪避 → 闪避技能经验
- 成功格挡 → 盾牌技能经验
-
被动获得
- 在特定环境待着 → 环境适应技能经验(如夜视)
- 装备特定装备 → 相关技能经验(如铁皮)
-
部分效率机制
- 即使条件未完全满足,也能获得50%经验
- 示例:未命中敌人仍能获得武器技能经验的50%
技能里程碑系统(重要)
每个技能在特定等级提供永久性全局奖励:
示例 - 武器技能里程碑:
| 等级 | 奖励效果 |
|---|---|
| Lv.5 | 所有武器暴击率+2% |
| Lv.10 | 所有武器攻击力+5% |
| Lv.15 | 武器熟练度获取速度+20% |
| Lv.20 | 所有武器暴击伤害+0.3 |
示例 - 阅读技能里程碑:
| 等级 | 奖励效果 |
|---|---|
| Lv.3 | 所有技能经验获取+5% |
| Lv.5 | 阅读速度+50% |
| Lv.10 | 完成书籍给予额外主经验+100 |
示例 - 父技能里程碑:
| 等级 | 奖励效果 |
|---|---|
| Lv.5 | 子技能升级速度+10% |
| Lv.10 | 子技能升级速度+25% |
| Lv.15 | 子技能升级速度+50% |
技能等级上限与限制
- 基础上限:每个技能有基础等级上限(如20级)
- 玩家等级限制:技能等级不能超过玩家等级×2
- 解锁更高上限:
- 通过特定NPC提升上限
- 通过特殊物品提升上限
- 主等级达到特定等级
2.3 物品与装备系统(参考 YAIRPG)
装备品质系统(核心)
所有装备都有**品质(Quality)**参数,直接影响装备属性:
| 品质等级 | 品质范围 | 稀有度 | 颜色 | 额外乘数 | 说明 |
|---|---|---|---|---|---|
| 1 | 0-49% | 垃圾 | 灰色 | ×1.0 | 几乎无用的装备 |
| 2 | 50-99% | 普通 | 白色 | ×1.0 | 基础装备 |
| 3 | 100-129% | 优秀 | 绿色 | ×1.1 | 略强于普通 |
| 4 | 130-159% | 稀有 | 蓝色 | ×1.3 | 强力装备 |
| 5 | 160-199% | 史诗 | 紫色 | ×1.6 | 非常稀有 |
| 6 | 200-250% | 传说 | 橙色 | ×2.0 | 极其罕见 |
品质影响:
- 基础属性 = 装备基础值 × 品质百分比
- 武器攻击力 = 基础攻击力 × 品质%
- 防具防御力 = 基础防御力 × 品质%
- 稀有度乘数(绿色及以上):影响所有属性
- 最终属性 = 基础属性 × 稀有度乘数
- 价值计算:
- 装备价值 = 基础价值 × 品质% × 稀有度乘数
示例计算:
- 基础攻击力100的剑,品质120%,绿色稀有度
- 最终攻击力 = 100 × 1.2 × 1.1 = 132
- 最终价值 = 基础价值 × 1.2 × 1.1
装备分类
-
武器(Weapon)
- 基础属性:攻击力、攻击速度
- 首次装备自动解锁对应武器技能
- 类型:单手武器、双手武器、远程武器
-
防具(Armor)
- 部位:头盔、胸甲、护腿、鞋子、手套
- 基础属性:防御力
- 重要:防御力仅由装备提供,不是基础属性
-
护盾(Shield)
- 基础属性:护盾值、格挡率
- 格挡机制:先于防御力计算,可完全吸收伤害
- 示例:格挡率75%,护盾值50 → 有75%几率用护盾吸收最多50点伤害
-
饰品(Accessory)
- 类型:戒指、项链
- 提供特殊属性加成
- 可能有特殊效果
-
书籍(Book)
- 普通书籍:只给阅读经验
- 特殊书籍:多技能经验(圣经→阅读+信仰)
- 完成后奖励:提供永久性全局加成(重要!)
- 不消耗,读完后收益消失
-
消耗品(Consumable)
- 食物:恢复生命值、耐力值
- 战斗中食物提供耐力再生
- 每次使用给饮食经验
- 药水:恢复生命值、精神值
- 食物:恢复生命值、耐力值
-
素材(Material)
- 战斗掉落物
- 用于制作装备
- 可出售给商人
-
负面状态(Negative Status)
- 虫子咬、流血等
- 提供被动经验(如坚韧)
- 持续负面效果
装备获取方式
- 战斗掉落:随机品质(基于运气)
- 商店购买:
- 常规商店:最高120%品质
- 黑市:可能更高品质
- 制作系统:品质取决于技能等级和材料
装备系统设计理念
- 无耐久度:装备永久有效,不会损坏
- 强调收集:追求更高品质的装备
- 品质随机:增加重玩价值和刷装备的乐趣
2.4 战斗系统(深度优化)
战斗方式
- 实时回合制:基于攻击速度的实时战斗
- 速度机制:
- 攻击速度直接决定攻击频率
- 2倍速度 = 2倍攻击频率
- 最快攻击限制:每秒1次(战斗开始时缩放计时器)
命中与闪避系统(AP/EP系统)
采用非线性计算(参考YAIRPG):
| AP与EP比例 | 命中概率 | 说明 |
|---|---|---|
| AP = 5 × EP | ~98% | 几乎必中 |
| AP = 2 × EP | ~80% | 高命中率 |
| AP = EP | ~50% | 势均力敌 |
| AP = 0.5 × EP | ~24% | 命中困难 |
| AP = 0.2 × EP | ~5% | 几乎打不中 |
AP(Attack Points)计算:
AP = 灵巧 + 智力×0.2 + 技能加成 + 装备加成 + 姿态加成 - 敌人数惩罚
EP(Evasion Points)计算:
EP = 敏捷 + 智力×0.2 + 技能加成 + 装备加成 + 姿态加成 - 环境惩罚
环境惩罚示例:
- 狭窄区域:EP -30%
- 黑暗区域(无夜视):AP和EP各 -20%
- 多敌人:每多1个敌人,AP -5%
伤害计算(三层防御)
步骤1:闪避判定
→ 成功:无伤害
→ 失败:进入步骤2
步骤2:护盾吸收
→ 护盾值完全吸收伤害(可能剩余)
→ 进入步骤3
步骤3:防御力减少
最终伤害 = max(1, (原始伤害 - 护盾吸收 - 防御力) × 暴击倍数)
最小伤害 = max(1, 原始伤害 × 10%) // 防御力最多减少90%
示例:
- 原始伤害:100
- 护盾吸收:30
- 防御力:40
- 暴击倍数:1.5
- 最终伤害 = max(1, (100-30-40) × 1.5) = 45
战斗姿态系统(重要)
| 姿态 | 耐力消耗 | 效果 |
|---|---|---|
| 攻击姿态 | 高 | 攻击力+50%,攻击速度+30%,防御-30% |
| 防御姿态 | 中 | 防御力+50%,护盾+30%,攻击力-30% |
| 平衡姿态 | 低 | 无加成,无惩罚 |
| 快速打击 | 很高 | 攻击速度+100%,攻击力-40%(适合多目标) |
| 重击 | 高 | 攻击力+100%,攻击速度-50% |
姿态切换规则:
- 可随时切换姿态
- 切换时重置攻击进度(防止姿态滥用)
- 姿态影响耐力消耗速度
耐力系统
- 耐力影响:
- 耐力 > 50%:正常效率
- 耐力 0-50%:效率逐渐下降
- 耐力 = 0:攻击速度和攻击力减半
- 耐力恢复:
- 脱离战斗自动恢复
- 食物提供战斗中耐力再生
- 相关技能:"坚持"技能可在无耐力战斗时升级,降低惩罚
经验获取(优化)
- 每次攻击:
- 主经验 = 敌人基础经验 × 10%
- 武器技能经验 = 敌人基础经验 × 5%
- 战斗胜利:
- 主经验 = 敌人基础经验 × 90%
- 武器技能经验 = 敌人基础经验 × 30%
- 难度加成:更强敌人提供更多经验
- 群体加成:多敌人时经验 × √敌人数量
- 例:8个敌人,经验倍率 = √8 ≈ 2.83倍
掉落系统(创新)
- 掉落衰减机制:
- 同种敌人杀得越多,掉落率越低
- 最多降到初始的10%(击杀999+后)
- 避免玩家刷同一个敌人
- 掉落恢复:
- 随时间缓慢恢复
- 恢复速度很慢,鼓励探索新区域
战斗失败
- 后果:返回上次休息的城镇/安全区
- 恢复:回复50%基础生命值
- 惩罚:不掉落物品(友好的失败惩罚)
2.5 经济系统(参考 YAIRPG)
货币系统
- 铜币(Copper):基础货币
- 银币(Silver):1银币 = 100铜币
- 金币(Gold):1金币 = 100银币 = 10,000铜币
市场饱和系统(创新)
核心机制:玩家出售同种物品越多,价格越低
-
价格衰减:
- 初始价格:100%
- 最低价格:初始价格的10%
- 衰减速度:基于出售数量
- 击杀999+同种敌人后,价格降至最低
-
价格恢复:
- 随时间缓慢恢复
- 恢复速度很慢(游戏时间数天)
- 应用于所有商人
-
设计目的:
- 鼓励探索不同区域
- 避免刷同一个敌人
- 增加经济深度
交易系统
-
买卖差价:
- 商人售价:200%基础价格(通常)
- 商人收购价:30%-50%基础价格
- 讨价还价技能:降低差价
- 技能Lv.max:售价200% → 150%,差价从100%降至50%
-
价格波动:
- 每天刷新一次价格
- 浮动范围:±10% ~ ±50%(商品类型不同)
- 黑市波动更大:±40%
-
市场类型:
- 常规市场:始终开放,商品品质最高120%
- 黑市:
- 开放时间:周三、周六 20:00-24:00(游戏时间)
- 特殊商品:中级装备、技能书、稀有物品
- 更高品质可能
- 回收价格:50%(优于常规市场30%)
NPC服务系统
-
战斗教练:
- 购买战斗经验
- 解锁战斗技能
- 提供训练服务
-
训练假人:
- 购买武器经验
- 消耗耐力训练
- 不需要战斗
-
特殊NPC(黑市):
- 奴隶贩子:触发特殊剧情
- 神秘商人:出售稀有物品
2.6 区域与环境系统
区域类型
-
安全区:
- 城镇、营地
- 可休息恢复
- 无敌人
-
普通区域:
- 日夜循环影响
- 夜间(20:00-04:00)有轻微惩罚
-
黑暗区域:
- 洞穴、地下城
- 始终有黑暗惩罚
- 夜视技能可减少惩罚
-
特殊区域:
- 狭窄空间:闪避惩罚(EP-30%)
- 开阔空间:无惩罚
- 恶劣环境:各种特殊惩罚
环境惩罚与适应
| 环境 | 惩罚 | 适应技能 |
|---|---|---|
| 黑暗 | AP/EP各-20% | 夜视(被动获得经验) |
| 狭窄 | EP-30% | 狭窄空间战斗 |
| 恶劣天气 | AP/EP各-10% | 恶劣环境生存 |
技能获得:
- 在环境中被动获得经验
- 无需额外操作
- 技能等级降低惩罚
区域解锁机制
-
技能等级解锁:
- 阅读Lv.5 → 解锁图书馆
- 战斗技能Lv.10 → 解锁高级训练场
-
区域通关解锁:
- 击败区域Boss → 解锁下一区域
- 可能需要多次通关
-
NPC对话解锁:
- 与特定NPC对话 → 获得新区域信息
- 完成任务 → 解锁新区域
-
物品解锁:
- 获得特定物品 → 解锁相关区域
- 例:获得地图 → 解锁新区域
区域活动系统
-
战斗活动:
- 探索:随机遇敌
- 剿灭:消灭指定数量敌人
- Boss战:挑战强大敌人
-
资源活动:
- 采集:获得素材
- 狩猎:获得食物和素材
- 采矿:获得矿石
-
工作活动:
- 时间限制(某些仅在白天开放)
- 获得货币和技能经验
- 可能受技能等级影响收益
2.7 挂机任务系统(优化)
任务类型
-
主动挂机任务:
- 阅读:消耗书籍,获得阅读经验
- 训练:消耗耐力,获得武器技能经验
- 工作:获得货币和技能经验
- 祈祷:获得信仰经验(需要圣经)
-
被动挂机任务:
- 环境适应:在特定环境中被动获得经验(夜视等)
- 负面状态:虫子咬、流血等,获得坚韧经验
- 装备适应:装备特定装备获得相关经验(铁皮等)
任务互斥规则
-
完全互斥:
- 战斗 ↔ 训练
- 不同战斗区域
- 不同工作活动
-
条件互斥:
- 阅读 ↔ 其他主动任务
- 有一心多用技能可同时进行1个额外任务
- 战斗 ↔ 阅读
- 有一心多用技能可同时
- 阅读 ↔ 其他主动任务
-
不互斥:
- 被动任务可与任何任务同时进行
- 可同时有无数个被动任务
经验获取机制
- 挂机期间:每秒获得技能经验
- 基础效率:技能等级影响获取速度
- 父技能加成:父技能等级高于子技能时,提供经验倍率
- 完成任务:获得额外经验奖励
2.8 时间与离线系统
游戏时间系统
- 时间流速:现实1秒 = 游戏时间5分钟
- 时间显示:Day X HH:MM
- 日夜循环:
- 白天:06:00-20:00
- 夜晚:20:00-06:00
- 夜晚在普通区域有轻微惩罚
时间作用
-
市场刷新:
- 每天刷新一次价格
- 黑市在特定时间开放
-
活动限制:
- 某些工作仅在白天开放
- 夜晚影响探索效率
-
事件触发:
- 特定时间触发特殊事件
- 日夜影响某些敌人
离线收益系统
-
基础计算时间:0.5小时(30分钟)
-
广告延长:看广告延长至2.5小时
-
收益计算:
- 基于挂机任务的正常收益
- 不包括战斗收益
- 技能经验按时间计算
-
离线惩罚:
- 超过计算时间的部分不计
- 鼓励定期登录
2.9 图鉴与成就系统
敌人图鉴
- 解锁条件:首次击败敌人
- 显示信息:
- 敌人属性
- 掉落物品和概率
- 击杀数量
- 击败奖励
物品图鉴
- 解锁条件:首次获得物品
- 显示信息:
- 物品属性
- 获取方式
- 用途说明
成就系统
-
战斗成就:
- 击败特定敌人
- 击杀数量达到目标
- 无伤通关等
-
技能成就:
- 技能达到特定等级
- 解锁所有技能
- 技能里程碑达成
-
探索成就:
- 解锁所有区域
- 完成特定探索
- 发现隐藏内容
-
收集成就:
- 收集品质达到特定值
- 收集特定装备
- 图鉴完成度
3. 数值设计(优化版)
3.1 主等级成长
- 经验公式:100 × 1.2^(等级-1)
- 升级奖励:少量基础属性 + 解锁高级技能上限
- 定位:作为参考指标,不是主要成长手段
3.2 技能成长
- 经验公式:等级 × 基础系数
- 玩家等级限制:技能等级 ≤ 玩家等级 × 2
- 里程碑奖励:特定等级提供全局加成
3.3 战斗数值平衡
- 敌人生成:基于区域等级范围
- 属性成长:每级+10%
- 经验曲线:与敌人强度相关
3.4 经济平衡
- 金币获取:战斗掉落、工作、出售物品
- 金币消耗:购买装备、书籍、训练服务
- 市场饱和:防止刷钱机制
- 价格波动:增加经济深度
4. 核心创新点总结
4.1 技能里程碑系统
- 技能达到特定等级提供永久性全局奖励
- 鼓励玩家提升多种技能
- 提供长期目标感
4.2 父技能系统
- 父技能自动继承最高子技能等级
- 为低级子技能提供经验倍率加成
- 增加技能系统深度
4.3 装备品质系统
- 6级品质系统(垃圾到传说)
- 品质影响装备所有属性
- 稀有度提供额外乘数
- 增加装备收集乐趣
4.4 AP/EP命中系统
- 非线性命中计算
- AP与EP比例决定命中概率
- 环境因素影响AP/EP
- 增加战斗策略性
4.5 三层防御机制
- 闪避(完全避免)
- 护盾(吸收伤害)
- 防御力(减少伤害)
4.6 市场饱和系统
- 同种物品出售越多,价格越低
- 最低降至原价的10%
- 随时间缓慢恢复
- 鼓励探索不同区域
4.7 掉落衰减系统
- 同种敌人杀得越多,掉落率越低
- 最低降至初始的10%
- 随时间缓慢恢复
- 避免刷同一个敌人
4.8 部分效率机制
- 即使条件未完全满足,也能获得50%经验
- 降低玩家挫败感
- 保持游戏流畅性
5. 设计理念对比
5.1 与原设计对比
| 方面 | 原设计 | 新设计 | 改进 |
|---|---|---|---|
| 属性系统 | 简单5属性 | 5主属性+5次属性+AP/EP | 更深度 |
| 技能系统 | 简单升级 | 里程碑+父技能+多分类 | 更丰富 |
| 装备系统 | 基础装备 | 6级品质系统 | 更有追求 |
| 战斗系统 | 简单回合制 | AP/EP+姿态+耐力 | 更策略 |
| 经济系统 | 简单买卖 | 市场饱和+价格波动 | 更真实 |
| 掉落系统 | 固定概率 | 衰减+恢复机制 | 更平衡 |
5.2 借鉴YAIRPG的核心点
✓ 技能里程碑系统 ✓ 父技能系统 ✓ 装备品质系统 ✓ AP/EP命中系统 ✓ 三层防御机制 ✓ 市场饱和系统 ✓ 掉落衰减系统 ✓ 战斗姿态系统 ✓ 环境惩罚与适应 ✓ 部分效率机制
5.3 保持原有特色
✓ 纯文字UI风格 ✓ 挂机养成核心 ✓ 技能驱动成长 ✓ 渐进式解锁 ✓ 末世生存主题
6. 开发建议
6.1 实现优先级
Phase 1:核心框架(必须)
- 玩家数据管理
- 技能系统(基础)
- 物品系统(基础)
- 数据持久化
Phase 2:核心玩法(必须)
- 战斗系统(基础版)
- 挂机任务系统
- 经验获取机制
Phase 3:高级系统(重要)
- 装备品质系统
- 技能里程碑系统
- AP/EP战斗系统
- 战斗姿态系统
Phase 4:扩展系统(可选)
- 经济系统(市场饱和)
- 区域环境系统
- 图鉴成就系统
- 父技能系统
Phase 5:优化打磨(可选)
- UI/UX优化
- 数值平衡调整
- 性能优化
- 剧情事件
6.2 技术要点
-
数据结构设计:
- 灵活的技能系统
- 可扩展的物品系统
- 高效的战斗计算
-
性能优化:
- 定时器管理
- 计算属性缓存
- 虚拟列表(长列表)
-
数据验证:
- 物品/技能使用前检查
- 防止异常数据
- 定期保存机制
6.3 平衡性测试
-
数值测试:
- 技能升级速度
- 战斗难度曲线
- 经济平衡
-
玩法测试:
- 挂机效率
- 探索动力
- 长期目标感
-
边界测试:
- 技能满级
- 物品用完
- 极端数值
7. 结语
本设计文档在原有设计基础上,深度借鉴了Yet Another Idle RPG和Proto23的优秀设计理念,创建了一个更加深度、平衡、有策略性的挂机养成游戏系统。
核心改进:
- 从简单升级变为深度技能系统
- 从基础装备变为品质追求系统
- 从简单战斗变为策略性战斗
- 从简单经济变为动态经济系统
设计目标:
- 提供长期目标感(技能里程碑、装备品质)
- 保持挂机友好(离线收益、自动战斗)
- 增加策略深度(战斗姿态、装备搭配)
- 鼓励探索(市场饱和、掉落衰减)
这个设计可以作为开发的基础,后续可根据实际情况调整细节和平衡性。
5.1 玩家数据结构
{
// 基础属性
baseStats: { health, attack, defense, speed, sanity },
// 最终属性
finalStats: { health, attack, defense, speed, sanity, criticalChance },
// 主等级
level: { current, currentExp, maxExp },
// 技能
skills: {
"skillId": { level, exp, unlocked }
},
// 物品
obtainedItems: [],
readBooks: [],
inventory: [
{ itemId, count }
],
// 货币(铜币为单位)
currency: { copper },
// 位置
currentLocation: "locationId",
// 战斗状态
inCombat: false,
combatState: null,
// 挂机任务
activeTasks: [],
negativeStatus: [],
// 市场价格
marketPrices: {
lastRefreshDay: 1,
prices: {}
},
// 离线奖励
offlineReward: {
maxOfflineHours: 0.5,
adBonusTime: 0,
lastAdTime: null
},
// 游戏时间
gameTime: {
day: 1,
hour: 8,
minute: 0,
totalMinutes: 480
},
// 上次登录时间
lastLoginTime: timestamp
}
5.2 配置文件结构
- items.js:所有物品配置
- skills.js:所有技能配置
- locations.js:地点、敌人、掉落配置
- market.js:市场、NPC配置
6. 扩展性设计
6.1 新增技能
- 在 skills.js 添加配置
- 在物品中添加解锁条件
- 实现技能效果(如有特殊效果)
6.2 新增物品
- 在 items.js 添加配置
- 设置解锁技能或效果
- 在市场或掉落表中添加
6.3 新增地点
- 在 locations.js 添加地点配置
- 添加敌人列表
- 创建掉落表
6.4 新增剧情
- 在物品或NPC中添加 special_event
- 在 EventManager 中处理事件
7. 开发优先级
Phase 1:核心框架
- 玩家数据管理
- 技能系统(解锁、升级)
- 物品系统(获得、使用)
- 数据持久化
Phase 2:核心玩法
- 战斗系统
- 任务系统(挂机)
- 经验获取
Phase 3:扩展系统
- 市场系统
- 地点探索
- 掉落系统
Phase 4:UI完善
- 主界面
- 状态页
- 背包页
- 战斗页
- 市场页
Phase 5:优化扩展
- 离线收益
- 时间系统
- 特殊技能(一心多用)
- 剧情事件
8. 技术要点
8.1 关键技术
- 框架:uni-app(Vue 3)
- 存储:uni.setStorageSync/getStorageSync
- 定时器:setInterval(游戏循环)
- 计算属性:动态计算最终属性
8.2 注意事项
- eval使用:技能效果公式使用eval,需确保公式安全
- 数据验证:物品、技能使用前检查条件
- 保存频率:每次状态改变都要保存
- 内存管理:定时器注意清理
8.3 性能优化
- 节流/防抖:频繁操作(如点击)
- 虚拟列表:物品列表较长时
- 延迟加载:非关键数据
9. 测试要点
9.1 功能测试
- 新游戏创建
- 物品获得和解锁技能
- 技能升级和属性加成
- 战斗流程和经验获取
- 市场交易
- 任务挂机
- 离线收益
- 数据保存和加载
9.2 数值平衡
- 主等级成长速度
- 技能升级难度
- 战斗难度曲线
- 经济平衡(金币获取/消耗)
- 时间流速
9.3 边界情况
- 物品用完
- 技能满级
- 负面状态叠加
- 数据异常(如负数)
10. 未来规划
10.1 内容扩展
- 更多技能类型
- 更多地点和敌人
- 更多物品和装备
- 成就系统
- 任务线(剧情)
10.2 功能扩展
- 多存档位
- 云存档
- 排行榜
- 社交功能(交易、对比)
10.3 优化方向
- UI美化(可选图片)
- 音效
- 动画效果
- 数据统计
11. 界面设计规范
11.1 整体布局架构
采用单页面架构,所有内容在一个页面内通过组件切换实现,保持游戏状态连续性。
┌─────────────────────────────────────┐
│ [Tab名称] Day 1 08:00 │ ← 顶部标题栏 (80rpx)
├─────────────────────────────────────┤
│ │
│ │
│ 内容区域 │ ← 中部面板区域
│ (状态 / 地图 / 日志 切换显示) │ (flex: 1)
│ │
│ │
│ │
├─────────────────────────────────────┤
│ [状态] [地图] [日志] │ ← 底部导航 (100rpx)
└─────────────────────────────────────┘
┌─────────────────┐
│ 背包抽屉 │ ← 右侧滑出 (600rpx)
│ InventoryDrawer│ 地图面板「背包」按钮唤出
└─────────────────┘
┌─────────────────┐
│ 事件对话抽屉 │ ← 右侧滑出 (600rpx)
│ EventDrawer │ 事件触发时自动弹出
└─────────────────┘
11.2 面板详细设计
11.2.1 状态面板 (StatusPanel)
上下分区布局:
┌─────────────────────────────────────┐
│ ▓▓▓▓▓▓▓▓░░ HP 80/100 │ ← 生命值进度条
│ ▓▓▓▓▓▓▓▓▓▓ 耐力 100/100 │ ← 耐力进度条
│ ▓▓▓▓▓▓▓▓▓░ 精神 90/100 │ ← 精神进度条
│ │
│ 力量 12 敏捷 10 灵巧 11 智力 10 │ ← 主属性摘要
│ 💰 0金 5银 230铜 │ ← 货币显示
│ │
│ ▼ 更多属性 ──────────────────────── │ ← Collapse 折叠面板
│ ┌─────────────────────────────────┐ │
│ │ 攻击力: 45 防御力: 12 │ │
│ │ 暴击率: 5% 暴击伤害: 1.5x │ │
│ │ AP: 18 EP: 15 │ │
│ │ 攻击速度: 1.0 │ │
│ │ ─────────────────────────────── │ │
│ │ 装备: 木棍 | 无护甲 │ │
│ └─────────────────────────────────┘ │
│ ─────────────────────────────────── │
│ [全部] [战斗] [生活] [特殊] [被动] │ ← 技能筛选 FilterTabs
│ ┌─────────────────────────────────┐ │
│ │ ⚔ 木棍精通 Lv.1 ▓░░░░ │ │ ← 技能列表
│ │ 📖 阅读 Lv.0 ░░░░░ │ │ scroll-view
│ │ 👁 夜视 Lv.0 ░░░░░ 🔒 │ │ 未解锁显示锁
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘
11.2.2 地图面板 (MapPanel)
顶部战斗状态 + 区域列表 + 操作区:
┌─────────────────────────────────────┐
│ 📍 测试营地 [📦 背包] │ ← 当前位置 + 背包按钮
│ 环境: 安全区 │
├─────────────────────────────────────┤
│ ═══ 战斗中 ═══════════════════════ │ ← 战斗状态区(战斗时显示)
│ 🐕 野狗 ▓▓▓▓▓▓░░░░ 18/30 │
│ [攻击] [防御] [平衡] ← 姿态切换 │
├─────────────────────────────────────┤
│ ── 可前往区域 ──────────────────── │
│ ┌─────────────────────────────────┐ │
│ │ 🏪 测试市场 [安全] → │ │ ← 区域列表
│ │ 🌙 测试黑市 [安全] → │ │ scroll-view
│ │ 🌲 测试野外1 [普通] → │ │
│ │ 🦴 测试Boss巢 [危险] 🔒 │ │ 锁=未解锁
│ │ 🕳 地下室 [黑暗] 🔒 │ │
│ └─────────────────────────────────┘ │
├─────────────────────────────────────┤
│ [探索] [剿灭] [工作] [休息] │ ← 区域活动按钮
└─────────────────────────────────────┘
11.2.3 日志面板 (LogPanel)
实时战斗日志 + 系统消息:
┌─────────────────────────────────────┐
│ ┌─────────────────────────────────┐ │
│ │ [08:00] 你进入了测试野外1 │ │ ← info (灰色)
│ │ [08:01] 遭遇了 野狗! │ │ ← system (青色)
│ │ [08:01] 你攻击野狗,造成12点伤害│ │ ← combat (红色)
│ │ [08:01] 野狗攻击你,你闪避了! │ │ ← combat
│ │ [08:02] 暴击! 造成24点伤害 │ │ ← combat (红色+高亮)
│ │ [08:02] 野狗被击败了! │ │ ← system (青色)
│ │ [08:02] 获得: 狗皮 x1, 15铜币 │ │ ← reward (黄色)
│ │ [08:02] 木棍精通 +5 经验 │ │ ← reward
│ │ │ │
│ │ ▼ │ │ ← 自动滚动到底部
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘
11.3 颜色规范
// 背景色
$bg-primary: #0a0a0f; // 主背景 - 深黑
$bg-secondary: #1a1a2e; // 次级背景 - 深蓝黑
$bg-tertiary: #252542; // 三级背景 - 卡片/面板
// 文字色
$text-primary: #e0e0e0; // 主文字 - 浅灰白
$text-secondary: #808080; // 次要文字 - 灰色
$text-muted: #4a4a4a; // 禁用文字 - 深灰
// 强调色
$accent: #4ecdc4; // 主强调 - 青色 (系统消息)
$danger: #ff6b6b; // 危险 - 红色 (战斗/HP低)
$warning: #ffe66d; // 警告 - 黄色 (奖励/重要)
$success: #4ade80; // 成功 - 绿色
// 品质颜色
$quality-trash: #808080; // 垃圾 - 灰色
$quality-common: #ffffff; // 普通 - 白色
$quality-good: #4ade80; // 优秀 - 绿色
$quality-rare: #60a5fa; // 稀有 - 蓝色
$quality-epic: #a855f7; // 史诗 - 紫色
$quality-legend: #f97316; // 传说 - 橙色
// 边框色
$border-color: #2a2a3e; // 边框 - 深紫灰
$border-active: #4ecdc4; // 激活边框 - 青色
11.4 组件规范
11.4.1 目录结构
components/
├── common/
│ ├── ProgressBar.vue // 进度条 (HP/耐力/经验)
│ ├── StatItem.vue // 属性显示行
│ ├── TextButton.vue // 文字按钮
│ ├── Collapse.vue // 折叠面板
│ └── FilterTabs.vue // 筛选标签组
├── layout/
│ ├── TabBar.vue // 底部导航栏
│ └── Drawer.vue // 右侧抽屉
├── panels/
│ ├── StatusPanel.vue // 状态面板
│ ├── MapPanel.vue // 地图面板
│ └── LogPanel.vue // 日志面板
└── drawers/
├── InventoryDrawer.vue // 背包抽屉
└── EventDrawer.vue // 事件对话抽屉
11.4.2 组件Props规范
ProgressBar
| Prop | Type | Default | Description |
|---|---|---|---|
| value | Number | 0 | 当前值 |
| max | Number | 100 | 最大值 |
| color | String | $accent | 进度条颜色 |
| showText | Boolean | true | 显示数值文本 |
| height | String | '16rpx' | 进度条高度 |
Collapse
| Prop | Type | Default | Description |
|---|---|---|---|
| title | String | '' | 折叠标题 |
| expanded | Boolean | false | 是否展开 |
FilterTabs
| Prop | Type | Default | Description |
|---|---|---|---|
| tabs | Array | [] | 标签列表 [{id, label}] |
| modelValue | String | '' | 当前选中 |
Drawer
| Prop | Type | Default | Description |
|---|---|---|---|
| visible | Boolean | false | 是否显示 |
| width | String | '600rpx' | 抽屉宽度 |
12. 测试场景配置
12.1 初始剧情
「测试实验室」
你在一个废弃的实验室中醒来,记忆模糊。桌上放着一根木棍和一本破旧的日记。 门外传来野兽的嚎叫声......
12.2 区域地图
┌─────────────┐
│ 测试营地 │ ← 起点/安全区
│ (受伤冒险者) │
└──────┬──────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 测试市场 │ │ 测试黑市 │ │ 测试野外1 │
│ (商人老张) │ │ (神秘人) │ │ (野狗) │
└─────────────┘ └─────────────┘ └──────┬──────┘
▼
┌─────────────┐
│ 测试Boss巢 │ ← 需击败野狗x5解锁
│ (测试Boss) │
└──────┬──────┘
▼ (需要钥匙)
┌─────────────┐
│ 地下室 │ ← 黑暗区域
│ (黑暗) │
└─────────────┘
区域配置表
| 区域ID | 名称 | 类型 | 环境 | 解锁条件 | 活动 |
|---|---|---|---|---|---|
| camp | 测试营地 | safe | 无 | 初始 | 休息、对话 |
| market | 测试市场 | safe | 无 | 初始 | 交易 |
| blackmarket | 测试黑市 | safe | 无 | 初始 | 特殊交易 |
| wild1 | 测试野外1 | normal | 无 | 初始 | 探索、战斗 |
| boss_lair | 测试Boss巢 | danger | 无 | 击杀野狗x5 | Boss战 |
| basement | 地下室 | dungeon | dark | Boss钥匙 | 探索、阅读测试 |
12.3 测试敌人
| 敌人ID | 名称 | 位置 | HP | 攻击力 | 防御 | 速度 | 经验 | 掉落 |
|---|---|---|---|---|---|---|---|---|
| wild_dog | 野狗 | wild1 | 30 | 8 | 2 | 1.0 | 15 | 狗皮(80%), 狗牙(30%), 5-15铜 |
| test_boss | 测试Boss | boss_lair | 200 | 25 | 10 | 0.8 | 150 | 地下室钥匙(100%), 技能书(50%), 50-100铜 |
12.4 测试物品
武器
| 物品ID | 名称 | 类型 | 基础攻击 | 速度 | 解锁技能 | 说明 |
|---|---|---|---|---|---|---|
| wooden_stick | 木棍 | weapon | 5 | 1.0 | stick_mastery | 初始武器 |
消耗品
| 物品ID | 名称 | 类型 | 效果 | 价值 | 说明 |
|---|---|---|---|---|---|
| bread | 面包 | consumable | 恢复耐力20 | 10铜 | 基础食物 |
| healing_herb | 草药 | consumable | 恢复HP15 | 15铜 | 基础药品 |
书籍
| 物品ID | 名称 | 类型 | 阅读时间 | 经验 | 完成奖励 | 说明 |
|---|---|---|---|---|---|---|
| old_book | 破旧书籍 | book | 60秒 | 阅读+10 | 无 | 测试阅读 |
素材/关键道具
| 物品ID | 名称 | 类型 | 价值 | 说明 |
|---|---|---|---|---|
| dog_skin | 狗皮 | material | 5铜 | 野狗掉落 |
| dog_tooth | 狗牙 | material | 8铜 | 野狗掉落 |
| basement_key | 地下室钥匙 | key | - | Boss掉落,解锁地下室 |
12.5 测试NPC
| NPC ID | 名称 | 位置 | 功能 | 对话 |
|---|---|---|---|---|
| injured_adventurer | 受伤的冒险者 | camp | 初始剧情 | 介绍世界观,提示前往野外 |
| merchant_zhang | 商人老张 | market | 交易 | 买卖物品,测试差价 |
| mysterious_man | 神秘人 | blackmarket | 黑市交易 | 特殊物品,更高品质 |
12.6 测试事件
| 事件ID | 触发条件 | 类型 | 内容 |
|---|---|---|---|
| intro | 新游戏 | story | 测试实验室开场剧情 |
| first_combat | 首次进入wild1 | tips | 战斗教程提示 |
| boss_unlock | 击杀野狗x5 | unlock | 解锁Boss巢提示 |
| boss_defeat | 首次击败Boss | story | Boss剧情+获得钥匙 |
| dark_warning | 进入basement | tips | 黑暗惩罚警告 |
| dark_reading | 在basement阅读 | special | 阅读效率-50%,夜视被动获取 |
12.7 测试验证清单
| 测试项 | 区域 | 验证内容 | 预期结果 |
|---|---|---|---|
| 交易 | 测试市场 | 买卖物品、差价 | 买入200%,卖出30% |
| 黑市 | 测试黑市 | 特殊商品 | 更高品质装备可购买 |
| 战斗 | 测试野外1 | AP/EP、姿态、经验 | 正常战斗流程 |
| Boss战 | 测试Boss巢 | 高难战斗 | 击败后掉落钥匙 |
| 环境惩罚 | 地下室 | 黑暗AP/EP-20% | 命中闪避降低 |
| 黑暗阅读 | 地下室 | 阅读效率-50% | 阅读时间翻倍 |
| NPC对话 | 测试营地 | EventDrawer弹出 | 对话正常显示 |
| 物品使用 | 任意 | 装备/使用/出售 | 功能正常 |
13. 开发步骤文档
Phase 1: 基础框架搭建
目标: 项目目录结构、依赖安装、全局样式
任务清单
- 1.1 创建目录结构
components/common/ components/layout/ components/panels/ components/drawers/ store/ config/ utils/ - 1.2 安装 Pinia:
npm install pinia - 1.3 修改
main.js引入 Pinia - 1.4 修改
uni.scss添加颜色变量 - 1.5 修改
App.vue添加全局样式
验收标准
- 项目可正常运行
- 全局样式生效(暗色背景)
Phase 2: 通用组件开发
目标: 完成所有基础UI组件
任务清单
- 2.1
ProgressBar.vue- 进度条组件 - 2.2
StatItem.vue- 属性显示行 - 2.3
TextButton.vue- 文字按钮 - 2.4
Collapse.vue- 折叠面板 - 2.5
FilterTabs.vue- 筛选标签组 - 2.6
TabBar.vue- 底部导航栏 - 2.7
Drawer.vue- 右侧抽屉
验收标准
- 每个组件可独立使用
- 样式符合设计规范
Phase 3: 核心面板开发
目标: 完成三大主面板
任务清单
- 3.1
StatusPanel.vue- 状态面板- 上区:HP/耐力/精神 + 主属性 + 货币 + Collapse更多
- 下区:FilterTabs + 技能列表
- 3.2
MapPanel.vue- 地图面板- 顶部状态区(位置/战斗状态)
- 区域列表
- 操作按钮 + 背包入口
- 3.3
LogPanel.vue- 日志面板- scroll-view + 自动滚动
- 分类样式(combat/system/reward/info)
- 3.4 重构
pages/index/index.vue为游戏容器- 顶部标题栏
- v-show 面板切换
- TabBar 集成
验收标准
- 三个Tab可正常切换
- 面板布局符合设计稿
Phase 4: 抽屉组件开发
目标: 完成侧边抽屉
任务清单
- 4.1
InventoryDrawer.vue- 背包抽屉- FilterTabs 分类
- 物品列表
- 物品详情/操作
- 4.2
EventDrawer.vue- 事件对话抽屉- NPC信息区
- 对话文本区
- 选项按钮
验收标准
- 地图面板「背包」按钮可打开抽屉
- 抽屉动画流畅
Phase 5: 数据层实现
目标: Pinia Store + 游戏配置
任务清单
- 5.1
store/player.js- 玩家状态- baseStats, finalStats, level
- skills, inventory, equipment
- currency, currentLocation
- 5.2
store/game.js- 游戏状态- currentTab, drawerState
- logs[], gameTime
- inCombat, combatState, activeTasks
- 5.3
config/constants.js- 数值常量 - 5.4
config/skills.js- 技能配置 - 5.5
config/items.js- 物品配置 - 5.6
config/locations.js- 区域配置 - 5.7
config/enemies.js- 敌人配置 - 5.8
config/npcs.js- NPC配置 - 5.9
config/events.js- 事件配置
验收标准
- Store可正常读写
- 配置文件结构完整
Phase 6: 核心系统实现
目标: 实现核心玩法逻辑
任务清单
- 6.1
utils/skillSystem.js- 技能系统- 经验添加、升级判定
- 里程碑检测、父技能同步
- 6.2
utils/combatSystem.js- 战斗系统- AP/EP命中计算
- 三层防御(闪避/护盾/防御)
- 战斗tick、日志输出
- 6.3
utils/itemSystem.js- 物品系统- 使用、装备、卸下
- 品质属性计算
- 6.4
utils/taskSystem.js- 任务系统- 挂机任务管理
- 互斥检测
- 6.5
utils/eventSystem.js- 事件系统- 事件触发检测
- 对话管理
- 6.6
utils/environmentSystem.js- 环境系统- 环境惩罚计算
- 被动技能获取
验收标准
- 战斗流程完整
- 技能可升级
- 物品可使用/装备
Phase 7: 游戏循环实现
目标: 主循环、持久化、离线收益
任务清单
- 7.1
utils/gameLoop.js- 游戏主循环- 每秒tick
- 时间推进、战斗处理
- 任务经验、耐力恢复
- 7.2
utils/storage.js- 存储系统- saveGame(), loadGame(), resetGame()
- logs[]不持久化
- 7.3 修改
App.vue- onLaunch: 加载存档 + 启动循环
- onHide: 自动保存
验收标准
- 游戏时间正常流逝
- 关闭后重开数据保留
- 战斗可自动进行
Phase 8: 集成测试
目标: 按测试清单验证所有功能
任务清单
- 8.1 新游戏流程测试
- 8.2 交易系统测试(市场/黑市)
- 8.3 战斗系统测试(野狗/Boss)
- 8.4 环境系统测试(黑暗惩罚)
- 8.5 阅读系统测试(正常/黑暗)
- 8.6 NPC对话测试
- 8.7 物品系统测试(使用/装备/出售)
- 8.8 技能系统测试(升级/里程碑)
- 8.9 存档系统测试
验收标准
- 所有测试项通过
- 无严重BUG
开发时间估算
| Phase | 预估时间 | 说明 |
|---|---|---|
| Phase 1 | 0.5天 | 基础配置 |
| Phase 2 | 1天 | 7个组件 |
| Phase 3 | 1.5天 | 3个面板 + 主页面 |
| Phase 4 | 1天 | 2个抽屉 |
| Phase 5 | 1天 | Store + 配置 |
| Phase 6 | 2天 | 核心系统 |
| Phase 7 | 1天 | 循环 + 存储 |
| Phase 8 | 1天 | 测试修复 |
| 总计 | 9天 | - |