Google

2012年8月30日木曜日

Unityでコインゲー開発;iOS拡張をプラグインで

先日のiOSの話の続き。

Unityではできない拡張機能。
単体では実現できないので、Pluginで対処するのが普通です。
コインゲーに限った話ではないのですが、Unityで開発する際、拡張をどのように考えたかという話が今回の記事です。

まずUnity Asset Storeにはサードパーティ製のプラグインが転がってます。
これが元々Unityの売りでもあったはずなので種類も豊富です。
じゃあ実際にやるとなると、現実的な選択肢となるのは以下の2つ。

 1.頑張って勉強して自前で作成
 2.時間がなければ金で解決

1は自己責任ですが自由になのは当たり前。でも面倒。
2は使ったら時間が稼げるかもしれませんが、それはそれで問題がでます。
実際に遭遇したのはこんなケース。

 ・検索したけどニーズにあったツールが売ってない
 ・売ってたんだけど、いざ調べたらもう無くなってた
 ・プラグインの評価がみんな星ひとつ
 ・買ってみたらトラブル続出で動かない
 ・マニュアルが英語(これはほぼ100%のプラグインが英語なんで問題なし)

もう二度と買うもんか!って感じのもありましたね、、、。
まあたいていのプラグインは安いですし。会社の経費で買う分にはどうにかなりますが、動かないと最悪です。

悪かった例ばっかり書いても仕方ないので、よく使う必要があると思われるツールを1点、実際に使った現実例として紹介します。
先日は2D系を出しましたが今回は「iOS用アプリ内課金」プラグイン。
これです。


お値段は$50。
わざわざ買わなくても、StoreKit Frameworkの処理をちゃんと書けばいいと思われるかもしれません。
が、この時の担当者は私たった一人だったので、それをコーディングする時間すら惜しくて思わず買ってしまいました。

んで、結論から言うと一応アプリの購入はちゃんとできました。
時間もある程度短縮もできました。その点では成功といえます。
逆に困ったのが以下。

 1.プロダクトIDを複数入れて詳細を要求すると何も帰って来ない
    →1個入れれば大丈夫だった
 2.コールバックで結果が戻るが細かい内容が取れない
    →しょうがないのでレアケースは放置
 3.サーバトラブル時に何が戻るか分からない
    →意図的にサーバ側でエラー処理を書いて値を検証
 4.XCodeビルド時、手動でStoreKitFWとこのプラグインのLibを毎回追加
    →マニュアルを書いて明示化
 5.ARM指定を間違えるとエラーでランタイムエラーになる
    →実機ビルドで検証

このツールは実処理が*.aという拡張子のライブラリになっていて、ブラックボックスでした。
マニュアルはあるんですが、内部の処理がどうなってるのかが解りません。
特に引数指定の方法が悪いとか、癖がある関数の使い方がちょっとアレで、何度か検証が必要になったりしました。
まあ、そのへんは何度も検証を繰り返せは辿り着くんですが、4.の手順が一番面倒だった記憶があります。

Unity側でXCodeのプロジェクトを生成する際、FWは最低限必要なものだけチョイスしてしまうので、必要なものは自分で追加しなければなりません。
次のビルドからはBuild and RunでAppendオプションにすればいいんですが、間違えると全部やり直しになります。
また、このプラグインのようなネイティブライブラリ型は、XCodeのプロジェクト内部に自分で追加しなければなりません。
この場合は「libPaymentPlugin.a」というファイルでした。

けど確かこのaファイルはXCodeプロジェクトの一番上に置かないとなぜかビルドが通らなかったりとかいう現象にも遭遇した気が。


また、気づいたらプラグイン本体がバージョンアップしてたりするんですが、通知もなかったりでもう色々がいろいろです。
これらから分かるUnityの現実、それは、、、、

 「拡張機能が沢山あってもやっぱり夢の万能ツールではない」

という点ですかね。

0 件のコメント:

コメントを投稿