-
司エンジンはRuby上で駆動するゲームフレームワークです。バックエンドにDirectX専用ゲームライブラリDXRubyを使用しています。
-
内部DSLによる記述言語「司スクリプト」と、その言語を解釈する「司エンジン」から構成されています。
-
また、ノベルゲーム制作用に、吉里吉里ライクなtksという記述形式を用意しています。tksは内部的に司スクリプトに変換されます。また、tks内に直接司スクリプトを記述できます。
-
現在はβリリース中で、毎日のようにインターフェイスが変更されています。クリスマスごろには1stリリースしたいと考えています。
- ゲームで用いる全てのオブジェクトをみなし、単一のツリーに連結させている
- 画像、サウンドはもちろん、テキストウィンドウ内の文字一個にいたるまでオブジェクトとして管理しています。
- これによって、ゲームのあらゆる要素に対して一貫した設計コンセプトを実現します。
- 全てのオブジェクトをVM(計算機)とみなし、ツリーの上位からメッセージを送信して駆動する。
- 上位から送信されたメッセージは各オブジェクト内にスタックされ、実行されます。
- 各メッセージは処理を行ったのち、自律的に自身を削除するか、次フレームに再実行するかを判断します。
- 同フレーム中に複数の上位オブジェクトから同一のオブジェクトに対しメッセージが送信された場合、その全てがスタックされ、同フレーム中に処理されます。
- メッセージには制御構文も含められるため、プログラムブロックをまるごと送信できます。Smalltalkのイメージが近いかもしれません。
- これらの挙動により、とかく状態遷移機械としての実装が複雑になりがちなゲームプログラミングのオブジェクトの実装効率を上げています。
- 全てのオブジェクトは疑似マルチスレッド的に駆動する。
- それぞれのオブジェクトは受け取ったメッセージ(≒プログラムブロック)を非同期に処理するので、ゲームのように複雑な並列処理が必要とされるプログラムを、平坦に記述できます。
#デメリット
- 現状ではノベルゲームの開発に特化しています。将来的には汎用ゲームフレームワークにしたいと考えています。
- 現状では極めて富豪的に実装を進めており、速度パフォーマンスを考慮していません。またこれは将来的にも解決しないかもしれません。
- 現状ではexeファイルを生成することが単体ではできません。ocraなどを使ってください。
- 現状ではWindows(≒DirectX)専用です。
#ドキュメント
現在制作中です。以下を参照してください。
- スクリプト記法マニュアル
- (未着手)
- インターフェイスリファレンスマニュアル
- 解説