読者です 読者をやめる 読者になる 読者になる

いつクリはてブロ

いつになったらクリエイティブするの?

ゲームを作るときにあまりにもRuby+DXRubyがラク過ぎたのでまとめ

技術 Ruby DXRuby

Rubyラク過ぎる。

何がラクなのか

    • 他の言語と比べると、やっぱりさくさく作れる→鉄を熱いうちに打てる
    • DXRuby(後述)を使うとGUIが簡単に作れる

ゲームを制作するにあたって、開発言語として何を選ぶかをいろいろ考えた。
去年作っていた「C-holic」は主にC言語で作っていたのだが、Webでいろいろ記事を見て、LL(軽量言語)がいいかな、と考え始めた。
LLの利点として、言語的にあまり面倒なこと(データの型をきちんとしたりとか)をしないで済むということが挙げられる。
だから、さっさと取り掛かってさっさと作れるのは、モチベーションの維持という視点からも優れている。
時間がかかるとどんどんやる気が無くなるから。
鉄は熱いうちにガツンガツン打っておきたい。
Rubyはバイトで使う必要が出たときに触り始めて、「C-holic」以前にゲームを作ろうとしていたこともあるのだけれど、本格的に最後までちゃんとやったことがなかったので、いろいろ実験してみようと思ったのも理由の一つ。
感覚が掴めれば他にも使えるかもしれないからね。

DXRubyしゅごいいいいいい

Project DXRuby
Ruby から DirectX を扱う簡単高速ゲームライブラリ DXRuby の紹介

下手するとこの記事がただのDXRubyの宣伝になってしまうくらいにすごい。
簡単に言うとRubyでWindowsのGUIをちょう簡単に実現するというものなんだけど、その他にもいろいろ便利なところが。
さすが作者がゲーム制作のために作ったと言っているだけある。
私が感動したのは以下の点。

    • メインループ開始と終了の2行だけで完結する
    • 何もしなくてもゲームパッドからの入力に対応している
    • 何もしなくても60fpsを維持してくれる

だからエディタに向かい始めたその瞬間から直にゲームを作り始めることができるわけだ。
以下にDXRubyパッケージ内の「minsample.rb」を転載させていただく。

require 'dxruby'

x = 0                         # x座標の変数
y = 0                         # y座標の変数
image = Image.load("data.png") # data.pngを読み込む

Window.loop do                # メインループ
  x = x + Input.x              # 横方向の入力でx座標を変更
  y = y + Input.y              # 縦方向の入力でy座標を変更

  Window.draw(x, y, image)     # data.bmpを座標の位置に表示
end

ね? 簡単でしょ?

使ってみて出てきた問題点(仮

問題というほどでもないんだけれども。

ソースコードや素材が隠蔽出来ないという点をどうしようか考えている。
何か工夫して解決することは出来そうではあるが、些か難易度が高い(と思う)。
ただ、ソースコードは隠蔽できそう。
ruby/orca - licks
これもちょう簡単&便利。

あと、悩んだことが一つだけ。メモ代わりに残しておく。
Rubyはオブジェクトが全て参照渡しになっているから、変数の代入先で値を変えるとその代入元の値も変わってしまうというアレに少しだけ悩まされた。
他の言語で慣れているとちょっと戸惑う。
記述やデータ構造に気を使う必要があるということに気付くまでやや時間がかかった。ぐぬぬ

まとめ

ゲームを作りたくてうずうずしてるけど、イマイチ何やったらいいか分からない人や、ゲームを作りたいけど、作りたいところにすぐ取り掛かれなくて萎えてしまう人は、Ruby+DXRubyを試してみてください。

……結局宣伝になってしまった。

蛇足

大学で習うプログラミングってCUIで計算するだけだからつまんないんですぅ。
ゲームを作りたくて大学入ったのにそういうのしかやらなくてがっかりとか、そもそもプログラミングをやったことない状態で大学入る人も意外とたくさんいる。
プログラミングを学習するならまず興味を持つところからの方がいいと思うんだよなあ。
とすると、レゴブロックで遊ぶ感覚で自分の作りたいものを作れるLLでのGUI作成を最初の一歩に選ぶのは悪くないはず。
創作する欲求は誰もが持っているのだから。

という内容を書こうとしたんだけど、上の行数で収まってしまったのだった^^;