ゲームだけではないですが、ソフトウエアを完成させるのは大変な仕事です。どうにかしてなるべく早く確実にソフトウエアを完成できる技術を得るかは、プログラマーのみならず、ソフトウエア開発に関わる全ての人にとっての大きな課題でしょう。

提供=123RF
提供=123RF

 その悩みに応えるように次から次へと新しい方法やツールが出てきています。曰く、「画期的にソフトウエアの生産性を上げる新手法!」「クリエイティビティーのための新世代ツール!」挙句には「プログラマー無しでもアプリが作れる!」など。これらは決して「嘘」ではない場合も多いのですが、しかし一方で全ての場合に通用する「真実」でもありません。

 こんな場面でよく登場するのが、専門用語なのかそうでないのかが曖昧な言葉です。「エンジン」とか「ツールキット」とか「フレームワーク」の三つが代表的ですが、これらはいったい何だかご存じでしょうか? 今回はその話をします。

「エンジン」「ツールキット」「フレームワーク」ってなに?

 ほとんどのプログラミング用語はアルファベットの略称やオブジェクトだとかインスタンスだとか、何やらポエミーな専門用語っぽい言葉が多いのですが、「エンジン」「ツールキット」「フレームワーク」は急に普通の言葉っぽい。なので、何となく意味がわかったような気がしてしまいがちですが、その実体はあまり理解されていないと思います。

 まずは「エンジン」。普通「エンジンと聞いて思い浮かぶのは自動車のエンジンですよね。自動車のタイヤを回すための動力源になる装置です。何か「力」を発揮する機械のイメージがあるかと思います。では、ゲームにおける「エンジン」とは何でしょうか?

 私の理解による本来の「ゲームエンジン」はゲームを構成するデータを動かすための「インタープリター(翻訳機)」です。ゲームデザイナーやアーティストがゲーム用のデータを用意すると、それをコンピュータ・ゲームとして成り立たせるためにグラフィックス描画に変換したり、衝突判定の処理を行ってゲームの内部状態を変えたり、各種入力装置からの値を読み取って、データの解釈路をダイナミックに変換してくれるプログラムです。

 ですから、「エンジン」を使うゲーム開発の主役はゲームデザイナーになります。複雑なデータをたくさん作って「エンジン」に食わせます。プログラマーの役割は、データを作るためのツールを整備したり、足りない機能を補ったりなど、ゲームデザイナーのための環境を整えるサポート役になります。