hIDDEN bLOG » iPhoneアプリ

2011/12/15 木曜日

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

このエントリをはてなブックマークに追加
Filed under: iPhoneアプリ,MonoTouch — @ 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さんです。
よろしくですー。

2011/6/12 日曜日

福井県ご当地アプリを作ることになったのー!!

このエントリをはてなブックマークに追加
Filed under: iPhoneアプリ — @ 19:41:16

どうも、福井を背負って立つことになったもやしです。

なちこさんの企画で、【アプリ企画】アプリ開発者さん、ご当地『47都道府県』アプリを作ってみませんか? #47appというのが立ち上がっており、ついふらふらと手をあげてしまったので、これから3〜4ヶ月以内に福井ご当地アプリをつくるということになりましたの!

どんなモノをどんな体制でつくるとか、6月のうちにはだいたい固めて走り出したいなーと思うので、近隣のみなさん是非あたたかいご協力をー!!!

まずは近いうちにアイデアソン開催しますヨ!

#i_love_fukui !\(^q^)/

2011/6/1 水曜日

MonoTouchからWCFを利用する

このエントリをはてなブックマークに追加
Filed under: .NET,iPhoneアプリ,IT系,MonoTouch — @ 17:09:58

MonoTouchからWCF(Windows Communication Foundation)を利用するための方法を、これが結構苦労したのでまとめておく。

WCFを使えばサーバの機能呼び出しを抽象化して扱えるので、開発効率を大きく向上できる。
またせっかくC#を使っているのだから、サーバサイドも.NETテクノロジにしておけば、ソース共用もしやすくなってなお効率よし。

今回はWindows Azure上のWCF Webロールで動作させてみたが、通常のWCFでも同様に動くはずだ。

おおかたの手順は、MonoTouch公式の資料が参考になる。 (続きを読む…)

2010/9/13 月曜日

iPhoneでOAuth認証するぜの巻

このエントリをはてなブックマークに追加
Filed under: iPhoneアプリ — @ 15:11:56

iPhoneアプリでOAuth認証を行うための方法をまとめてみた。

この記事下部でソースをダウンロードできるので、それをプロジェクトに追加し、記事中の「ViewController.m」に記載してある相当のコードを書けば、OAuth認証が完了するはずだ。

はじめに

この記事で紹介するOAuth認証処理の全体像をなぞると、以下のような流れになる。
1.OAuthトークンを、twitterから取得する。
2.取得したOAuthトークンをパラメータに、UIWebViewで認証ページを表示する。
3.UIWebViewからログイン情報をポストするリクエストをフックして、自前のコネクションをポストする。
4.3のレスポンスで得られるHTMLからPINコードを抽出する。
5.PINとOAuthトークンをセットにして、OAuthアクセストークンを取得する。
6.OAuthアクセストークンでサービスを利用する。

OAuthは、6で得られるアクセストークン(のkeyとsecret)をアプリで保存しておくことで、twitterユーザーのID・パスワードをアプリが関与しなくてもtwitterへ認証できるようになるという仕組みだ。

今回のポイントは手順3。UIWebViewリクエストをフックするところだ。
通常ならtwitterID・パスワードを入力したユーザーは、PIN(暗証番号)を記載されたページに誘導され、そのPINをアプリに入力しなければいけない。
なんとかこの手間を自動化できないかということで至ったのが、この記事で紹介する方法だ。

図にすると下のようなところかと。
ユーザーの入力の手間は1回しか発生しないのが分かる。

oauth_sequence.png

以下、詳細に追ってみる。 (続きを読む…)

2010/9/9 木曜日

iPhoneアプリ開発勉強会 2010/9/3 in 福井高専

このエントリをはてなブックマークに追加
Filed under: .NET,iPhoneアプリ — @ 13:52:52

2010年9月3日、母校である福井高専の一室をお借りしてiPhoneアプリ開発勉強会が開催され、そこでMonoTouchのセッションを担当してきました。

主催者の@monobyteさん、ありがとうございました。

セッション内容

嗚呼、素晴らしき哉 MonoTouch<p><em>There is embedded content here that you cannot see. Please <a href="http://hidden.vis.ne.jp/blog/?p=569">open the post in a web browser</a> to see this.</em></p>
View more presentations from hIDDENxv.

発表したのはMonoTouchの紹介と簡単なデモ。それとC#ならではのおすすめポイントを数点。

参加者の中には割とVisualStudioやC#経験者がいらっしゃったので、C#の開発効率の良さがiPhoneでも発揮できる実感を得ていただけていれば嬉しいなと。

デモ

XcodeとMonoTouchで、ボタンを押した回数をカウントする簡単なアプリのデモを作成しました。
途中Interface Builderの操作で、画面解像度が低いがために見づらくなってしまったのが申し訳なかったです。

ポイントは、やはりInterfaceBuilderをつかった開発リズムがXcodeと比べて格段にいいこと。
ヘッダファイルなんて書きたくありません。

当日作ったデモアプリは、以下からダウンロードできます。
Xcode版のソース ダウンロード
MonoTouch版のソース ダウンロード

またMonoTouchのチュートリアルはこちらの記事でも紹介しているので、参考までにどうぞ。
手前味噌を重ねると、MonoTouchカテゴリの記事もよろしくです。

おまけ

最後におまけで紹介したAR関連、参考リンクをどうぞ。

ARToolKit

「攻殻機動隊」「電脳コイル」の世界を実現! – 工学ナビ
http://kougaku-navi.net/ARToolKit.html

ARToolKit
http://www.hitl.washington.edu/artoolkit//ARToolKit.html

Haar検出@OpenCV

OpenCVで学ぶ画像認識 – gihyo.jp
http://gihyo.jp/dev/feature/01/opencv/

OpenCV.jp
http://opencv.jp/

Fern特徴点検出検出@OpenCV

Fern-ベースの点分類器,平面物体検出器 – 毛の生えたようなもの
http://d.hatena.ne.jp/gomi-box/20100523/1274614584/

【AR】はちゅねにネギでたたいてもらった【MMD】‐ニコニコ動画
http://www.nicovideo.jp/watch/sm11781115/

PTAM:マーカーレスAR

あのマーカレスARの研究がついにソース公開!
http://kougaku.blog28.fc2.com/blog-entry-317.html

マーカーレスAR技術「PTAM」をDVカメラで動作させてみる
http://turi2.net/cont/program/ptam.html

PTAMソース
http://www.robots.ox.ac.uk/~gk/PTAM/

Pages: 1 2 3 4 5 Next

HTML convert time: 1.348 sec. Powered by WordPress