ゲームエンジン・スクリプト設計

太古の昔、自分でアドベンチャーゲームエンジンを作ってみようとしたことがあります。高校生のときに作ったそれは一応for文・変数・goto・gosubあたりは実装していて、おもちゃエンジンとしては十分なものでした。このエンジンの製作がかなり勉強になったりしたものです。
当時はプログラム関係の技術書もラインナップが乏しく、超初心者向けか上級者向けのものしかなくて、ある程度プログラムが書けるようになったら自力でアルゴリズムを考案しなければなりませんでした。
例えばゲームエンジンには「文字を読み込んで中に書いてある命令文を解析、実行する」(字句解析・構文解析・意味解析)という機能が必要ですが、この辺の文字列の処理についても完全に独学でやってみるしかなく。当時の私のソースを見るとあまりのこっぱずかしさに赤痢になりそうです。


未知の生き物の名前が知りたければ動物図鑑や昆虫図鑑を見る、といったような、何を調べれば解が得られるかということすら分からなかったのです。どうすれば効率的に字句解析ができるか? どういう分野の本に載っているものなのか?
この辺は後に私のレベルに向いた本が出てくることになります。今日のアフィリエイトは表紙を出したいから持ってきてみる。表紙出すと画面がきれいだって感動してたり。
スモールコンパイラ の制作で学ぶ プログラムのしくみアドベンチャーゲームプログラミング―美少女ゲームの作り方


この辺です。ゲームエンジンの設計をするってことは「自分で言語を設計する」ことにかなり近いので、プログラム言語を解析、コンパイルしていくコンパイラはまさに字句解析やらをやってるわけで、コンパイラ理論の入門書はまさに目的の本のわけですね。左の本はそれになります。「スモールコンパイラの製作で学ぶプログラムのしくみ」。
右の本はそのままです。「アドベンチャーゲームプログラミング 美少女ゲームの作り方」。本屋のレジに持っていくときに、エロ本クラスに緊張する一品です。アマゾン使わずになじみの本屋で買った私の勇気を誰か褒め称えてください。


この辺の勉強といろんなところで拾ってきた知識で、私はもう一度エンジンを作ってみてます。必要に迫られなかったので使わなかったAPIやらDirectXも使って勉強してみるつもりです。
何でそんなことするかというと、プログラムでメシ食っていくことになったわけで……。
積極的に未知の分野に挑戦する練習をしているというわけで……。