ゲーム開発でこの目標を達成するための伝統的な方法は、ゲームシステムにデータ駆動型アーキテクチャを使用することです。
本質的に、これは、コードが範囲/損傷/貫通の値を明示的に定義した特定のタイプの武器(銃)を実装しないことを意味し、遠隔武器の一般的な概念(範囲/破損/貫通...) (データへの)外部データソースから。この外部ソースは、ディスクから読み込まれた解析可能な(おそらくXML)ファイルから、ゲームエンジン自体の内部または外部のツールを介して生成されたバイナリファイルまたはデータベース要素までさまざまです。
AIシステムは、敵のようなものを定義するために、いくつかの一般的な動作(攻撃的、防御的、サポート、co病者)をサポートするように設計されている場合があります。
私の新しい敵は、次のデータ駆動型の値を持つ攻撃的な基本AI動作で始まります:-プレイヤーを無視する>私のレベル+ X-スポーンポイントを超えて最大Xユニットまでプレイヤーを追跡する-健康<X-範囲能力優先度-近接能力優先度(プレイヤーが近づきすぎた場合)
より複雑なデータ駆動型のスキームでは、特定のデータポイント(イベント)を定義して、AI状態が別の状態に移行する(有限状態マシン)(または、他のN個の状態のいずれかに移行する機会さえ)ことにより、ユーザーが行動の複雑な階層。
もちろん、これらはすべて、動作を明示的にコーディングするだけではありませんが、ユーザーがソースを変更せずにコンテンツを作成できるようにするのは楽しいチャレンジです。
達成すべきボーナスポイントがあります。
- データを動的に更新し、アプリケーションを再起動せずにゲームエンジン内に変更を反映できる場合
- データ上にユーザーフレンドリーなUIを作成し、ユーザーがテキスト(xmlなど)ファイルを直接編集するのではなく、インターフェイスを使用してデータを操作できるようにする場合
より技術的な群衆を対象としたチュートリアルゲームの場合、ほとんどの作業は、ユーザーにクリーンなインターフェイスを公開してデータドリブンの可能性がある拡張されたクラス/オブジェクトを設計することです。