【经典BUG分享】【不止是一份技术贴】【体力发放】

2023-12-11 13:38

本文主要是介绍【经典BUG分享】【不止是一份技术贴】【体力发放】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【经典BUG分享】【不止是一份技术贴】【体力发放】

体力发放的BUG

描述现象:戏有个体力的概念,类似于神仙道的设定,就是每天中午12点和下午6点会发放40点体力,然后检查到部分账号没有发到体力
解决思路:是因为这些账号没有登录吗?验证之后发现,不是因为这些账号没有登录,在线的也没有获得体力,那么原因在哪里呢?
回服务端查看原代码,local interval12, interval18 = isPassHour(oldtime, nowtime, 12), isPassHour(oldtime, nowtime, 18)。这句话是这样的逻辑,就是它记录了两个时间,一个是oldtime,一个是nowtime。就是上一次领取体力的时间和,这一次现在的时间,中间有没有12点这个时间和18点这个时间,如果有的话,就给他发体力。

而这个逻辑确实不应该这样写,而缺少的逻辑覆盖点应该是oldtime可不可信,是否定时轮询事件没有触发这种问题

解决办法:

更换了一个逻辑,nowtime大于12点,并且当天没有领过,就给他发,当出现跨天的情况时,处理跨天的情况。这样的逻辑减少了不可信的因素,相对来说安全性会更高。验证后确实是正确的,第二天的体力发放也正常了。

验证方法:

比如这里分成两个层次来考虑:
1oldTimenewTime的设置点前后的数据正确性。
2、直接调用接口,手动设置oldTimenewTime,验证这个逻辑的正确性

延伸拓展:

一般来说,服务器的架构有通用的处理每天,每周的timer。很多游戏都是这样做的,这块做成通用的逻辑,timer中的变量是每天自动reset

做系统的程序不需要关心这个,只需要保证这个变量是一个每日的timer类型就可以了

而登陆模块会做这种事情,登陆的时候判断是不是跨天,如果跨天,处理timer

对于一个调用,无外乎是参数正确和函数正确两个层面。比如回档类的问题,那么测试思维的突破就是测试的验证点不应该是单纯的游戏中看到的数值,而是这个东西已经被写到数据库了。而如何验证这个东西被写到数据库了?这是测试手段和测试方法

其次,我们应该想想,游戏内有没有什么其他东西是每日清除的呢?如果有,那么必然有模块来处理这样的类型。那么完全可以用两个变量来标记12点已经领取和18点已经领取,而这两个变量是每天会清的,这样逻辑就简单了。

这篇关于【经典BUG分享】【不止是一份技术贴】【体力发放】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/480880

相关文章

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl