dnekblog

スマホのアプリを作ってる。

運ゲー排除マインスイーパーをiOSにも対応させた話とか

この記事は KMC Advent Calendar 2016 - Adventar 6日目(12/6)の記事です。

www.adventar.org

5日目の記事は、id:tyageさんの嘘つきPHP ZipArchive::addGlobと壊れたファイルパス – 弱いでした。

blog.tyage.net

はじめに

過去にKMCで会長をしていたのか今となっては怪しいdama*1です。 今は4回生なので一応卒論を書いているのですが、一緒にKMCに入った仲間たちがほとんど留年してしまっていて寂しい感じです。

1年経ってみて

ちょうど1年前の12/6に同じくKMCのAdventCalendarでこんな記事を書きました。

dnek.hatenablog.com

このアプリについて書いています(iOS版は後述)。

play.google.com

長ったるいまともなブログ記事を書いたのは確か初めてだったのですが、予想よりもかなり多くの方々に閲覧・反応していただけたようで良かったです。 それから1年経つ間に色々とやったことややっていないことがあるので適当にその辺の話をしようと思います。

KMC効果

実はこのアプリを初めてリリースしたのは1年前に記事を書いた日の数週間前だったのですが、記事を書いてからDL数が桁違い*2に増えた記憶があります。

総DL数は数百程度だったものの、おかげさまで新着無料ゲーム総合で200位以内に入ることができました。

KMCの知名度のおかげだと思います。感謝。

「五億円ゲット」

正月早々2本目のアプリをリリースしました。

「五億円」という経済指標は、日本人の平均生涯賃金とされる2億円の2倍を超えており、手に入れれば一生余裕を持って過ごすことができる額となっています。 2015年の京都大学11月祭では京都大学五億円同好会のブースも出展され、その人気は今も揺らぐことはありません。

そんな中、年末に唐突に思い立ち大晦日まで作業をし2016年元日にリリースしてしまったものがこちらです。

play.google.com

1円玉から500円玉までの硬貨が並んでおり、タップする毎に溜まっていくというクソゲーです。

同じくクソゲーでありながら何故か大ヒットした「100万の○〇〇」*3というアプリがあるのですが、500円玉を100万回タップすればぴったり5億円だし難易度的に丁度良いだろうと思い、作ってしまいました。

1硬貨あたり3種類の硬貨効果音を心を込めて録音したので、その音を聴いて楽しむのがオススメです。

当然流行ることはなく未だにDL数は2桁しかありません。 それでも何故かずっと続けている知人が二人も居りしかも電車内で無音でプレイしているらしく、正直意味が分からないです(遊び方は自由です)。

当然全く期待していないので一度もアプデしていないしiOSに対応する気も無いですが、もし万が一流行ることがあったら考えてみようと思います。

ユニバーサルアプリキャンペーン

良いものを作りたいと思ってUnambiSweeperを作ったのは本当で、特に手を抜いたつもりもありません。 それでもお金が欲しいという気持ちは割りとあるので、アプリ内に広告を表示させていただいており、多少の宣伝もしています。

最初はお金をかけずに宣伝したいと考えてレビューサイトにお願いしまくったのですが、案の定全く載せてもらえませんでした。 Twitterでは主にKMCの力によりそれなりの宣伝ができたのですが、やはり限度があるといった感じです。

結局3月にユニバーサルアプリキャンペーンを使ってみることにしました。 ユニバーサル(ryというのは、簡単な設定をするだけで、Googleさんがアプリ内広告とかYouTubeとかGoogle検索の検索結果とかで良い感じに宣伝してくれるやつです。 課金方式はCPC(クリック毎)になっています。

とりあえず\11,000くらい突っ込んでみたのですが、割とすぐに400DLくらい行きました。 インストール単価は27円くらい。

それで広告収入がどうなったかというと、全く増えませんでした。むしろ減った。アイエエェ……

理由を考えて見るに、主に以下の3つかなと思います。

  • 主に海外のクリック単価の低い地域に向けて宣伝していたため当然収益も低い
  • Twitterやストア内検索経由でDLしたユーザーに比べてすぐにアンインストールする人が多い
  • 自然減

貧乏学生なのでインストール単価数百円の先進国に向けて宣伝するのは多少気が引けるのですが、また余裕ができたら試してみようかなと思っています。

Unity再び

去年の記事にも書いたのですが、最初のUnambiSweeperは1回生のときにWindows向けに作りました。 その後なんとなくUnityに移植し、去年になってAndroid版を作ったという感じです。

Android版はJava & AndroidStudioで開発していたのですが、ちょっと問題がありました。 何故か電力消費が激しく、また一部端末(どうも機種依存では無さそう)で動作が著しく重くなるというものです。 恐らくSurfaceViewが原因なのですが、去年の記事が完全なブーメランとなっている気がします。

何とかしようと色々考えたのですがよく分からず、面倒なのでいっそUnityに移植してついでにiOSにも対応しようという結論に至りました。

そもそも1回生のときにUnityに移植したのではと思われるかもしれないですが、当時はPCで遊ぶことしか考えていなかったため、タッチ操作・画面移動・GooglePlayゲーム・広告対応などやらないといけないことが色々あった訳です。 また、当時のUnityで作ったスマホアプリはかなり重く、最近IL2CPP*4に対応してやっとまともになったので使う気になったというのもあります。

iOS対応

Unityはマルチプラットフォーム対応ゲームエンジンでほとんどのコードを共通化できるすごいやつなのですが、多少はAndroidiOSで個別に対応しないといけないこともあります。

というのも、Android版ではランキングや実績のためにGooglePlayGamesServicesを使っていたわけですが、折角iOSにも対応しているのに実装してもAppStoreでリジェクトされてしまうらしく、iOSでは泣く泣くGamecenterを使うことにしました。 まあ個別に書くだけでそれぞれの実装は大して難しくないのですが。

ちなみにPlayGamesの方は以下のプラグインを使い、iOSはUnity標準のusing UnityEngine.SocialPlatforms;すればいけます。

github.com

もう一つ、ヴァイブレーションはHandheld.Vibrate();で鳴らせるのですが、Androidで任意の時間鳴らすにはネイティブコードを書く必要あります。 適当なプラグインを入れても良いですが、大した実装ではないのでこの辺を参考に自分で書けば良いと思います。

ameblo.jp

一方でAdMob広告やSNSでの共有、ネイティブダイアログなんかはプラグインで簡単にいけます。

GoogleMobileAdsは割りと頻繁に更新されていて、丁度今朝Version 3.1.3がリリースされていました。

github.com

SNS共有はこれが一番使い勝手が良いと思います。

github.com

ネイティブダイアログはこちら。 ただ、3つ以上の選択肢が出せないので他に良いプラグインがあれば教えて欲しいです。

github.com

Android版のバージョン管理

通常UnityでAndroid向けにビルドするとARM/x86両方のアーキテクチャに対応するapkが出力されますが、これが結構重いので、Player SettingsのDevice Filterで設定してそれぞれ専用のapkをビルドした方が良いです。Bundle Version Codeも分けておくようにしましょう。

そうすると複数のapkを同じアプリとして公開する必要が出てくるので、Developer Console上で設定をします。 当該アプリページのAPKタブ内右上にある「アドバンスモードに切り替える」ボタンを押すと、複数apkを端末によって振り分けられるようになります。

ちなみにUnambiSweeperはAndroid2.3.3以降に対応していたのですが、Google Play Games plugin for UnityがAndroid4.0以降対応だったため、今後更新はしないものの前バージョンのapkも残し、4.0未満でもインストール出来るようにしています。

HP

プレイスコアをSNSで共有するとき、末尾にハッシュタグ#UnambiSweeperとアプリURLを付けさせてもらっています。 Android版ではPlayストアのURLをGoogle URL Shortenerで短縮したものを使っていたのですが、 iOSにも対応するにあたり片方のOSのURLだけ共有されても困るので、HP内にアプリ紹介ページを作りそこから各ストアへ飛んでもらうことにしました。 ただ、当時使っていた忍者ホームページ*5だと微妙に長い上に広告も表示されてなんか嫌だったので、新しく作り直すことにしました。

最近(?)は便利なもので、Freenomというサービスで、.tk/.ml/.ga/.cf/.gqといった主にアフリカのトップレベルドメインが無料で取得できるようになっています。

Freenom - 誰でも利用できる名前

辞書登録されているようなものでなければ、最短4文字のドメインを取得することができます。 私はdnek.cfを取得しました。 今の所、最低年1回の契約更新を忘れなければ使い続けられるはずです。

後はホームページサービスですが、ウェブクロウという無料・広告無し・商用可・独自ドメイン対応の良い感じのやつがあります。

www.webcrow.jp

これらを登録したら後はネームサーバーを設定してあげれば簡単に広告無しで短いドメインのHPが手に入ります。

.htaccessもちゃんと使える*6のでリネームして.htmlを消すようにし、http://dnek.cf/unambiという短いURLが出来ました。 めでたい。

Metal

試行錯誤とサボりを繰り返しつつなんとか10月末にリリースすることができました。

しかしすぐにとある知人からバグ報告がありスクショを見せてもらったのですが、スタート画面がうまく表示されずまともに使えない状況でした。

ググってみるとこんな記事が見つかりました。

answers.unity3d.com

要はiPhone5s(他の機種もあるかも)だとUGUI*7がMetal*8で上手く描画出来ないらしいので、使わないように設定したら直りました。 一安心。バグ報告感謝。

現状&まとめ

以上のような感じで色々とやってきたわけですが、現在は総インストール数が4,400+、評価が☆4.259(総評価数: 81)といった感じです。

更にぶっちゃけてしまうと、最近の広告収入は百数十円/日、約5千円/月、総計で5万円弱といったところです。 Android : iOS = 3 : 2くらい。 多いと思う方も少ないと思う方もいると思いますが、とりあえずお小遣い程度にはなっています。

アプリの完成度はゲームとしてちゃんと遊べるくらいになっていると思いますが、まだまだ改善の余地があるので今後もアプデを続けていきたいと思います。 あとこの記事を書いている途中で気付いたのですが、Unity5.5の安定版が11/30にリリースされていたらしいので、GoogleMobileAdsの更新も兼ねて後で試してみようと思います。

他にもアプリのアイデア自体はいくつかあるのでどんどん作っていきたいです。また、こういうの作って欲しい等ありましたらTwitterとかで教えて下さい。

twitter.com

あとこちらもインストールよろしくお願いします。

play.google.com

また、宣伝していただける場合は以下の紹介ページをご利用下さい。

UnambiSweeper|DNEK

終わりに

今年も長文駄文失礼致しました。

さて、明日はid:yu3marsさんです!

KMC Advent Calendar 2016 - Adventarの他の記事はこちらからどうぞ。

www.adventar.org

*1:damaはKMC内でのID、DNEKは主にTwitterとかで使っている名前

*2:1桁/日→2桁/日

*3:筆者による伏せ字

*4:中間言語からC++に変換して良い感じにしてくれるやつ

*5:実はUnambiSweeperのパッケージ名にその名残がある

*6:忍者ホームページでは使えなかった

*7:Unity標準のGUI

*8:一部のApple製品で使われているCGAPI