kなんとかの日記 このページをアンテナに追加

2008-09-27

続:ゲーム開発現場で多くのオレオレ言語が生まれるのはなぜ?

| 22:36 |  続:ゲーム開発現場で多くのオレオレ言語が生まれるのはなぜ?を含むブックマーク

吉里吉里の作者の方からトラックバックをいただきました。わざわざありがとうございます。

今気づいたんですが、MacOS Xことえりには「吉里吉里」が辞書登録されていますね。吉里吉里すげえ。


スクリプターという職の人にluaでシナリオスクリプト(KAGにおけるKAGシナリオファイル)を書けとはさすがに言えませんよね。

用言語が必ずしも最適解になるわけではないので。現場それぞれに特化した言語を作った方がトータルコストが安くなるならば当然そういう方向になります。

W.Deeの2008年9月の日記

やはり、ゲームで書くのはけっこう特殊だということなんでしょう。

DSLでも難しいのかな。


あと、僕について言えば、TJSとかRisseとか作ってるのは半分は趣味。半分はそれ自体がゲームエンジンとしてのフレームワークそのものだからです。ヒープ管理やゲーム内で使うオブジェクトなどの基底のフレームワークは、吉里吉里の場合はスクリプト言語そのフレームワークその物なのです。

W.Deeの2008年9月の日記

ゲームエンジンと密接に絡んでいるから、既存の言語を擦り合せてエンジンに組み込むよりも、エンジンをそのまま扱えるオレオレ言語を作った方がいい、と解釈しました (間違ってたらごめんなさい)。

なるほど、言語ありきじゃなくて、エンジンありきという考えはありだと思いました。たとえるなら、「Ruby を使って Rails を作る」じゃなくて、Rails を作るために Ruby を作る」というような感じですよね、きっと。


ぐぐってみると、Lua じゃないけど、Squirrel でゲームを作るという実例はあるようです。

Lua の後継として紹介されることも多い Squirrel というゲーム組み込み向けスクリプト言語があります。それを実際の家庭用ゲーム機向けソフトに組み込んでみました、というセッション「Squirrel を使ったゲーム開発」がCEDECで行われる予定です。

Wiiウェア第1弾だったスクエニの「小さな王様と約束の国 ファイナルファンタジークリスタルクロニクル」は、一部の人々にはゲーム本体がほとんど Squirrel で記述されていることで有名ですが、そのあたりの話が詳しく聞けるのではないかと思われます。

スクリプト言語 Squirrel のセッション@CEDEC - Game Scripting Memo

こんなのも見つかった。やはりゲーム業界は特殊なのか?

■ ゲーム業界は「俺言語」だらけ?

 では逆に考えて、世の中で最も多くの独自言語を作り出している業界はどこでしょうか? 正確な調査を行ったことはないので厳密なところは分かりませんが、意外とゲーム業界ではないかという気もします。

 なぜ、ゲーム業界なのかというと、この世界ではシナリオ記述言語的な独自言語が使われることが多いからです。それらの言語は、変数や制御構造などのプログラム言語としての機能を持っていることも多く、それらは十分にプログラム言語の一種と見なせます。そして、それらの言語は個々のゲームのタイトルに最適化された構造を持っていて、新しいゲームを開発する際には言語の機能が拡張されたり改変されたりすることも多いと思います。つまり新言語が日常的に生まれているわけです。

 では、なぜ開発支援ツールもそろっていない言語を使うのかといえば、その方が効率が良いからです。特定の「何か」を達成するために最適化された言語を使った方が、目的を達成する近道になるわけです。

ゲームから読み解く、俺スクリプト時代の知的な挑戦 (1/2) - @IT

『特定の「何か」を達成するために最適化された言語』を作るのはそんなに簡単じゃないと思う。

プログラミング言語を作るのは、理論さえ勉強すれば学部生でも作れるくらい簡単だけど、いい言語を作るのはかなり難しい。

たとえば C や Java のサブセットを作るというだけなら、仕様は既存の言語をそのまま使えるから、言語仕様に関して悩む箇所は少ない。

しかし新しい言語を作るということは、自分の用途にあった言語がないということだから、どんな言語仕様にすれば自分の用途に最適化されるかを自力で考えなければいけなくて、これが難しい。

ただ、『開発支援ツールもそろっていない言語』でも『(開発) 効率が良い』というのは、けっこう驚き。そうなのか。学習コストも考えないといけないけど、どうなんだろう。


うーん、ゲームシナリオの記述ってそんなに特殊なのかなあ。

既存言語 + DSL で十分書けそうな気がするんだけど、これはやっぱり門外漢の戯言なんだろうか。


もうひと方、ゲーム業界の人でしょうか、トラックバックをいただきました。

ゲーム開発現場では“オレオレゲームスクリプト言語”はたくさん生まれてるけど、“オレオレゲームプログラミング言語”は、ほとんど生まれてないですよ。

特殊なのは記述じゃなくて、プログラマじゃない人が書くことかもなー、と。ゲーム制作で言うところの“スクリプト”は、基本的にはプログラマ“以外の人”が書くものです。デザイナーとか、シナリオの人とか。ゲームデザイナースクリプターというイメージ。

ゲーム開発現場で使われるオレオレ言語の意味はちょっと違う - 好き勝手に・げーあにん?

ゲームスクリプト言語というのが、シナリオを記述する言語のことですよね。

ちょうど、位置づけとしては HTML みたいなものと考えたほうがよさそうですね。

Web アプリでは、プログラマープログラムを、Web デザイナーHTML を書く。

ゲーム製作では、プログラマープログラムを、ゲームデザイナースクリプトを書く。

そういえば HTML だって HyperText Markup Language でした。


未踏とかで出てくるのような人たちは、ゲームプログラミングのためのオレオレ言語だと思うので、ゲーム業界で量産されるスクリプト言語とは、また別の話し? NScript とか吉里吉里は量産されてるほうのPCアドベンチャーゲーム特化ですよね。ゲームジャンルごとに欲しい機能が変わったりするのも、量産される要因のひとつだと思います。

ゲーム開発現場で使われるオレオレ言語の意味はちょっと違う - 好き勝手に・げーあにん?

その、ジャンルごとに欲しい機能というのが、DSL とかマクロのようなものでカバーできるんじゃないかと考えているんですが、ゲームシナリオについて何も知らないので、できるかどうか自分には判断できません。


こうなったらいっちょ、吉里吉里使ってみるか? ゲームはあんま興味ないから作る気しないけど、吉里吉里ならプレゼンツールとして使えそうだよね。

今度からプレゼンギャルゲー風ということで。

ゆんゆん探偵ゆんゆん探偵 2008/09/28 18:34 プログラマレイヤでオレ言語の欲しくなる時「Cだと非同期処理書きづれええ」「Cはすぐメモリリークするからデバグで死ぬ」「実際ゲームだからってCの速度が必要な場面そんな多くねえし」「最近はSquirrelとかの選択肢があって助かるなあ」スクリプタレベルでオレ言語の欲しくなる時「プログラミングとかわかんないし!」「なんか変なエラー出たぁ!!???」「なんで? ちゃんと括弧書いたじゃん? は? 全角? 半角? 意味わかんねぇし!」「俺は俺の作業やったし! あとはあんた(プログラマ)責任持って組み込んどいてよ! じゃあね!」。前者で必要になるのが吉里吉里で言うTJS。後者で必要になるのが吉里吉里で言うKAG。後者について補足すると、「機能が多い」言語と言うのはそれだけ「要らんことが出来てしまう隙が多い」とも言えるので、そもそも対象となるタスクの汎用性が低い場合にはドメイン特化言語を自前で設計してしまった方がいいケースは多い。あと、細かい文字のタイプが少なくて済むというような記述性の違いが、大量のシナリオを相手にした作業の場合、トータルの作業時間には大きく影響したり。結局、オレ言語が採用される理由は様々だけど、共通しているのは「オレ言語を採用することによって作業全体の効率が上がるかどうか」という視点。