mrubyでゲームを書いてみた

  • 2,637 views
Uploaded on

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

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

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,637
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
4
Comments
0
Likes
9

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 自己紹介 • Twitter: @akasata • (株)Rmakeという会社をやってます • ゲームを共有して作成するウェブサービス 「Rmake」を運営してます – Rails2.3(Ruby 1.8)と4.0(Ruby2.0)が混在・・・orz • 最近は提督業もやってます
  • 2. mrubyでゲームを書いてみた
  • 3. mrubyとは? • まつもとさん作の新しいRuby処理系 • 組み込みに特化したRuby – アプリケーション組み込み – Embedded System • 例:LEGO MINDSTORMS NXTにも搭載 – ROM 256KB、RAM 64KBの環境
  • 4. mrubyの組み込みは簡単 mrb_state* mrb = mrb_open(); mrb_load_string(mrb, "puts 'hoge'"); mrb_close(mrb); 3行でrubyを組み込めます!
  • 5. mrubyでゲームを書く • 基本方針 – 様々な環境で動かす – パフォーマンスを落とさない – Rubyらしい記述
  • 6. 様々な環境で動かす • 高いポータビリティ – mrubyはC99の範囲内で実装 • 小さな言語仕様 – でもmrbgemsを適用することで高機能化も • mrbgems: ビルド時にライブラリを組み込む機構 • 停止時間の短いGC • PC/スマホ/ブラウザで動かしたい – (ブラウザはまだ・・・)
  • 7. パフォーマンスを落とさない • スマホでも動かしたい • Rubyはグルー(糊)言語 – 処理の大半はネイティブ(C/C++)で記述 • あたり判定 • アニメーション/モーション – ゲームを構成する中核部分だけを RubyをベースにしたDSLで記述
  • 8. Rubyらしい記述 • 基本機能を簡単に記述するDSLを作る – スプライト – アニメ – モーション – イベント処理 – あたり判定
  • 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. 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. 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. 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. デモ • • • • • シューティングゲーム クレーンゲーム 3マッチパズル 脱出ゲーム マップエディタ
  • 14. 宣伝 – デジゲー博出展 2013年11月17日(日) 11:00 ~ 15:00 スペース:A-31/32 大田区産業プラザPio 2F小展示ホール