Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Ruby/SDLをUbuntu に導入する

Rubyでゲーム作りたいなどとホザいておきながら何もしてなかったので……
SDLRubyで使える素敵拡張Ruby/SDLUbuntuへ導入してみたいと思います。

によれば、

SDLとは、そのドキュメントによると、 「マルチプラットフォームなマルチメディアライブラリ」であり、 Rubyとは、まつもと氏によるオブジェクト指向スクリプト言語です。 そして、Ruby/SDLRubyからSDLを利用できるようにするための ライブラリです。つまりはRubyでゲームなどを作るためのライブラリと 言えます。

まぁ、いつもの通りgemですよねっと……

gem install rubysdl
Fetching: rubysdl-2.1.2.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing rubysdl:
	ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb

……え? だ、駄目?

こうなったら元ソースからやるしかありません。
Rubyist Magazine - Ruby/SDLで始めるゲームプログラミング【前編】に従い、インストールしなおします。


まずはUbuntu – Errorを参考に、githubからソースコードを取得

git clone git://git.debian.org/pkg-ruby-extras/ruby-sdl.git

ファイル内のREADME.jaを開きます。すると……

3 必要なライブラリ

このライブラリは、rubyの処理系の他、以下のライブラリを必要とします。
SDL_mixer,SDL_ttf,SDL_image,SGE,smpeg,SDLSKKはなくてもかまいません。

SDL(必須) http://www.libsdl.org/

らしいので……
How do I install SDL?を参考に

sudo apt-get install libsdl1.2-dev libsdl1.2debian

として、最新版のSDLを入手します。
(2012年8月2日現在、SDLのバージョンは1.2.15が最新版です)

apt-getを使えば頭のいいOSが勝手に登録等々をしてくれるので、
先ほどcloneしたフォルダに移動し、exconf.rbを実行

# ruby extconf.rb
checking for SMPEG_new() in -lsmpeg... no
checking for Mix_OpenAudio() in -lSDL_mixer... no
checking for sge_Line() in -lSGE... no
checking for IMG_Load() in -lSDL_image... no
checking for TTF_Init() in -lSDL_ttf... no
checking for TTF_OpenFontIndex()... no
checking for TTF_FontFaces()... no
checking for TTF_FontFaceIsFixedWidth()... no
checking for TTF_FontFaceFamilyName()... no
checking for TTF_FontFaceStyleName()... no
checking for Mix_LoadMUS_RW()... no
checking for rb_thread_blocking_region()... yes
checking for rb_enc_str_new()... yes
checking for rb_str_export_to_enc()... yes
checking for SDLSKK_Context_new() in -lSDLSKK... no
checking for glVertex3d() in -lGL... yes
creating Makefile

そして、make & make install

# make
  <<略>>
# make install
/usr/bin/install -c -m 0755 sdl_ext.so /usr/local/lib/site_ruby/1.9.1/i686-linux
/usr/bin/install -c -m 644 ./lib/sdl.rb /usr/local/lib/site_ruby/1.9.1
/usr/bin/install -c -m 644 ./lib/rubysdl_aliases.rb /usr/local/lib/site_ruby/1.9.1
/usr/bin/install -c -m 644 ./lib/rubysdl_compatible_ver1.rb /usr/local/lib/site_ruby/1.9.1

では、使えるか早速確認しましょう。
さきほどのフォルダにはサンプルフォルダがあるので、実行して確認します。

#cd sample
#ruby testsprite.rb

こんな画面が出れば成功です。(実際にはルビーの画像がチョコマカと動いてます)

これで基本的な事はできるようになりました。
しかしながら……

SDL_mixer(オプション) http://www.libsdl.org/projects/SDL_mixer/index.html
SDL_ttf(オプション) http://www.libsdl.org/projects/SDL_ttf/index.html
SDL_image(オプション) http://www.libsdl.org/projects/SDL_image/index.html
SGE(オプション) http://www.etek.chalmers.se/~e8cal1/sge/
SMPEG(オプション) http://www.icculus.org/smpeg/
SDLSKK(オプション) http://www.kmc.gr.jp/~ohai/sdlskk.html

といったものを入れていないため、いくつかのサンプルが動きません。
次の記事で、これらについて対応します。

※備忘録 Macでやる場合はrdslが必要らしいです。