顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2017-11-19 03:49:08
看板 C_Chat
作者 seaEPC (沒看見,我沒看見 >_<)
標題 Re: [閒聊] 七龍珠爆裂激戰 炎上中
時間 Thu Nov 16 15:18:45 2017


※ 引述《dsa3717 (FishCA)》之銘言:
: http://dbz-dokkan.bngames.net/info1116.html
: 官方出正式聲明了
: 還把出問題的程式碼貼出來www
小弟鍵盤工程師沒有玩,但是根據文章大概是這麼個意思(盡量白話):

遊戲裡面卡片是以ID來存卡片資料的
當程式因為某些緣故要展現腳色資料的時候(列出卡池啦,展示你已經有的卡片等等)
會利用卡片ID去查對應的資料然後顯示給你
而文章裡那段code就是流程

①是
傳入需求的卡片ID列表,如果該卡片是你APP啟動後已經有顯示過的卡片
那該卡片的資料會已經在你手機記憶體裡
而如果沒有顯示過的卡片呢? 就找不到,會是個空指標

於是接著②
程式利用卡片ID去資料庫查相關資料,並抓回來填進cache裡的空缺
資料都填滿後就處理完畢


邏輯上是這樣,但是這邊遇到的BUG是
他從資料庫查回來的資料並沒有排序,而程式也沒有比對ID,直接依照抓回來的順序填坑


用他給的舉例來講:
你要查詢的卡片ID是 1 3 5 7 9 (已按大小排序)
手機已經顯示過,存在記憶體裡的卡片資料是 1 3 5 空 9
所以缺了7的資料,就要用②的方式去資料庫查7的資料回來

然而他的查詢語法沒排序(估計table欄位也沒有),所以查回來的資料可能是 9 3 7 1 5
然後程式直接做比對: 1 3 5 空 9
                    9 3 7 1  5
好,所以他就把1的資料給放進記憶體裡的那個空白去了  (開放吐槽)

所以即使你用 1 3 5 7 9 去查,也會變成查到 1 3 5 1 9 的資料,自然顯示錯誤

而記憶體裡的卡片資料是會因為你APP啟動後的操作而變動的

所以上面這個BUG會造成不同人有不同的錯誤顯示

然而如果你去按スカウターボタン,程式會去伺服抓正確的id list回來蓋掉你手機記憶
體裡的資料,就不會有這樣的問題出現


大概是這樣,有錯請指正

--
解BUG超有趣的啦

--
         
                                       
                       
<(┘╴└)>﹍﹍﹍                                     
 ︿ ﹨︿    ╴▅
                                    生命,就該浪費在

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.75.122
※ 文章代碼(AID): #1Q3JlOb4 (C_Chat)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1510816728.A.944.html
Chantaljones: 樓下你信Bandai嗎1F 11/16 15:20
noob9527: 工程師的角度來看 我信2F 11/16 15:20
Satoman: 我信,這bug很蠢但不是不可能,因為我碰過更扯的3F 11/16 15:22
如果是快速開發(各種意義上),的確會出現很多意料外的東西
crazycy: 快推不然別人以為我看不懂4F 11/16 15:22
BoatLord: 一夜燒百億5F 11/16 15:23
Satoman: 以遊戲測試的角度來看,也是有可能會被漏掉沒錯6F 11/16 15:23
sixthday: 我看的心得也差不多 重點在為什麼DB來的是錯的沒有講7F 11/16 15:24
Satoman: 因為不管是研發還是qa,他們手上的裝置一定都有完整的資8F 11/16 15:24
Satoman: 料
GPX2020: 我好奇這包如果是真的 出包工程師會什麼下場10F 11/16 15:24
Satoman: 所以才會到了玩家手上的裝置才出現問題11F 11/16 15:25
genesic: 他不是去server抓喔,sqlite是client端的db12F 11/16 15:30
genesic: 他server用sqlite的話也太扯
沒錯,應該是手機內建的,不然查一次就要連回server把所有卡片資料都抓回來也太...
敲內文的時候用是想寫的淺一點所以用'資料庫'去代換掉sqlite了,怕有人看不懂
kuninaka: 這種寫法真的蠻奇妙的,第一次看到14F 11/16 15:33
有不少想吐槽的地方,不過就算了,可能寫程式的工程師也沒心力/時間去優化吧
先上了能動,後面再說
kuninaka: 大概是把server資料下載後放到sqlite吧15F 11/16 15:34
genesic: 如果讓app可以直連db的話就更扯,開不到一分鐘db就爆了吧16F 11/16 15:34
※ 編輯: seaEPC (60.250.75.122), 11/16/2017 15:42:48
genesic: 這段code有點摸魚摸到大白鯊的感覺,老實一點hash map就17F 11/16 15:37
genesic: 好了,結果看起來像是sql cmd忘記加order by id
wxyz899: 每個人看到的卡池不一樣是這次才有的還是一直都有的?19F 11/16 15:39
maxi326: 這也能信, 我也只是笑笑, 連抽蛋的random部份一點都沒有20F 11/16 15:41
maxi326: 是在信甚麼, 科科.
killerj466: 寫得看得懂 給推22F 11/16 15:43
killerj466: 應該說也不是信不信這次的問題 而是之後能不能保證的
killerj466: 問題  這次他也把石頭全數吐回來+300石了
kuninaka: 只是這可以解釋100%嗎?25F 11/16 15:44
genesic: 又不是在討論信不信的問題,信不信是沒有答案的26F 11/16 15:44
wxyz899: 抽蛋 random 的肯定是放在 server 端, client 只能收結果27F 11/16 15:45
killerj466: 這次不信也就罷了 問題是他後台是不是還是那樣很令人28F 11/16 15:45
genesic: 就算他把整個server的code給你看,你也可以說他實際跑的29F 11/16 15:45
genesic: 不是這些code
sixthday: 這篇是在把官方貼的 code 翻成白話文31F 11/16 15:45
Satoman: 大家是在討論表單出包,不是轉蛋機率問題32F 11/16 15:46
HETARE: 原文已有說空缺的資料是去裝置的儲存空間抓而非從server載33F 11/16 15:46
Satoman: 現在就是你無法證明他轉蛋機率是錯的,他也無法證明自己34F 11/16 15:47
Satoman: 沒動手腳
genesic: 只要有人貼出來抽到不在表單內的角色,就可以證明只是顯36F 11/16 15:48
kuninaka: 這個可以解釋大家看到的不一樣的資料37F 11/16 15:48
genesic: 示錯誤,但這個太難了38F 11/16 15:49
Satoman: 照這bug的結果就是純粹的表單出包,信不信由你這樣39F 11/16 15:49
sixthday: @genesic 下一篇就是?40F 11/16 15:50
j9145: 就算真的是這BUG,也不能保證它們轉蛋過去不是這樣撈資料。41F 11/16 15:50
sixthday: 啊沒事 不太一樣42F 11/16 15:50
andy0481: 另一個角度想啦 官方想賺錢就用很爛的大獎率就好了 像是43F 11/16 15:53
andy0481: 1%之類的 搞這種東西 要額外弄工程師去搞 還只能多騙一
andy0481: 點抽到有的大課長的錢 還很容易被大數統計抓出來黑掉
andy0481: 花額外成本去多賺一點點 風險大到靠杯 這麼智障我是不信
andy0481: 啦..
j9145: 人性就是抽越多越會覺得下一抽就中,所以他這樣搞很容易釣48F 11/16 15:55
j9145: 到課長。 而且如果不是出這包,想驗證還沒辦法
eddiego 
eddiego: 這麼智障我是不信?  還是信比較好  智障沒有極限的50F 11/16 15:57
keerily: 風險不大呀,機率這東西就是這樣,運氣不好就是抽不到51F 11/16 16:00
j9145: 除了痛定思痛把整個轉蛋機制重寫,設個保底機制,不然這信52F 11/16 16:01
j9145: 任度危機基本是無解了
genesic: 其實營運最喜歡看到的是大家都抽得到而不是大家都抽不到54F 11/16 16:01
keerily: 今天他出這包,課長1000抽抽不到也沒辦法證實卡池沒這卡55F 11/16 16:01
genesic: 最好是你抽到之後上SNS或論壇狂曬猛曬,這種營運最愛了56F 11/16 16:02
keerily: 喜歡大家都抽的到(X) 喜歡大家都課到有(O)57F 11/16 16:02
j9145: 營運才不會care玩家抽不抽得到,重點是玩家掏了多少錢。58F 11/16 16:03
genesic: 低機率只是想要讓你抽到時有快感,並不是為了讓你抽不到59F 11/16 16:03
eternaldark: 那有沒有可能他資料是從你能抽到的卡池抓結果卡池沒60F 11/16 16:03
eternaldark: 有所以造成資料短缺? 我不懂程式不知能否寫成這樣=3=
globe1022: 說實在我也信,其實沒必要去分帳號卡池不一樣,62F 11/16 16:04
TeamNTR: 大家都抽的到那還幹嘛曬? 保皇派滾63F 11/16 16:04
genesic: 你要這樣想我也可以理解囉,大部分玩家都是這樣想64F 11/16 16:04
aaaaooo: sqlite的東西應該是in-app更新下載回來的吧 那這樣理論上65F 11/16 16:04
genesic: 其實今天營收跟這個卡片吸不吸引人比較有關,跟抽中的機66F 11/16 16:05
TeamNTR: 在前篇文章畫虎爛被戳破還來耍屌==67F 11/16 16:05
genesic: 率"比較"無關68F 11/16 16:05
j9145: 快感 X 投更多錢 O,你搞錯因果了。69F 11/16 16:05
genesic: 因為我也沒有證據,一直找不到機率跟營收的相關性70F 11/16 16:06
j9145: 如果真的希望玩家都抽得到,設保底就好71F 11/16 16:06
keerily: 分池對營運來說不會沒必要,分的好可以增加大量的營收72F 11/16 16:06
aaaaooo: 不用再按スカウターボタン重抓server資料重開app就好才對73F 11/16 16:07
genesic: 對啊,大陸數字機這方面比較強,都會有保底,日本的很少74F 11/16 16:07
Satoman: 專業工程師花時間出來解釋,還被說是保皇派75F 11/16 16:07
Satoman: 這篇的原po好口憐
keerily: 還有曬卡這種事,如果大家都有了,曬卡就一點意義都沒有77F 11/16 16:08
j9145: 找不到是你搞錯,關鍵字:賭場數學78F 11/16 16:08
genesic: 漏字了,大陸遊戲在處理跟數字有關的部分比日本強太多了79F 11/16 16:08
andy0481: 所以說啦 強化曬卡程度 調整看的到的%數直接簡單多了80F 11/16 16:09
andy0481: 1%的強卡跟被偷調機率成1%表定5%的強卡 實際抽到的機率
andy0481: 一樣是1% 但是前者曬度高多了 根本不用去搞什麼偷調
andy0481: 後者還要被大數檢驗跟課長驗證抓出實際只有1% 風險超大
hanks0802: 1%喔,很可惜這遊戲的新限定都不到1%XD84F 11/16 16:13
j9145: 有甚麼好風險大的,似乎沒搞懂這次問題重點不在機率不實。85F 11/16 16:14
j9145: 而是他們搞「動態機率」
hanks0802: 而最稀有的LR卡都是約0.04-5%而已87F 11/16 16:15
genesic: 我也沒全世界的營運都接觸過,無法證明沒有營運不是這樣88F 11/16 16:15
genesic: 也是聽過有不少營運是用直覺不是用數據經營遊戲
genesic: 所以我也實在無法反駁
j9145: 不管直覺或數據都不想讓你都抽中啊,不然他們要吃甚麼。91F 11/16 16:18
j9145: 願意給你容易抽中只是怕太多人沒抽到被靠杯而已啦
genesic: 我懂你的意思啊,我把機率偷偷調低,玩家就會更用力抽93F 11/16 16:23
genesic: 這個邏輯非常的直覺
andy0481: 樓上這招有例子啊 GBF的猴娘 結果就是輕鬆抓出來罵翻95F 11/16 16:24
andy0481: 問題是今天被質疑的這招是搞各個玩家的池子不一樣
andy0481: 這招的效益完全就莫名其妙了..成本還超高
keerily: 猴妹事件是標註不實,Up角本來就沒說有猴妹98F 11/16 16:26
genesic: 這招有例子不代表這招有成功啊99F 11/16 16:27
genesic: 現在遊戲這麼多,我相信任何招式應該都會有例子吧
keerily: 只是讓大家覺得有,然後Cy就搭順風車行銷101F 11/16 16:27
keerily: 順勢改出天井+顯示機率讓自己變成佛心公司
keerily: 不然Cy這邊站的住腳,也不用怕被告
keerily: 玩家還是一樣在玩,那時燒的人沒在玩的還比較多
j9145: 轉蛋就是一種賭博,去搜尋賭場機率就一堆例子了105F 11/16 16:33
iceisland: 我大海膽太太106F 11/16 16:45
zack2: 除非有人能證明他抽出不在清單內的角色 不然官方推給前端說107F 11/16 17:08
zack2: 單純是清單顯示異常 實際後台運作沒問題  鬼才信xD
keerily: 這麼多人玩的遊戲,結果目前仍沒人能證實有抽到不在清單109F 11/16 17:36
mizuarashi: 先上了再說,以這遊戲來說很有可能是這樣沒錯……110F 11/16 17:52
s6031417: 我就是因為猴妹炎上70抽才入坑的(ry111F 11/16 19:26

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 195 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇