[本記事は、Shinosaka.rb Advent Calendar 2016の12/13分の記事です]
Rubyの記事を書くのは本当に久しぶりなので、緊張しておりますが、よろしくお願いいたします。
今日のテーマは、「RGSS(Ruby Game Scripting System)」なるものです。先日、その終焉を知り、筆を執ることにいたしました。
手前味噌ですが、当方も「るびま」にRubyistが知りたいかもしれないRGSSの世界という記事を書いています。
記事の公開が2005年と、もう10年以上経っているシステムなんですね。
RGSSは元の名前の通り、「Rubyを使ってゲームを作る」というコンセプトで作られたシステムです。
「聞いたこと無いぞ、そんなシステム!?」と思われるかもしれません。というのも、RGSSはアプリケーションソフトの基幹システムだったので、あまり表に出てくる事がありません。
そのアプリの名は「RPGツクール」(参考:ツクールWeb)です。
RPGツクールは、様々なプラットフォーム(PC-8801,PC-9801,Windows,SFC,PS,Gameboy,Nintendo DS他)上で、難しいロジックを考えずにRPGが作れることを目的としたツールアプリです。
内部ロジックをいじるのは元々コンセプトとはずれているので、ちょっとしたフローチャートのようなろ実行構築しかできませんでした。
そんな折に登場したのが、2004年に発売された「RPGツクールXP」でした。
「XP」には、初めてロジックをプログラミングできる「RGSS」が搭載され、速度を気にしなければ(20fps、1秒間に20回しか画面を更新できなかった。通常のゲームでは60fpsが標準)、大抵のロジックが掛けるようになっていました(もちろん、低レベルな部分は無理ですが…)。
大きなポイントは、RGSSが「Rubyプラスアルファ」として存在していることでした。Rubyでゲームプログラムが掛けるようになっているのです。メインループを書き、その中にロジックや描画処理などを挿入して…という、昔ながらのやり方で実装できます。
Wikipediaにも記事がございますので、ご参考にしてくださいませ。
従来とは違い、この1行だけで「キーパッドのBボタンが押下の状態を返す」を実装できるのは大きなことでした。
@final = Input.trigger?(Input::B)
他にも、画像をファイルから取り込んだり、位置を調整したりすることもできました。他にも、標準で付いているテキスト表示機能を使ってメッセージも制御できました。
とはいえども、いい事ずくめではなく、
- 遅い(20fpsはちょっと…)
- Rubyが古い(v1.8ベース)
- 再配布に実行時モジュールが必要(結構でかい)
といったものがあり、厳しいところもありました。
とはいえ、「RPGツクール」新版(VX,VX Ace)へ映っていくごとにRGSSの性能も変わり、VXでは60fps対応、VX AceではRuby1.9ベースとなり、ますます使いやすくなっていきました。
しかし、盛者必衰かな、2016年に発表された「RPGツクールMV」では、基幹部分がHTML5+Javascriptとなり、RGSSの終焉が現実のものとなりました。
ただ、VX Aceも同時販売されており、RGSSの灯が消えたわけではありません。もしご興味がお有りでしたら、一度触ってみてください。数多のフリーゲームや同人ゲームなどで動いているRubyの存在に感謝しながらプレイしてみることもおすすめします。
ちなみに、RPGツクールVX AceとRPGツクールMVの日本語版がSteamで配布されていますので、時間と資金に自身のある方はお楽しみくださいませ。
14日は、honeniqさんが、GR_CITRUS(mrubyボード)のハマりどころについて書かれるそうです。