KancolleSnifferで交戦形(同航戦とか)を表示する

艦これの戦闘では各艦の性能・装備以外に、陣形(単縦陣、複縦陣など)や交戦形(同航戦、反航戦、T字有利、T字不利)が結果を大きく左右する。陣形は選択できるが交戦形はランダムに決定される。交戦形により、彩雲ありで最大1.5倍、なければ最大2倍、攻撃力の差が付く。

交戦形は戦闘開始のときに一度表示されるだけで、それを見逃すと確認手段がない。交戦形を確認せずに戦闘状況を見ても戦術立案の材料にならない。そこでKancolleSnifferに交戦形を表示する機能を実装することにした。

実装そのものは簡単だが、交戦形がわかるのは戦闘開始と同時なので、そのタイミングで表示するとプレイ画面よりずっと早く表示してしまう。これではネタバレなので、ちゃんとプレイ画面に合わせて表示したい。そうなるように頑張った結果が以下の動画だ。

赤矢印のところを注目してほしい。戦闘開始と同時にKancolleSnifferは戦闘中と表示する。このタイミングで交戦形はわかっているが、プレイ画面に交戦形が表示されるまで表示を遅延させている。何秒遅延させるかは戦闘内容を解析して計算する。このケースは以下の通り。

標準(7.2)+索敵機索敵成功(5.7)+航空戦発艦片側(8.7)+開幕雷撃(3.5)+T字不利(0.2)=25.3秒

少しずつ条件を変えてプレイ画面を録画して、戦闘開始から交戦形表示までの時間差で演出時間を計測した。しんどかった。一番長いパターンはこれ。

標準(7.2)+索敵機索敵成功(5.7)+潜水艦あり(2.3)+航空戦発艦両側(8.7+2.7)+中破大破(4.9)+支援攻撃(9.8)+開幕雷撃(3.5)+中破大破(4.9)+T字(0.2)=49.9秒

さすがに見たことないけど。

Windowsムービーメーカーのはまりポイント - その二

横幅が奇数の動画を表示できない

ロイロゲームレコーダー」で録画したMotion JPEGのAVIファイルをムービーメーカーで編集しようとしたら、以下のようにプレビューが真っ黒のまま表示されなかった。

原因がわからないので、WMVに変換して読ませたらどうなるかと思ってffmpegで変換しようとしたら、横幅が2の倍数でないと怒られた。

$ ffmpeg -i src.avi -c:v wmv2 -c:a wmav2 -b:v 20M -b:a 192k dst.wmv
ffmpeg version N-64514-g14e2406 Copyright (c) 2000-2014 the FFmpeg developers
...
    Stream #0:1: Video: mjpeg (MJPG / 0x47504A4D), yuvj420p(pc, bt470bg), 1035x928, 28000 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
...
[wmv2 @ 00000000024f3460] width must be multiple of 2
...
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

動画を処理するプログラムで、横幅が奇数だと動作がおかしくなるものはわりとあるので、以下のようにffmegで横幅を偶数に変更したら表示されるようになった。

$ ffmpeg -i src.avi -vf scale=1034:-1 -c:v mjpeg -c:a copy -b:v 20M dst.avi

ffmpegの実行方法がわからない人は、ほかの動画変換ソフトでもいいので横幅を偶数にしさえすればいい。

Windowsムービーメーカーのはまりポイント - その一

ムービーメーカーが起動しない

今使っているPCにWindows Essentials 2012 (旧Windows Live)のムービーメーカーをインストールしたら、まったく起動しなかった。タスクマネージャーにちらっとMovieMaker.exeが表示されたあと、何も表示せずに終了する。

ムービーメーカー 起動しない」で検索するとすぐに見つかるのが、「Windows Live ムービー メーカーが起動しない場合の対処方法」である。これはIntelのグラフィックドライバーが原因となっていて、エラーメッセージが表示される。僕の場合はエラーメッセージが出ないので原因はこれではない。

Windows Liveがアンインストールできない

復元ポイントでインストール前に戻ってみたら、古いWindows Liveメールが残っていたので、これを先にアンインストールすることにした。ところがコントロールパネルからアンインストールを指示しても何も起こらない。「Windows Essentials のアンインストール方法」を参考にC:\Program Files (x86)\Windows Live\Installer\wlarp.exeのアンインストーラーを直接起動しても何も起こらない。

解決策:コンポーネントの削除と再インストール

これらの問題の解決策を探しているときに、「wlstartup.exe - Entry Point Not found in Windows Live Essentials Beta」というやり取りを見つけた。違う現象だが、同様にC:\Program Files (x86)\Windows Liveの下の古いコンポーネントが原因の可能性はある。

そこで手動でC:\Program Files (x86)\Windows Liveを削除してから、ムービーメーカーをインストールしたら動いた。ムービーメーカーのインストール後にアンインストーラーを起動したら、Windows Liveメールの削除もできた。めでたしめでたし。

PowerPointでドット絵を作る

KancolleSnifferには各艦隊の補給の必要性を示すインジケーターがある。上が1.9までのもの、下は1.10のものだ。1.10でウィンドウサイズを小さくしたので、インジケーターも小さくなっている。


この燃料と弾薬のアイコンは、上が16x16で下が14x14のドット絵である。燃料のアイコンを拡大すると以下の通り。

こういうのを手打ちで作れるほど器用ではないので、これらのアイコンはPowerPointで作った。以下は、PowerPointのズームを400%にしてベクタ形式でアイコンを作成したところである。

ベクタ形式で小さな図形を書いてから、図形を選択してコンテキストメニューから「図として保存」を選択すると、PNG形式で保存される。図形以外の部分はきちんと透過色になる。

こうして作ったのが上のアイコンだ。わりと複雑な図形でも、それっぽく見える小さなラスタ形式に落としてくれるので、PowerPointはドット絵作成ツールとしても便利だ。

Twitterのスパムアカウントをまとめてスパム報告する

僕のTwitterサブアカウントに、今朝から大量のスパムアカウントがフォローしてきている。100アカウントを超えても止まらない。これでは手動のスパム報告では追いつかないので、機械的にスパム報告することにした。

大量のスパム報告が一番楽なのはKill 1000favsだ。スパム報告モードにして、テキストエリアにアカウントのリストをペーストして実行するだけでいい。しかし今回はInternal Server Errorでうまくいかなかった。

別の方法を探したところ、スパムアカウントをブロックするためのJavaScriptを公開しているサイトが見つかった。このサイトではChromeでの実行方法を説明しているが、FirefoxでもShift+F4で表示されるスクラッチパットで実行できる。

このスクリプトを実行すると、フォロワー一覧からスパムアカウントが自動的に検出されて、誤検出を取り除いてからまとめてブロックできる。精度はあまりよくないが、今回のスパムアカウントのほとんどが検出された。

やりたいことはブロックではなくスパム報告なので、以下のようにスパム報告ボタンを使うように変更して実行した。これですっきり。

-     $currItem.find('.block-text button').trigger('click')
+     $currItem.find('.report-spam-text button').trigger('click')

「電子書籍コピーの違法ソフト製造容疑 社長ら2人逮捕」について

「電子書籍コピーの違法ソフト製造容疑 社長ら2人逮捕」(魚拓)というニュースが出ていて、この中で

府警によると、石田容疑者らは昨年3月22日、IT大手「DMM.com」が販売する電子書籍を閲読するためのソフトに搭載された著作権保護機能を回避し、違法にコピーできるソフトを販売目的で製造した疑いがある。

とあるけど、これは違うと思う。

前にCypherGuardについて調べていたときに、CypherGuardを解除 | CypherGuardを解除して電子書籍を永久保存(魚拓)というページを見つけた。このページはCypherGuardを解除できるソフトとして、アフィリエイトリンクでこの会社のコミスケ3(魚拓)を紹介している。

CypherGuardを外せるとして、アフィリエイトリンクでコミスケ3を紹介している人はほかにもいた。値段が値段なだけに解除する機能があってもよさそうだけど、製品の紹介にそんな機能はないと明記されている。

※本ソフトウェア商品は、Windows標準の機能でデスクトップ画面の保存を行うものであり、各種技術的制限手段を回避する性質は有しておりません。

アフィリエイターがそう書いていただけで、本当にそんな機能はないんじゃないかな。

Lenovo Miix 2 8でKindle for Androidを動かす

Lenovo Miix 2 8でKindile for Androidを動かすにはBlueStacksを使う。日本語Windows 8 Pro で Kindle を動かす方法が参考になる。この方法で最初につまづいたのはBlueStacksのウィンドウが大きくならないこと。画面の右端に小さくスマートフォンサイズで表示される。筐体を縦にすると横幅が広がりウィンドウが大きくなるので、ランドスケープとポートレイトの認識が狂っているようだ。

この問題はDell Venus Pro 8でも起こるようで、この掲示板のスレッドのVenus Pro 8の場合の解決策がそのまま使えた。まずレジストリエディタでHKLM\SOFTWARE\BlackStacks\Guests\Android\FrameBuffer\0のHeightとWidthにそれぞれ1280と800を指定する。縦を1280にするのがポイントだ。それからデスクトップのツールバーを自動的に隠すにしたらいい感じになった。

フルスクリーンにするためにF11を押す必要があるけど、普通のソフトウェアキーボードでは押せないので、Windows 8のタッチ・キーボードのレイアウトを変えるを参考に「ハードウェア キーボードに準拠したレイアウト」を追加した。

こうしてKindleのマンガを画面いっぱいの大きさで読めるようになったんだけど、ページ送りの反応がおかしかったりして快適とは程遠かった。日本でもKindle App for Windows使えるようにならないかなあ。