第25章 · Buddy虚拟宠物系统
第25章 · Buddy虚拟宠物系统
25.1 Bones(骨架):确定性生成
buddy/目录实现了一个完整的虚拟宠物系统。最独特的设计是"确定性哈希生成"——每个用户的宠物不是随机生成的,而是从用户ID确定性派生的。这意味着:
- 同一用户永远拥有相同的宠物
- 宠物是用户身份的"视觉指纹"
- 没有保存/加载机制——宠物从用户ID实时计算
18种物种和5级稀有度构成了宠物的"骨架"(Bones)。物种和稀有度的分配由用户ID的哈希值决定,稀有度越高的物种出现概率越低。
稀有度颜色通过RARITY_COLORS枚举定义,从常见到传说:
- Common(常见)
- Uncommon(不常见)
- Rare(稀有)
- Epic(史诗)
- Legendary(传说)
25.2 Soul(灵魂):学习型个性
如果说Bones是宠物的外表,Soul则是宠物的"个性"。与确定性的Bones不同,Soul是学习型的——它会根据用户的使用模式逐渐发展出独特的个性属性。
25.3 CompanionSprite:动画系统
CompanionSprite组件实现了宠物的终端动画:
const TICK_MS = 500 // 动画帧间隔
const BUBBLE_SHOW = 20 // 对话气泡显示时长(~10秒)
const FADE_WINDOW = 6 // 气泡淡出窗口(~3秒)
const PET_BURST_MS = 2500 // 抚摸后爱心浮动时长空闲动画序列:
const IDLE_SEQUENCE = [0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 2, 0, 0, 0]
// 0 = 休息, 1-2 = 小动作, -1 = 第0帧眨眼抚摸效果(/buddy pet命令触发):
♥ ♥
♥ ♥ ♥
♥ ♥ ♥
♥ ♥ ♥
· · ·5帧心形浮动动画,持续约2.5秒。
25.4 设计哲学
在一个严肃的CLI开发工具中放入虚拟宠物系统,这是一个大胆的设计决策。但从产品心理学角度看,这有多重意义:
- 情感连接:用户与工具建立情感纽带,增加留存
- 身份认同:确定性生成的宠物成为用户的"数字分身"
- 压力缓解:在高压的编码工作中提供轻松的互动
- 社交货币:稀有宠物成为用户之间的谈资