2013年10月9日水曜日

ラグナブレイク・サーガ カード一覧作成スクリプト

ラグナブレイク・サーガのカード一覧作成スクリプトです。 文字情報だけの表ですが、本家のものより詳細なフィルタリングや並び替えができます。 データの用意が煩雑なので普段使うのは面倒です。 レベルマックスのときのステータス一覧とかもできるのでどのカードを育てるかの方針を考えるときなどにどうぞ。 一応、十分なテストはしていませんがお勧めデッキ作成機能もあります。 なんとなくノリで作り始めたけどモチベーションが続かなかったので中途半端なデキ。 というわけでバグ在中。 動作がおかしくなることもあるでしょう。 そうなったらデータクリアをしてリロードしてください。

このスクリプトはゲームのサーバーにはノータッチです。 カード一覧の情報は各自用意する必要があります。 情報の入手方法は後述。 簡単に何をやっているか書くと、ゲームswfの問い合わせに対するレスポンス(jsonデータ)をユーザが用意、それをスクリプトに渡すとテーブルを作ります。 ゲームの情報やりとりの仕様が変わったらあっさり使えなくなります。 いつまで使えるものやら...


インデックス

ページ内リンクのリンク先は番号がアクセスキーになっています。

  1. カード情報登録
  2. 一覧表
  3. お勧めデッキ作成
  4. 使い方

1. カード情報登録

キャプチャしたResponse :

ここにユーザーデータまたはエラーメッセージが表示されます。


2. 一覧表

一覧表に表示する項目

  • 現在値 最大値 現在値/コスト 最大値/コスト
  • 通常攻撃のタイプ 売値 スキル

一覧表に表示するカード

  • 天属性 地属性 魔属性
  • N NN R RR SR SSR
  • 無進化 1段階進化 2段階進化 進化完了
  • 未強化 強化中 強化完了

ソートやフィルタリングでのレアリティの扱い

並び替えの優先順位

  1. レアリティ
  2. コスト
  3. レベル

ここに一覧表またはエラーメッセージが表示されます。


3. お勧めデッキ作成

  • デッキ作成基準
  • デッキ作成対象
  • 一覧表のフィルターを適用する

ここにお勧めデッキまたはエラーメッセージが表示されます。


4. 使い方

まずカード一覧の情報を登録する必要があります。 ラグナブレイク・サーガはクライアントのswfとサーバとのやりとりにjson形式のデータを使っています。 これは普通にページを閲覧しているだけでは見れませんが、主要ブラウザ付属の開発ツールを使えば見る事ができます。 そのデータをこのページのスクリプトにコピー&ペーストで渡します。

開発ツールの使い方については過去の投稿を参考にしてください。

ここではGoogle Chromeの場合について説明しますが、リンク先を見て分かるとおり他のブラウザでもだいたい同じ操作になります。

必要なのはカード一覧で発行される問い合わせへのレスポンスです。 それにはプレイヤーが所有する全カードのデータが含まれています。 ゲーム画面のメニューで「カード - カード一覧」を選ぶと狙いのレスポンスが来ます。 ネットワークログのNameがmakeRequest、レスポンスが「throw 1; < don't be evil' >{"http://yragnarok.croozsocial.jp/card/UserCardList" ...」で始まるものがそれです。

あ、キャプチャー切れた。 まぁいいか、もう1回キャプチャーするの面倒だし。 makeRequestはゲームデータの通信全般で使われています。 赤線のところが「http://yragnarok.croozsocial.jp/card/UserCardList」のものを選んでください。

ただ漠然とログをとりながらやっているとすごい数の画像ファイルリクエストに埋もれてしまいます。 次の手順でやると狙いのログだけ簡単に手に入れることができます。

  1. ラグナブレイク・サーガを始める。このとき、まだデベロッパーツールは開かない。
  2. ゲームのメインメニューから「カード」を選択。
  3. カードメニューから「カード一覧」を選択。これは画像の要求など余計なログを減らすため。カードの画像が全て読み込まれるまで待機。
  4. カードメニューから別の適当なメニューを選択。
  5. google chromeのメニューから「ツール/デベロッパーツール」を選択。
  6. デベロッパーツールのNetworkタグを選択。
  7. ゲームのカードメニューから「カード一覧」を選択。デベロッパーツールにmakeRequestが表示される。キャッシュがあるので画像のリクエストは発行されない。
  8. デベロッパーツールに表示されたmakeRequestをクリック。Responseタブを選択。先頭近くに「http://yragnarok.croozsocial.jp/card/UserCardList」の記述があることを確認。
  9. レスポンスの内容をトリプルクリックで選択してコピー。

目的のレスポンスが手に入ったらこのページのカード情報登録にあるテキストエリアにペーストして「データ更新」ボタンを押します。 ユーザidやニックネームなどのユーザ情報(カード一覧データに含まれている)が表示されたら成功です。 ついでに一覧表のところには表ができています。 (初回のみ?)一覧表の作成には多少時間がかかります。

登録したデータはブラウザのローカルストレージに保存されます。 ブラウザが対応していて、設定でローカルストレージが有効になっていれば次回このページを見るときにもユーザ情報、カード一覧、フィルターの設定などが再現されます。 保存されるタイミングは「データ更新」、「表の更新」、「お勧めデッキの作成」ボタンを押したときです。 ローカルストレージの内容はカード情報登録の「データ更新」ボタンの隣にある「データクリア」ボタンで消去できます。

このスクリプトが扱うデータはこれだけです。 それ以外のデータには触っていません。 アバターの画像も表示されますが、これはユーザ情報の中にアバター画像へのリンクが含まれているからです。 通信機能とかは無いので安心してください。

一覧表には表示する列の選択、フィルタ、並び替えの機能があります。 列の選択とフィルタは見ての通りです。 「並び替えの優先順位」は項目のドラッグで並び替えることができます。 最初の項目で比較して並び替えて、同じなら次の項目で比較して、...というふうにして並び替えます。 各項目の右側にある三角(▼)は昇順、降順の指定です。 クリックで切り替わります。 設定を変えたら「表の更新」ボタンを押してください。

表の一番左の列、「採」の欄はお勧めデッキ作成で使うレギュラー / ボツ指定です。 クリックで「-○×」と切り替わります。 ○のカードはお勧めデッキ作成のときに必ず使用されます。 11枚以上指定するとエラーになるので注意。 ×のカードはどんなに能力が高くてもデッキには含まれません。 「レギュラー / ボツ指定のクリア」ボタンをクリックすると全カードの設定が取り消されます。

お勧めデッキ作成はゲーム内の同等の機能があまりにもいい加減だったので作ってみました。 お勧めデッキを作るにあたりいくつかのオプションを指定することができます。 デッキ作成基準は攻撃力、防御力、総合値(攻撃力+防御力)のどれを基準にデッキを作るかの指定です。 デッキ作成対象は攻撃/防御どちらのMPを使うかの指定です。 MPの情報はユーザ情報に含まれているので手動で設定する必要はありません。 「一覧表のフィルターを適用する」チェックボックスは見ての通りです。 フィルタではじかれたカードについてはレギュラー指定が○であっても無視されるので注意。


雑記

このツールはたまたまブラウザのデベロッパーツールを使って色々見てたときにゲームの情報を見れることに気付いて作りました。 数万人が遊ぶゲームだけあって少ないデータ通信で済むように工夫されてますね。 例えば、レイドボスとの戦闘は「攻撃 消費BP??」のボタンが押され、サーバーにデータが届いた瞬間に結果が出て、ゲーム画面ではそれを再生するだけです。 こうすると1回の行動ごとに通信する必要がなくなって帯域消費減です。 「戦闘が始まった瞬間F5を押した方が速い」といわれているのはそのため。 クエストでは「Click to start」をクリックした瞬間に「次にカードを引く」、「APが無くなる」または「クエストクリア」までの結果が返ってきます。 あとはゲーム画面で再生するだけ。 クエスト進行の途中でマイページとかのボタンを押したらAPがガッツリ減っているのはそのため。

今回のネタであるカード一覧では、表示されていない色々なデータが載っていて興味深いです。 その中でagilityとdefault_attack_typeはこのページで作る表でも確認できます。 ただし、それがゲーム内で使用されているかは未確認ですが。

カードの経験値はゲーム画面では%表示しかありませんが、内部では「ex=14024、level_ex=13825、next_level_ex=14440」などのように整数で管理されています。 おそらく、「ex=現在値、level_ex=現在レベルの基準値、next_level_ex=次のレベルの基準値」でしょう。 このへんは普通のRPGと同じですね。

戦闘経緯データではステータスの記述がありました。 turnActionEnd、death、poison、sleep、curse、aura、chant、stun、freeze、bind、doomの文字を確認。 毒と行動封じは最近実装されましたね。 イベントSRのイシスが使う呪いはcurseなのかbindなのか判然としませんけど。 まぁそれ以外のステータスも順次実装されていくのでしょう。

図鑑のデータで1つのカード情報に進化4形態分のデータがあることを期待してたんですが、それはありませんでした。 他のレスポンスでは余計なデータが付いてくることはあっても、流石にそこは商売のネタといったところでしょうか? ユーザーが手に入れたカードの情報しか見れないようになっています。 その他の要素についても、基本的に見れるのはゲーム画面で表示される事だけです。 「ヘッダを書き換えて送信したら?」とかってのを1回だけ冗談で試してみましたが、シグネチャエラーになりました。

ちょっと意外だったのはリソース系のアクセス制限がない事ですね。 カードの絵とか、ブラウザのネットワークログに書いてあるアドレスにそのままアクセスできました。 ゲームにログオンしてない状態でアクセスできたので認証などで保護されてはいないようです。 入手してないカードの絵とかも、IDさえ分かれば誰でも見る事ができます。 mp3とかもダウンロード可能です。 戦闘時のスキルエフェクト(zipファイル)とかもアクセスできました。 中身はatfファイル? テクスチャデータとは、はて?

今回サーバーからのレスポンスをちょっと見て分かったのはそのくらいかな? 隠しパラメータはいくつかあったけど、ゲームの大枠については今ゲーム画面で見えているものだけですね。