BT

RubyでiOSゲームを開発する

| 作者: Manuel Pais フォローする 9 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2013年10月8日. 推定読書時間: 4 分 |

原文(投稿日:2013/09/30)へのリンク

Barcelona Ruby Conferenceにおいて、Integrallisの創業者であるBrian Sam-Bodden氏が、RubyMotionとオープンソースの2Dグラフィックライブラリを使って、Objective-Cの知識なしにRubyでiOSの2Dゲームをすばやく作る方法についてデモをした。

Ruby MotionはiOSとOSX向けのRuby実装で、Objective-CランタイムFoundation Framework上に作られている。彼はグラフィックライブラリとして、Cocos2Dゲームエンジンとゲーム内のオブジェクトに物理法則を適用するためのBox2Dを使った。Joyboxはこれらのライブラリをラップするgemで、これらをクリーンなRuby APIで使えるようにする。おかげで、あなたはインストールに苦労することなく、純粋なRuby環境で開発することができる。

Brian氏は最初の例として、AppleのCoreAnimationライブラリだけを使った、Rubyで書かれたテトリスクローンを示した。

class TetrisController < UIViewController

このコントローラは、CoreAnimationが提供する2Dビューのアニメーション、たとえばゲームビューをフリップするアニメーションを使うことができる。

def flip(view)
  UIView.transitionWithView(view,
                            duration: 0.5,
                            options: UIViewAnimationOptionTransitionFlipFromBottom,
                            animations: proc {
                              # any other code that we want to run!
                            },
                            completion:nil)
end

2番目の例はもっと複雑で、Joybox gemを使ったスーパーマリオブラザーズ風のゲームだ。

@director = Joybox::Configuration.setup do
      director display_stats: true
end

上のコードはデフォルト設定のdirectorインスタンスを返す。このオブジェクトはゲームフローをコントロールするものだ。この例では、もはやCoreAnimationビューはゲームアクションのセットアップを直接操作してはない。もしそうしていれば、テトリスクローンの例でやったよりも、ずっと大量のコーディネーションやグラフィックアニメーション用のコードが必要になっただろう。ここではそうする代わりに、JoyboxのLayerクラスを使って、キャンバス描画とすべてのユーザインタラクションを処理している。これによって、ゲームレイヤーは個々のゲーム面にフォーカスした子を複数持つことができる。

@blue_sky = LayerColor.new color: "#6365fc".to_color
self << @blue_sky

実際のところ、Director、Layer、Sprite(アニメーションさせる2D画像、ゲームの動的要素になる)はすべてCocos2Dライブラリから継承されたコンセプトだが、JoyboxのAPIでラップされて、下位のObjective-C実装ライブラリの代わりに純粋にRubyで書くことができる。

最後に、Box2D物理エンジンをラップしたJoyboxのPhysics Spriteクラスを利用することで、Brian氏は作成したゲームworldに、物理法則をいかに簡単に適用できるかを示した。

@world = World.new(gravity: [0, -9.8])

ゲームworld内のbodyを作るのも、その特性を指定することになる。

@player_body = @world.new_body(
      position: [16*1, 16*9],
      type: Body::Dynamic,
      fixed_rotation: true
    )

Audio Effectのような機能もJoybox gemから利用できる。

Brian氏はRubyMotionを使ったiOS開発によって、UI操作を必要としないRSpecのような通常のRubyテスティングフレームワークが使えることにも言及した。

このプレゼンテーションは聴衆の興味をかき立てたようで、複数の人がTwitterで彼を賞賛している

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT