chop-tree


功能详细说明文档

<p>概述</p> <p>本游戏是一款以砍树获取代币(Coin)为主要玩法的休闲游戏。玩家通过砍伐树木获取代币,同时需要管理自身的能量(Energy)。游戏中包含多种可升级的属性和功能,如每次砍树获得的代币数量、能量恢复速度、能量上限、采矿宠物等。还包含宝箱系统和离线采矿功能,增加游戏的趣味性和粘性。</p> <p>功能列表</p> <ol> <li> <p>砍树(Chop Tree)</p> <p>• 玩家通过滑动屏幕砍伐树木,消耗能量获取代币。</p> <p>• 每次砍树消耗 1 点能量,获得一定数量的代币,代币数量可通过升级提升。</p> <p>• 能量会自动恢复,恢复速度可通过升级提升。</p> <p>• 在砍树过程中,有概率出现宝箱。</p> <ol> <li>能量系统(Energy System)</li> </ol> <p>• 能量用于限制玩家的砍树次数,防止过度游戏。</p> <p>• 能量会以每秒一定的速度自动恢复,恢复速度可升级。</p> <p>• 能量上限也可通过升级提升,增加玩家的游戏时间。</p> <p>• 玩家每天有 3 次 能量填满的机会,可以随时使用,使能量立即恢复至最大值。</p> <ol> <li>升级系统(Upgrade System)</li> </ol> <p>• 砍树获得的代币数量升级</p> <p>• 每升级一级,砍树获得的代币数量 +1。</p> <p>• 升级消耗一定数量的代币,升级费用随着等级提升而增加。</p> <p>• 能量恢复速度升级</p> <p>• 每升级一级,能量恢复速度 +1 点/秒。</p> <p>• 升级消耗一定数量的代币,升级费用随着等级提升而增加。</p> <p>• 能量上限升级</p> <p>• 每升级一级,能量上限增加一定数值(例如 +50 点)。</p> <p>• 升级消耗一定数量的代币,升级费用随着等级提升而增加。</p> <ol> <li>宝箱系统(Chest System)</li> </ol> <p>• 随机宝箱</p> <p>• 在玩家砍树过程中,会随机出现宝箱。</p> <p>• 玩家可以点击开启这些宝箱,获得奖励。</p> <p>• 宝箱出现的概率可设定,例如 10%。</p> <p>• 开启宝箱不消耗任何资源。</p> <p>• 每日免费宝箱</p> <p>• 每天玩家可以开启 3 个 免费宝箱。</p> <p>• 开启免费宝箱不需要任何条件或消耗。</p> <p>• 免费宝箱与随机宝箱具有相同的规则和奖励机制。</p> <ol> <li>能量填满机会(Energy Refill Chances)</li> </ol> <p>• 玩家每天有 3 次 能量填满的机会。</p> <p>• 使用能量填满机会可立即将能量恢复至最大值。</p> <p>• 能量填满机会与宝箱无关,独立存在。</p> <p>• 能量填满机会每天重置。</p> <ol> <li>采矿宠物(Mining Pet)</li> </ol> <p>• 玩家可拥有并升级采矿宠物,宠物有 5 个等级,每个等级解锁不同功能:</p> <p>• Lv1:开启自动砍树功能,在线时自动执行砍树操作。</p> <p>• Lv2:添加持续 2 小时的离线采矿模式。</p> <p>• Lv3:延长离线采矿持续时间至 12 小时。</p> <p>• Lv4:离线采矿模式持续 12 小时,获得额外 30% 离线采矿奖励,持续 7 天。</p> <p>• Lv5:离线采矿模式持续 12 小时,获得额外 60% 离线采矿奖励,持续 7 天。</p> <p>• 升级宠物需要消耗一定数量的代币,费用随着等级提升而增加。</p> <ol> <li>离线采矿(Offline Mining)</li> </ol> <p>• 当玩家离线时,具备离线采矿功能的宠物会自动采矿。</p> <p>• 离线采矿的持续时间取决于宠物等级,奖励在玩家重新上线时发放。</p> <p>• 为防止滥用,设置最小离线时间阈值(例如 5 分钟),只有离线时间超过该阈值才计算离线奖励。</p> <p>• 离线奖励只能领取一次,防止频繁断线重连重复领取。</p> <ol> <li>自动砍树(Auto Chop)</li> </ol> <p>• 玩家在线且宠物等级达到 Lv1 及以上时,自动砍树功能生效。</p> <p>• 自动砍树会在每秒自动执行砍树操作,消耗能量并获取代币。</p> <p>详细功能描述</p> </li> <li> <p>砍树功能</p> <p>• 操作方式:玩家在前端界面滑动屏幕进行砍树操作。</p> <p>• 能量消耗:每次砍树消耗 1 点能量。</p> <p>• 代币获取:每次砍树获得的代币数量由 coinPerChop 属性决定,初始值为 1,可通过升级提升。</p> <p>• 宝箱出现:在砍树过程中,玩家有一定概率遇到 随机宝箱,点击开启后可获得奖励。</p> <p>• 逻辑流程:</p> <ol> <li> <p>前端发送 chop_tree 消息至服务器。</p> </li> <li> <p>服务器接收消息,验证用户身份。</p> </li> <li>检查用户是否有足够的能量:</li> </ol> <p>• 如果能量不足,返回错误信息。</p> <p>• 如果能量足够,扣除 1 点能量,增加相应的代币。</p> <ol> <li>检查是否触发随机宝箱:</li> </ol> <p>• 根据设定的概率,确定是否出现宝箱。</p> <p>• 如果出现宝箱,增加用户的可用宝箱数量。</p> <ol> <li>保存用户数据,返回最新的能量、余额和宝箱信息给前端。</li> </ol> </li> <li> <p>能量系统 • 能量恢复:</p> <p>• 能量会以每秒一定的速度自动恢复,初始恢复速度为 1 点/秒。</p> <p>• 恢复速度可通过升级提升,每升级一级,恢复速度 +1 点/秒。</p> <p>• 能量上限:</p> <p>• 初始能量上限为 100 点,可通过升级提升。</p> <p>• 每升级一级,能量上限增加一定数值(例如 +50 点)。</p> <p>• 能量填满机会:</p> <p>• 玩家每天有 3 次 能量填满的机会。</p> <p>• 使用能量填满机会可立即将能量恢复至最大值。</p> <p>• 能量填满机会每天重置,与宝箱系统无关。</p> </li> <li> <p>升级系统 • 升级砍树获得的代币数量:</p> <p>• 每升级一级,coinPerChop 属性 +1。</p> <p>• 升级费用计算方式:100 * 当前 coinPerChop 值。</p> <p>• 升级能量恢复速度:</p> <p>• 每升级一级,energyRecoveryRate 属性 +1。</p> <p>• 升级费用计算方式:100 * 当前 energyRecoveryRate 值。</p> <p>• 升级能量上限:</p> <p>• 每升级一级,maxEnergy 属性增加 50 点。</p> <p>• 升级费用计算方式:100 * (当前 maxEnergy / 100)。</p> </li> <li> <p>宝箱系统 • 随机宝箱:</p> <p>• 在玩家砍树过程中,有一定概率出现随机宝箱(例如 10%)。</p> <p>• 玩家可以点击开启这些宝箱,获得奖励。</p> <p>• 奖励内容可包括代币、道具等,不包含能量填满机会。</p> <p>• 开启宝箱不消耗任何资源。</p> <p>• 每日免费宝箱:</p> <p>• 每天玩家可以开启 3 个 免费宝箱。</p> <p>• 开启免费宝箱不需要任何条件或消耗。</p> <p>• 奖励内容与随机宝箱相同。</p> <p>• 免费宝箱开启次数每天重置。</p> <p>• 能量填满机会:</p> <p>• 能量填满机会与宝箱系统无关,独立存在。</p> <p>• 玩家每天有固定次数的能量填满机会,可随时使用。</p> </li> <li> <p>能量填满机会 • 每日次数:</p> <p>• 玩家每天有 3 次 能量填满机会。</p> <p>• 次数每天重置。</p> <p>• 使用方式:</p> <p>• 玩家可在任何时候使用能量填满机会,将能量立即恢复至最大值。</p> <p>• 使用能量填满机会不需要任何额外条件或消耗。</p> <p>• 逻辑流程:</p> <ol> <li> <p>前端发送请求至 /api/energy/refill 接口。</p> </li> <li> <p>服务器验证用户身份,检查当天已使用的能量填满次数。</p> </li> <li> <p>如果未超过限制,将能量恢复至最大值,增加已使用次数。</p> </li> <li> <p>保存用户数据,返回成功信息。</p> </li> <li>如果已用完次数,返回错误信息。</li> </ol> </li> <li> <p>采矿宠物 • 升级效果:</p> <p>• Lv1:开启自动砍树功能。</p> <p>• Lv2:添加持续 2 小时的离线采矿模式。</p> <p>• Lv3:延长离线采矿持续时间至 12 小时。</p> <p>• Lv4:离线采矿模式持续 12 小时,获得额外 30% 离线采矿奖励,持续 7 天。</p> <p>• Lv5:离线采矿模式持续 12 小时,获得额外 60% 离线采矿奖励,持续 7 天。</p> <p>• 升级费用:</p> <p>• 升级费用计算方式:500 * 下一级宠物等级。</p> <p>• 逻辑流程:</p> <ol> <li> <p>前端发送请求至 /api/upgrade/pet 接口。</p> </li> <li> <p>服务器验证用户身份,检查用户余额是否足够。</p> </li> <li> <p>如果足够,扣除相应代币,提升宠物等级,更新对应功能。</p> </li> <li> <p>保存用户数据,返回最新的宠物等级和功能状态。</p> </li> <li>如果余额不足,返回错误信息。</li> </ol> </li> <li> <p>离线采矿 • 触发条件:</p> <p>• 宠物等级达到 Lv2 及以上。</p> <p>• 用户离线时间超过最小离线时间阈值(例如 5 分钟)。</p> <p>• 奖励计算:</p> <p>• 根据用户的 coinPerChop 属性和实际离线时间计算基础奖励。</p> <p>• 离线时间不得超过宠物等级对应的离线采矿持续时间。</p> <p>• 如果宠物等级达到 Lv4 或 Lv5,离线奖励有额外加成。</p> <p>• 逻辑流程:</p> <ol> <li> <p>用户断线时,服务器记录离线时间。</p> </li> <li> <p>用户重新上线时,服务器计算离线时间和应得奖励。</p> </li> <li> <p>检查离线时间是否超过最小阈值,且离线奖励未领取。</p> </li> <li> <p>计算奖励,更新用户余额,标记离线奖励已领取。</p> </li> <li>返回离线奖励信息给前端。</li> </ol> </li> <li> <p>自动砍树 • 触发条件:</p> <p>• 宠物等级达到 Lv1 及以上。</p> <p>• 用户在线且有足够的能量。</p> <p>• 逻辑流程:</p> <p>• 服务器每隔一定时间(例如 1 秒)为开启自动砍树功能的用户执行砍树操作。</p> <p>• 检查用户能量是否足够,扣除能量,增加代币。</p> <p>• 保存用户数据,发送最新的能量和余额信息给前端。 数据模型 用户模型(User) 包含以下主要字段: • id: 用户唯一标识符。</p> <p>• balance: 用户当前的代币余额。</p> <p>• energy: 用户当前的能量值。</p> <p>• maxEnergy: 用户的能量上限。</p> <p>• energyRecoveryRate: 能量恢复速度(点/秒)。</p> <p>• lastEnergyUpdate: 上次能量更新时间,用于计算自动恢复。</p> <p>• coinPerChop: 每次砍树获得的代币数量。</p> <p>• petLevel: 采矿宠物等级。</p> <p>• autoChopEnabled: 是否开启自动砍树功能。</p> <p>• offlineMiningDuration: 离线采矿持续时间(毫秒)。</p> <p>• offlineMiningBonus: 离线采矿奖励加成比例。</p> <p>• offlineMiningBonusEndTime: 离线采矿奖励加成结束时间。</p> <p>• lastLogoutTime: 上次登出时间,用于计算离线奖励。</p> <p>• offlineMiningCollected: 是否已领取离线奖励,防止重复领取。</p> <p>• availableChests: 玩家当前可用的宝箱数量(包括随机宝箱和每日免费宝箱)。</p> <p>• dailyFreeChestsOpened: 当天已开启的每日免费宝箱数量。</p> <p>• lastChestReset: 上次重置宝箱计数的日期。</p> <p>• dailyEnergyRefillsUsed: 当天已使用的能量填满次数。</p> <p>• lastEnergyRefillReset: 上次重置能量填满计数的日期。</p> </li> </ol> <h1>接口设计文档</h1> <h2>WebSocket 消息接口</h2> <h3>砍树操作</h3> <p><strong>消息类型</strong>:<code>chop_tree</code></p> <p><strong>客户端发送</strong>:</p> <pre><code class="language-json">{ &amp;quot;type&amp;quot;: &amp;quot;chop_tree&amp;quot; }</code></pre> <p><strong>服务器响应</strong>:</p> <pre><code class="language-json">{ &amp;quot;type&amp;quot;: &amp;quot;balance_updated&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt;, &amp;quot;energy&amp;quot;: &amp;lt;最新能量&amp;gt;, &amp;quot;availableChests&amp;quot;: &amp;lt;可用宝箱数量&amp;gt; }</code></pre> <h3>用户状态更新</h3> <p><strong>消息类型:user_status</strong></p> <p><strong>服务器在用户上线时发送,包含用户的最新状态信息。</strong></p> <pre><code class="language-json">{ &amp;quot;type&amp;quot;: &amp;quot;user_status&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;余额&amp;gt;, &amp;quot;energy&amp;quot;: &amp;lt;能量&amp;gt;, &amp;quot;maxEnergy&amp;quot;: &amp;lt;能量上限&amp;gt;, &amp;quot;energyRecoveryRate&amp;quot;: &amp;lt;能量恢复速度&amp;gt;, &amp;quot;coinPerChop&amp;quot;: &amp;lt;每次砍树获得的代币数量&amp;gt;, &amp;quot;petLevel&amp;quot;: &amp;lt;宠物等级&amp;gt;, &amp;quot;autoChopEnabled&amp;quot;: &amp;lt;是否开启自动砍树&amp;gt;, &amp;quot;availableChests&amp;quot;: &amp;lt;可用宝箱数量&amp;gt;, &amp;quot;dailyEnergyRefillsUsed&amp;quot;: &amp;lt;当天已使用的能量填满次数&amp;gt; }</code></pre> <p><strong>离线奖励领取</strong></p> <p><strong>消息类型:offline_rewards_collected</strong></p> <p><strong>服务器在用户重新上线并领取离线奖励后发送。</strong></p> <pre><code class="language-json">{ &amp;quot;type&amp;quot;: &amp;quot;offline_rewards_collected&amp;quot;, &amp;quot;message&amp;quot;: &amp;quot;你获得了 &amp;lt;奖励数量&amp;gt; 个离线奖励代币!&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt; }</code></pre> <h2>错误消息</h2> <p><strong>消息类型:error</strong></p> <p><strong>服务器在发生错误时发送。</strong></p> <pre><code class="language-json">{ &amp;quot;type&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;错误信息&amp;gt;&amp;quot; }</code></pre> <h2>RESTful API</h2> <p><strong>升级砍树获得的代币数量</strong></p> <p><strong>请求方式:POST</strong></p> <p><strong>接口:/api/upgrade/coin-per-chop</strong></p> <p><strong>请求头:Authorization: Bearer &lt;token&gt;</strong></p> <p><strong>服务器响应:</strong></p> <pre><code class="language-json">{ &amp;quot;message&amp;quot;: &amp;quot;砍树获得的代币数量已升级!&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt;, &amp;quot;coinPerChop&amp;quot;: &amp;lt;最新的 coinPerChop 值&amp;gt; }</code></pre> <h2>升级能量恢复速度</h2> <p><strong>请求方式:POST</strong></p> <p><strong>接口:/api/upgrade/energy-recovery</strong></p> <p><strong>请求头:Authorization: Bearer &lt;token&gt;</strong></p> <p><strong>服务器响应:</strong></p> <pre><code class="language-json">{ &amp;quot;message&amp;quot;: &amp;quot;能量恢复速度已升级!&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt;, &amp;quot;energyRecoveryRate&amp;quot;: &amp;lt;最新的 energyRecoveryRate 值&amp;gt; }</code></pre> <h2>升级能量上限</h2> <p><strong>请求方式:POST</strong></p> <p><strong>接口:/api/upgrade/max-energy</strong></p> <p><strong>请求头:Authorization: Bearer &lt;token&gt;</strong></p> <p><strong>服务器响应:</strong></p> <pre><code class="language-json">{ &amp;quot;message&amp;quot;: &amp;quot;能量上限已升级!&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt;, &amp;quot;maxEnergy&amp;quot;: &amp;lt;最新的 maxEnergy 值&amp;gt; }</code></pre> <h2>升级采矿宠物</h2> <p><strong>请求方式:POST</strong></p> <p>**接口:/api/upgrade/pet</p> <p><strong>请求头:Authorization: Bearer &lt;token&gt;</strong></p> <p><strong>服务器响应:</strong></p> <pre><code class="language-json">{ &amp;quot;message&amp;quot;: &amp;quot;采矿宠物已升级到 Lv&amp;lt;宠物等级&amp;gt;!&amp;quot;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt;, &amp;quot;petLevel&amp;quot;: &amp;lt;最新的宠物等级&amp;gt;, &amp;quot;autoChopEnabled&amp;quot;: &amp;lt;是否开启自动砍树&amp;gt;, &amp;quot;offlineMiningDuration&amp;quot;: &amp;lt;离线采矿持续时间&amp;gt;, &amp;quot;offlineMiningBonus&amp;quot;: &amp;lt;离线采矿奖励加成比例&amp;gt;, &amp;quot;offlineMiningBonusEndTime&amp;quot;: &amp;lt;离线采矿奖励加成结束时间&amp;gt; }</code></pre> <h2>开启宝箱</h2> <p><strong>请求方式:POST</strong></p> <p>**接口:/api/chest/open</p> <p><strong>请求头:Authorization: Bearer &lt;token&gt;</strong></p> <p><strong>服务器响应:</strong></p> <pre><code class="language-json">{ &amp;quot;message&amp;quot;: &amp;quot;宝箱开启成功!你获得了奖励。&amp;quot;, &amp;quot;availableChests&amp;quot;: &amp;lt;剩余可用宝箱数量&amp;gt;, &amp;quot;balance&amp;quot;: &amp;lt;最新余额&amp;gt;, // 其他奖励信息 }</code></pre> <h2>使用能量填满机会</h2> <p><strong>请求方式:POST</strong></p> <p><strong>接口:/api/energy/refill</strong></p> <p><strong>请求头:Authorization: Bearer &lt;token&gt;</strong></p> <p><strong>服务器响应:</strong></p> <pre><code class="language-json">{ &amp;quot;message&amp;quot;: &amp;quot;能量已填满!&amp;quot;, &amp;quot;energy&amp;quot;: &amp;lt;最新能量&amp;gt;, &amp;quot;dailyEnergyRefillsUsed&amp;quot;: &amp;lt;当天已使用的能量填满次数&amp;gt; }</code></pre>

页面列表

ITEM_HTML