Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

mrubyでゲームを書いてみた

4,298 views

Published on

第一回kuniaki.rbで発表した資料です。

プレゼン中の実行可能なソースコードは以下にあります。
https://core.rmake.jp/projects/166

また、実際に試したい方は以下からダウンロードしてください。
https://core.rmake.jp/about

Published in: Technology
  • Be the first to comment

mrubyでゲームを書いてみた

  1. 1. 自己紹介 • Twitter: @akasata • (株)Rmakeという会社をやってます • ゲームを共有して作成するウェブサービス 「Rmake」を運営してます – Rails2.3(Ruby 1.8)と4.0(Ruby2.0)が混在・・・orz • 最近は提督業もやってます
  2. 2. mrubyでゲームを書いてみた
  3. 3. mrubyとは? • まつもとさん作の新しいRuby処理系 • 組み込みに特化したRuby – アプリケーション組み込み – Embedded System • 例:LEGO MINDSTORMS NXTにも搭載 – ROM 256KB、RAM 64KBの環境
  4. 4. mrubyの組み込みは簡単 mrb_state* mrb = mrb_open(); mrb_load_string(mrb, "puts 'hoge'"); mrb_close(mrb); 3行でrubyを組み込めます!
  5. 5. mrubyでゲームを書く • 基本方針 – 様々な環境で動かす – パフォーマンスを落とさない – Rubyらしい記述
  6. 6. 様々な環境で動かす • 高いポータビリティ – mrubyはC99の範囲内で実装 • 小さな言語仕様 – でもmrbgemsを適用することで高機能化も • mrbgems: ビルド時にライブラリを組み込む機構 • 停止時間の短いGC • PC/スマホ/ブラウザで動かしたい – (ブラウザはまだ・・・)
  7. 7. パフォーマンスを落とさない • スマホでも動かしたい • Rubyはグルー(糊)言語 – 処理の大半はネイティブ(C/C++)で記述 • あたり判定 • アニメーション/モーション – ゲームを構成する中核部分だけを RubyをベースにしたDSLで記述
  8. 8. Rubyらしい記述 • 基本機能を簡単に記述するDSLを作る – スプライト – アニメ – モーション – イベント処理 – あたり判定
  9. 9. Rubyらしい記述 – スプライト # スプライト「human」の定義 sprite_template :human do |st| st.texture :human_image st.src_size 32, 32 # 描画元のサイズ st.dest_size 32, 32 # 描画先のサイズ st.center_offset 32/2, 32/2 # 中心位置 end # 座標(450, 16)に「human」を表示 scene.add :image, :template => :human, :center_position => [450, 16]
  10. 10. Rubyらしい記述 – アニメーション # 足踏みを定義する # 16フレームごとに表示画像を切り替え st.animation :down do |c| c.loop true c.copy_rect :frame => 16, :src => [0, 0] c.wait_animation c.copy_rect :frame => 16, :src => [1, 0] c.wait_animation end
  11. 11. Rubyらしい記述 – モーション st.motion :default do |commands| commands.proc_call do |sprite| sprite.change_animation :down end # 座標(384, 209)に4px/frameの速度で移動 commands.move_to_v 384, 209, 4 end
  12. 12. Rubyらしい記述 – イベント処理 scene :start_scene do |scene| scene.on_init do scene.add :image, :name => :human1, :template => :human, :center_position => [450, 16] # スプライト「 :human1 」タップすると文章を表示 scene.event :human1, :on_click do speak "タップすると文章を表示します“ end end end
  13. 13. デモ • • • • • シューティングゲーム クレーンゲーム 3マッチパズル 脱出ゲーム マップエディタ
  14. 14. 宣伝 – デジゲー博出展 2013年11月17日(日) 11:00 ~ 15:00 スペース:A-31/32 大田区産業プラザPio 2F小展示ホール

×