続:ゲーム開発現場で多くのオレオレ言語が生まれるのはなぜ?
吉里吉里の作者の方からトラックバックをいただきました。わざわざありがとうございます。
今気づいたんですが、MacOS X のことえりには「吉里吉里」が辞書登録されていますね。吉里吉里すげえ。
スクリプターという職の人にluaでシナリオスクリプト(KAGにおけるKAGシナリオファイル)を書けとはさすがに言えませんよね。
汎用言語が必ずしも最適解になるわけではないので。現場それぞれに特化した言語を作った方がトータルコストが安くなるならば当然そういう方向になります。
http://kikyou.info/diary/?200809#i20
やはり、ゲームで書くのはけっこう特殊だということなんでしょう。
DSLでも難しいのかな。
あと、僕について言えば、TJSとかRisseとか作ってるのは半分は趣味。半分はそれ自体がゲームエンジンとしてのフレームワークそのものだからです。ヒープ管理やゲーム内で使うオブジェクトなどの基底のフレームワークは、吉里吉里の場合はスクリプト言語そのフレームワークその物なのです。
http://kikyou.info/diary/?200809#i20
ゲームエンジンと密接に絡んでいるから、既存の言語を擦り合せてエンジンに組み込むよりも、エンジンをそのまま扱えるオレオレ言語を作った方がいい、と解釈しました (間違ってたらごめんなさい)。
なるほど、言語ありきじゃなくて、エンジンありきという考えはありだと思いました。たとえるなら、「Ruby を使って Rails を作る」じゃなくて、「Rails を作るために Ruby を作る」というような感じですよね、きっと。
ぐぐってみると、Lua じゃないけど、Squirrel でゲームを作るという実例はあるようです。
Lua の後継として紹介されることも多い Squirrel というゲーム組み込み向けスクリプト言語があります。それを実際の家庭用ゲーム機向けソフトに組み込んでみました、というセッション「Squirrel を使ったゲーム開発」がCEDECで行われる予定です。
スクリプト言語 Squirrel のセッション@CEDEC - Game Scripting Memo
Wiiウェア第1弾だったスクエニの「小さな王様と約束の国 ファイナルファンタジークリスタルクロニクル」は、一部の人々にはゲーム本体がほとんど Squirrel で記述されていることで有名ですが、そのあたりの話が詳しく聞けるのではないかと思われます。
こんなのも見つかった。やはりゲーム業界は特殊なのか?
■ ゲーム業界は「俺言語」だらけ?
ゲームから読み解く、俺スクリプト時代の知的な挑戦 (1/2) - @IT
では逆に考えて、世の中で最も多くの独自言語を作り出している業界はどこでしょうか? 正確な調査を行ったことはないので厳密なところは分かりませんが、意外とゲーム業界ではないかという気もします。
なぜ、ゲーム業界なのかというと、この世界ではシナリオ記述言語的な独自言語が使われることが多いからです。それらの言語は、変数や制御構造などのプログラム言語としての機能を持っていることも多く、それらは十分にプログラム言語の一種と見なせます。そして、それらの言語は個々のゲームのタイトルに最適化された構造を持っていて、新しいゲームを開発する際には言語の機能が拡張されたり改変されたりすることも多いと思います。つまり新言語が日常的に生まれているわけです。
では、なぜ開発支援ツールもそろっていない言語を使うのかといえば、その方が効率が良いからです。特定の「何か」を達成するために最適化された言語を使った方が、目的を達成する近道になるわけです。
『特定の「何か」を達成するために最適化された言語』を作るのはそんなに簡単じゃないと思う。
プログラミング言語を作るのは、理論さえ勉強すれば学部生でも作れるくらい簡単だけど、いい言語を作るのはかなり難しい。
たとえば C や Java のサブセットを作るというだけなら、仕様は既存の言語をそのまま使えるから、言語仕様に関して悩む箇所は少ない。
しかし新しい言語を作るということは、自分の用途にあった言語がないということだから、どんな言語仕様にすれば自分の用途に最適化されるかを自力で考えなければいけなくて、これが難しい。
ただ、『開発支援ツールもそろっていない言語』でも『(開発) 効率が良い』というのは、けっこう驚き。そうなのか。学習コストも考えないといけないけど、どうなんだろう。
うーん、ゲームシナリオの記述ってそんなに特殊なのかなあ。
既存言語 + DSL で十分書けそうな気がするんだけど、これはやっぱり門外漢の戯言なんだろうか。
もうひと方、ゲーム業界の人でしょうか、トラックバックをいただきました。
ゲーム開発現場では“オレオレゲームスクリプト言語”はたくさん生まれてるけど、“オレオレゲームプログラミング言語”は、ほとんど生まれてないですよ。
特殊なのは記述じゃなくて、プログラマじゃない人が書くことかもなー、と。ゲーム制作で言うところの“スクリプト”は、基本的にはプログラマ“以外の人”が書くものです。デザイナーとか、シナリオの人とか。ゲームデザイナー=スクリプターというイメージ。
ゲーム開発現場で使われるオレオレ言語の意味はちょっと違う - 好き勝手に・げーあにん?
ゲームスクリプト言語というのが、シナリオを記述する言語のことですよね。
ちょうど、位置づけとしては HTML みたいなものと考えたほうがよさそうですね。
Web アプリでは、プログラマーがプログラムを、Web デザイナーが HTML を書く。
ゲーム製作では、プログラマーがプログラムを、ゲームデザイナーがスクリプトを書く。
そういえば HTML だって HyperText Markup Language でした。
未踏とかで出てくるのような人たちは、ゲームプログラミングのためのオレオレ言語だと思うので、ゲーム業界で量産されるスクリプト言語とは、また別の話し? NScript とか吉里吉里は量産されてるほうのPCアドベンチャーゲーム特化ですよね。ゲームジャンルごとに欲しい機能が変わったりするのも、量産される要因のひとつだと思います。
ゲーム開発現場で使われるオレオレ言語の意味はちょっと違う - 好き勝手に・げーあにん?
その、ジャンルごとに欲しい機能というのが、DSL とかマクロのようなものでカバーできるんじゃないかと考えているんですが、ゲームシナリオについて何も知らないので、できるかどうか自分には判断できません。
こうなったらいっちょ、吉里吉里使ってみるか? ゲームはあんま興味ないから作る気しないけど、吉里吉里ならプレゼンツールとして使えそうだよね。
今度からプレゼンはギャルゲー風ということで。