2016/12/11(日) [n年前の日記]
#1 [ruby][gosu] WIndows上で Ruby + Gosu を試してみたり
_Ruby
というプログラミング言語を使って2Dゲームが作れるようになる
_Gosu
というライブラリがあるそうで。クロスプラットフォーム対応ライブラリ、つまりは Windows、Mac、Linux、どのOSでも動くライブラリなのだとか。
Windows に特化した2Dゲーム制作ライブラリなら _DXRuby があるけれど。DXRubyは、Windows の DirectX という機能を呼び出しているから、裏技(?)を使わないと Mac や Linux では動かない。もし、「Mac や Linux でも動くゲームを作ってみたいな」と思った時は、Gosu が選択肢に入ってくるのかもしれないなと。
ということで、数日前に Windows上で Gosu を少し触ってたのだけど。せっかくだからメモをまとめておいたほうがいいよなと思えてきたので、こうしてメモしておくのです。
環境は、Windows 10 x64 + Ruby 2.2.6 p396 mingw32版 + gosu 0.10.8 x86-mingw32版。
Windows に特化した2Dゲーム制作ライブラリなら _DXRuby があるけれど。DXRubyは、Windows の DirectX という機能を呼び出しているから、裏技(?)を使わないと Mac や Linux では動かない。もし、「Mac や Linux でも動くゲームを作ってみたいな」と思った時は、Gosu が選択肢に入ってくるのかもしれないなと。
ということで、数日前に Windows上で Gosu を少し触ってたのだけど。せっかくだからメモをまとめておいたほうがいいよなと思えてきたので、こうしてメモしておくのです。
環境は、Windows 10 x64 + Ruby 2.2.6 p396 mingw32版 + gosu 0.10.8 x86-mingw32版。
◎ Rubyのインストール。 :
まずは Ruby をインストールしないと話にならない。
_RubyInstaller for Windows
という、Windows にインストールできる Ruby があるので、ソレを利用させてもらう。
_Downloads ページから、Ruby 2.2.6 (rubyinstaller-2.2.6.exe) か Ruby 2.3.3 (rubyinstaller-2.3.3.exe) をダウンロード。
ダウンロードした .exe を実行するとRubyのインストールができる。詳細は以下の解説記事を参考に。
_WindowsにRubyをインストールする(初心者向け) - Qiita
_はじめてのRuby環境構築 (Windows編その1) - Qiita
_Rubyダウンロード及びインストール | Rubyインストール
DOS窓(コマンドプロンプト)を開いて、ruby -v と打ち込むと、Rubyのバージョンが表示される。
DOS窓の開き方が分からない? いくつか開き方があるけれど…。
_Downloads ページから、Ruby 2.2.6 (rubyinstaller-2.2.6.exe) か Ruby 2.3.3 (rubyinstaller-2.3.3.exe) をダウンロード。
ダウンロードした .exe を実行するとRubyのインストールができる。詳細は以下の解説記事を参考に。
_WindowsにRubyをインストールする(初心者向け) - Qiita
_はじめてのRuby環境構築 (Windows編その1) - Qiita
_Rubyダウンロード及びインストール | Rubyインストール
DOS窓(コマンドプロンプト)を開いて、ruby -v と打ち込むと、Rubyのバージョンが表示される。
> ruby -v ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]バージョンが表示されたということは、インストールができたということ。
DOS窓の開き方が分からない? いくつか開き方があるけれど…。
- Win+Rキーを押して「cmd」と打ち込んでEnterキー。
- スタートボタンを右クリックして「コマンドプロンプト」を選択。(Windows8.1/10の場合)
- Cortanaに「cmd」と打ち込むと「コマンドプロンプト」が一覧に出てくるのでソレをクリック。(Windows10の場合)
◎ Gosuのインストール。 :
Ruby には、gem というライブラリ管理ツールがあって、インターネット経由でライブラリをダウンロードしてインストールしたり、簡単にアンインストールできたりする。
例えばDOS窓を開いて gem list と打ち込んでみれば、今現在インストールされてるライブラリの一覧が表示される。
この gem というツールを使えば gosu をインストールすることができる。以下を打ち込むだけ。
例えばDOS窓を開いて gem list と打ち込んでみれば、今現在インストールされてるライブラリの一覧が表示される。
> gem list *** LOCAL GEMS *** addressable (2.5.0) aozora (0.2.0) ast (2.3.0) astrolabe (1.3.1) (以下略)
この gem というツールを使えば gosu をインストールすることができる。以下を打ち込むだけ。
gem install gosu
> gem install gosu Fetching: gosu-0.10.8-x86-mingw32.gem (100%) Successfully installed gosu-0.10.8-x86-mingw32 Parsing documentation for gosu-0.10.8-x86-mingw32 Installing ri documentation for gosu-0.10.8-x86-mingw32 Done installing documentation for gosu after 1 seconds 1 gem installedインストールできた。
◎ Hello World. :
gosuを使って、まずはウインドウを表示してみる。以下のソースを書いた。
_helloworld.rb
実行してみる。
ウインドウが表示された。
これだけではさすがに何もできないので、せめて最低限、画像とテキストだけでも表示してみる。以下のソースを書いた。
_tmp_bg.png
_tmp_ufo.png
実行。
画像とテキストが表示された。
_helloworld.rb
require 'gosu' class MyWindow < Gosu::Window # コンストラクタ def initialize super 640, 480, false self.caption = 'Hello World!' end # 更新処理 def update end # 描画処理 def draw end end window = MyWindow.new window.show
実行してみる。
ruby helloworld.rb
ウインドウが表示された。
これだけではさすがに何もできないので、せめて最低限、画像とテキストだけでも表示してみる。以下のソースを書いた。
require 'gosu' class MyWindow < Gosu::Window # コンストラクタ def initialize super 640, 480, false self.caption = 'Hello World!' @font = Gosu::Font.new(32) # フォントを用意 @bg_img = Gosu::Image.new("tmp_bg.png", :tileable => true) # BG画像 @spr_img = Gosu::Image.new("tmp_ufo.png", :tileable => true) # スプライト画像 end # 更新処理 def update end # 描画処理 def draw @bg_img.draw(0, 0, 100) # BG描画 @spr_img.draw(320, 240, 200) # スプライト描画 @font.draw("Hello World", 10, 10, 300) # テキスト描画 end end window = MyWindow.new window.show使用した画像は以下。
_tmp_bg.png
_tmp_ufo.png
実行。
ruby helloworld2.rb
画像とテキストが表示された。
◎ 各行を解説。 :
Gosuのウインドウは、Gosu::Window というクラスを使えば作れるらしい。
ソースの最後のほうで、
Gosu::Window は、3つのメソッドを持つ。
毎フレーム、と書いてしまったけど、どのくらいの頻度で更新処理・描画処理がされるのか。Gosuは、デフォルト設定なら60FPSで処理するよ、ということになってるらしい。
ちなみに、FPSってのは、Frame Per Second の略。フレーム/秒。1秒間に何フレーム表示するか、という単位。60FPSってことは、1秒間に60回画面が書き換わるよ、ということ。
さて。画像の読み込みは、Gosu::Image.new() を使う。
扱える画像ファイルのフォーマットは、 _ドキュメント を眺めた感じだと、png画像とbmp画像は使えるようで。
画像の描画は、以下のように書く。
テキスト描画は、Gosu::Font.new() と draw() を使う。
_ドキュメント によると、フォントファイル(.ttf)を別途用意して、ソレを読み込んで使うこともできるらしい。
余談。Gosuを使うということは、クロスプラットフォームを意識してライブラリを選んだということだろうから…。もし、デフォルトフォントではなく、少し変わった見た目のオシャレなフォントを使いたいなら、OSインストール済みのフォントをあてにせず、別途、ttfファイルも同梱して配布したほうがいいでしょうな…。一応、Windows、Mac、Linuxで共通して使えるフォント種類を少し調べてみたのですけど、どのOSでも共通して使えるフォントって、ほとんど無いようで…。
とりあえず、画像を表示するところまではできたから、これで色々とやれるはず。
長くなってきたので、以降は別記事で。
class MyWindow < Gosu::Window (中略) endこれで、Gosu::Window を継承したクラスを作ってる。この中がメイン処理(?)になる。
ソースの最後のほうで、
window = MyWindow.new window.showとあるけれど。それぞれ、以下を指示している。
window = MyWindow.new # MyWindowクラスを生成してる window.show # 「ウインドウを表示しろ」と命令してる
Gosu::Window は、3つのメソッドを持つ。
- 初期化を担当する initialize()。(コンストラクタ)
- 毎フレームの更新処理を担当する update()。
- 毎フレームの描画処理を担当する draw()。
毎フレーム、と書いてしまったけど、どのくらいの頻度で更新処理・描画処理がされるのか。Gosuは、デフォルト設定なら60FPSで処理するよ、ということになってるらしい。
ちなみに、FPSってのは、Frame Per Second の略。フレーム/秒。1秒間に何フレーム表示するか、という単位。60FPSってことは、1秒間に60回画面が書き換わるよ、ということ。
さて。画像の読み込みは、Gosu::Image.new() を使う。
@img = Gosu::Image.new("画像ファイル名", :tileable => true):tileable って何じゃ? …画像の端をクッキリスパッとさせるなら true、隙間が入ってもいいなら false を指定するようで。例えば、BG(背景、Background)をタイルマップで描画したい時は、画像の端がクッキリしてないと隙間が入ってしまって見苦しいので、そんな時は true を指定すべし、とのこと。
扱える画像ファイルのフォーマットは、 _ドキュメント を眺めた感じだと、png画像とbmp画像は使えるようで。
- png画像はアルファチャンネルも反映してくれる。
- bmp画像の場合は、マゼンタ色(0xff00ff)を透明色として扱うぜ、と書いてあるように見えた。
画像の描画は、以下のように書く。
@img.draw(x, y, z)x, y は分かるとして、z は何だろう? …描画の優先順位らしい。z値が大きければ手前に描画されて、z値が小さければ奥に描画される。のかな。たぶん。
テキスト描画は、Gosu::Font.new() と draw() を使う。
# フォントを用意 @font = Gosu::Font.new(フォントサイズ)
# テキスト描画 @font.draw("描画したい文字列", x, y, z, x拡大率, y拡大率, 色指定)描画時の、拡大率と色指定は省略することもできるらしい。
_ドキュメント によると、フォントファイル(.ttf)を別途用意して、ソレを読み込んで使うこともできるらしい。
class MyWindow < Gosu::Window def initialize @font = Gosu::Font.new(self, "./LiberationMono-Bold.ttf", 22) end end
- フォント名の指定文字列内に「/」があったら、ttf読み込みを要求されてるものとして扱う。
- 「/」が無かったら、OSにインストール済みのフォント名を指定しているものとして扱う。
余談。Gosuを使うということは、クロスプラットフォームを意識してライブラリを選んだということだろうから…。もし、デフォルトフォントではなく、少し変わった見た目のオシャレなフォントを使いたいなら、OSインストール済みのフォントをあてにせず、別途、ttfファイルも同梱して配布したほうがいいでしょうな…。一応、Windows、Mac、Linuxで共通して使えるフォント種類を少し調べてみたのですけど、どのOSでも共通して使えるフォントって、ほとんど無いようで…。
とりあえず、画像を表示するところまではできたから、これで色々とやれるはず。
長くなってきたので、以降は別記事で。
◎ Gosuのサンプルスクリプトのインストールについて。 :
念のためにメモしとく。
Gosuのサンプルスクリプトが、gosu-examples にまとまってるらしい。以下を打てばインストールできる。
以下の場所にインストールされた。
サンプルスクリプトによっては、実行時に必要になるライブラリがあるようで。とりあえず、手元の環境では以下をインストールして、サンプルスクリプトを動かすことができた。
_WindowsにRubyをインストールする(初心者向け) - Qiita
Gosuのサンプルスクリプトが、gosu-examples にまとまってるらしい。以下を打てばインストールできる。
gem install gosu-examples
以下の場所にインストールされた。
Rubyインストールフォルダ\lib\ruby\gems\2.2.0\gems\gosu-examples-1.0.3examplesフォルダの中にサンプルがいくつか入ってるので、例えば ruby tutorial.rb、てな感じで実行できる。
サンプルスクリプトによっては、実行時に必要になるライブラリがあるようで。とりあえず、手元の環境では以下をインストールして、サンプルスクリプトを動かすことができた。
gem install chipmunk gem install openglchipmunk のインストールに関しては、Ruby の DevKit が必要になるようで。そのあたりは以下を参考にしてインストールしてくださいなと。
_WindowsにRubyをインストールする(初心者向け) - Qiita
[ ツッコむ ]
以上です。