MyGame

Ruby で手軽にゲームを開発

ついに書籍がでました!!

MyGame は Ruby で簡単にゲームを作るためのライブラリです。 自分のゲーム開発の経験をもとにゲームに必要な処理を簡単な API にまとめています。特定のライブラリ API を参考にしているわけではありませんが、ソニー・プレーステーションのゲームソフト開発に携わることが多かったので、その設計思想から影響を受けているかもしれません。

MyGame 本体は小さな Ruby スクリプトにすぎません。 ただし、 MyGame の中で Ruby/SDL を使っています。

特徴とコンセプト

スクリーンショット

RPG RPG
RPG RPG

ニュース

関連書籍

書籍『Rubyではじめるゲームプログラミング』が工学社より発売中です。この書籍ではMyGameを使ったプログラミングが詳しく解説されています。

ダウンロードとインストール

ダウンロード

Subversion リポジトリ

次のようにして Subversion リポジトリからチェックアウトすることができます( Subversion リポジトリはテスト中です)。

svn checkout http://svn.sourceforge.jp/svnroot/mygame/trunk mygame

インストール

圧縮ファイル (mygame-xxx.tar.gz) を解凍し install_mygame.rb を実行するとインストールされます。

※ MyGame の動作には Ruby と Ruby/SDL が必要です。 Windows にインストールする例。

サンプルゲームのダウンロード

上記サンプルはスクリプト、画像共に Ruby License です。

リファレンス

リファレンス
MyGame リファレンスマニュアル
wiki
http://dgames.jp/rubygame/?MyGame

ライセンス

Ruby License です。

ただし、フォントやサンプルデータについてはそれぞれのライセンスに従います。 zipファイルに同梱されているRuby/SDLについてはRuby/SDLのライセンスに従ってください。

サンプルプログラム

ゲームプログラミングに必要な処理を驚くほど短く書けます。 次のサンプルはプログラムの断片ではなく、それぞれが完結したプログラムです。

スクリーンウィンドウ生成

require 'mygame/boot'

画像描画

require 'mygame/boot'
Image.render "mglogo.bmp"

フォント描画

require 'mygame/boot'
Font.render "Hello"

サウンド再生

require 'mygame/boot'
Wave.play "sample.wav"

キー入力

require 'mygame/boot'
mian_loop do
  puts "押された!" if key_pressed?(Key::SPACE)
end

オブジェクトにする場合

require 'mygame/boot'
img = Image.new("sample.bmp")
fnt = Font.new("Hello")
wav = Wave.new("sample.wav")
main_loop do
  img.render
  fnt.render
  wav.play if new_key_pressed?(Key::SPACE)
end

マウス等のイベント処理

require 'mygame/boot'
add_event(:mouse_motion) {|event| puts "x:#{event.x} y:#{event.y}" }

シーンクラスによるシーン管理

require 'mygame/boot'

class Title < Scene::Base           # タイトルシーン
  def init                          # 初期化処理(シーン生成時に呼ばれる)
    @image = Image.new("title.jpg")
  end

  def quit                          # 終了処理(シーン終了時に呼ばれる)
  end

  def update                        # 更新処理(毎フレーム呼ばれる)
    if new_key_pressed?(Key::SPACE)
      self.next_scene = Game        # Game シーンへ遷移
    end
  end

  def render                        # 描画処理(毎フレーム呼ばれる)
    @image.render
  end
end

class Game < Scene::Base            # ゲームシーン
  # ゲームシーン定義(略)
end

Scene.main_loop Title               # シーンクラスを実行
Mailto: dan at dgames dot jp