私は他の答えが好きなので、少し反対になります。;)
データに関する知識をエンジンにコーディングすることは避けられません。情報がどこから来ても、エンジンはそれを探すために知っていなければなりません。ただし、実際の情報自体をエンジンにエンコードすることは避けられます。
「純粋な」データ駆動型アプローチでは、初期構成をロードするために必要なコマンドラインパラメーターで実行可能ファイルを起動しますが、その情報を解釈する方法を知るためにエンジンをコーディングする必要があります。お使いのコンフィギュレーション・ファイルはJSONであれば例えば、あなたはエンジンを探すために知っておく必要があります例えば、ハードコードにあなたが探して変数を必要"intro_movies"
と"level_list"
し、等々 。
ただし、「よく構成された」エンジンは、構成データとそれが参照するデータを交換するだけで、さまざまなゲームで機能します。
したがって、マントラはハードコーディングを避けることではなく、可能な限り少ない労力で変更を行えるようにすることです。
データファイルアプローチ(私は心からサポートしています)とは対照的に、データをエンジンにコンパイルしても大丈夫かもしれません。そうすることの「コスト」がより低ければ、実際の害はありません。あなたがそれに取り組んでいるのがあなただけなら、あなたは後日ファイル処理を延期することができ、必ずしも自分自身を台無しにする必要はありません。私の最初のいくつかのゲームプロジェクトには、ゲーム自体にハードコードされたデータの大きなテーブルがありました。たとえば、武器とその各種データのリストです。
struct Weapon
{
enum IconID icon;
enum ModelID model;
int damage;
int rateOfFire;
// etc...
};
const struct Weapon g_weapons[] =
{
{ ICON_PISTOL, MODEL_PISTOL, 5, 6 },
{ ICON_RIFLE, MODEL_RIFLE, 10, 20 },
// etc...
};
したがって、このデータは参照しやすい場所に配置し、必要に応じて簡単に編集できます。このようなものを何らかの構成ファイルに入れるのが理想ですが、構文解析と翻訳を行う必要があります。そして、すべてのジャズに加えて、構造間参照を接続することは、本当にしたくない追加の痛みになるかもしれません扱う。