身为资深码农猜下bug原理
幻塔吧
全部回复
仅看楼主
level 10
vipcxj
楼主
正常来说不可能搞出这种bug,不是菜到家的程序员都知道抽卡结果绝对不能靠客户端决定。根据我的经验抽卡确实是服务端决定。但事务没提交就直接返回客户端,客户端强退引发事务回滚,导致回档。不过正常来说事务的边界是不会超过一次请求的。既然能事务提交前让客户端看到结果,就说明不止一次请求了。
如果我猜想没错,那么所有卡bug的都是有迹可循的。因为数据库对回滚是有记录的。当然这种记录并不好查,dba估计要睡公司了。
2021年12月24日 12点12分
1
level 1
jy03706238
你。。。这资深可能,嗯,词用得挺多但是。。不太准,首先回滚这玩样儿不是用在处理这块的,基本用在需要网络同步的地方,比如联网的赛车游戏,因为每台计算机浮点数计算结果是不可能一致的,而整数型的物理引擎性能和精度又不行,比如GTAOL在处理车碰撞时才会把服务端发到客户端的数据进行回滚到关键位置,进行插帧补帧等操作让不同用户同步,但是只要用了回滚数据绝对绝对绝对不会是一模一样的,而充值这块只是一个简单的数据根本不涉及到回滚,就是本地有数据在客户端的线程队列里等着提交,但是断网了没提交成功,服务端那边没收到数据也不扣除氪金点,重新上线一下就OJBK了,而不提交的话服务端是不会有任何数据的,这个无法记录,另外也没办法去查到所有卡BUG的人,因为只有提交数据到服务端后才会对应记录,有的人就弄80抽3到4个SSR,就说自己运气好,没有证据怎么封?别问我咋这么清楚。。。。。。。头都快秃了。。
2021年12月24日 12点12分
2
跳虫哥
@-
谁能修好幻塔的bug谁就是资深程序员
2021年12月24日 17点12分
Asasinnn
讲道理,从你的话里甚至觉得你说的都不是数据库,gtaol的网络同步有个毛的数据库回滚
2021年12月25日 00点12分
adoyyds
哈哈哈你俩到底谁是资深
2021年12月24日 12点12分
Asasinnn
@jy03706238
你把网断了看看能不能捡东西进背包或者打怪物打出伤害就知道了,都是实时同步的,5分钟一次真当是单机游戏呢
2021年12月25日 02点12分
level 6
赫格罗斯
你们搁这说啥呢
2021年12月24日 12点12分
3
level 1
jy03706238
真资深程序用屁股都知道这玩样儿是什么问题导致的,幻塔好玩是真好玩,但是开发团队肯定是OP的卧底!
2021年12月24日 12点12分
4
瓜店老板转生😈
有没有可能,我说有没有可能,开发团队整个就是mhy分队,故意搞这出来衬托原神的
2021年12月24日 20点12分
jy03706238
@瓜店老板转生😈
没可能,成本都收不回来,搞宣发不是这样弄的,纯粹程序底层设计问题
2021年12月24日 20点12分
文迪戈
@瓜店老板转生😈
什么原班人马
2021年12月25日 07点12分
魔影昊天
@文迪戈
原班人马草
2021年12月25日 08点12分
level 10
vipcxj
楼主
这种设计初衷可能是为了保持数据一致性,但不幸的是这个架构师没考虑到抽卡随机性至关重要,这bug相当于让玩家有了控制随机性的可能,百分之零点几的ssr概率可以强行变成接近100%
2021年12月24日 12点12分
5
wofule02
说白了,完美的幻塔项目程序员,第一次做抽卡程序??!!!
2021年12月25日 11点12分
level 12
TiAmo💦º
反正都看不懂
2021年12月24日 12点12分
6
level 8
啊这我人晕了
确实 我们其他部门讨论这个事也是觉得这样 要不就是真的逆天 在本地计算
2021年了 还有这么逆天的程序设计
2021年12月24日 12点12分
7
羽恋枫
估计之前是按照单机开发
2021年12月25日 03点12分
啊这我人晕了
@羽恋枫
是的
2021年12月25日 04点12分
啊这我人晕了
@-
本来就是挖来的工作室 水平不是太高 但是确实没想到会这么逆天 都怀疑在本地算了都
2021年12月25日 04点12分
魔影昊天
感觉就是本地计算吧,否则这个bug应该很好修复吧,2021还有这种事真是笑死了
2021年12月25日 08点12分
level 5
随☞⛅
你要真是资深就不可能说出事务没提交先返回客户端这种话了,再菜的程序员也不可能做出这种操作。而且已经很多人验证了就是本地计算,证据也有很多,比如每次重试十连出的紫色黄色位置完全相同,这点基本就能说明你的下次十连早在本地已经计算好了
2021年12月24日 12点12分
9
随☞⛅
@vipcxj
我又没提到网络请求,不过你可真是小天才,重要数据分开处理,而且相互之间还没认证,服务器事务没处理完就敢给客户端回复响应,这种聪明的做法应该也只有你这种小天才能想到了
2021年12月24日 14点12分
vipcxj
这个是你真的比较菜~事务是完全可以做到跨多次请求的,事务是数据库和其他一些类数据库的事,和网络请求没啥关系。只不过这样做很麻烦还容易出问题罢了。
2021年12月24日 12点12分
vipcxj
@随☞⛅
你这属实有病,阅读理解都不会做~
2021年12月24日 15点12分
俺也一样🍄
@随☞⛅
确实,事务都没提交成功就返回信息,除非是实习生在开发
2021年12月24日 15点12分
level 7
q8752472qqq
拿gta来比较。不要说楼主。我都笑喷了。这两个研发的代码都不一样。运算方式也不一样。又不是每个3d游戏都是一种算法
2021年12月24日 12点12分
10
level 8
wishuhappy
卡断网无限领邮件应该是同样原理吧
2021年12月24日 12点12分
11
vipcxj
不知道这个bug是不是真的存在,如果真存在,应该不是同一个原理,因为玩家数据如果存在服务端,回滚后,之前发的东西也会消失。只不过抽卡不一样,抽卡bug本质是让玩家有某种手段能操控随机概率。但邮件不存在随机性。重发多少次还是那些个东西~
2021年12月24日 12点12分
夜见樱🌸
这么一想确实是,但是如果是事务回滚可能是单纯的服务器程序中执行中的事务回滚,而不是涉及数据库的事务回滚?但是这样还是没办法解释,所以大概率还是脱离卡死这个操作触发了购买事件的回滚操作?
2021年12月24日 12点12分
vipcxj
@夜见樱🌸
事务是一个很宽泛的概念,不光数据库,当然最常提到的就是数据库。你可以认为事务是将多个操作打包,要么全部成功,要么全部失败,这些操作包括数据库操作,文件操作,和第三方数据操作,只有数据库自带回滚,其他一般只能靠程序员自己实现。
2021年12月24日 13点12分
vipcxj
@vipcxj
目前实锤了2个bug,一个是ssr抽卡,一个是金密码箱抽ssr武器,这俩都是靠操控随机性实现的。其他那些什么邮件,黑金全是确定性事件,就算能回档,多半也是客户端显示问题,服务端数据是不受影响的~
2021年12月24日 13点12分
level 8
☀️ฅ՞•ﻌ•՞☀️
资深
。我从业七年也不敢自称资深。怎么会有事务回滚呢,和数据库又能扯上什么关系呢。你肯定没做过游戏开发。
2021年12月24日 12点12分
12
岑小山🌿
@☀️ฅ՞•ﻌ•՞☀️
在这个吧里,玩原神的不配发言,有些人就是这个意思。对于他们来说,玩原神的就是OP
2021年12月24日 23点12分
奈美西斯赛高🤤
点开头像,满意离开
2021年12月24日 16点12分
甜里透着苦
@奈美西斯赛高🤤
2021年12月24日 17点12分
☀️ฅ՞•ﻌ•՞☀️
你想说啥
2021年12月24日 17点12分
level 8
贴吧用户_QNSaPMZ
如果是本地计算,真的逆天
2021年12月24日 12点12分
13
vipcxj
如果本地计算,直接一个外挂搞定,卡都不用卡了~
2021年12月24日 12点12分
vipcxj
完美毕竟是大厂,不至于招那么菜的家伙当架构师,我说的原理即使不菜的程序员也可能犯。
2021年12月24日 12点12分
º救世星龙
听说后端是临时工
2021年12月24日 12点12分
血腥来袭
26号出外挂了,确定就是本地服务计算
2021年12月27日 02点12分
level 1
是叶子呀ʕ•̫͡•ོ
不能是程序员报复吧,要不就是留个暗门结果太明显了
2021年12月24日 12点12分
14
level 10
奈美西斯赛高🤤
数据留在客户端不上传服务器……好耳熟啊,当年LOL无限闪现治疗无限破败就是这个bug导致的吧,之后应该不会再有游戏掉这个坑
2021年12月24日 16点12分
15
level 9
牧苏苏gga
不明觉厉
2021年12月24日 17点12分
16
1
2
3
4
尾页