Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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が必要らしいです。