ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

Rubyのゲームライブラリを試す(前編)

以前、「Windows上で動作するダンジョンサンプル」を出しましたが、
「詳しい話は後日」と書いておきながら、わりと時間が経ってしまいました
結構進んではいたものの、基盤となるライブラリの選定で悩んでいたのです


いつもやっている仕事なら、出力はHTMLだったりファイルだったりしますが、
ゲームである以上、出力はWindows上の画面でなければなりません
それに使えるライブラリを選んでいた、というわけです


ちなみに、今はこんな感じ(´・ω・)っ


画像ではわかりづらいと思いますが、
まずダンジョンがスクロールするようになりました


あと、まだ未踏の場所の様子が隠されるようになってます
上は部屋だけわからない状態のダンジョンで、
下は本当に歩いたところだけ表示される感じです


本当はサンプルグラムを公開したいところなのですが・・・
別な問題がありまして、そのあたりの話はまた後日改めて


で、話をライブラリに戻すと、検討したのは以下4つです

結果的には最初のサンプルで使った「DXRuby」に決めたのですが、
一つずつ見てみましょう

Ruby/SDL

オープンソースのマルチメディアライブラリであるSDLを、
Rubyから利用できるようにしたものです

利点

SDLRubyさえ動く環境であれば、Windowsに限らず動きます
少なくともMacとLinuxは大丈夫そうです

  • いろいろできる

かなり低級レイヤーの機能まで自由に触れるので、
複雑な処理であっても記述できる可能性が高いです
(なにしろ3D処理までできるらしいので・・・)

欠点
  • 機能が複雑すぎる

利点がそのまま欠点にもなります


今回必要な機能は限られているので、
たぶんRuby/SDLをさらにwrapする形で自前のクラスを書くことになるでしょう
であれば、SDLをwrapした他のライブラリを使った方が楽です

  • fps(Frame Per Second)の計算が自前

そもそも、ゲームはどんな環境であっても、
一定の速度で動作されることが要求されます
(速いCPUほど自機や敵機が速くなるSTGとかやりたくないですよね?)


なので、ゲームとしての単位時間であるfpsを、
システムの時間から計算して制御しないといけません


このあたりの仕組みについては、
以前紹介した初心者向けの本に書かれていますが、
wrapper系ライブラリがfps指定に対応していると考えると・・・

Miyako

基本的にはRuby/SDLのwrapperで、
どちらかというと紙芝居的なコンテンツに特化されているようです
(要するにADVとか)


RPGツクールXP」がRubyを使っていろいろ記述できるようになっているらしく、
それを生で実装しようとしたのが元々だとか

利点
  • 機能が豊富

Ruby/SDLでできることはたいていできできそうな「気がします」

欠点
  • 情報が致命的に不足

正直、この時点でこのライブラリはあきらめました(´・ω・`)
いろいろできそうではあるのですが、致命的なまでに情報が不足していて、
「どうすれば動く」的なところからさっぱりなのです

  • 紙芝居的なものに特化されている

るびまの記事を見ると、シーンの遷移に関する解説になってます


おそらく製作者がそのような用途を意図したのだと思うのですが、
例えば今回のような「ただ画面を一定速度で描き直ししたい」というのには向かない感じが
(向いているのかもしれませんが、ドキュメントがないしな・・・)


一応、拡張ライブラリでアクションとか作れるのを想定してはいるようですが、
ただでさえSDLのwrapperなのに、さらに何かかぶせるのもちょっと・・・

  • 記述するコードがいまいち奇麗じゃない

これはあくまで個人的な感想、と前置きしたうえで・・・


るびまの記事で見たレベルですが、
あまりRubyっぽくない記述になっている気がします
(ライブラリ本体が、ではなく、ライブラリの上に乗せるコード仕様が)


もしかするとVer2.0系では変わっているのかもしれませんが、
それを知る術がありません

  • 某4コマ漫画に興味がない

4コマ漫画好きな私ですが、芳文社で買うものは限られており、
件の漫画も読んだことがないのです(´・ω・`)
ファンだとまた評価が違うのかも・・・




おおぅ、気がついたら長くなりすぎたΣ(゚Д゚;≡;゚д゚)
まだ半分なのにな・・・


ということで後編に続く