2016年6月9日木曜日

IkaLogのWebSocketサーバ機能と連動して ナワバリバトルのタイムラインっぽいテキストを出力するスクリプトを作ったので公開してみます。(ダウニーガチャも記録できるよ!)

はじめに 

作成者はPythonを始めたばかりで、Google先生の教えのままコピペで作ったものです。
需要があるのか分からないのですが、まずは公開してみようと思います。
コンピュータ関係の職業ではないので、配布の仕方や用語の使い方、コードの書き方に変な所が沢山あるかもしれませんが許してください。
(ここを読んで勉強しろ的な事を教えていただけると本当にありがたいです)
その辺りとこの辺りを含めて、イカよろしくお願いいたします。

・ソースコードの管理を勉強も兼ねて、このスクリプトコードの公開場所は、GitHubへ移行しました。

https://github.com/sodoko-ika/yotchan_ika (2016年6月17日追記)


・IkaLogさんに追加されたブキ(ブキチセレクション2)をコピペさせていただきました。(2016年6月9日追記)


・起動時にメッセージを表示するようにしました。(2016年6月9日追記)


IkaLogさんに追加されたブキ(ブキチセレクション1)をコピペさせていただきました。(2016年4月16日追記)


・ダウニーガチャの結果を記録をする機能を追加してみました。(2016年4月7日追記)

ガチャを引くと downie_lottery.csv というファイルが作成され、追加モードで記録されていきます。

csv形式で、 '日時',  'ブランド名',  'ギアレベル',  'スロット1',  'スロット2',  'スロット3' の並びになっています。
※こんな感じです。
2016/04/06 22:09:23,アロメ,1,インク回復力アップ,スペシャル時間延長,スペシャル増加量アップ
2016/04/06 22:09:53,アロメ,1,インク回復力アップ,スーパージャンプ時間短縮,防御力アップ
2016/04/06 22:10:18,アロメ,1,スペシャル減少量ダウン,インク効率アップ(サブ),スペシャル増加量アップ
2016/04/06 22:10:42,アロメ,1,インク効率アップ(メイン),スペシャル時間延長,インク回復力アップ
2016/04/06 22:11:07,アロメ,1,攻撃力アップ,スペシャル増加量アップ,ヒト移動速度アップ
2016/04/06 22:11:30,アロメ,1,インク回復力アップ,インク回復力アップ,攻撃力アップ


その他、
・場外判定が3種類あるので対応してみました。
・ブキ・やられ名などの辞書を、 IkaLog さんのをまるっと使わせていただきました。
これでブキチセレクションが来ても、そのままコピペで対応可能です。

このスクリプトについて

IkaLogのWebSocketサーバ機能と連動して ナワバリバトルのタイムライン的なテキストを出力するスクリプトです。

(画質が悪かったので差し替えました。 最初の動画はこちらです

出力されたテキストファイルの中身を、YouTubeの動画説明欄にそのままコピペして保存すれば、時間のリンクが作成された形で閲覧できるハズです。
(動画をアップした本人は、動画説明欄をクリックすると自動的に編集モードになると思うので注意してください。)

既にYouTubeで公開されている HiroK Splatoonさまの真似をしたかったのですが、チーム構成や使用ギアの情報が取れてないし、ナワバリバトルで発生するイベントは地味だしで、劣化版になってしまいました…

今のところ、ナワバリバトルの処理しかありません。(ひたすらレギュラーマッチということで…)
ダウニーガチャの記録を目指して作り始めたのですが、ダウニーの所にあまり行かないのでどうしようかと思案中です。
(YouTubeにアップされている動画で試したのですが、画質が劣化しているのか認識してくれませんでした…)

動作に必要なもの

Python 3.4などIkaLog CUI版に合わせた環境で作りました。
Python 3.4で動作確認をしています。
このスクリプトを動作させるのには下記のpipが必要だと思います。
pip install ws4py
pip install tornado

使い方 

・WebSocketサーバ機能が動作するように設定されたIkaLogを起動後、マッチング開始までのタイミングでこのスクリプトを起動してください。
・ステージ紹介~ジャッジくん登場までの間の流れが記録されて、バトルごとに ./20160228-0101.txt みたいな感じのファイルが出来るハズです。
・IkaLogを終了させると、このスクリプトの動作も終わるハズです。
・作成したファイルの削除機能は無いので、使用済みのファイルは手動で削除をお願いします。

動作テストの方法 

1.WebSocketサーバ機能が動作するように設定されたWinIkaLogを準備してください。
2.WinIkaLogのWebSocketサーバの設定に合わせて、このスクリプトのIPアドレスとポート番号を変更してください。
3.WinIkaLogを起動後、このスクリプトを起動してください。
4.おさんぽモードで、マサバ海峡大橋のような落下して自滅可能なステージを選択して、さんぽ開始後に場外へ落ちてください。
5.IkaLogのコマンドプロンプトに 'やられた!' と表示されて、このスクリプトから '処理に必要な情報が取得できていません.()' というメッセージが表示されればOKです。
ポート番号9090で駄目だった時は、IkaLogの設定含めて他の番号(例えば 8080とか)を試すとかすると通るかもしれません。



一応、お約束が必要かと思ったので

実用に耐えて使っていただけるレベルかとても自信はありませんが、ガチマッチ対応などの改変はご自由になさってください。
特殊な事はしていないハズなので大丈夫とは思うのですが、このスクリプトが原因で他の何かが動かなくなったりファイルが消えたり機材が故障しても責任は持てないです。
スクリプトの内容をご確認のうえ、ご自身の判断で利用してください。


最後になりましたが、参考にさせていただいた記事を書いてくださった皆様、ありがとうございます。

https://github.com/hasegaw/IkaLog/wiki
https://github.com/fetus-hina/stat.ink
http://d.hatena.ne.jp/seinzumtode/20141009/1412816599
http://www.typingtarzan.com/entry/2015/06/24/061008
http://www.yamamo10.jp/yamamoto/comp/Python/variable/index.php
http://www.pythonweb.jp/tutorial/list/index6.html
http://uxmilk.jp/8693