Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-10-03

Ruby/SDL + Exerb に再挑戦

やっと成功した(わかってしまえば何も難しいことはない><)のでメモ。使用したのは以下の Ruby と Ruby/SDL 。 exerb は ActiveScriptRuby に同梱されているものをそのまま使用。

  • ActiveScriptRuby 1.8.4.5
  • Ruby/SDL Win32's binary(ver 1.2.0) for Ruby 1.8

1.8.4 と 1.8.5 で拡張ライブラリの互換性があるのかどうかわからなかったので ASR もいちおう 1.8.4 にした。

Ruby/SDLはMyGameでラップ。 次のような Ruby スクリプトとレシピファイル(erb)を用意する。

test.rb

require 'mygame/boot'

test.rexy

general:
  startup: test.rb
  core: gui
  kcode: none

file:
  test.rb:
  mygame.rb:
  mygame/boot.rb:
  sdl.rb:
    file: C:/ruby-1.8/lib/ruby/site_ruby/1.8/sdl.rb
  sdl.so:
    file: C:/ruby-1.8/lib/ruby/site_ruby/1.8/i386-msvcrt/sdl.so
    type: extension-library
  forwardable.rb:
    file: C:/ruby-1.8/lib/ruby/1.8/forwardable.rb
  rubysdl_aliases.rb:
    file: C:/ruby-1.8/lib/ruby/site_ruby/1.8/rubysdl_aliases.rb
  kconv.rb:
    file: C:/ruby-1.8/lib/ruby/1.8/kconv.rb
  nkf.so:
    file: C:/ruby-1.8/lib/ruby/1.8/i386-mswin32/nkf.so
    type: extension-library
  <% %w(SDL_ttf    iconv       sdlskk    zlib1
        SDL_image  SGE         jpeg      smpeg
        SDL_mixer  freetype-6  libpng13  zlib).each do |name|
  %>
  <%= name %>.dll:
    file: C:/ruby-1.8/bin/<%= name %>.dll
    type: extension-library
  <% end %>

以下を実行。

erb test.rexy > test.exy
exerb test.exy

test.exe が作成される。実行環境には test.exe ファイルとともに以下の dll も置く。

SDL.dll
MSVCP71.DLL
msvcr71.dll

SDL.dll はレシピに追加せず、それ以外の SDL 関係の dll は全部 exe 化した。