MacにRuby/SDL、rsdl、SGEを入れて、ゲームライブラリMyGameを動かす

![51sWOzSOqbL._SL500_AA300_.jpg](https://qiita-image-store.s3.amazonaws.com/0/26536/820e0f26-4452-2a46-c96c-052418506729.jpeg)

[『Rubyではじめるゲームプログラミング』山本団著（工学社、2007年）](http://www.kohgakusha.co.jp/books/detail/978-4-7775-1292-8)
をMacで動かすためのメモ：

必要なライブラリ

* SDL
* SDL_image
* SDL_mixer
* SDL_ttf
* SGE（SDL Graphics Extension）
* Ruby/SDL
* rsdl
* MyGame

この順にインストールしていく
　　

***
#環境

* OS X Mountain Lion（10.8.4）、または Lion（10.7.5）
* Ruby 2.0.0-p.247、または 1.9.3-p.429（※ 2.0.0-p195では rsdlのインストールでエラー）

　　
***
#手順

##1．SDL（および関連ライブラリ）のインストール

 Homebrew を使用

```bash:
# Homebrewのアップデート、確認
$ brew update
$ brew upgrade
$ brew doctor

# SDL関連のインストール
$ brew install sdl
$ brew install sdl_image
$ brew install sdl_mixer
$ brew install sdl_ttf
```


必要なら、その他 SDL関連ライブラリもインストール
（sdl_gfx、sdl_rtf、sdl_sound など）

　　
##2．SGE（SDL Graphics Extension）のインストール
（2013.11.18 追記；
　Ruby/SDL 2.1.3 から SGE が含まれるようになったので、SGE のインストールは省略できるかも
>= SGEをインストールせずに使う
>Ruby/SDLが内部で SGE を持っています。
>  `gem install rubysdl -- --enable-bundled-sge`
>　〜（中略）〜
>ただし、この仕組みはできれば使わないでください。
>SGEが別にインストール可能ならそちらを使ってください。
>　　　　　　　　　　　　〜 「[Ruby/SDL README.ja](https://raw2.github.com/ohai/rubysdl/master/README.ja)」より）

　　
　　　　
これは、HomebrewにFormulaがない
　　
（参考）

* [Ruby - Mac OS X Lionにsgeを入れる - yhara : Qiita [キータ]](http://qiita.com/yhara/items/f52daed19fa0198121b5)
→ yhara（Yutaka HARA）さん自作のFormulaを使用
　 https://gist.github.com/yhara/3115276


* [物理シミュレーション覚書 - akicho8 : GitHub](https://github.com/akicho8/stylet)
→ 上記Formulaを使用

* [Ruby-SDL（とSGE） - computable? : mitmul : Hatena Blog](http://computable.hateblo.jp/entry/2013/04/18/150158)
→ mitmul（Shunta Saito）さん自作のFomulaを使用
　 https://gist.github.com/mitmul/5410467

（2014.5.28 追記；
　こちらにも SGEのインストール法が載っていました。こちらの方が情報が新しいかも

* [DXRuby on SDL/Ruby - takaokouji/dxruby_sdl : GitHub](https://github.com/takaokouji/dxruby_sdl) ）

　
mitmulさんの方が新しかったので、こちらを使用してインストール

```bash:
# SGEのインストール
$ brew install https://gist.github.com/mitmul/5410467/raw/c4fa716635e951b61f489726976b10f00dd41306/sge.rb
```

　　
##3．Ruby/SDLのインストール

```bash:
# RubyGemsのアップデート
$ gem update --system

# Ruby/SDLのインストール
$ gem install rubysdl
```

　　
##4．rsdlのインストール

MacでRuby/SDLを起動するのに必要
※ Macでは、Ruby/SDLの実行は `$ ruby foo.rb` の代わりに、`$ rsdl foo.rb` とする
　　　　

```bash:
# rsdlのインストール
$ gem install rsdl
```

（注； 2.0.0-p195 ではインストールでエラーになる）
　　

##5．ここまでの動作確認

```bash:
# すべて trueならば OK
$ ruby -r sdl -e 'p [:mixer, SDL.constants.include?(:Mixer)]'
$ ruby -r sdl -e 'p [:ttf, SDL.constants.include?(:TTF)]'
$ ruby -r sdl -e 'p [:sge, SDL.respond_to?(:autoLock)]'

# 灰色のウィンドウが 1秒間表れて閉じれば OK
$ rsdl -r sdl -e 'SDL.init(SDL::INIT_EVERYTHING); SDL.set_video_mode(640, 480, 16, SDL::SWSURFACE); sleep(1)'
```

　　
##6．MyGameのインストール
 
[MyGameホームページ](http://dgames.jp/ja/projects/mygame/)から、最新版mygame-0.9.1.tar.gzをダウンロード、展開

・修正

`Use RbConfig instead of obsolete and deprecated Config.`
というエラーを回避するために、
`Config`をすべて`RbConfig`に修正する

``` install_mygame.rb
# 修正
17: dlldir    ||= RbConfig::CONFIG["bindir"]
18: sitelibdir  =  RbConfig::CONFIG["sitelibdir"]
19: sitearchdir = RbConfig::CONFIG["sitearchdir"]
20: datadir     = RbConfig::CONFIG["datadir"]   
```

```/lib/mygame.rb
# 修正
311: datadir = RbConfig::CONFIG["datadir"] 
```

　　
・ MyGameのインストール

```bash:
# 展開したディレクトリ barに移動
$ cd bar

# MyGameのインストール
$ ruby install_mygame.rb
```

　　
##7．MyGameの動作確認

```bash:
# 真っ黒なウィンドウが表れれば OK
$ rsdl -r mygame/boot -e ""
```
　　
##8．いろいろなサンプルプログラムで動作確認

（注意）

* Macでは、Ruby/SDLを使ったプログラムの実行は `$ ruby foo.rb` の代わりに、`$ rsdl foo.rb` とする

* Ruby 1.9.2から`require`がカレントディレクトリをロードしなくなったため、それ以前のプログラムは`require`でエラーが出ることがある
そのときは、`require 'bar'` を `require_relative 'bar'` と書き換えれば動くことが多い

（2014.5.28 追記；
　あるいは、Ruby の起動時に[コマンドラインオプション](http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2frubycmd.html) `-I directory名` を使ってファイルをロードするパスを追加する。カレントディレクトリを追加するには .（ドット）を追加すればよい。
`$ rsdl -I. baz.rb` 
で実行。
→ ・[Star Rubyのインストール - ザリガニが見ていた...。](http://d.hatena.ne.jp/zariganitosh/20140417/install_star_ruby) ）

　　

###サンプルプログラム
 \- Ruby/SDLが必要（MyGameは不要）

* [Rubyist Magazine - Ruby/SDLで始めるゲームプログラミング【前編】](http://magazine.rubyist.net/?0018-GameProgramingForRubySDL)

* [Rubyist Magazine - Ruby/SDL で始めるゲームプログラミング【後編】](http://magazine.rubyist.net/?0019-GameProgramingForRubySDL)

* [スーパーマリオブラザーズのようなものをRubyで作ってみた～Super Nario GC～ - I am Cruby!](http://d.hatena.ne.jp/authorNari/20080422/1208880928)

　
\- MyGameが必要

* [MyGame - Ruby で手軽にゲームを開発](http://dgames.jp/ja/projects/mygame/)

* [『Rubyではじめるゲームプログラミング』山本団著（工学社、2007年）](http://www.kohgakusha.co.jp/books/detail/978-4-7775-1292-8)

　　　
　　
（→・[元記事](http://blog.livedoor.jp/noanoa07/archives/1919322.html)）