2013年2月25日月曜日

海外向けプロモ(レビュー依頼) - update#6

海外向けのプロモーション活動として、いくつかのレビューサイトに依頼を出してみました。
対象物は、NOKOGI Rider、NOKOGI Rider(Lite)、Invade Block 2(Free)で。
海外のレビューサイトは探すだけでも大変だと思うので、とりあえず纏めておきます。

【今日依頼を出したサイト】
http://www.pocketgamer.co.uk/
http://www.androidrundown.com/
http://mobileapps4biz.net/
http://www.whatsmyapp.com/
http://mikel305.jimdo.com/
http://www.androiddoes.net/

一番載りたいのはPocketGamer。(1番上)
恐らく、最大手だと思います。
# というより、PocketGamer以外は、ゲームに特化している訳ではなさそう。
その次はAndroidRunDown。(上から2番目)
ゲーム寄りという意味で。

PocketGamerについてはNOKOGI Riderのみ、他は両方の依頼をしました。
NOKOGI Riderは、基本的に有償版で依頼を出しましたが、AndroidRunDownの場合、APKの送付も必要だったからLite版で。

PocketGamer以外は、フォームに入力していくタイプです。
メッセージを書く必要があるものや、フリーフォーマットのものも幾つかあります。
その場合、英作文しないといけないのでちょっと大変かも。
PocketGamerの場合、メールで依頼しなければならないので、フリーフォーマットよりも大変。

参考までに、PocketGamerに送信した依頼内容(メール)は、以下のような感じです。
Hello,

I will introduce "NOKOGI Rider" that I developed.

NOKOGI Rider is a vertical-scrolling danmaku STG (hell-barrage shooting game).
It features '90s arcade-style graphics and complex music based on wave memory sounds.
The game itself has a rather retro feel, but the controls are designed specifically for the touch screen of a smartphone.
For example, unlike many games that have been ported from arcade games, there are no difficult to use software buttons on the screen.
The game can be played easily with one hand.

More detailed information:

Regards,
Yoji Suzuki

私は英語が得意な訳ではないので、英文が適切かどうかは分かりません。
基本的には、「https://googledrive.com/host/0B7c8xPyv4KQWMm8yaXFKdG5TU0E/index.html」で書いている説明書の概要部分に対して、英文メール文書の一般的な枕詞と結語を加えただけです。
だから、多分大丈夫なハズ。

なお、英語版の説明書については、Gengo(の一番安いプラン)で翻訳しました。
(私が幾らか内容を書き換えてますが)


25-Feb 追記(update#1)

どうやら、「http://www.askyourandroid.com/」は金を取るっぽいですね。
返信は一番早かった。
「通常価格25$のところ、20$でやってあげるよ」という、微妙なディスカウント。
割引せずとも安価ですが、狙い目ではないので放置で。
ついでに、PayPal決済だと言われたのですが、現状、アカウントへ入金するには解除手続きを取る必要があるっぽいから、面倒。


26-Feb 追記(update#2)

レビュー依頼先に以下を追加。
http://www.androidpolice.com


26-Feb 追記(update#3)

http://www.whatsmyapp.com/」から返信到着。
依頼はちゃんと受け付けられたっぽい。

ついでに、有償レビューの案内が添えられていた。価格は25$。
この辺りが相場なのだろうか?
そもそも、日本だと有料レビューというのを少なくとも私は見た事が無いのですが、向こうでは普通?
とりあえず、よく分からないので有料での依頼は保留。

【現在の状況】
①自動返信の連絡あり http://www.pocketgamer.co.uk/
②連絡なし http://www.androidrundown.com/
③連絡なし http://mobileapps4biz.net/
④エントリ http://www.whatsmyapp.com/ (有料案内は保留)
⑤連絡なし http://mikel305.jimdo.com/
⑥×有料のみ? http://www.askyourandroid.com/
⑦連絡なし http://www.androiddoes.net/


27-Feb 追記(update#4)

掲載率を高めるための工夫は必要なんじゃないかと思います。
無意味かもしれないけど。
例えば、
・SNSアカウントはフォローしておく
・ユーザ登録(無料)が可能なサイトはユーザ登録しておく

PocketGamerを狙っていたのに、上記2点を失念していたので、今実施。
2営業日程度のラグが発生してしまったか...
そういえば、イギリスではNOKOGI Riderの購入率が高いので、実はすでに紹介済みという可能性もあるかもしれません。


27-Feb 追記(update#5)

http://www.androidrundown.com/ から好感触なメールがktkr。
1行のメールでした。これは期待できるかも。
長いメールは概ねテンプレートだと判断できますが、短い(&好感触な)メールの場合、ちゃんと内容がチェックされた上で返信してきたのだろうと思うので。もちろん、カンですが。

【現在の状況】
①自動返信の連絡あり http://www.pocketgamer.co.uk/
好感触? http://www.androidrundown.com/
③連絡なし http://mobileapps4biz.net/
④エントリ http://www.whatsmyapp.com/ (有料案内は保留)
⑤連絡なし http://mikel305.jimdo.com/
⑥×有料のみ? http://www.askyourandroid.com/
⑦連絡なし http://www.androiddoes.net/
⑧連絡なし http://www.androidpolice.com


28-Feb 追記(update#6)

好感触な返事をいただいたAndroidRunDownさんからのメールを、英語が得意な知り合い(TOEIC満点の人)に確認して貰ったところ、「前向きにレビューするための評価をしてみるよ。うぃーす☆」という感じのようでした。

要するに、レビュー掲載の確約ではなく、審査対象になった状態だと判断できます。
NOKOGI Riderは、内容さえチェックして貰えれば大丈夫だと思います・・・たぶん。

ちなみに、「うぃーす☆」という部分は「Cheers」です。
乾杯の時とかの掛け声でよく使う言葉らしい。
英国では、友人間のメールの結語として使ったりするようです。

そこで、「ありがとうございます。楽しみにしてます。」的な感じの返事を送信。
こちらがフォームで入力したメールアドレスが「ちゃんと連絡が取れるもの」だということを先方に知らせる為にも、良い感じの返事を頂いたサイトの担当者さんには、なるべく早く折り返しメールを出しておいた方が印象が良いと思います。
コミュニケーションは基本。

2013年2月24日日曜日

あらゆるペニーの価値

NOKOGI Riderをかなり多くの人(60人ちょっと)に買って貰えました。
「worth every penny」って「価値がある」って意味なんですね。
海外の方からのコメントで初めて意味を知りました。

# Google翻訳だと「あらゆるペニーの価値」という感じでしたが。 

NOKOGI Riderを買ってくれた全ての人にとって、それが価値のあるものであったことを願っています。

もちろん、それは本音です。
しかし、NOKOGI Riderを最も愛しているのは私自身だと断言できます。

去年3月の開発着手(最初のリークは同月31日)から8末にかけて、数え切れないぐらい途方もない回数のテストプレイを繰り返し、完成後もひたすらプレイし続けているのですが、完成から半年経過しようとしている現在に至っても、まだ飽きずに遊び続けています。まだ、正攻法ではNINJAを攻略できていません...理論上(=プラクティスモードのベストプレイの組み合わせ)ではクリアできているのですが、中々ベストプレイが繋がらない。

これだけ遊べるゲームは稀です。
SHOT01~SHOT03は、せいぜいワンクールぐらいで飽きてしまい、「ダメだコリャ、次いってみよぉ」という感じのノリで新作の開発を繰り返してきました。仮に次回作(SHOT05)が完成しなかった場合、私が完全にSHOT04で満足してしまったということになります。(今のところ、SHOT05の開発はやってますが、完成するかは未知数)

私が出会ったゲームの中で、このレベルで遊び続けられるゲームは、今のところ東方ぐらい。
東方は面白い。(二次創作はよく分かりませんが)
NOKOGI Riderについて、東方のパクリと言われたことがあり、とても嬉しかったです。
私の場合、2008年夏ぐらいに初めて東方紅魔郷をやり、それにより眠り続けていた何かが呼び覚まされ、狂ったようにゲーム作りを再開したという経緯があります。なので、東方は(2008年以降の)私のゲームの生みの親であり、隠れ東方二次創作だというのは紛れもない事実です。
※ガイドラインによると、二次創作品のAndroidMaket上での販売は原則的に禁止されているから、表向きは二次創作ではないということにしてますが。許されるのであれば、エンディングの最後の方にでも「これは、東方二次創作かもしれません」ぐらいのことを書きたかったけど、自重しました。(果たして、何人ぐらいの方が、あの壮絶なエンディングを目にされたか、とても気になります)

2013年2月19日火曜日

広告アプリの成果が良い地域についての分析経過

InvaderBlock2の無料版(広告付き)をリリースして6日目になります。
過去5日間のインストール実績@GooglePlayは、下表のような形です。
# date install uninstall u率 有効数 前日比 総数
1 14-Feb Thu 1 0 0% 1 - 1
2 15-Feb Fri 13 3 23% 11 1100% 14
3 16-Feb Sat 21 10 48% 22 200% 35
4 17-Feb Sun 35 14 40% 43 195% 70
5 18-Feb Mon 23 10 43% 56 130% 93

恐らく、この成果の大半は15-Feb以降に開始した、Tap for Tapの有償広告によるものです。

Tap for Tapの有償広告による成果については、下表のとおり。
imp tap tap/imp install 構成比 total ins/tap CPI Cost CPC
- - - - - - - - - -
29455 328 1.11% 14 108% 14 4.27% $0.40 $5.60 $0.02
42206 1029 2.44% 30 143% 44 2.92% $0.40 $12.00 $0.01
95382 1992 2.09% 33 94% 77 1.66% $0.40 $13.20 $0.01
27381 619 2.26% 28 122% 105 4.52% $0.40 $11.20 $0.02
※「構成比率」というのは、GooglePlayのinstallに占めるTap for Tapの有償広告によるinstallの割合です。理論上、構成比率が100%を超えることは有り得ないかもしれませんが、GooglePlayにおける有効インストール数は「有効端末のインストール数」に限られるため、GooglePlayにおける無効端末でのインストール数も含まれているのだと思います。(若しくは、uninstall→tap→installということをやる人も居るかもしれませんが、それは流石にレアケース・・・と信じておきます)

そして、収益実績値は、下表の通り。
imp tap tap/imp tap/inst Earned EPI
34 0 0% 0% 0 0.00
51 4 8% 36% 100 7.14
88 6 7% 27% 190 5.43
100 5 5% 12% 130 1.86
66 7 11% 13% 280 3.01
実績値(Earned)の単位はCreditです。
1クレジットに幾ら(何セント)の価値があるのかは、今のところ未確認。

ここからが本題です。

完成した広告アプリで収益を獲得するのに必要なことは、第一にユーザの獲得です。
加えて、「広告をクリックしてくれ易いユーザ」を多く獲得すれば、収益率が高くなります。

もちろん、クリックしてくれ易い広告を出してもらうことが重要ではありますが。
Tap for Tapの場合、表示する広告種別に関する選択肢は、「エッチな広告を出すか否か」の一点。
※私のアプリ(Invader Block 2)では、エロ広告の表示については、OFFにしてます。
つまり、表示される広告に関する選択の余地はありません。

先述しましたが、現時点で獲得したユーザの大半は、15-Feb以降に開始した、Tap for Tapの有償広告によるものです。これを逆説的に捉えると、現時点で獲得しているユーザは、「広告をクリックしてくれ易いユーザ」と考えることができます。

以前、Googleのセミナーに参加した時、「広告のクリックし易さには地域差がある」と聞きました。
現時点で獲得したユーザの地域については、デベロッパーコンソールで確認できます。
現状は、下図のような感じでした。
トップはマレーシア、亜米利加。

アメリカは、ティア1(クリック単価が高い)ので、当然ながらメインターゲットです。

マレーシアがトップなのが意外。
マレーシアは、ティア3の地域なので、若干クリック単価が安いのですが、無視できないかも。
インドについては有名ですね。ただし、ティア4なので、クリック単価が物凄く安い(アメリカの1/4)です。でも、インドでのインストール数が増えて以降、ティア4での成果が少しづつ出てきたという事実もあるので、そこそこ重要な地域だと言えるかもしれません。

まだ、インストール数が少ないので何とも言えませんが。
1000インストールぐらいいけば、結構確定的な傾向が見えてくるんですが。。。
ちなみに、Tap for Tapの有償広告は成果報酬型(ノンインセンティブ型)です。
驚くことに、CPI単価はたったの40セント。
日本のノンインセンティブ型の広告会社の1/3~1/5という驚きの安さです。
まぁ、値段相応の何かがあるのかもしれませんが。。。

なお、上記はあくまでもInvaderBlock2での傾向であり、他のアプリでも同じとは言えません。
しかし、リリース直後に広告出稿をすることで、こういうデータを収集することができる訳です。

2013年2月17日日曜日

VGSでの広告表示(Tap for Tap)

先日、InvaderBlock2のフリー版(広告付き)を公開しました。
広告の実装には、Tap for Tapを採用してみました。
私は、どちらかというと広告ビジネスに否定的な見解を示していたので、その釈明を兼ねて考え&TIPS(VGSのアプリで広告を実装する方法)を記しておきます。

広告会社の概要

Tap for Tapは、カナダ(米国のブリティッシュコロンビア州)に拠点をおく広告会社です。
私のアプリ事業は、北米方面を中心に展開しているので、そっち方面の会社の方が良かろうという判断です。米国本土の方が良いかもしれませんが、サービス内容が興味深かったので、そこにしてみました。デベロッパー数は6,000人前後。(まだ新興企業ですね)

サービス概要

Tap for Tapの場合、プロモーション(ユーザ獲得)と収益化のバランスを、任意に調整できます。
例えば、広告で得た収益の全てをプロモーションに使うことができます。
# 実質的な費用対効果については、まだ十分なデータが集まっていないので未確認。

利用した経緯

NOKOGI Riderの販売を開始してもうすぐ半年ぐらい経過します。
その間の販売実績は、現時点で57本ぐらいと不調です。
ゲームそのものは面白いと思います。
しかし、如何せんプロモが弱すぎることが売れない原因かもしれません。
マネタイズのみの広告アプリというのは、未だにちょっと疑心暗鬼しています。
しかし、プロモ用途でちょっと使ってみるぐらいなら良いんじゃないかと思い始めました。

ただし、広告を入れれば結構沢山のパーミッション要求が必要になります。
NOKOGI Riderに関しては、それで汚したくないと考えました。
そこで白羽の矢が立ったのが「InvaderBlock2」です。

「InvaderBlock2」は、GooglePlayでの販売テスト用にリリースしたアプリです。
ゲームそのものの面白さは中々だと思ってます。
しかし、やはり実質的に有償販売だけなので、サッパリ売れません。
(一応、1年で10本ぐらい売れましたが)

ついでに、InvaderBlock2は、広告アプリで成功するために必要な要素を持っています。
恐らく、広告アプリとしての潜在能力は、NOKOGI Rider以上です。
そう思っていた矢先、Tap for Tapの担当者から「InvaderBlock2に広告を載せてくれ」というeメールがあり、サービスを確認したところ私の方針(プロモーション強化)にマッチしていると思ったので、それを利用してみることにしました。

VGSアプリでの広告の実装方法(基本編)

とても簡単です。以下、InvaderBlock2のソースコード(Java側)の抜粋で説明します。
    @Override
    public void onCreate(Bundle savedInstanceState) {
        try {
            ~VGS関連の初期化(中略)~
            } else {
                // View の設定
                mMainView=new VgeSurfaceView(this);
                mLayout=new FrameLayout(this);
                mLayout.addView(mMainView);
                getWindow().setContentView(mLayout);
                TapForTap.initialize(this, "自分のAPIキー");
                mAdView = new AdView(this);
                DisplayMetrics metrics = getResources().getDisplayMetrics();
                int width = metrics.widthPixels;
                int height = (int)(50 * (width / 320.0));
                LinearLayout.LayoutParams myLayoutParams = new
                                        LinearLayout.LayoutParams(width, height);
                mAdView.setLayoutParams(myLayoutParams);
                mAdParam=new FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams.MATCH_PARENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT,
                    Gravity.BOTTOM);
                mLayout.addView(mAdView,mAdParam);
                mAdPut=true;
            }
        } catch(Exception e) {
            Log.e(LOG_TAG, "AN EXCEPTION DETECTED.", e);
        }
    }
前半の初期化処理は、VGS固有の初期化処理なので中略しました。
ポイントは青色の網掛け部分です。
広告の処理は、ゲームとは別のビューで実装します。
大まかに、VGSのプログラムに広告を実装する場合、次のような実装をすればOKです。
(1) FrameLayoutクラスのオブジェクト(mLayout)を準備
(2) ゲーム本体のビュー(mMainView)を作成し、mLayoutに追加。
(3) 広告表示用のビュー(mAdView )を作成し、mLayoutに追加。
なお、実装中の緑色の網掛け部分は、広告ビューのスタイルを設定する処理です。
この部分は、レイアウトのxmlでも良いかもしれません。(サンプルはその方式でした)

メイン処理(C言語)との連携処理

広告を表示しっぱなしのアプリであれば、上記の実装でOKです。
ただし、ゲームの場合、ゲームのプレイ中に広告表示がされるのはハッキリ言って邪魔です。
そこで、広告の表示をON/OFFできる仕組みの実装方法を解説します。

VGSの場合、C言語で実装しているメイン処理に広告のON/OFFなどのオペレーションを要求するためのインタフェースを実装する必要があります。下記のような感じで良いと思います。
    /*
     *------------------------------------------------------------------------
     * Java側への要求を取得する (JNI)
     *------------------------------------------------------------------------
     */
    public static native int getRequest();
※数値(jint)でオペレーションを返す仕様にします(0 = None / 1 = put ads / 2 = delete ads)

そして、VgeSurfaceViewのスレッドでオペレーション(0以外)を取得した場合、アクティビティクラスでそれを処理できるようにするために、アクティビティクラスにハンドラ関数を実装します。
    public Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch(mRequest) {
                case 1: //広告を表示
                    if(!mAdPut) {
                        mLayout.addView(mAdView,mAdParam);
                        mAdPut=true;
                    }
                    break;
                case 2: //広告を削除
                    if(mAdPut) {
                        mLayout.removeView(mAdView);
                        mAdPut=false;
                    }
                    break;
            }
            mRequest=-1;
        }
    };

VgeSurfaceView側の実装はこんな感じでOKです。

    public VgeSurfaceView(Context context) {
        super(context);
        act=(IBLOCKA)context;
        vram=Bitmap.createBitmap(XSIZE,YSIZE,Bitmap.Config.RGB_565);
        vram.setDensity(Bitmap.DENSITY_NONE);
        vramRect=new Rect(0,0,XSIZE,YSIZE);
        getHolder().addCallback(this);
    }


    @Override
    public void run() {
        SurfaceHolder holder=getHolder();
        Canvas canvas;
        int rc=0;
        int rq;
        while (isAttached) {
            canvas=null;
            try {
                rc=IBLOCKA.setVram(vram);
                canvas=holder.lockCanvas();
                if(null!=canvas) {
                    canvas.drawBitmap(vram,vramRect,screenRect,screenPaint);
                }
            } finally {
                if(null!=canvas) holder.unlockCanvasAndPost(canvas);
                if(rc!=0) break;
            }
            rq=IBLOCKA.getRequest();
            if(0!=rq) {
                IBLOCKA.mRequest=rq;
                act.handler.sendEmptyMessage(0);
            }
        }
        if(0!=rc) {
            System.exit(0);
        }
    }
getRequestで0以外を取得した場合、値をアクティビティクラスのメンバ変数にセットして、sendEmptyMessage関数でハンドラ関数を実行して、1(広告を表示)または2(広告を削除)を実行します。
実は私はJavaが苦手なので、あまりJavaっぽくない作り方かも。
この辺りは、お好みでアレンジしてください。

概ねこんな感じの実装を使えば、VGSのアプリに広告を実装できます。
広告の実装方法については、AdMobなどの他の広告会社のものでも、基本的なことは概ね同じじゃないかと思います。





2013年2月11日月曜日

Google+へ移行気味

今年の初めぐらいからGoogle+を使い始めたのですが、出先からでも使い易いので結構重宝しています。
コミュニティ機能がかなり便利。
とりあえず、SUZUKI PLAN専用コミュニティを作り、せっせと開発状況を書き綴っています。
https://plus.google.com/u/0/communities/101901802119581380381

次回作の体験版(Lite版)が完成したら、GooglePlayの説明文からこのコミュへのリンクを張って誘導し、作品への要望や意見などをくれる方を募ってみようかと思っていたりします。ここのブログは、纏まった内容を記述する用途で便利なので残しておきますが、テンポラリ的な内容については概ねG+上でつぶやく感じになりつつあるかも。