##はじめに
マルチプラットフォームだったりマルチランゲージだったり、大規模で本格的なものからコードを一切書かないようなものまで、多種多様なゲームエンジン・ライブラリ・ツールの開発 Advent Calendar 2016の19日目の記事です。
今回はRuby用の2DゲームライブラリDXRubyの紹介です。
##DXRubyとは何か
DirectX9を使ったRuby用ゲームライブラリです。DirecXを使うのでWindows限定で、作者が32bitPCしか持っていないので32bitのRuby限定です。あと2D限定です。
サイトはこちらで、インストールはgemからとなります。
##特徴
###シンプル
Ruby用なので必然的にクラスライブラリとなっていますが、それぞれ個別の部品として存在しているだけで、フレームワーク的にクラスを継承してどうのこうの、という記述は必要ありません。クラス定義一切無しでゲームを作ることもできます。他、Rubyの難しい機能は使っておらず、DXRubyを扱うのに必要なRubyの知識は極めて少ないという特にRuby初心者にとって優しい特徴となっています。
とりあえずこんなコードで画像を読み込んでキャラを動かすことができる感じです。ウィンドウはWindow.loop実行時に自動で開きます。
require 'dxruby'
x = 0
y = 0
image = Image.load("data.png")
Window.loop do
x = x + Input.x
y = y + Input.y
Window.draw(x, y, image)
end
また、物がシンプルなのでフレームワークの下敷きにするには丁度良いらしく、このAdventCalendarでもDXRubyをベースに使ったフレームワークの紹介が2つほどあります。
###速い
他のライブラリでよくある、C用のゲームライブラリのRubyバインダという形ではなく、Ruby専用、Windwos専用に開発しているため、Cで書かれたRubyメソッド内から直接DirectXを叩きに行きます。また、Ruby用拡張ライブラリとして特化したデータ構造を持ち、できる限りRubyの遅さを回避するような設計となっているため、非常に高速に動作します。
##記事の例から
このAdventCalendarの記事の例に書いてあることをいくつか。
###活用事例
簡単かつ実用的な速度が出る無料のRubyゲームライブラリということで、島根県主催のRuby合宿や、松江市主催のRuby教室、まちづくり三鷹のU-18プログラミングくらぶなどでRubyの学習用に使われているようです。ようです、というのはそもそもがオープンソースのもの(zlibライセンス)で報告義務も無いので正式に報告を受けることが無いからですね(松江はDXRuby絡みで行ったので知ってます)。なので実際どこでどんなふうにどれだけ使われているのかはぜんぜん把握できていません。大学の授業などでも使われているそうですが同様です。
いくつか実際に遊べるゲームも公開されています。こちらも報告を受けているわけではないのでどれだけ存在するのかまったく把握できていません。
あと、小学生から楽しむ Rubyプログラミングという本がDXRubyでRubyを勉強する本らしいです。出版に関しても(ry
###ユーザの増やし方
なんにもしてないので見える範囲ではなかなか増えませんね。。。でも学習用に使われているということは「DXRubyでRubyを勉強しました!」っていう人が地味に増えているのかもしれません。
###コミュニティなど
特にありません。Twitterで一部のユーザさんとゆるく繋がってる感じです。
##他
DXRubyはRuby学習用という訳ではなく、自分のために作って、ついでに公開したものです。趣味が「思いついたものを作って動かして喜ぶ」という感じなので、ちょっとしたものを作って動かすことに特化しています。また、思いつくものが多岐に渡るので全体のアルゴリズムやデータ構造を縛ることはせず、あくまでも部品の提供に留まっています。あと、作り始めた時点ではRuby初心者だったので基本的な部分で難しい機能は使わないようになっています。つまり「シンプルで使いやすくRubyの勉強に使える初心者向けライブラリを作ろう」と思って作ったわけではなく、色々な要素が絡まってこうなった結果、学習用に丁度良いと判断されてそういう用途で使われているみたいです。
##おしまい
ちょっとしたコードで絵が動くので、Rubyを始めるのに丁度いいかと思います。Ruby勉強したいけど何したらいいのかよくわからない、という人や、ゲーム作ってみたい、という人など、ぜひお試しくださいな。