Ruby
DXRuby
RubyDay 14

DXRubyのススメ

はじめに

この記事はRuby Advent Calendar 2017 の14日目です。

<< RubyGemコードリーディングのすすめ || Rubyでクリエィティブコーディング >>

DXRubyって?

Rubyを使って、Windows向けのゲームが簡単に作れるDirectXライブラリです。

Ruby 2.1.x/2.2.x/2.3.x にて利用することができます(ただし、32bit版のみ)

Rubyist Magazine でも取り上げられてたことがあるので、ご存知の方もおられると思います

公式ページはこちら
制作者は mirichi

何がいいの?

何といっても、Rubyでゲームが作れるところですね!
Rubyの自由かつストレスのないコーディングで、気楽にゲーム制作ができるのはかなり助かっていますねー。

おまけに、コードそのものもかなり短く済むのも有難いところです。
如何せん、C/C++などでゲームを制作するとそれなりのコード量になってしまいますし(単に、私のコードの書き方がアレなだけだとは思いますけど……)

それに、パッと思いついたコードを気軽に試しつつ、ゲームが作れるので初心者にもおすすめの開発環境でもあります。

特に、当たり判定などは 後述する === を使うことで実装できるので便利ですねー。

それと、個人的にはノベルゲームを作ることが多いので、Rubyの正規表現を使えるので助かっていますねー。

どんなものが作れるの?

一応、こんなものが作れます。


sampleSTG.gif

自機や敵機は Sprite クラスを継承して使うことで 当たり判定などを書かずに済ませています。
Sprite クラスにはSprite.check というクラスメソッドがありまして、これを使うことで面倒な当たり判定を簡単に実装できます。

また、単に player === enemy でも衝突したかどうかを判定することが可能です。

個人的には、当たり判定などが絡みやすいシューティングゲームやアクションゲームなどは作りやすいと思っています(時間さえあればもっとキッチリとしたものに仕上げたい……)

ソースは、こちらにて公開してます。

あとは、こんなものもパパっと作れますねー

sampleMapSystem.gif

これはウチのサークルで制作中のノベルゲーム用にマップでの移動システムを実装したものですね。
マウスの位置を追跡する形で、透過された画像が移動しています。
その画像と、マップ上の赤い画像が接触した時だけ地名が表示されるようになっています。

この方法をうまく使えば脱出ゲームなどのクリッカブルをDXRubyで実装することが可能ですねー。

もちろん、実際のゲームではクリックすることでその場所を訪れるイベントへと移行します。

なお、ソースはこちら

おわりに

ゲームをメインで作っている身からすると DXRuby は短いコードで直感的に実装できるので非常に助かっています。

あと、「Rubyをやってみたいんだけど……」と聞かれた時は大体 Ruby + DXRuby でのミニゲーム制作をオススメしてますねー。

結構簡単に、自機操作や当たり判定が実装できるので初心者にはかなり敷居が低めなのでオススメできますし

なにより、そう訪ねてこられる方は大体 Windows PC ですので、Ruby と DXRuby が一緒にインストールできるインストーラーがあることもあり、薦めていますねー