スクリプタはプログラマではない

ゲームでは多くの場合、スクリプタという作業があり、ゲームの組み込みに関与する。
多くの場合は、専用のスクリプト言語を使ったりして、組み込み作業をする事が多い。

IF FLAG_NAOYA_EAT_SYOYU == OFF

FACE NAOYA
コーラおいしいです

FACE SINAMON
それはしょうゆです

FLAG_NAOYA_EAT_SYOYU = ON // なおやは醤油を食した

ENDIF

こんな感じ。(スクリプトはイメージです

で、スクリプトをうつ人には勿論レベルがあって、
一歩間違うとこんなスクリプトがでてきたりする。

NAOYA_LOVE_CHECK:
    LOVE_VALUE = GET_LOVE NAOYA
    IF LOVE_VALUE >= 0 && LOVE_VALUE < 30
        GOTO HOGE_1
    ELSEIF LOVE_VALUE >= 30 && LOVE_VALUE < 50
        GOTO HOGE_2
    ELSEIF LOVE_VALUE >= 50 && LOVE_VALUE < 80
        GOTO HOGE_3
    ELSE
        GOTO HOGE_4
    ENDIF

HOGE_1:
    IF NAOYA_COLA_UMAUMA == ON
        GOTO NAOYA_LOVE_CHECK
    ENDIF

    FACE NAOYA
    コーラうまうま
    NAOYA_COLA_UMAUMA = ON
    EXIT

HOGE_2:
    FACE NAOYA
    ケーキうまうま
    EXIT

HOGE_3:
    FACE NAOYA
    かゆうま
    EXIT

HOGE_4:
    FACE NAOYA
    はてなー!
   EXIT

で、これで最悪なのは、
HOGE_1:
のような構造を赦してしまうこと。
HOGE_1:
の中では、既にその会話が行われているかを調べて、再度LOVE_CHECKに戻しているが、
こいつは、どこにもLOVEを変化させるようなフローがないので、
所謂無限ループ(ハングアップ)になってしまう。

いや、こんなことするやついねえよ、って思うかも知れないけれど、
いないわけはないんだよ、これが。
プログラマだってまともにプログラムを書けない昨今、
プログラムの経験がない人たちに何が起きてもおかしくない。

そういう意味で、
安全で便利で、間違いがよくわかり、万が一間違っても安全な方に倒れる、
という言語が求められる。

それはRubyでもなければPythonでもないし、
ましてやCでもJavaでもない。

Lua? Luaをやるんだったら、プログラマの素養を期待してしまうし、
うーん、うーん、と頭を悩ませる日々。

非プログラマに優しい構造、ってのが今考えないといけないこと。(考えていきたいところ
スクリプタにプログラムの資質を期待してはいけない。
不自由かもしれないけれど、なるべく楽に安全に楽しくかけるものを目指すべきところ。
うーん。