hIDDEN bLOG » C#とCocos2Dでウハウハゲーム開発

2011/12/15 木曜日

C#とCocos2Dでウハウハゲーム開発

このエントリをはてなブックマークに追加
Filed under: iPhoneアプリ,MonoTouch — hIDDEN @ 2:15:03

はじめに

この記事はiOS Advent Calendarの12月15日ぶんとして書いてますよっと。

iOSでC#

iOS開発者の諸兄にはもうご存知のかたも多いと思うが、去年はいろいろ紆余曲折があったわけで、いまiOS用のネイティブアプリは、Objective-C以外でもいろいろな言語で開発することができる。
C#でiOSアプリを開発するには、最近だとUnityが熱いが、よりネイティブに近い環境としてはMonoTouchというものが販売されている。
MonoTouchはiOS SDKの各APIをごく薄くラップしたライブラリを持っており、そのぶんOSアップデートへの対応が早いなどの利点がある。

iOSでC#でゲーム

ここで取り上げるのが、2Dゲーム向けフレームワークとして定評のあるCocos2Dである。
何パターンかのMonoTouch向けCocon2Dライブラリが公開されているが、今回注目するのはCocosNetというライブラリ。
ネイティブなCocos2Dをラップするのではなく、完全にC#のソースコードに移植しているのがこれである。おかげで移植カバー率はそれほど高くないという欠点はあるものの、後述するおおきな利点が期待できる。

iOSでC#でゲームつくってみる

CocosNetを使ったコーディングの例を、少しだけサンプルとともに追ってみる。

まずは初期化。
Application開始直前にでも、OpenGL ES1用のグラフィックコンテキストを生成しておく。

static void Main( string[] args )
{
    var c = Utilities.CreateGraphicsContext( EAGLRenderingAPI.OpenGLES1 );
    UIApplication.Main( args );
}

次いではDirectorの初期化だ。
とりあえずはAppDelegate.FinishedLaunching()あたりで実行するのが手軽だろうか。。。
パラメータを順次設定して、最後にUIWindowにアタッチしている。

var d = Director.Instance;
d.DeviceOrientation = DeviceOrientation.Portrait;
d.AnimationInterval = 1.0 / 60.0;
d.IsDisplayFPS = true;
 
d.AttachInView( window );

そしてシーンとスプライトの初期化。
これで画面に何かが表示できるはずだ。

var scene = new Scene();
var s = new Sprite( "splite.png" );
s.SetPosition( d.WinSize.Width / 2, d.WinSize.Height / 2 );
scene.AddChild( s, 0 );
d.RunScene( scene );

もういっこおまけに、アニメーションも。

MoveTo move = new MoveTo( 1.0f, new PointF( 0, 0 ) );
s.RunAction( move );

Cocos2Dを触ったことがある人なら、これでだいたいの移植具合が分かってもらえるのではないかと思う。
その他パーティクル・パララックスノード・タイルマップなど、有用そうなクラス群はひととおり移植されている。
一点、アニメーションのイージングが移植されていないのが残念だが、これは追加コードを少し書いてやるだけですぐ移植できた。
このように、ゲームをシンプルに作り始める素地は、すでにしっかりと整備されている印象だ。

iOSでC#でゲームつくったけど他のスマホでも

さて、いろいろプランを練り上げてゲームの完成をみる頃には、ロジックの分離やシーケンスの整理が行き届いたエクセレントなソースコードが手元にできあがっているはずだ。
そうすると、せっかくだから別のプラットフォームにむけても、このジーニアスなゲームをプレイしてもらいたいという欲求がわき上がってこないだろうか。

ここで、Mono for Androidの存在を思い出してほしい。

Mono for AndroidはMonoTouch同様、C#でAndroid向けのアプリが開発できるキットである。
そしてMonoTouchと同じOpenTKを使ってOpenGLをラップしているので、CocosNet実装もほとんどそのまま流用できるはずだ!
つまりはビューへのバインド部分だけそれぞれのプラットフォーム向けに書いてやれば、Cocos2Dの機能がiOS/Android双方で同じように使えるようになるはずなのだ!!
※ただし未検証でありライセンスにも注意する必要がある。

と、ちょっと投げっぱなしスープレックスな結びになってしまいつつあるが、C#で書けることによる開発効率の飛躍的なアップに加え、マルチプラットフォーム展開が容易になるというメリットがお分かりいただけたのではないかと。

Objective-Cは言語的にノイズが多すぎてどうも…. という諸氏にも強くお勧めできる、C#によるスマホアプリ開発。スマートなアプリをスピード開発してみてはいかが!?

さいごに

明日は@M_Sakodaさんです。
よろしくですー。

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.833 sec. Powered by WordPress