画像に高品質のノイズをかける「ImageNoiser」を作った。
ImageNoiserに関する問い合わせはこの記事にコメントするかktm@sにメールを。
先日Skypeでnk.からCGIゲームでのマクロについて相談(?)を受けた。
HTMLソースを拾ってアレしたりJavaScriptでアレでアレするパターンは(ほぼ無敵なので)のぞいて、仮にUWSCかなんかでCGIゲームのマクロを作る人が居るとして、その対策についての相談だった。
話は割りと盛り上がり、真っ当なプレイヤーの操作性を大きく損なわない範囲での対策をいくつか提案した。
その中の1つにCHKIMG対策の話がでて、王道の対策として使用する画像にノイズをかけて的を絞らせないのが(その他もうまく作れば)それなりに有効だろうという話になった。
その勢いで2時間後くらいに完成したのがImageNoiserだ。
任意の画像を選択すると人目にはとても判別できないレベルのノイズを入れて、20パターンまとめてzipでダウンロードできる。
完全にゲームを自作する人向けのものだ。他に用途が思いつかない。
ImageNoiserについて
コンセプト
あるアイテムに対して座標を決め打ちされないよう工夫することが大事で、その材料に使われる画像をCHKIMGで一致させ辛くしようというのがImageNoiserのコンセプトだ。
ダウンロードした画像をランダムで表示するのは大前提となる。
(的が絞られては意味が無いので20パターン用意したけど足らない人は何回か作って)
基本的にミジンコ対策でしかないが、やれる人はどんなゲームでもうまく考えて作ってくる。
初心者や画像を多用する相手に対してはそこそこ有効になるだろう。
ImageNoiserの効果
以下の画像はFF0000で染まっている。
上記の画像をImageNoiserにかけてみると、この画像をベースに20パターン作られる。
その中の1つが以下の画像だが、違いが肉眼で判別できるだろうか?
違いを判りやすくするために、返ってきた画像からFF0000を全部抜いてみるとこうなる。
このようにMOBやアイテムの画像をImageNoiserにかけてランダム表示させることで、相手にとってはかなり的を絞り辛くなる。
元の色を判別して微妙に変化させているので青い画像で試して赤くなることは無い
ImageNoiserの利用に関して
ImageNoiserの使い方
使い方はとても簡単。
まずはImageNoiserにアクセスしよう。
早ければ30秒足らずでノイズがかかった画像が手に入る。
STEP① ノイズを掛けたいファイルを選択
対応画像はGIF/JPEG/PNGとなるが、GIFに関しては非推奨としておく。上手くノイズが入るか判らない。
また、透過PNGなどαチャネルが入ったものに関しては対応外となる。
STEP② ノイズを加える個数を選択
微妙に色を変える場所を何個つくるかという話で、「よしなに」を選ぶと画像のサイズから自動的にそれとなくノイズを入れる。
STEP③ ZIP形式選択
連番ファイルは1つのフォルダの中に01から20までずらりと画像が並ぶ。
連番ディレクトリを選ぶと、フォルダが01から20まで並び、画像はオリジナルのファイル名のままで各フォルダに入る形になる。
STEP④ ダウンロード
CAPTCHAがついているのでBOTではないことを確認してからダウンロードボタンを押す。
何か問題が起きた場合はページ上部にエラーメッセージが表示される。
あとがき
CGIゲームで強いマクロ対策はどうしても出来ないが、9割以上を占めるであろう「作れないけど何とか頑張ろうとしている人」を振り落とすのにこういった手法は有効だと思う。
今の時代にCGIゲームを作ったり運営している人は希少だし、そういうのが好きな人の受け皿になっていると思うので頑張って欲しい。
バグ・脆弱性はないか、簡単に実装できそうなマクロ対策はないか・・・などなど、その手の疑問があれば是非相談してもらえると、たぶん誰かが頑張ると思う。
2016年04月01日 追記 by nk.
2016年04月01日 追記
ImageNoiser開発担当(?)のnk.です。以降は仕様に関しての僕からの追記です。
ノイズ個数に関して
ノイズの個数は選択できるようになっていますが、現状では多めに選択しても画像の縦横サイズの積の1/100以上の数を指定することができないようになっています。
例えば、30 x 30 pixelの画像では、10や100を指定しても9個のノイズしか加えられません。
これは「よしなに」指定と同じ個数となります。
GIF非推奨の理由
ImageNoiserで受け付けている画像形式にはフルカラーのものとパレット形式のものがあります。
GIFは問答無用でパレット形式なのですが、パレットに含められる色数には上限があります。
ノイズとして新しい色を作成してもパレットに含められず、よってノイズとして加えられた色が正しく反映されない可能性があります。
以上の理由から、GIFは非推奨となります。
どうしてもGIFを用いたい場合は一度PNG形式でノイズを加えたあと、画像編集ツール等でいい感じにパレット形式に変換してからGIFとして保存すればよいかと思います。手間なのでそのままPNGを用いることを推奨しますが。
ファイル名に関して
画像のファイル名で判別されてしまうことも考えられるので、需要があれば一定のアルゴリズムでファイル名を暗号化(ってほど大層なものではないですが)する機能もつけようかとか考えています。需要があれば実装しますので、ぜひこの記事にコメントをよろしくお願いします。
コメント