土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

ゲーム開発言語「司エンジン」とスクエニ謹製スクリプト言語「ATEL」との関係(は実際には無いんですけど)

 ようやく同人誌が出来たので、お会いしているクリエイターさんに渡し始めています。でまあ毎回困るのは「司エンジンってノベルゲームエンジンなの?」という質問。うーん、そういうわけではないのです。

 司エンジンのベースになっているのは、スクウェアエニックスでかつてイベントシーン記述用に設計されたATEL(Active Time Event Language)という言語です。「クロノトリガー(SFC)」のために設計されたATELは、その後も社内で方言が無数に作られ、様々なRPGで利用されました(今も現役かは知りません)。

 スクエニに所属してATELを見た時に感じたのは「なんでこの言語はまともに動いているんだろう?」という物でした。イベントシーンでは「複数のキャラが非同期で動作し」かつ「不定期なユーザー入力に応答する」という非常に複雑な状態遷移を管理する必要があり、コードを見ても直感的に処理系の挙動が想像できませんでした。今思えば、おそらくアクター単位に擬似マルチスレッドが設定されていたのでしょうが、それをやたらフラットに記述できるので驚いたのでした。

 ATELはその拡張性(?)から、プランナーによって重宝され、ゲームのフラグ管理はもちろん、人によってはRPG中のミニゲームをまるごと一個ATELによって記述されたこともあります。なので、それをベースに作っている司エンジンは、そもそも想定している物がADVエンジンではないのです。

 結局、ATELコンパイラのコードを見ることは叶わず、そのメカニズムはわからなかったのですが、土屋は「SmallTalk言語風のオブジェクト間通信」「オブジェクトをVM化して自律制御」「継続(continuation)によるシーン遷移」など、一般的なオブジェクト指向言語から少し外れたアプローチで、ゲームアーキテクチャに最適化された言語を作りました。次はサンプルゲームを作るつもりです。