読者です 読者をやめる 読者になる 読者になる

オレオレ言語、完全に沈黙しました!

mnagakuさんのところより。

私が見た現場でも、RPGのイベント回りを制御するスクリプトを、lexx/yaccで起こしたシステムで実装していた人がいる。10年前のPSの頃の話だ。あと、CEDECでのコナミ植原さんのコメントなんかも、その類。

独自のスクリプト設計は、いろいろ悩むことが多い。どこまでの機能を持たせるのか、どのような文法を採用すべきか。そうした積み重ねを、10年以上、共有できなかったわけだ。それが出来るようになって、これからは車輪の再発明をしなくて済むかもね<-イマココ

オレオレ言語の最大の弱点は、
あまりにオレオレ過ぎるところだと思うんですよね。

今も昔も、
RPGのイベント周りを制御するスクリプトというと、
大抵オレオレ言語が出現するんですが、
CEDECの記事をみていても、ああ、オレオレだなぁと思いました)

多くの場合、オレオレ言語が出てくる背景として、
「このゲームにはこういうイベントや処理があるんだよな。
 じゃ、こういうオレオレ記述ができないと」
なんてことがあるように思います。

よっしゃ、でけたで。
以下怨嗟の声

  • エラーも吐かずにおちたんだけど……
    • コメントアウトしていって、落ちなくなるまで試せば?
  • 評価と代入を間違えてもエラーでないよ……
    • Cだってエラーにならないだろ?
  • gotoしたら無限ループしちゃった、てへ
    • gotoで無限ループとかアホか
  • こういうときどうなんのー
    • そんなんしるか
  • 好き勝手書いてたらわからなくなっちゃった、てへ
    • 機能は作ったんだから、その上でお前らがなんとかしろ
  • 配列とかローカル変数使いたいよー
    • なにそれ?
  • 命令文に指定できる変数を間違えても動いたんだけど……
    • 型安全性? なにそれ?
  • 容量オーバーとかでるけど?
    • 命令けずって!
  • コンパイル、糞重いぃぃぃぃぃぃぃぃぃ
    • ○○なんで仕方がないです。
  • 未初期化の変数ってどんな値になるの?
    • 不定です。初期化してください。しないと死ぬ。

まぁ、実体験です。
で、こういうのって楽しようとして苦労しているケースだと思っていて、
折角再発明しているのに誰も楽にならない。
おかしい(^o^)。

スクリプトを書く人間がプログラマではないから、
難しいのは駄目だよねーと良いながら難しい。(^o^)

自分もJavaScriptでパーサーを書いた苦い想い出があります。
まさに、ifの実装だったり、関数の実装だったり、
動的制御だったり、
色んなところで勉強になることはあります。

でも、
でも、
苦しいですよね。

そーゆー体験もできるから、自分で足掻いてみるのも良いとは思うんだけどね。人生は無限じゃないし、ほどほどで。

まさに、ほどほどで。
人生の時間を無駄に使うことはないっす、みたいな。

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

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

W.Deeの2008年9月の日記

未踏とかでも、ゲーム制作のためのホニャララ言語を作りましたというタイトルを数件見た覚えが。
ゲームを作ったことないし、そもそもゲームをしないからよくわかんないんだけど、ゲームの記述ってそんなに特殊なのかな。汎用言語にDSLをつけたくらいじゃ難しいのかしら。

ゲーム開発現場で多くのオレオレ言語が生まれるのはなぜ? - kなんとかの日記

動的型付けに限らず、プログラマ用のものをプログラマではないスクリプタに書かせるんだから、そりゃバグるがな(笑)。個人的には、オレオレ言語作るよりは、スクリプタに Lua を書かせてもバグらせにくいルールとかを作って書かせるほうが楽なような気はするんですが。

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

個人的には汎用言語を使ってルールで縛る、構造はプログラマがつくって、
バグりようがないところ、またはバグっても簡単にわかるところだけ書いてもらう。
という手がいいなぁと思ってます。まだ実践してないけど。
自由よりも規約!!!