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

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

「新しいADV」を作る(プログラミングする)のは思ったよりも大変なんだぜという話

(以下Facebookからの転載です。他の方が書かれた「ADVではユーザーが文字を読み続けるだけでない仕組みが必要だ」という旨の記事を引用した上で自分の意見を補完しました。同内容ですがFacebookの方はこちら→https://www.facebook.com/tsuchiya.tsukasa/posts/1149998068377110?pnref=story

 これ仰る通りで、土屋は【新しいゲーム】というのは「新しいゲームシステム」の事であって、「新しいストーリー」や「新しい画像表現」だけでは【新しいゲーム】の要件を満たさないと考えています(まあ「新しい」の意味も難しいのですがここでは置く)

 その上で付け加えることがあるとするなら「とはいえADVの新しいゲームシステムを実装するのって結構大変」という事でしょうか。大変だからこそ、これまでその方面で挑戦するクリエイターが多く現れなかったのでしょう。

 吉里吉里を使うと、プレーンなノベルゲームは比較的簡単に構築できますが、ちょっと新しいメカニズムを追加しようとすると途端に壁にぶつかります。吉里吉里のノベルゲームスクリプトであるKAG3には文字/画面装飾以上の機能が無いからです。

 吉里吉里の基幹スクリプトであるTJSを使う手もありますが、実はTJSではKAG3を制御できる範囲が極めて限られています。例えば文字列を1文字ずつフェードインしたい場合があっても、実質的にそれは不可能です(できたらごめんなさい)。何故かと言いますと、KAG3の多くの機能がTJSからブラックボックス扱いになっていて、ユーザーが内部の処理に干渉できないからです。

 一般には、KAG3はTJSで実装されていると説明されていますが、公開されているソースコードを読めば分かるとおり、実際には文字出力をはじめ多くの基幹機能は吉里吉里本体内にネイティブコードで記述されており、TJSからはそれらの機能のインターフェイスしか見えていないのです(土屋調べ。間違ってたらごめんなさい)。

 吉里吉里ベースの商業作品の中には、とてもTJS or KAG3で実装しているとは思えない物がありますが(実際そういう化け物みたいな作品もあるのですが)、そのほとんどはネイティブで書いたコードをDLL化して吉里吉里に読み込ませる形で実現しています。もちろんフルスクラッチから比べれば工数は遥かに低く済みますが、どうにも本末転倒のように思えます。

 上記で書いた事は基本的にはKAG3クローン全て(ティラノスクリプト、宴なども)に言えることだと考えています。司エンジンも、当初は吉里吉里/KAG3との互換性を重視していたのですが(そうでないとユーザーを確保できないから)、ある段階で、KAG3を模倣している限りは新しいゲームシステムを作る器たり得ないと気付き、方針を大きく転換しました。

 司エンジンは言語なので、ノベルゲームに限らず、2Dの非リアルタイムゲーム(ADVとかSLGとかパズルゲームとか)はなんでも作れます(作れる筈です)。将来的には3Dにも対応する予定です(来年あたりにUnityへの移植を検討しています)。ゲーム開発の歴史を変えるつもりで作ってますので、今後とも応援よろしくお願いします>皆様