11

私はデータ駆動型設計について聞いたことがあり、しばらくの間それについて研究してきました。それで、私は概念を得るためにいくつかの記事を読みました。

記事の1つは、KyleWilsonによって書かれたデータ駆動型設計です。。彼が説明したように、アプリケーションコード(つまり、メモリ、ネットワークなどのリソースを制御するためのコード)とゲームロジックコードは分離し、ゲームロジックコードは外部データソースによって駆動する必要があるように思われます。この時点で、開発者は、ゲーム内オブジェクトに関する外部データ(キャラクター情報、武器情報、マップ情報など)を受け入れるある種のゲームエディターを作成することを想像できます。シナリオデザインは、ゲームデザイナーがゲームオブジェクト間の相互作用を作成できるように、プログラマーによって作成されたカスタム言語/ツールによってスクリプト化されます。ゲームデザイナーは、既存の/カスタムスクリプト言語を使用してゲームのスクリプトを作成するか、ドラッグアンドドロップツールを使用してゲームの世界を作成します。私が考えることができるツールアプローチの例は、通常Bliizardのゲームと一緒にパッケージ化されているWorldEditorです。

ただし、別の記事では、データ駆動型設計の使用に反対しています。データ駆動型設計に対する事例です。ゲームデザイナーはプログラミングの負担があるため、ゲームの開発には時間がかかるため、作者はゲームデザインをデータに基づいて行わないようにすることを提案しています。代わりに、スケッチデザインから自由にゲームをプログラミングするゲームプログラマーがいて、ゲームプログラミングが終了した後にゲームデザイナーによって検証されます。彼はこれをプログラマー主導だと呼んでいます。この方法について私が考えるのは、以前の方法と似ています。ゲームロジックはアプリケーション自体であり、上記のアイデアとは対照的に、アプリケーションはゲームエディターであり、実際のゲームはツールに基づいて設計されています。

ゲームコンポーネントは多くのプロジェクトで再利用できるため、私には最初の方法の方が合理的だと思います。データ駆動型設計に反対する2番目の方法では、ゲームコードはそのゲームにのみ属します。これが、Warcraftには、元のWarcraftやさまざまなカスタムマップなど、非常に多くのゲームジャンルが含まれていると思う理由です。最も有名なのは、実際に新しいジャンルを定義するDOTAです。このため、ワールドエディターはゲームエンジンだと言われているそうです。これはゲームエンジンがどうあるべきか本当ですか?

それで、これらすべての後で、これらのアイデア(データ駆動型、プログラマー駆動型、スクリプトなど)についての私の理解に欠陥があることを確認したいだけですか?

4

1 に答える 1

12

さまざまな意見があり、人々はさまざまなアプローチを好みます。正しいものはありません。あなたは正しいアプローチを理解しています。

ゲームエンジンの私の定義は次のとおりです。-リソース、メモリ、ネットワーキングなどのさまざまなマネージャーを備えたランタイムライブラリ-ツール(エディター、コンバーター、パッケージツールなど)

エンジンの上に、アプリケーションやゲームを書くことができます。一部のエンジンでは、これらはMODと呼ばれますが、私はこの定義が好きではありません。

データドライバーのアプローチを考える良い方法は、エンジンが実行可能プロジェクトであると想像することです(必ずしもそうする必要はありませんが、私に耐えてください)。次に、プラグインのように動的にロードする追加のライブラリを作成し、それにいくつかの構成を渡すことができます。スクリプト、サウンド、モデル、テクスチャの大きなパッケージになる可能性があります。小さなスクリプトでも、アセットを含む固定フォルダー構造でもかまいません。ここで重要なのは、交換可能であるということです。これは、エンジンが動作するデータです。

プログラミング主導のアプローチは、最終的なアプリケーション/ゲームを実行可能ファイルにする場合です。その後も、エンジンをマネージャーのコアライブラリとして使用でき、ミドルウェアを使用できます。リソースからさまざまなレベルをロードできます。ただし、このアプリケーションでは、ゲームの範囲がハードコーディングされている可能性があります。

上記のどれも私が提案する方法である必要はありません。ニーズに合う限り、両方のアプローチから好きなだけ組み合わせることができます。デフォルトのデータ駆動型アプローチでは、ゲームを構築するのにより多くの時間がかかる必要があります。しかし、最終的には、より再利用可能なソフトウェアが必要になります。また、通常、ゲームは非常にデザイン主導型です。プログラマーはすべてを論理的、物理的に正しいものにするのが好きですが、通常は楽しいゲームにはなりません。設計者は通常、反復したり、さまざまなメカニズムを試したり、いくつかのプロパティを微調整したりすることを望んでいます。プログラミングアプローチを使用している場合、これはプログラマーにとって多くの余分な作業です。

ニーズと時間の予算に応じて、長所と短所を比較検討する必要があります。

編集:可能なアプローチのいずれにおいても、デザイナーとプログラマーが必要になります。パーセンテージとしての作業配分にはわずかなオフセットがあるかもしれませんが、それほど多くはありません。

データ駆動型エンジンの最大の利点は、一度稼働すると多大な労力を要することです。これにより、より高速で信頼性の高いエンジンを使用できるようになります。再コンパイルが必要ないため、変更を加える方が速いはずです。通常、データのバグははるかに適切に傍受され、アプリケーションのクラッシュや再起動を回避できます。

おそらく、データ駆動型エンジンの最大の問題は、それに関するすべての良い点が代償を伴うことです。通常、パフォーマンスとメモリフットプリントに影響があります。

于 2011-09-17T00:35:41.690 に答える