2015年1月2日金曜日

自分以外のスパーを観戦可能に!

あの人はどんな戦いをしているのか? チェックしよう!
タイトル画面から、リプレイ→最近のスパ天で、サーバに保存されている8試合を観戦できます。
リプレイ→最近のスパ天→最近の王座戦で、直近8試合のタイトルマッチを観戦できます。

ただし、スパーのリプレイがサーバに記録されるには条件があり(同じ対戦カードだと最新のみ等)場合によっては保存されません。なので、正確には直近8試合ではありません。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
以下、開発の苦労など…
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Windows用ボクシングゲーム、実写でボクシングで自分以外のネット対戦を観戦する仕組み、スパ天のスパー再生を実装できました。



苦労した作業だったので、しっかりブログに進捗の思い出を書き残して今後に役立てたいと思います。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

すでにリプレイ投稿天国により「面倒に」観戦できる環境はありました。

が、プラウザを介してアップロード・ダウンロードをし、解凍ソフトで解凍、実写.exeからフォルダ位置の指定するといった作業は煩雑すぎて、実際に投稿するユーザーは少ないのが現状でした。

「久々に実ボク復帰したので最近のユーザーのスパーを観ようと思ったが、リプレイ投稿天国にスパーの投稿が少ない。もっと簡単に観れないものか。」というUME氏の進言で、もっと使われるようなリプレイモードを作ろうと決意。

トーナメント大会データ課大会、安定したスパー数などでスパ天が充分に盛り上がっており、この状況なら運営からしばし手を引いても大丈夫だ、と判断。
おかげで、運営者、もしくはプレイヤーとしてのサンドバックではなく、開発者サンドバックとして一ヶ月ほど特化できました。(感謝!)

大規模な更新、真剣に取り組まないと積み上げてきたソースを壊してしまうと考え、机上の整理整頓、プログラミング記録用ノートを新しくしたり、パソコンを照らす照明を買ったり、外堀から環境を整えていったのも後々効果的でした。

当初はリプレイ投稿天国に投稿されたzipデータを活用しようと考え、取得→解凍→再生、という方法を試しましたが、zip解凍が安定しない。

成功したデータを翌日解凍するとダメだったり、喜んだり悲しんだりの末、原因に辿り着けませんでした。

ならば方法を変えよう!とpost形式の送受信で試行錯誤するも私の理解度が深まらず挫折。

リプレイ投稿天国からの取得を諦め、ジムサーバ内に新たにftpサーバを立ち上げてそこからダウンロード!もジムサーバの負担増を考えると一歩が踏み出せない(関係書籍購入。実現しなかったが知識として無駄ではなかった)。

ここまでの勉強→作業→挫折、で体力を消費、難しい部分の理解ができない自身の実力にガッカリ…。

(諦めようか…)

(でも、新人って先輩のスパー観て強くなるんだよなぁ…)

(絶対に必要な機能だ!)

(専門的な勉強を積んでいない俺には難しい方法は理解できない!
俺が理解できる方法、俺が理解できている方法でやるしかない!)

実ボクのレベルランキングへのデータ送信に使っているget方式を試す。

get方式は、少量のデータ送受信に使う方式ですが、最近は一般に推奨されていない。
なんせURLアドレスの末尾に文字を追加してアクセスするという手入力みたいな方法なのだ。

その方式ゆえに送受信先のサーバ、もしくは自身のプラウザの制限によって数文字で拒否される弱点を持つが、実ボクならジムサーバ(私の自宅サーバ)なので拒否される事はないし、HSPの命令にも文字数の制限はない。

さて、自宅サーバにどこまでgetで送受信できるのか実験してみたら、…思った以上の量(4,095バイトまで)を送れた!

リプレイデータを本気で圧縮すればget方式でいける!と考えてからは、圧縮の日々。

(道筋が決まるだけで、こんなにも前向きな気持ちが!)

防御ボタンを示す1024はFに、10フレーム押し続けられていたらjに、のように、無圧縮データを人力で眺め、よく出てくる数値を置き換えしていく。

徐々に巨大なリプレイデータが圧縮されていくたびに快感が!



結果的に13000→1000までの圧縮に成功!

特に細かくキーを押す選手、UME氏ハム氏らのデータを対象に作業を進めました。
(私、kei氏、バシ氏と比較すると彼らは4倍以上のキーの押し離しが!)

これだけ圧縮してもget方式では4度に分けてのアップロードですが、いいじゃないか、4度に分けたって!と開き直り、むしろ他の送受信とバッティングしないよう分散できるぞ!と前向きに捉える。

無事に送信成功!

続く受信も4度に分けて受信というヘボさだが、むしろこの不器用感こそ自作ソフトだと思うと気持ちが乗ってくる。

(プログラミングが楽しい!)

置き換えた文字を今度は膨らます置き換え(Fを1024に…)すると、元通りに解凍成功。

(冷凍人間がちゃんと生き返るだろうか?)

果たして無事にスパーが再生されるか…と再生すると…!

ゼファーさんとバシさんのスパーが無事に再生されました!
(感動!)
(ダウン応酬の末、ゼファーさん勝利!)


他ユーザーのリプレイ観戦の実装は挫折ばかりで作業していても辛かったです。
が、結局はこれまでに使ってきた方法を根気強く続けるという、実ボク10年間の実績を活かして乗り切った感じです。


バージョン3.16「他ユーザーのスパーを観戦できるようになった!」は2014最後にして最大の成果となりました(公開は1月1日になってしまいましたが、実ボクの歴史には2014として追記しました)。

集中した日々が続き、やっと脱力できた今、満足感が凄い!
やったぞ~っ! エイドリアーーーーーン!(コーヒーを入れてくれた妻にも感謝!)


関連記事
「最近のスパ天」からリプレイ鑑賞