Hatena::ブログ(Diary)

土屋つかさのテクノロジーは今か無しか

2015-12-23

DXRuby Advent Calendar 2015:14日目:メッセージ指向ゲーム記述言語「司エンジン」ファーストリリース

 DXRuby Advent Calendar 2015(http://www.adventar.org/calendars/757)の24日目です。メリークリスマス! 今年も無事終わりそうですね。
 これを書いている時点では23日目はまだ埋まってないのだけど、きっと誰かが埋める筈なので後で更新します!><

 さて、このブログでも散々書いて来ましたし、今回のアドベントカレンダーでも何度も書かせて頂きました、土屋つかさが開発しているメッセージ指向ゲーム記述言語「司エンジン」を、本日正式にver1.0をリリースします!>< 本記事では環境のインストール手順やリファレンスへの参照リンクなどをまとめます。それではどうぞー。

導入方法A:司エンジンスターターキットを使う

 スターターキットを使うと複雑な手順を飛ばしてひとまず司エンジンを使うことができます。以下のファイルをダウンロードして展開してください。

http://someiyoshino.main.jp/file/tsukasa/tsukasa_starter_kit_v1_0_0.zip

 ルートフォルダにあるmain.rbをコンソールから、あるいは直接実行すると、サンプルコードが動きます。scriptフォルダ内のスクリプトファイルを修正することで、自作のスクリプトを動かすことができます。

 スターターキットはocraを使ってパッキングしており、起動がとても遅い仕様になっています。また、こちらはサポート外とさせていただきます。本格的に司エンジンでゲーム開発を行う場合は、開発環境をインストールした方が良いでしょう。

導入方法B:開発環境をインストールする

 こちらが正式な導入方法になります。司エンジンを導入するには以下の5つの手順を実行します。あらかじめDirectXインストールしておいてください(司エンジンはWindows専用です)

1・rubyのインストール

 なにはなくともrubyが必要です。2.2以降であれば動くと思いますが、現在動作を確認しているrubyのバージョンは以下の2.2.3になります。

ruby 2.2.3p173 (2015-08-18 revision 51636) [i386-mingw32]

 上記のverのrubyは下記のサイトにあります。「Ruby 2.2.3」をクリックしてダウンロードしたファイルを実行するとインストールできます。

rubyinstaller for windows
http://rubyinstaller.org/downloads/

※注意※
 この後でインストールayame/rubyライブラリにバージョン依存があるため、ver2.1以前のrubyでは正常に動作しません。

2・DXRubyのインストール

 mirichiさん作のrubyDirectXラッパーフレームワーク「DXRuby」をインストールします。現在動作を確認しているDXRubyのバージョンDXRuby 1.4.2になります。下記のサイトから最新版をダウンロードし、install.rbをダブルクリックするとインストールできます。

Project DXRuby
http://dxruby.osdn.jp/

3・司エンジンの配置

 次に司エンジンを配置します。下記のファイルをダウンロードして展開し、任意の場所に配置してください。

http://someiyoshino.main.jp/file/tsukasa/tsukasa_v1_0_0.zip

 また、司エンジンはgithub上で開発を行っています。最新版のコードを参照したい場合はこちらをどうぞ。ただし、まだまだ思いつきで連続コミットしているので、唐突に動かなくなることがママあります。リポジトリのコードを開発に使うのは推奨しません。

Tsukasa
https://github.com/t-tutiya/tsukasa/

4・parsletのインストール

 パーサーライブラリparsletをインストールします。司エンジンではtksスクリプトパースするのに使用しています。

 parsletはgemに登録されているので、コンソールから以下のように打てば自動的にインストールされます。

gem install parslet

 以前はparsletのインストール時に謎なエラーが出ることがあったのですが、最近は改善しているようです。エラーが起きたら、ほら、なんだ。頑張れ!

5・Ayame/Rubyのインストール

 DirectMusicライブラリであるayameのrubyラッパーayame/rubyインストールします。以下のサイトの「Ayame/Ruby0.0.3 ruby2.2.x用」をクリックしてファイルをダウンロードします。

DXRuby ファイル置き場
http://dxruby.osdn.jp/cgi-bin/hiki.cgi?%A5%D5%A5%A1%A5%A4%A5%EB%C3%D6%A4%AD%BE%EC

 ダウンロードしたayameruby003-mswin32-ruby22.zipを解凍し、Ayame.dllとayame.soの二つのファイルを以下の場所に配置します。

Ayame.dll :main.rb と同じディレクトリ
ayame.so : RubyインストールされたディレクトリデフォルトではC:\Ruby22)配下の\lib\ruby\site_ruby\2.1.0\i386-msvcrt(dxruby.so が置いてある場所です)

 これで全ての導入手順が完了しました。コンソールで司エンジンの開発フォルダに移動し、以下のようにコードを打てばサンプルが起動します。

ruby main.rb

 scriptフォルダ内にあるfirst.rbにスクリプトを記述すれば反映されます。さあ、ゲームを作る準備は完了しました。お疲れ様です!><

ドキュメントへのリンク集

 司エンジンのドキュメントは解説本PDFとして用意する予定なのですが、まだ完成していません(ごめんなさい)。ネットに上がっている分のドキュメントを列挙しておきます。

司エンジンを作った理由

 司エンジンは「既存のゲーム開発そのもの」を再定義するために土屋つかさが進めている個人プロジェクトです。下記記事で紹介しています。

DXRuby Advent Calendar 2015 3日目:汎用ゲームフレームワーク(を目指す)司エンジンの紹介
http://d.hatena.ne.jp/t_tutiya/20151202/1449068891

 上記記事にもリンクしていますが、下記のPDFでは司エンジンが問題領域としている課題について、より専門的な議論を展開しています。
司エンジン解説本第1部サンプル(12月2日版)
http://someiyoshino.main.jp/file/1218_tsukasa_engine_book_sample_chap1.pdf

スクリプト/tksスクリプトの言語仕様

 司スクリプト/tksスクリプトの言語仕様については以下の記事を参照。

司エンジン:司スクリプト記法解説
http://d.hatena.ne.jp/t_tutiya/20151103/1446536107
司エンジン:tksスクリプト記法解説
http://d.hatena.ne.jp/t_tutiya/20151104/1446606281

コントロールのリファレンスマニュアル

 各コントロールのプロパティとコマンドについてはgithubwikiで更新しています。

リファレンスマニュアル
https://github.com/t-tutiya/tsukasa/wiki

コードサンプル

 土屋のブログでコードのサンプルと解説を載せているのですが、すみません、これらはどれも内容が古く、1stリリース版では動かない物が多数あります。script/sampleフォルダに入っているサンプルコードの方はアップデートされているので、最新仕様についてはそちらを参照してください。

土屋つかさテクノロジーは今か無しか
http://d.hatena.ne.jp/t_tutiya/

キーコード定数

 キー入力判定時に使用するキーコード定数はDXRubyと同じです。

DXRuby キーコード定数
http://mirichi.github.io/dxruby-doc/api/constant_keycode.html

フォルダ構成

 司エンジン開発フォルダルート直下のフォルダとファイル構成を簡単に解説しておきます。

解説同人誌の予告

 上記リンクから参照できるドキュメントを全てパックにした解説同人誌「司エンジン」を作成する予定です。本当は今年の冬コミ頒布する予定でしたがサークルが落選し(泣)、モチベが落ちて間に合いませんでした。
 完成したらショップに委託する他、将来的にPDFをネットに公開するつもりです。物理書籍の方はたいした数を刷る予定がないので、入手できなかった方はPDF版をお待ちください(まあまだ作ってないんだけども!)。

サポートについて

 現時点ではサポート体制が作れていません(すみません)。疑問がありましたらひとまず土屋にツイッターなどで聞いてください。ただし、趣味活動のためお返事や対応はお約束できません。予めご了承ください。

おわりに

 当初、司エンジンは今年4月1日の1stリリースを目指していたのですが、ちょっとサンプルを作ろうとするとここがバグっている、あの機能が足りない、となるとコアロジックの再設計だ――というのを延々繰り返し、予定を大幅に遅れてクリスマスリリースとなりました。

 正直な話をすればver1.0として出せるクオリティにはまだ達していません(なにせノベルゲームフレームワークを指向していながらまだラベル機能がねーんですから)。ただ、少なくとも設計コンセプトを第三者が確認できるレベルまでは作り込めたと思っています。内部実装も二転三転しましたが、おおむね満足できるロジックになっています。

 大言壮語になりますが、「デジタルゲームプログラミングという概念その物を再定義する」くらいの意識でこれまで作ってきましたし、これからもそのつもりです。是非多くの人に触ってもらい、意見を聞きたいです。

 来年は不足している機能を追加しつつ、より完成度を上げていきたいと思います。個人的には、誰かが司エンジンを使ってゲームを作ってくれると嬉しいです。もちろん自分でも作ってみるつもりですが、やはり第三者が試用した方が実践的な要望が沢山出てくる筈なので。時間の許す限りサポート&アップデートしますんで、誰か作ってくれないかなあ。ま、独り言なんですけどね。

 あーあ、独り言だけど誰か司エンジンでミニゲーム作ってくれないかなあ!!

 さあ明日は最終日、あおいたくさんの「Ruby製ゲームのパッケージングについて」です。果たしてあおたくスペシャルはocraを代替し、マルチバイトパス名と起動時間の遅さを解決できるのか!? こうご期待。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/t_tutiya/20151223/1450883211