BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース RubyでiOSゲームを開発する

RubyでiOSゲームを開発する

原文(投稿日: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で彼を賞賛している

 

この記事に星をつける

おすすめ度
スタイル

BT