Android開発 Assetsのパスワード付きZipファイルを解凍

ぬしを釣れ!!ではゲームデータとセーブデータにパスワードや暗号化をかけていなかったのですが、サーバーからセーブデータを見る限りではチートされた形跡が見当たらなかったので安心していたのもつかの間。

ついに、とあるプレイヤーさんから、デバッグ用アイテム「釣り接待」を使いましたとの報告をいただいてしまいました。これはいかんと思い、「人類みな兄弟だ!!」では、ゲームデータ&セーブデータの暗号化に踏み切った次第です。

ゲームデータはAssetsにパスワード付きZipで格納、ゲーム起動時に解凍しています。(→こちらを参考にしました。)

※“Traditional PKWARE Encryption” という旧式の暗号化方式のみ対応しているようです。

セーブデータは、sqlcipherというやつを使いました。

※v0.9.0.7以前の保管データは破棄されるため、この機能をご利用の方は新たに「データの保管」をしてください。

 

もしこのセキュリティを破った!!という方には、先着一名様におこめ券を1枚進呈させていただくとともに、僕自身、もっと勉強してセキュアなアプリ作りに励んでいく所存です。

GoogleMap 8bit化

「人類みな兄弟だ!!」の開発用のツールを作りながら、そういえば4/1にドラクエ風GoogleMapが出ていたことを思い出したので、遊びで8bit化してみました。

面白そうなら取り入れようと思ってやったのですが、想像以上にぱっとしませんでした。

僕らは完全にファミコン世代なので、こういうチープな8bit画像を見るだけで心がときめくものですが・・・。一面砂地と草原だからドラクエっぽくないのかもしれません。あとは道幅が不自然というか。

この8bitマップはスクエニ作なのでタイルは自作するにしても、この技術を「人類みな兄弟だ!!」に取り入れるのはちょっと微妙かなあと思いました。

もしもGoogleが、目いっぱいズームしたときの建物やなんかもファミコンっぽい絵に変換してくれるような技術を開発してくれたらぜひ使いたいのですが。

現在作成中の新作につきまして その2

 

作りこんでいくうちにどんどんシステムが肥大化してしまいましたが、かなり出来上がってきました。

コンセプトとしては、のんびりまったり小旅行的な感じです。

調べたところ、「ぬしを釣れ!!」との連携も技術的に可能なようです。釣った魚を新作で食べる機能もおいおい作っていく予定です。

ここの所開発にかかりきりだったので、リリースできたら1週間くらい休業しようかなあ。

現在開発中の新作につきまして

現在、新作を開発中です。これは今までには無い、色々な可能性の詰まったアプリだと思います。

アイディア先行でわりと無茶な実装をしているため開発初期にはかなり悩みましたが、技術的なハードルはほぼクリアしました。あと残すところはゲームのシステムの作成が少しと、ゲーム内容を作りこむといったところです。今月中には何とかお届けできるよう、頑張ります。

※新作を開発中のため、「ぬしを釣れ!!」の更新が滞っており、まことに申し訳ありません。

Heyzapに参加しました

米ソーシャルゲームプラットフォーム「Heyzap」へ、「ぬしを釣れ!!」英語版を投入しました。

 

~以下、経緯~

とある朝、「Heyzap Wants to Feature Your Game‏」というメールが来ました。

これを寝起きに読んだため、中学生なみの英語力を誇る僕は「おいくそ日本猿野郎!お前のゲームの機能くれ!!」と読み取ってしまいました。

「盗人猛々しいYO!!・・・Zzz」と、どんな罵倒メールを送ろうか、寝て考えることにして二度寝しました。

起きてもう一度そのメールを見てイラっときたのですが、いかんいかんと、ここは冷静に深呼吸してみました。

「Heyzap」ってもしかしてそういう単語かな?と思いぐぐってみたところ、どうやら会社名の様で、日本でいうGREEのような、ソーシャルゲームプラットフォームをやっているみたいです。しかもメールの下の方に、「このゲーム超COOL!!2月中に参加してくれたら、プロモーションするよ!!」とか、くすぐったくなりそうな事が書いてあります。

これは、罵倒メールの文面を考えている場合ではありません。しかもメールの差出人はどうやら金髪美女(想像)のようです。これは反則です。

というわけで、組み込みに異様に時間を取られつつも無事、Heyzapの機能を組み込むことに成功しました(Heyzapのページはこちら)。

 

~ここから技術的な話~

一体何に時間がかかったかというと、「XMLレイアウトだけに追記した実装では、リリースビルドの際、HeyzapSDKがProguardに”使われてないからいらない”と見なされて、消されてしまい、起動時にClassNotFoundExceptionで落とされる」という問題に頭を悩ませていました。

通常はProguard.cfgでJar全体を難読化対象から除外するらしいのですが、記述のしかたが悪いのかうまくいかず。

Heyzapの技術サポートに投げても返事が来ないし、ぐぐりまくっても出てこないし途方に暮れ、酒に逃げる日々(2日間)を送っていたのですが、ある日ひらめきました。

「ソースコードから呼ばれてない」という原因で消されるのなら、ソースコードから呼んでやればいいのでは??

というわけで、

HeyzapLib.load(this); の後に、

HeyzapButton heyzapbutton = null; のように、使わないけど呼んでみただけ、みたいなコードを追加すると、すんなりいけました。

これはProguardがJarを消してしまう場合、Adlantisなど、XMLレイアウトに追加するだけで動くというもの全てに使えるようです。Jar全体の難読化を除外するよりも、本当に要らないところは捨てる、使うところは難読化すると思うので、より最適化されているような気がします。

 

そんなこんなで、英語版「ぬしを釣れ!!」にはHeyzapの機能が無事組み込まれたわけですが、このHeyzap、利用者にやたらセクシー美女が多いようです。なぜでしょうか。