RPGツクールMVでUnity Adsを使うプラグイン作ってみた

こんにちは[@dan5ya](https://twitter.com/dan5ya)です。この投稿は[RPGツクールMVアドベントカレンダー](http://qiita.com/advent-calendar/2015/rmmv)20日目の記事です。

RPGツクールMVではiOS、Android向けのゲームを作れるようになりました。つまりRPGツクールで作ったゲームをApp StoreにリリースしてiPhoneで遊んでもらうなんてことができるようになりました。他のスマホアプリ同様、App StoreやGoogle Playでゲームを公開すれば個人でもマネタイズができてしまうわけです。

マネタイズの方法はいくつかありますが、導入が容易で効果の高い方法として動画広告があります。動画広告とRPGツクールMVを組み合わせれば、無料ゲームをストアに公開して、広告で収入を得るということが可能になります。

<img width="600" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://41.media.tumblr.com/7d1588c951054a7b00c0c28b088d4c81/tumblr_nzlizayr8q1qz8hnto1_1280.png">

人気のある動画広告サービスのひとつにUnity Adsがあります。

* [Unity Ads 公式サイト](http://unityads.jp)

Unity Adsは扱いやすくて収益性の高い動画広告として注目されています。Unity AdsはUnity向けの動画広告であると同時に、Unity以外のアプリにも組み込む手段が用意されています。

<img width="600" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://41.media.tumblr.com/4c9ed69a29e00fd81dfd4cdc4b097bc7/tumblr_nzlg01IfnW1qz8hnto3_1280.png">

というわけで、RPGツクールMVでUnity Adsを使うiOS用プラグインを書いてみました。

ここではRPGツクールMVで作ったiOSアプリにUnity Adsを組み込む方法を紹介します。

#プラグイン「UnityAdsMV」のダウンロード

UnityAdsMVというプラグインを作成しました。GitHubで公開しています。ライセンスはMITにしてあるので商用アプリでも自由に使うことが可能です。

* https://github.com/dan5/tkoolmv/blob/master/js/plugins/UnityAdsMV.js

iOSにのみ対応しています。

#UnityAdsMVプラグインをMVのプロジェクトに追加

上記URLからダウンロードしたUnityAdsMV.jsをRPGツクールMVで作成したプロジェクト内のjs/pluginsにコピーしてください。

コピーしたら「プラグイン管理」からUnityAdsMVを有効にします。

#UnityAdsMVを呼び出すイベントを作成する

サンプルとして、プレイヤーにリワードビデオ広告を見せて、見終わったら100ゴールドをプレゼントするというイベントを作ってみましょう。

こんな感じでイベントを組みます。

<img width="800" alt="スクリーンショット 2015-12-19 12.55.30.png" src="http://40.media.tumblr.com/5ad6e6f22ace0c5cab1dd4d2bb01220c/tumblr_nzlg01IfnW1qz8hnto1_1280.png">

<img width="800" alt="スクリーンショット 2015-12-19 12.54.43.png" src="http://40.media.tumblr.com/82643eaec2446955ee5e0881346f23dd/tumblr_nzlg01IfnW1qz8hnto2_1280.png">

リワードビデオが読み込まれていればそれを表示し、ない場合は「Adはありません。」というメッセージを表示して終わります。

試しにエディタ環境でゲームを起動して配置したNPCに話しかけてみてください。「Adはありません。」と表示されます。これはiOSやAndroidでゲームを起動しないと広告を読み込むことができないためです。

とりあえずはこれでOKです。iOSアプリとして起動する手順を以下に示します。

#iOSアプリビルド環境のセットアップ

RPGツクールMVに付属するヘルプの「iOSアプリへの変換」にしたがって、iOSアプリの作成環境を準備してください。以降は準備が終わっていることを前提にします。

手元の開発環境は以下の通りです。

* ツクール ... RPG Maker MV 1.0.1（英語版）
* node ... v0.12.0
* cordova ... 5.4.0
* Xcode ... 7.1.1

#cordovaでプロジェクト作成

ターミナルで下記を実行します。

```
cordova create UnityAdsSample com.example.UnityAdsSample UnityAdsSample
```

```
cd UnityAdsSample
```

```
cordova platform add iOS
```

#cordova-plugin-ad-unityadsをインストール

cordova上にUnity Adsを組み込むためのプラグイン、cordova-plugin-ad-unityadsが公開されています。

* https://github.com/cranberrygame/cordova-plugin-ad-unityads

ターミナルで下記コマンドを実行するだけでcordova-plugin-ad-unityadsをインストールできます。

```
cordova plugin add cordova-plugin-ad-unityads
```

#cordovaプロジェクトをビルド

あとはヘルプの「iOSアプリへの変換」にある手順でcordovaプロジェクトをビルドするだけです。念のためその手順を書いておきます。

ツクールMVからゲームをAndroid / iOS向けにデプロイメントします。UnityAdsSampleのwwwフォルダをデプロイメントしたwwwフォルダと差し替えます。

RPGツクールMVヘルプにしたがって下記2ファイルを編集します。

* www/index.htmlに追記
* config.xmlに追記

<img width="480" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://40.media.tumblr.com/73c0e389c3060c1738c8e7bc86a9032e/tumblr_nzlg01IfnW1qz8hnto9_1280.png">

<img width="400" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://40.media.tumblr.com/864be6e14eb0550d3f1507f59d2e10b8/tumblr_nzlg01IfnW1qz8hnto8_1280.png">

上記をファイルを編集したのち下記コマンドでビルドします。

```
cordova build
```

#動作確認

シミュレータでAdsの表示テストを行うことができます。以下のコマンドでシミュレータを起動できます。

```
cordova emulate iOS
```

<img width="600" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://40.media.tumblr.com/4042138f67569c7ca83035ed947edba4/tumblr_nzlg01IfnW1qz8hnto5_1280.png">
<img width="600" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://41.media.tumblr.com/fc9bf119178810af4a58bc9c3138ae52/tumblr_nzlg01IfnW1qz8hnto7_1280.png">
<img width="600" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://41.media.tumblr.com/4c9ed69a29e00fd81dfd4cdc4b097bc7/tumblr_nzlg01IfnW1qz8hnto3_1280.png">
<img width="600" alt="スクリーンショット 2015-12-19 13.23.44.png" src="http://40.media.tumblr.com/f8450c9c203985d97bc254f2beedd1b0/tumblr_nzlg01IfnW1qz8hnto6_1280.png">


Xcodeを開いてビルドするには以下のコマンドを実行します。

```
open platforms/ios/UnityAdsSample.xcodeproj
```
#UnityAdsMVプラグインに設定するパラメータ

実際にリリースする前に下記パラメータをプラグイン管理から設定してください。各パラメータの意味については[Unity Ads](http://unityads.jp)のドキュメントを確認してください。

* gameId
* videoAdPlacementId
* rewardedVideoAdPlacementId
* isTest ... テスト時はtrueを本番環境ではfalseを設定

#UnityAdsMVプラグインで使えるAPIについて

UnityAdsMVプラグインで使えるAPIには以下のものがあります。下記APIをイベントからスクリプトとして実行できます。

* UnityAdsMV.loadedRewardedVideoAd() ... リワードビデオ広告の有無をチェック
* UnityAdsMV.showRewardedVideoAd() ... リワードビデオ広告を表示開始
* UnityAdsMV.isShowing() ... 広告表示中かどうかをチェック

今回はサンプルをシンプルに示すために使用しませんでしたが、厳密にリワードの取得を管理する場合は下記APIを用いて取得の有無を確認した上、プレイヤーに報酬を与えたのちリワードをクリアしてください。

* UnityAdsMV.hasReward() ... リワードを得ているかどうかチェック
* UnityAdsMV.clearReward() ... リワードをクリア

またリワードではない動画を再生するには次のAPIを使います。

* UnityAdsMV.loadedVideoAd() ... 広告の有無をチェック
* UnityAdsMV.showVideoAd() ... ビデオ広告を表示開始

#動作サンプル

ストアにアプリをリリースできたら公開します。