独立游戏《萌趣乐消消》:我是如何实现体力系统的

112 阅读2分钟

在我独立开发的小游戏 《萌趣乐消消》 中,最近上线了一个常见但关键的机制——体力系统。很多休闲游戏都会有类似设定,目的是控制游戏节奏,同时增加玩家的长期留存。


🔹 规则设计

  • 初始上限:30 点体力
  • 消耗规则:进入任意关卡消耗 5 点体力
  • 返还规则:如果通关,返还 3 点体力
  • 自动恢复:每分钟恢复 1 点体力,直到达到上限

这样的设计有两个考虑:

  1. 保证玩家 玩一关有成本,避免无限刷;
  2. 通关能部分返还,给玩家成就感和正向反馈;
  3. 没有购买体力的机制,保持轻量化。

🔹 数据库设计

单独一张 UserStamina 表,字段:

  • openid:用户唯一标识
  • stamina:当前体力值
  • lastRecoverAt:上一次恢复时间

🔹 Service 层逻辑

写了一个 UserStaminaService,主要功能:

  1. 动态恢复

    • 根据 lastRecoverAt 算出过去多少分钟
    • 每分钟恢复 1 点
    • 更新数据库和 Redis 缓存
  2. 消耗体力

    • 每次进入关卡前,扣除 5 点
    • 如果不足,则提示体力不足
  3. 通关返还

    • 如果玩家胜利,在结算时自动返还 3 点体力
    • 保证不超过上限

🔹 Redis 缓存

  • key:stamina:{openid}
  • 每次查询和更新都写 Redis,保证快速读写
  • 同时同步数据库,防止丢数据

🔹 API 设计

在用户接口里新增:

  • GET /user/stamina → 查询体力
  • POST /user/stamina/consume → 进入关卡扣 5 点
  • POST /user/stamina/refund → 通关后返还 3 点

🔹 总结

体力系统看似只是数值运算,但需要考虑:

  • 节奏感:消耗与返还比例决定玩家是否“想继续玩”
  • 公平性:通关返还避免“玩一关就掉 5 点”过于苛刻
  • 技术实现:动态恢复 + Redis 缓存,保证性能

ChatGPT Image 2025年9月16日 10_47_54.png