Advertisements

【IIDX27】LEGGENDARIAのクリアランプが一部引継ぎ出来ない原因の推測

  • このエントリーをはてなブックマークに追加
Advertisements

2019/10/16より、『beatmania IIDX 27 HEROIC VERSE』が稼動しました。

Advertisements

が、レジェンダリアの一部クリアランプが引き継がれないクソみたいなバグが発生しました。

原因は「該当楽曲のNORMAL、HYPER、ANOTHER譜面が全てNO PLAYの場合、LEGGENDARIA譜面もNO PLAYとなる」ことが判明しました。

(2019/10/16 13時ごろ)原因が違っていたりしたところを修正しました。

(2019/10/16 14:22)修正されたようです。

推測

前作と今作の違い

いままでのレジェンダリアは、
①他の楽曲と別曲の扱い
②ANOTHER譜面扱い
③LEGGENDARIAの譜面である属性を持っている(だから文字が赤かったり、LEGGENDARIAフォルダに入っている)
といった取り扱いでした。

今作から通常フォルダーにBEGINNERとLEGGENDARIAも一緒に組み込まれるようになりました。つまり、
①ひとつの楽曲に含まれるようになる。別曲扱いされない。
②LEGGENDARIA譜面扱い
といった形で管理されるようになりました。

この微妙な違いが、引継ぎの際に障害発生の原因になり、あの条件になっているのだと思います。

引継ぎで何が起こったのか?

※前に記載していた推測は誤っていたため削除、新しい推測を記載しました。

公式のCSVから前回内容は正しくないことがわかりました。
スコアのDBですが、該当楽曲のプレイがないとレコードが存在しない状態になります。

26のDBだと、NHA譜面とL譜面は別曲のため、別レコードとなります。
データー以降するときに恐らくですが、NHA譜面とL譜面を外部結合(LEFT JOINですかね)した場合、NHA譜面のレコードが存在しなければ、L譜面のレコードとくっつかずにNO PLAYになります。

KONAMIはとりあえず早急になんとかしてほしいところですね。
→修正されました。

図解

DB構造の違い

26のDB
・この一列の情報は1レコードである。1楽曲に1レコードである。ただし、 L譜面は別楽曲扱いという形になり、別レコードとなる。
・全ての譜面がNO PLAYの場合、該当のレコードはDBに存在しない状態である。
・1レコードに対してN/H/Aの3項目が存在する。
・L譜面のレコードは、Aの項目にクリアやスコア状況を格納する。

27のDB
・ この一列の情報は1レコードである。1楽曲に1レコードである。
・全ての譜面がNO PLAYの場合、該当のレコードはDBに存在しない状態である。
・1レコードに対してB/N/H/A/Lの5項目が存在する。

LEFT JOINによる27DB以降用のデーター
LEFT JOIN後の処理は多分こんな感じ?
今回引き継がれなかったのはこのための可能性が非常に高い

とまあ、LEFT JOINによる外部結合がうまくいかなかったので発生した可能性が高いです。
ここの処理はINNER JOIN(内部結合)すればよかったんじゃないかなーと思います。

Advertisements

SNSでもご購読できます。

人気記事

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Advertisements