Forums: Open Discussion (Thread #35327)

次期難易度表フォーマット案 (2014-04-18 00:02 by bms_normal2 #72658)

次期難易度表フォーマット案をたたき台として書いておきます:

難易度表本体のHTML内:
<meta name="bmstable-name" content="******" /> ←難易度表の名称
<meta name="bmstable-symbol" content="?" /> ←難易度表記
<meta name="bmstable-tag" content="?" /> ←タグ付加時の表記
<meta name="bmstable-data" content="******" /> ←難易度表JSONファイルのURL


難易度表JSONファイル内:
全体的な形式としては、
[{譜面情報1},{譜面情報2},...,{譜面情報n}]とし、
譜面情報オブジェクト内の仕様としては、
{ "bmsid" : bmsid(Integer) ,
"level" : 難易度(String), ←マークは抜いてもいいかも
"title" : 譜面のタイトル(String),
"url" : 楽曲本体URL(String),
"url_diff" : 差分URL(String),
"comment" : コメント(String)
"hash" : ハッシュ値(String)
}
という感じでしょうか。あとは難易度表個別に要素を自由に入れてください、みたいな。
一応第2通常では、譜面情報として、
{"total" : 譜面のTOTAL値(Float),
"judge" : JUDGERANK(Integer),
"note" : 平均密度分布データ(String),
"tag" : 譜面特性のキーワード(階段,連皿など)(String), ←難易度表上の絞込検索に使用するつもりでした
}
を入れています。

何か足りない要素等ありましたらご意見ください。

Re: 次期難易度表フォーマット案 (2014-04-18 00:39 by stella_y_k #72660)

うちの表(発狂PMS)ではオート系の動画アドレス(ニコニコ、youtube、Vimeo)を張っています。
最初は便利かなと思ったんですが、
IRに張ってあればそっちでも見られるのであまり意味ないといわれたらそうかもしれませんので
採用していただけるかどうかの判断はお任せします。
Reply to #72658

Re: 次期難易度表フォーマット案 (2014-04-18 01:02 by ununique #72663)

[メッセージ #72660 への返信]
> うちの表(発狂PMS)ではオート系の動画アドレス(ニコニコ、youtube、Vimeo)を張っています。
> 最初は便利かなと思ったんですが、
> IRに張ってあればそっちでも見られるのであまり意味ないといわれたらそうかもしれませんので
> 採用していただけるかどうかの判断はお任せします。
任意要素は独自に追加可能なので、管理人様ごとで追加すればいいかと思います。

"video" : 動画URL(String),

って感じで。
Reply to #72660

Re: 次期難易度表フォーマット案 (2014-04-18 01:03 by bms_normal2 #72664)

[メッセージ #72660 への返信]
> うちの表(発狂PMS)ではオート系の動画アドレス(ニコニコ、youtube、Vimeo)を張っています。

これ、結構便利だと思いますよ!
ユーザー側からしたら、いちいちIRページをチェックするより、難易度表上で動画がある/なしを判断できて、なおかつポップアップで動画視聴できるほうが手間が省けていいと思うんですよね。

要素としては、
"video": URL(String)
を盛り込んでおけばいいでしょうか。
Reply to #72660

Re: 次期難易度表フォーマット案 (2014-04-18 00:57 by ununique #72661)

[メッセージ #72658 への返信]
難易度表JSONファイルフォーマットはだいたいそれで良いと思います。
ただ、hashを絶対とできなるならbmsidは要らないかもしれません。
hashでランキングにアクセス可能(※search.cgi?mode=ranking&bmsmd5=)なので。
むしろ必須項目はlevelとhashだけでも良いかもとすら思ってます。

-----------------------------------------------------------------------------------------
以下から別の話で私の提案というか妄想です。
まず前提として以下の構造があるとします。

ヘッダ部 (「今は」難易度表本体のHTML)
└データ部 (難易度表JSONファイル)

このヘッダ部のJSON化と拡張について言及します。
JSON化したヘッダ部を使う際の構造とその中身を示します。

1. 構造
「何らかのページ」のHTML
└ヘッダ部 (ヘッダ部JSONファイル)
└データ部 (難易度表JSONファイル)

2. 「何らかのページ」のHTML内での使い方
<meta name="bmstable" content="******" />
仮ですが、これ(↑)がヘッダ部JSONを示すとして、この一つだけを読み込ませることを目的とします。bmstable-headでもなんでもいいです。

3. ヘッダ部基本JSONフォーマット

[必須]
"name" : String ファイル生成可能な名前
"dataUrl" : Url データ部のURL

[任意]
"nameAlias" : String 使用者が目にする名前。文字制限なし。未指定時は name を使用
"charset" : String 未指定時、指定エラー時は "utf-8"
"gameType" : String 対象とするゲームタイプ。未指定時は "bms"。bms/pms/その他ゲームが出てきたときに、ある程度自由に追加
"tableType" : String 生成する表のタイプ。未指定時は "level"。level/artist/event/...
"hashType" : String データ部のhashの方式。未指定時は "md5"。md5/SHA-2/...

3-1. tableType : level の場合
3-1-1. ヘッダ部
[必須]
"symbol" : String シンボル

[任意]
"tag" : String タグ付加時の表記。省略時は symbol を使用

3-1-2. データ部
難易度表JSONファイルに準拠

3-2. tableType : artist の場合の項目
3-2-1. ヘッダ部
[必須]
"artistName" : String 作曲者情報とか差分作者情報とか

3-2-2. データ部
[必須]
"hash" : String 譜面のハッシュ

[任意]
"title" : String 譜面のタイトル
"url" : String 楽曲URL
他色々

3-3. tableType : event の場合の項目
3-3-1. ヘッダ部
[必須]
"eventName" : String イベント名

3-3-2. データ部
[必須]
"hash" : String 譜面のハッシュ

[任意]
"teamName" : String チーム名
"title" : String 譜面のタイトル
"url" : String 楽曲URL
他色々

こんな感じで以上です。
Reply to #72658

Re: 次期難易度表フォーマット案 (2014-04-18 01:00 by ununique #72662)

> 「何らかのページ」のHTML
> └ヘッダ部 (ヘッダ部JSONファイル)
> └データ部 (難易度表JSONファイル)
半角スペースが潰されて悲しいことになっていました。
こうです。

「何らかのページ」のHTML
□└ヘッダ部 (ヘッダ部JSONファイル)
□□└データ部 (難易度表JSONファイル)

※□は単なるインデントとしてみてください
Reply to #72661

Re: 次期難易度表フォーマット案 (2014-04-18 01:30 by bms_normal2 #72665)

これはすごいですね。
広範囲な上、将来も十分見据えられた仕様だと思います。

bmsidとhashについては、どちらかがあれば良い、という感じで用意しました。
理想としてはhashだけにしたいのですが、bmsファイル本体が入手困難で
なおかつStairwayでbmsid<->hashを収集できていないケースに配慮しました。

# IRmemo2012終息でhash収集者も減りますし、ありえるかな、と思ったので

今難易度表パーサ周りのソースをいじっているので、ちょっと上記の試作をしてみます。
Reply to #72661

Re: 次期難易度表フォーマット案 (2014-04-18 01:30 by ununique #72666)

書き忘れ。
現状bms-dtimporterとしての対応が不要な仕様が多々ありますが、とりあえずこのくらい考慮すれば本体が変わってもゲームが変わっても、プロジェクトをフォークして拡張できるんじゃないか程度で書いてます。
あとはこういう形式の取り込み次世代本体でネイティブにサポートしてほしいなあという期待が少しあります。
Reply to #72661

Re: 次期難易度表フォーマット案 (2014-04-18 18:30 by ununique #72675)

[メッセージ #72661 への返信]
すみませんartistNameとeventName要らないですねこれ。
tableTypeでartistかeventか指定させるから、共通必須項目であるnameで事足ります。
とりあえず週末くらいで、この思想に基づいた楽曲表作成用のWebアプリ試作してみます。
妄想だけしてもモノが無いことにはどうにもならないので…
Reply to #72661

Re: 次期難易度表フォーマット案 (2014-04-19 01:21 by bms_normal2 #72680)

現行案で難易度表パーサと難易度表を試作しました。
第2通常難易度表内の構成は以下の通り:
table.html
|-js/header.json (難易度表ヘッダ)
|-js/score.json (難易度表データ)
ハッシュの要素名は暫定的にhashにしていますが、md5が妥当かもしれません。
あと、bmsidも言ってみればLR2の独自仕様のため、lr2_bmsidとしたほうがいいかも。
(今後修験するBMSプレイヤーがbmsidを使用しないとも限りませんし)

あと、JSONの文字コードは当面UTF-8縛りにした方がよいかもしれません。
jQueryのgetJSONが、ajaxSetupでcharsetを変更してもなぜかUTF-8で読もうと
するので、他の文字コードだと表生成JavaScript作成時にトラブります。
Reply to #72661

Re: 次期難易度表フォーマット案 (2014-04-19 22:21 by ununique #72698)

[メッセージ #72680 への返信]
md5、lr2_bmsidいいと思います。
UTF-8縛りもいいと思います。
Reply to #72680

Re: 次期難易度表フォーマット案 (2014-04-24 23:40 by bms_normal2 #72788)

これまでの議論を反映させた次期難易度表フォーマットの仕様を
改めて以下にまとめておきます。
属性名が若干変更となっていますので、一度目を通していただければと。


・難易度表の構造
難易度表HTML
└ヘッダ部 (ヘッダ部JSONファイル、文字コードはutf-8)
└データ部 (難易度表JSONファイル、文字コードはutf-8)

-難易度表HTML
以下のmetaタグをhead内に配置:
<meta name="bmstable" content="(ヘッダ部URL)" />

-ヘッダ部基本JSONフォーマット(※文字コード:utf-8のみ)
データ構成は、
{(難易度表情報)}とし、
難易度表情報オブジェクト内の仕様は以下の通りとします:

[必須]
"name" : String ファイル生成可能な名前
"data_url" : String データ部のURL
"symbol" : String シンボル

[任意]
"tag" : String タグ付加時の表記。省略時は symbol を使用

例:
{
"name" : "第2通常難易度",
"symbol" : "▽",
"data_url" : "http://bmsnormal2.syuriken.jp/js/score.json"
}


-データ部基本JSONフォーマット(※文字コード:utf-8のみ)
データ構成は、
[ {譜面情報1},{譜面情報2},...,{譜面情報n} ]とし、
譜面情報オブジェクト内の仕様は以下の通りとします:

[必須] (※md5, lr2_bmsidはいずれかを必須とします。両方は不要です)
"md5" : String BMSファイルのmd5ハッシュ値(※)
"lr2_bmsid": String LR2IR上のbmsid(※)
"level": String 表記レベル

[任意]
"title": String 譜面タイトル
"artist": String アーティスト
"url": String BMS本体の入手URL
"url_diff": String BMS差分の入手URL
"name_diff": String 差分リンク用のテキスト
"url_pack": String 収録パッケージの入手URL
"name_pack": String 収録パッケージの名称
"comment": String コメント

例:
{
"lr2_bmsid":"128458",
"title":"Act Beloved [SP ★1]",
"level":"12",
"eval":0,
"artist":"Nene Anegasaki feat. Salita / obj:slash Movie : Ryuka",
"url":"http://manbow.nothing.sh/event/event.cgi?action=More_def&num=268&event=74",
"url_pack":"http://nekokan.dyndns.info/~lobsak/genoside/",
"name_pack":"GENOSIDE収録",
"url_diff":"http://slash24th.web.fc2.com/",
"name_diff":"差分保管所",
"comment":"slash難易度表△1",
"total":480.0,
"judge":3,
"note":(省略),
"tag":"同時押し",
"md5":"6a2cf3b81a38dc28f2a5b4e0d18d26ff"
}
Best Answer Reply to #72658

Re: 次期難易度表フォーマット案 (2015-04-14 01:59 by bms_normal2 #75929)

難易度表固有の段位認定の定義する方法を検討しています。
現在、暫定的な実装ですが第2通常難易度の方で以下のような方法で定義しています:

"grage": [
{"name" : 段位名(String),
"md5" : 楽曲のmd5(String, 配列),
"style" : 段位名のスタイル(String)},
...
]

ex.)
"grade" : [
{"name" : "八段",
"md5" : ["1bac37f4ae696df258b21a902bfd0232", "1b246941755c0b57d94f824390197d0f", "ede57aeeaa87ea18c4bffa31aa6c19c0", "b357386bcc0c49f55c598759e523fb34"],
"style" : "-fx-text-fill:cyan"},
{"name" : "九段",
"md5" : ["043880563155d8763a33660bfda32c23", "52265862e46b3d12f65c84f30ab7895f", "e6d59faa8aa2708d4faaa3013d136e40", "a69797e5735be285a032d519788f2424"],
"style" : "-fx-text-fill:red"},
{"name" : "十段",
"md5" : ["adfa536284238aa08c3ff4bb9e5b8c9c", "c47a156a785f8d1858341ab722ceab80", "c71fdca6438aee0c7068cbc5103bd3b4", "3004d49607ce6fe08e572169a7bd61c2"],
"style" : "-fx-text-fill:red"}
]


styleについては現在JavaFXのCSS Styleをそのまま記述している状態です。
段位定義フォーマットに関して不足点/アイデアなどあればコメントお願いします。
Reply to #72658

Re: 次期難易度表フォーマット案 (2015-04-18 20:44 by kasakon #75966)

個人的にですが 段位のスタンダードなスタイルはほぼ決まっているのでどこか別の箇所にCSSをまとめてクラスで指定したいところです。(クラスでのスタイル指定がJavaFXで出来るかはまだ調べてないです。)

フォーマットに関しては不足ないと思います。
取得段位+達成率で何か出来ないかなとか考えてみたりしましたがなんとも。
Reply to #75929

Re: 次期難易度表フォーマット案 (2016-05-28 20:11 by stella_y_k #78126)

お疲れ様です。
PMS段位を変更したため、この機会にと思いこちらを参考にヘッダをいじっていました。
やっているうちに色々気づいた点があったのですが、ここに書くと長くなるのと
うまくまとめることができなかったためページを作りました。

http://stellawingroad.web.fc2.com/tanpatsu/memo.html

どちらかというと全体的にポップンのライセンスやコース的な考え方で
デラの段位とは方向性が違うので、こういう案もあるんだなー程度で見てもらえれば嬉しいです。
Reply to #75929

Re: 次期難易度表フォーマット案 (2016-05-30 01:08 by bms_normal2 #78130)

貴重なご意見ありがとうございます。
ヘッダファイルによる段位表現については色々暫定的な部分もあるのと、次期プレイヤーの段位実装で活用していく予定のため、そろそろ仕様として固めていく必要がありますね。

以下にリンク先のコメントについて回答をします:

仕様らしきもの
・コースファイル名よりGLassist(ヘッダ)上のが優先される(=称号として機能する) → これは仕様とさせてください(一難易度表に段位定義は一セットまで)。コース定義は別途設けます。

・先に下にある段位を倒してからを上の段位を倒しても文字色は戻らない(曲自体の難易度に関係なく並びの下が優先されることの確認) → これは仕様ではなくバグですね。そもそも文字色というかフォントスタイルの定義があれでいいのかという気もしますので、何かPMS側から見たフォントスタイル定義に関してご意見いただければと。

・難易度表に存在しない曲のハッシュを指定した場合、譜面を所持、クリア等していても空白扱いにされる(GLassist下の曲名は直前に選んだ段位の曲が表示される) → これはバグなので後で直すかもしれません。

-----

思ったこと

・段位名以外で称号を作る場合、表示できる文字数が意外と狭い → GLAssist側の現状の仕様なので後で直すかも。

・ミスカウントによる銀金メダルや銀金トロフィーのようなアチーブメントも難易度表のヘッダ部分で指定できるようになるだろうか → 自分はポップンの仕様に疎いので、例えばどんな定義が出来ればいいかご意見ください(ex. トロフィー名称、ミスカウントレート、スコアレートとか)

・下が優先にされるならこれをローカルで並べかえられればポップンの称号のように変えられるのではないか(差分企画のコースはポップンのコンポーザーコースのようなものなので、難易度で上下がつけられない)
→ 特定のコースおよびトロフィーにフラグ付けするイメージでしょうか。

・ヘッダ内の特定の複数コースを突破した時の称号の追加ができるか(上二つはToymusical的な感じ) → gradeとは別の属性値で定義すれば可能かと思います。

・表を跨いで段位を設定できるなら、ヘッダ部分か何かでカテゴリ分けすれば★10段/●10段/きほん検定10/▽10段/◆皆伝/みたいに複数表示できないだろうか → これはGLAssistで実装する予定でしたが手付かずです。

Reply to #78126

Re: 次期難易度表フォーマット案 (2016-06-01 01:15 by stella_y_k #78134)

コメントありがとうございます。
不明点を詳しく書いていただいたので、イメージしていたトロフィー定義について
ページをまた作りました。また長くなってしまいました。すみません。

http://stellawingroad.web.fc2.com/tanpatsu/memo2.html

きちんと疑問点が理解できたか、説明がヘタなのでうまく伝わるか不安ですがよろしくお願いします。
Reply to #78130

Re: 次期難易度表フォーマット案 (2016-06-07 21:47 by bms_normal2 #78152)

暫定的に以下のようなコース定義仕様を考えました。
表現能力で不足点あればコメントください。

"course": [
[
{"name" : (コースの名称)
"md5" : [コースを構成するmd5セット]
"constraint" : [コースの制約。grade(正規段位)、grade_mirror(ミラーOK段位)、grade_random(ランダムOK段位)、etc]
"trophy" : [トロフィーの定義、後述]
}, ...
], [](コースセットは複数定義可), ...
]

*各コースセットについて下のものほど難易度が高いと判断

トロフィーについて:
"trophy" : [
{"name" : (トロフィー名称)
"missrate" : ミスレート(0.0 - 100.0)
"scorerate" : スコアレート(0.0 - 100.0)
}, ...
]

*各トロフィーについて下のものほど難易度が高いと判断


第2通常初段の定義例:
{"name":"初段","constraint":["grade_random"],"trophy":[{"name":"金","missrate":5.0,"scorerate":90.0}],"style":"lightgreen","md5":["5734e689de8e977d58c6fb0f91bcee70","5bb7d406aa5848ec2f46d80c29d82ca5","7fff4be5e57c65e7e65a081a39292e66","3f45e68a802d62bcea78c1fc0d93d484"]},
Reply to #78134