不正ガチャと騒がれたドッカンバトル、ソースコード見せてお前らを論破www
http://dbz-dokkan.bngames.net/info1116.html
「ドラゴンボールZ ドッカンバトル」
「出現キャラ一覧」及び「出現キャラ提供割合」の表示に関する不具合の詳細
■概要について
ユーザー様ごと、ないし同一ユーザー様での「出現キャラ一覧」及び「出現キャラ提供割合」表示タイミングにより、異なる内容が表示されてしまう不具合が発生しておりました。
■発生の経緯について
バージョン3.8.0では新イベント「極限Zバトル」の機能追加にあたって、キャラクターデータ読み込み処理を極限Z覚醒データに対応させました。キャラクターデータ読み込み処理は、プログラム上で複数箇所に散らばっていた為、コードの共通化を実施する必要がございました。
このコード共通化の影響により「出現キャラ一覧」及び「出現キャラ提供割合」において一部想定していない挙動が発生しておりました。
■原因の詳細について
「出現キャラ一覧」及び「出現キャラ提供割合」のキャラクター一覧を表示する際には、端末上にて主に以下の処理を行います。 キャラクターカードを識別するためのID番号 (以下、カードIDとする)のリストをサーバーから取得する カードIDリストを、キャラクター名称に変換して表示する この変換処理において、誤ったキャラクター名称に変換され、一覧の内容が破損しておりました。
プログラムの詳細な挙動としては、カードIDからキャラクター名称へ変換する際、 ①アプリ起動後に表示したことのあるキャラクター(メモリ上に保存済み)のカードIDを読み込む ②メモリ上に存在しないカードIDがあった場合は、端末のストレージから読み込みを行う という順序で変換を行ないます。
※詳細は以下の図をご参照ください
このとき、②で以下のような問題が発生致しました。
[想定していた挙動]
表示に必要なカードIDリスト: 1, 2, 3, 4, 5
メモリ上のカードIDリスト: 1, 2, “空白”, 4, 5 があったとき、 ストレージに登録されているカードIDリストは 1, 2, 3, 4, 5 となっている前提で処理を行っておりました。 (ID:3は一度もストレージから取得していないため、メモリ上は空白で埋められている)
[今回の不具合で起きた挙動]
ストレージから取得したカードIDリストは順序が保たれておらず、以下のような並びになっていました。
5, 1, 4, 2, 3
メモリ上の “空白” 箇所をストレージから取得したカードIDリストと同一位置、上記例だと4を使って埋める処理を行っており、その結果、メモリ上のカードIDリストが 1, 2, 4, 4, 5 となってしまい、3のカードが表示されない事象が発生しておりました。
加えて、メモリ上に保存されているキャラクターは、アプリ起動後の操作内容によって変化するため、「出現キャラ提供割合」の表示内容も合わせて変化してしまうという事象が発生しておりました。
なお、スカウターボタンを押すと、サーバーから正しいカードIDリストが取得されメモリ上のカードIDリストが書き換えられるため、この場合、表示の不具合は発生いたしません。
以下、2chの反応
3: 2017/11/16(木) 16:22:32.76
おもってたよりシンプルなコードだな
6: 2017/11/16(木) 16:25:25.06
こんなのシープラで書いてんのかよ
8: 2017/11/16(木) 16:26:27.94
ローカルキャッシュやっかいなんよなぁ
26: 2017/11/16(木) 16:44:26.80
綺麗にプログラムしてるね。
サブルーチン、メソッドとして独立してるから、稼働時に全然違う条件入れることとか簡単だよね。
10: 2017/11/16(木) 16:27:26.78
なるほど!
わからん!
5: 2017/11/16(木) 16:24:37.93
どうせ表向きだろ
7: 2017/11/16(木) 16:25:32.43
ユーザことに違うやつだったぽいけど
11: 2017/11/16(木) 16:28:23.78
発覚してから作ったんだろ
18: 2017/11/16(木) 16:36:18.60
言ってる事はありえない話ではないがこの程度のバグは想定されるべき さらにガチャに不信感しかない今では「違ってたのは確率の見た目だけ」では通用しない 早い話ガチャ屋はソースまで含めて糞
23: 2017/11/16(木) 16:42:29.60
見せたコードが見せる用に弄られた後の可能性もあるから意味なし
22: 2017/11/16(木) 16:42:26.41
こんなの開示されてもその当時どうだったかの証拠になんかならんだろ
何やってんのこいつら
25: 2017/11/16(木) 16:43:59.55
>>22
「これ見てわからない奴はアホ」みたいな雰囲気を作っておけば こういうゲームにハマるような奴はすぐ流されるから問題ない
62: 2017/11/16(木) 17:13:05.86
>>25
あぶねえ今まさに俺がそうだったわ 「お、おうなるほどな、これはしかたないな、うん」 てなってた
27: 2017/11/16(木) 16:46:25.24
ここだけみても判断はできないんだが 後続の出力結果までだろ
29: 2017/11/16(木) 16:47:18.45
なるほどバグですって言えば詐欺ガチャしてええんやな DMMが舌舐めずりしてそう
30: 2017/11/16(木) 16:48:55.69
まるで専門学校の教材みたいなコードだけど ここだけ出しても何の意味もないぞ
32: 2017/11/16(木) 16:50:36.76
これで証拠になるのか?
36: 2017/11/16(木) 16:52:19.23
>>32
仮に本物だとしてもならん
35: 2017/11/16(木) 16:52:02.02
これが本物のソースというソースはないのかな
48: 2017/11/16(木) 17:00:10.52
実際に200回位やってでねーぞって人はいなかったんでしょ? なら本当なんじゃねーの?
58: 2017/11/16(木) 17:05:09.21
>>48
普通にいる
動画でも残ってる
137: 2017/11/16(木) 19:49:10.08
>>48
ベジータとラディッツの動画でラディッツだけ出ないとか無かったっけ
Youtube
117: 2017/11/16(木) 18:39:41.82
実際に200回位やってでねーぞって人はいなかったんでしょ? なら本当なんじゃねーの?
118: 2017/11/16(木) 18:42:36.46
>>117
64: 2017/11/16(木) 17:13:11.59
ようすんにキャッシュ効いてたからユーザーによって表示違ったって言い訳なんだろうけど、その理屈だと一度そのユーザーが表示してないと駄目だよね? つまりユーザーが前回回したガチャの時の表示になってたって事だよね?
77: 2017/11/16(木) 17:39:13.33
carddataの中身も見せてくれないとな。carddataの中にそもそも当たりのデータ入れてない可能性がある。
39: 2017/11/16(木) 16:52:44.93
とりあえず設計書公開してみようか
この2chスレまとめへの反応
一部見せられてもね、サブルーチンの中で何やってるか知らん話だし、読める人間からすれば、これで何が言いたいんだ?全部見せろよって話。
そうなるから普通は一部でも後悔するもんじゃ無いんだが。。
どんな説明しようがありえない結果が出たという事実は変えようが無い
逆に燃料投下するだけ
クレーム対応では一番やっちゃいかん事だねこれ
ソース公開するって結構なことだと思うけど、ここまでしてもらって信じられないって言うのは流石に人間不信すぎないか?
こんなきれいなコードってある?どうとでもできそうですけど?
まるで学生に書かせたみたい
警察がログからソースからを徹底的に洗ってくれないと信憑性0だよね
何の裏付けのない情報を信用しないって言うのが、人間不信って言うなら人間不信なんだろうね
※2
原因が判明しててソースコードつきで説明もしてる。
クレーム対応としては普通だしやりすぎなくらいだと思うけど。
これでダメなら騒ぐやつは何やっても騒ぎそう。いわゆるクレーマーってやつ。
ソースコードが本物かはおいといて。
こんなその時に本当に使われてたのかも分からないソースだけ見せられてもな
逆にこれを信じてさらっと納得しちゃう人のほうがちょろいというかなんというか
どうかと思うわ
※3
そのソースコードが実際使われた証明にはならないから
バグが入ったコードを一部だけ出して信用しろってのはそもそも無理なんだよ
やるならバージョン管理ソフトからバグが発生したバージョンの構成で
コード取り出してビルドしてバグが出たバージョンと同様の出力になる事を証明して
バグの原因はここですと報告してやっとだよ、無論そんなことまでやるのは無駄だがな
ただそれ以上に使われたかもわからねーバグ入りソースコードの説明を
全ソースコードの確認取れるわけでもねーユーザーにしてバカじゃねーのって言う
納得してる奴も同様