2011-10-30

Unity3Dで作ったゲームにAdMobを表示する方法(iOS編)

忘れないうちにメモ書き

現時点ではAdmobSDKの仕様上、ViewControllerが必要になるので、
UnityでbuildしたxcodeプロジェクトのAppController.mmにコードを追加する。

Step1
-(void)registerAdmobなどとして、admobの表示ロジックをメソッドとして追加する

Step2
applicationDidFinishLaunchingの最後に、Step1で作ったメソッドをdelayさせて呼び出す。


以下はlandscapeLeft固定で右上に320x50のバナーを表示する場合。 以下をapplicationDidFinishLaunchingメソッドの最後に追加。
[self performSelector:@selector(registerAdmob) withObject:nil afterDelay:0.4];

2011-10-29

個人でのUnity3Dについて

Unity3D でiOS/Android向けゲームをリリースできたのでまとめ

将来どうかわっているかわからないが、現時点での所感。

・Unity3D自体は本当にすばらしい。
・モバイル向けにはライセンスが必要だが、400$は安いと思う。
・行列の演算が必要になってくるが、数学が好きなら苦にならない。
・サンプルなどでだいたいパターンが見えてくるので、3D空間の計算方法がわかるようになる。
・OpenGLかける人はすらすらできると思う。
・MonoでC#を書く時間より、Blenderで3Dモデルを作る時間のほうが長かった。
・リアルタイムのLightの計算がコストが高い。(ので、mobile/Unlitを使った)
・Lightmappingもパフォーマンスに有効。
・実機に転送して、FPSを表示させながらやると捗る
・ワンソースでiOS/Androidへビルドできるが、Switch Platformすると、コンバートがかかるので、これが結構長い。アセットが増えてきた後半は特に。
・最初は1つのプラットフォームで開発し、できてからswitchしたほうが効率はいいと思う。
・3Dモデリングとそれに正しくテクスチャを貼れる人は神だと思う。
・容量を気にしないで作ったら、20MBを余裕で超えたので、次回への反省材料

The Tower Of Maze  AppStore  Now.
I could release The Tower Of Maze for iOS
It is supported for iPhone3GS/iPhone4/4S
And it is free.

2011-10-18

Unity3DとOpenFeintの連携メモ(Android)

TowerOfMazeでUnity3DとOpenFeintを連携させたときのメモ-Android編。

Step1
Unity用のEclipseでの環境を整える。Indigoでもだいじょうぶ。
@ITのgreeの方の書かれた記事を見るか、もしくはUnityの公式ドキュメント(Integrate Eclipseなんちゃら)に従い、Eclipseでの環境を整える。
この段階では、単純に
・UnityPlayerActivity(2.3以上向けならProxyActivity)を継承したクラスを作成
・BuildされたTemp/ほにゃらら/assets/以下をEclipseプロジェクトのassetsにコピー
・Eclipseから実機を起動する(Unity上でのBuild and Runは使用しない)
を確認する。
なお、Temp以下はUnityでplatformをAndroidにして、一度ビルドしないと出現しないので注意。

Step2
次にOpenFentのSDKを参照できるようにする。jarでは提供されていない?ので、プロジェクトをインポートする
・OpenFeintのAndroid用SDKをダウンロードし、OpenFeintAPIのプロジェクトをimportする。
・プロジェクトを右クリックし、Androidを選んでis Libraryにチェックを入れる
(最初から入ってるかも)
・Step1で作成したプロジェクトを右クリックし、Configure Build Pathを選択
・左メニューからAndroidを選んでLibraryのAddを選択し、OpenFeint APIを追加する。
(UnityPlayerの環境を整えるのと同じやり方)

Step3
Eclipseでクラスを用意する。OpenFeintPluginなどとする。このクラスをUnity側から呼び出す形になる。メソッドはすべてstaticにする。最初はLaunchDashbordだけとかがいいでしょう。(OpenFeint側の公開メソッドはほとんどstaticで実装されている。)

Step4
Unity側でクラスを書く。Assets/Plugins/Android以下におくのが望ましい。
AndroidJavaClassを使用するので、もし同じソースでiOSなど別のPlatformでBuildする場合は当然エラーになるので、クラス全体を
#if UNITY_ANDROID
#endif
で括る。また、Unity上でPlayしたときに、スルーするように
Application.isEditor を使って分岐する。

以下Step3とStep4を繰り返し、Eclipse側でコードを追加し、それをUnity側で
AndroidJavaClassを使って呼び出す。

おまけ
OpenFeintで何かイベントが発生した場合に(ログインしたとか)なにかしたい場合は
自分でOpenFeintDelegateを継承したDelegateクラスを書き、
OpenFeint.initializeの第3引数にそのインスタンスを渡せばよい。

OpenFeint.initialize(currentActivity, settings, new MyOpenFeintDelegate());



2011-10-17

The Tower Of Maze

The Tower Of Maze  released.
I am excited that I can release The Tower Of Maze.
At present, this game is designed for Android (required >= 2.2).
I am going to prepare for iOS.

This game is developed by Unity3D Game Engine.
Unity3D is great development tools for indie developers like me.

If you'd like to contact me, please email  to ozahei at gmail.com
(at replace @)