paint-brush
AI ゲーム開発者が行うことと、AI ゲーム開発者になる方法@aleksandrpindyk
1,172 測定値
1,172 測定値

AI ゲーム開発者が行うことと、AI ゲーム開発者になる方法

Aleksandr Pindyk1m2022/06/07
Read on Terminal Reader
Read this story w/o Javascript

長すぎる; 読むには

Aleksandr Pindyk は、キエフにある Wargaming スタジオの AI チームのリード エンジニアです。彼は、最も人気のあるオンライン ゲームの 1 つである World of Tanks の AI (人工知能) を開発しています。 ゲーム開発における AI は、人工知能の助けを借りて支援できるゲーム体験の複数の側面があるため、複雑さが異なります。

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - AI ゲーム開発者が行うことと、AI ゲーム開発者になる方法
Aleksandr Pindyk HackerNoon profile picture

私の名前は Aleksandr Pindyk です。キエフにある Wargaming スタジオの AI チームのリード エンジニアです。私たちのチームは 5 年以上にわたり、最も人気のあるオンライン ゲームの 1 つである World of Tanks の AI (人工知能) を開発してきました。ゲーム開発における AI 開発者の職業、彼の仕事の詳細、および AI 開発者になる方法について詳しくお話ししたいと思います。


まず、ゲーム AI とは何かを定義しましょう。ウィキペディアの無味乾燥な定義から離れれば、ゲーム AI はキャラクターやプレイヤーの行動を模倣するシステムです。ゲームのジャンルや目的によって、AIの開発に使われる技術やアプローチは異なります。主なゲームの種類と AI の目標を見てみましょう。


AI の目標が人間のプレイヤーを倒すことであるゲーム


誰もが知っているゲームを見てみましょう。ここでの良い例は、チェスと囲碁です。このタイプのゲームでは、ニューラル ネットワークに基づく人工知能を使用できます。 AI の主な目的は何としてもプレイヤーを倒すことであるため、人間の行動を模倣する必要はありません。そのような AI の行動はしばしば不可解に見え、時には恐ろしく不自然にさえ見えます。今でもチェスと囲碁ではAI(アルファゼロ)に人間は勝てません。


これらの 2 つの古典的なゲームに加えて、ポーカーなどのカード ゲームや、StarCraft や DOTA 2 などの競争力のあるゲームでも、同様のアプローチによる実験が進行中です。Google や OpenAI の多くの科学者やプログラマーがこれを構築するために取り組んでいます。ただし、人工知能のトレーニングには多くのリソースが必要であるため、これらはクラウド ソリューションである可能性が最も高いでしょう。

このアプローチは、その複雑さと AI を使用する目的が相反するため、ゲーム開発では正当化されません。


ゲーム内開発の目標は、通常、いかなる犠牲を払ってもプレイヤーを打ち負かすことではありません。サーバーの容量を忘れないでください。このアプローチのもう 1 つの欠点は、新しいメカニズムを導入した後に AI を再度トレーニングする必要があることです。


PVP ゲーム

これらはゲームであり、その主なサイクルは、プレイヤーまたはチーム同士の対決 (プレイヤー対プレイヤー) です。このシナリオで人工知能がどのような役割を果たしているのか疑問に思うかもしれません。しかし、そのようなゲームで AI が使用されている領域がいくつかあります。


  • 初心者向けボット

    彼らは、最初のトレーニングとゲームの初期段階の対戦相手の両方で使用されます。プレイヤーのスキルに応じて仲人がいない場合や、チームのバランスを取ることが不可能な場合、ボットを使用すると、プレイヤーの難易度をスムーズに上げることができます。そして、はるかに優れたスキルを持つプレイヤーに対して頻繁に負けるのを防ぎます。 World of Tanks と Hearthstone のボット トレーニング モードが良い例です。


  • プロジェクトの開始または新しいゲーム リージョンの開設

    PUBG Mobile はローンチ時にこのようなトリックを使用しました。 100 人のチームを編成することが不可能だったとき、ボットは戦いに身を投じました。バトルフィールド 2042 の 128 プレイヤー モードでは、最大 64 人の対戦相手とボットを使用します。サーバーがタイムゾーンの異なる広い地域をカバーしている場合、ボットは遠隔地のオンライン ドローダウンをスムーズにすることができます。たとえば、1 つのサーバーがヨーロッパとアジアをカバーする場合。


  • トレーニングモード

    多くの場合、長い間リリースされていて、十分な準備なしで対戦するのが難しいプロ プレイヤーが多数いるゲームで必要とされます。さらに、このようなゲームでは、マッチメーカーで常に初心者とプロが区別されるわけではなく、ボットで遊ぶことがスキルを習得するほぼ唯一の方法になります。ここでの良い例は、タルコフからの脱出です。ボットで遊んでいる間、ミッションを完了することはできませんが、同時に装備を失うことはなく、レベルを学び、装備の組み合わせと射撃スキルを練習します。


開発の観点からは、このようなゲームは AI の難易度を微調整し、ボットの意思決定ロジックをデバッグできる必要があります。 AI自体はゲームサーバー上で動作します。開発チームは、ボットの動作を、上手にプレイする方法を知っている人の動作に可能な限り似せて実装します。少なくともボットはそのようなプレイヤーのようになろうとします 😁


PVE ゲーム

これらのゲームのメイン サイクルでは、プレーヤーのインタラクションは、環境および AI (プレーヤー対環境) との対話です。これらは、純粋なシングルプレイヤー オフライン ゲーム (Witcher 3) とオンライン PVE (Genshin Impact) の両方であり、PVP ゲーム (World of Tanks のハロウィーンの Mirny-13) の特別なイベントとモードでもあります。このようなゲームでは、AI はプレイヤーを倒すという目標を持っていません。その逆でも。ある優れたゲーム デザイナーは、「AI の主な目標は、美しくあきらめることです」と述べています。人間のプレイヤーが勝利からポジティブな感情を得ることができるように、この場合、AI はゲームの複雑さを設定する要素の 1 つです。


敵の数、その「厚さ」、およびプレイ能力のバランスをとることで、人にとって適切なレベルの複雑さと興味を生み出すことができます。また、ゲームによっては、AI ボットの視覚的に論理的な動作の重要性が増減します。 Genshin Impact のようなゲームでは、ボットは単なる大砲の餌食であり、プレーヤーはボットの論理的な動作に常に注意を払っているわけではありません。


ボットを使用する場合のもう 1 つのオプションは、単純な味方とプレイヤーの能力です。たとえば、DOTA 2 の暴徒は非常に原始的であり、前進して敵を攻撃するという 1 つの目標しかありません。ゲームがシングルプレイヤーでオフラインの場合、ほとんどの場合、AI はクライアントのプレイヤーに対してローカルで動作します。 World of Tanks のようなゲームの場合、AI と PVE モードはサーバー上で動作します。ゲームはオンラインであり、サーバーがすべてのアクションを制御するために必要です。 AIが使用できるCPUとRAMのリソースを制限します。


このような人工知能の開発における重要なタスクの 1 つは、ボットの魅力的な行動シナリオを作成する機能です。たとえば、プレイヤーはその位置に到達し、しばらくの間防御し、援軍を受け取った後、攻撃を続けてすべての敵を倒す必要があります。ゲーム AI スクリプトは、いくつかの部分で構成できます。最初の部分では、ボットが弱く、プレイヤーが目的の位置にすばやく到達できます。その後、プレイヤーを攻撃するボットはより強力になり、プレイヤーが事前に攻撃を開始するのを防ぐ戦術を使用し始めます。瞬間 X の後、ボットはいくつかのミスを犯します。これにより、複雑さを軽減することなく視覚的にプレイヤーにアドバンテージを与えることができます。これを理解した上で、彼らは攻勢に出て勝つことができます。


ゲーム開発に役立つツール

ゲームプレイに加えて、人工知能はいくつかの分野でゲーム開発を支援します。


  • レベルの設計とテスト- たとえば、ボットはレベル全体を歩いたり車で移動したりして、レベル ジオメトリの設計における通行不能な領域、渋滞、およびその他のニュアンスを明らかにすることができます。


  • レベルバランスのテスト- ボット同士で戦う場合、統計を収集することで、新しいレベルバランスの変化がどれほど優れているかを理解できます。このようなテストの必須条件は、ボットのスキルです。最も関連性の高い統計を取得するには、ボットは平均的なプレーヤーのレベルでプレイする必要があります。レベルテスターの大規模なチームが不要になることで、天びんの研磨プロセスが劇的にスピードアップします。


  • 新しいアイテムとスキルのテスト-開発者は、ゲーム内で新しい機器やアイテムなどを作成するときに、ボットをテスト相手として使用できます。たとえば、新しいライフルを導入するときにボットをマップに追加し、そのタスクをどれだけうまく実行できるかを確認できます。


  • 機能テストと負荷テスト- AI は、さまざまなゲーム コンポーネントのテストや、AI 自体のテストにも役立ちます 😀.たとえば、各タイプの武器のボットがあらゆるタイプの表面を撃ち、どの表面、どのように突破したか、表面の背後にある敵にダメージが与えられたかどうかに関する統計を収集するシナリオを作成できます。クライアントの負荷テストを実行できます。ボットを送信してマップを歩き回り、FPS の低下やゲーム全体を確認します。また、サーバーについては、負荷テストを実行して、「予期しない」ピーク負荷時にサーバーがどのように動作するかを確認できます。


ゲームでの AI の仕組み

ゲーム AI がゲーム開発にどのように役立つかについて考察してきましたが、次に、ゲーム AI がどのように機能し、開発にどのようなアプローチが使用されているかについて検討します。


AI は、感覚 >> 思考 >> 目的を達成するために行動するというサイクルで動作します。環境に関する新しい情報が現れるたびに、決定を下すことが不可能になるか、アクションの実行が完了または中断されるたびに、AI は感覚 >> 思考 >> 行動サイクルの新しいラウンドに入ります。

AI アクション サイクルの主要な各ステップを見てみましょう。


情報収集(センス)

最初の一歩。 AI (エージェントまたはボット) は、環境に関する情報を収集して決定を下します。たとえば、敵や味方に関する情報などです。それらの位置、状態、装備など。


意思決定(考える)

次のステップは、AI の最も複雑でリソース集約的な部分です。 AIエージェントによって収集されたすべての情報は、この段階で処理および分析されるためです。選択的意思決定の原則に応じて、計算の複雑さと結果の精度が向上します。意思決定への主なアプローチを検討してください。


ディシジョン ツリー- 冗談めかして言うと、これは「if」主導の開発と言えます。 AI を構築する最も簡単な方法は、多くの「if-then」チェックを作成することです。外部イベントに瞬時に反応するメソッドとも言えます。このようなチェックから、アクションがあるノードが見つかるまで AI エージェントが通過するノードを介してツリーが作成されます。通常、情報収集と分析のステップは 1 つのブロックにまとめられ、通常は「if」テスト条件です。このアプローチでは、チェック結果が「False」の場合、次のチェックへの移行とアクションの実行の両方が可能です。



有限状態マシン- AI エージェントが可能な状態の 1 つにあり、どの状態に移行できるかについての情報を持っている場合。たとえば、ボットはパトロール状態でした。彼は敵の攻撃状態に入るか、この状態から退却することができます。移動する状態の選択は、ボットのヒット ポイントの数と、半径 X メートル内の味方/敵の比率によって異なります。状態と遷移条件の数に制限はありません。新しい状態の更新サイクルごとに、通常はフレームごとに (リソース消費を最適化するために、遷移条件が再計算される頻度を減らす場合があります)、各状態の遷移条件がチェックされます。そして、条件が満たされた場合、遷移がアクティブになります。このアプローチの利点は、明確な状態遷移ロジックがあることです。



ユーティリティ システム-システムは、特定のアクションまたは遷移の有用性を評価することに基づいています。ロジックは、AI エージェントに一連のアクションがあるということです。彼は、戦場の現在の状況、アクションを実行するための固有の優先度係数、またはある状態から別の状態への移行に応じて、どちらを実行するかを選択します。たとえば、ボットがエリアのパトロール中に敵に遭遇したとします。このボットは敵を攻撃するのではなく、隠れて警報を発し、他のボットに助けを求めることがより重要になります。この場合、直接衝突を回避するための彼の係数は、敵を攻撃したいという欲求よりも高くなります。また、ボットが敵に対して決定的なアドバンテージを持っていない場合、ボットは攻撃に関連する行動ブランチを選択しません。



ビヘイビア ツリー-ステート マシン用の便利なアドオンです。これにより、ステート マシン自体の状態管理を行うことができます。したがって、AI エージェントのステート マシンを切り替える条件のツリーを作成できます。





  • 目標指向の行動- AI エージェントにとって最も適切な役割と目標に焦点を当て、これに応じて、どの行動ツリーに取り組むかを選択して、ボットがプレイできるようにする概念です。そのビヘイビア ツリーは、ボットのさまざまな状態への遷移とアクションの実行の条件を決定します。


    この場合、ボットは特定の役割の重要性と有用性の係数の計算に基づいて、ファジー ロジックを使用します。たとえば、武器や盾を持ったボットの役割です。 「タンク」になるための係数は、スカウトの役割よりも高くなります。次に、役割を選択した後、どの目標が最も役立つかを計算します。私たちの隣に呪文を準備している魔術師がいる場合、最善の目標は彼を守ることです。次に、現在の目標に基づいて、動作ツリー セットが選択されます。これにより、ボットは動作を実装して目標を達成できるようになります。


    このアプローチにより、命令に従わず、能力、現在の戦闘状況、および開発者の優先順位に基づいていずれかのアクションを選択するボットを作成できます。 AI を開発するとき、World of Tanks でこのアプローチを使用します。


アクション (Act) - 最終ステップ。タスクの実装です。通常、これには、経路を見つけて経路に沿って移動する、射撃を実行する、隠れるなどが含まれます。


では、AI 開発者は何をするのでしょうか。主なタスクは、Sense >> Think >> Act サイクルを実装することです。 AI 動作アルゴリズムの実装と最適化は、プログラマー、ゲーム デザイナー、および QA の共同作業であるため、AI 開発者は他のチーム メンバーと緊密に連携します。開発者の観点から、AI サイクルをもう一度見てみましょう。


情報の収集 (センス) -サイクルのこの部分では、AI プログラマーは戦場の状況に関する情報を収集して保存する責任があります。チーム ゲームの場合、開発者はゲーム デザイナーと協力して、収集する情報、更新頻度、同じチームの AI エージェント間での分散方法を決定します。


チーム ゲームでは、このデータの一部はすべての AI エージェントに共通であり、ボットはこの情報を交換できるため、AI ボットのリアリズムが向上します。多くの場合、開発者が最適化する必要がある頻繁なレイキャストの場合を除いて、情報の収集は多くのリソースを消費しません。


また、一部の情報は静的な場合があります。たとえば、World of Tanks では、マップ上に複数のデータ レイヤーを作成しました。 1 つのレイヤーは、マップ全体のポイントからポイントへの撮影を担当します。位置がどの程度保護されているか、またはこの場所からマップのどの領域を制御できるかを理解できます。


もう 1 つのレイヤーは、そのエリアが検出からどれだけ隠されているかを示します。これにより、それらの茂みが偵察戦車に適しているかどうかを理解できます。もう 1 つのレイヤーはNavMeshで、ボットがマップ上を移動できるようにします。事前に作成したデータの一部であり、それに加えて事前計算も行うことができます。たとえば、避難所のマップだけでなく、避難所が保護する方向も保存できます。


大規模なマップの場合、マップ上のある重要なポイントから別のポイントまでの長いパスを事前に計算できます。同時に、パスの長さ、地形の複雑さなどの点でパスがどれだけ優れているかを計算できます。戦闘中、ルートに沿った潜在的な敵に関する動的な情報を重ね合わせることができます。したがって、パスを選択するときに、CPU と RAM のリソースを大幅に節約できます。これは、AI 開発の非常に重要でエキサイティングな部分です。最適化とボットへの新機能の追加による明らかな利点に加えて、開発者は、そのようなレイヤーを発明する必要があり、アルゴリズムを改善してプロジェクトに適応させる必要があるため、優れた開発分野を手に入れることができます。


意思決定 (考える) -開発者は通常、ボットの動作のロジックを自分で実装しません。彼はゲームデザイナーと一緒にこれを行います。


さらに、開発者はビヘイビア ツリーの実行を担当するシステムを実装します (暫定的に AI エンジンと呼ぶことができます)。ゲーム デザイナーと協力して、ビヘイビア ツリーを操作するための API を設計し、開発者はこの API のロジックを実装します。たとえば、敵に命中する可能性、シェルターの魅力を計算したり、セクター内の脅威を評価したりできる方法です。これは、AI 作業の中で最もリソースを消費する部分です。


パフォーマンスとリソースの問題を解決するためのオプションの 1 つは、効率的なアルゴリズムの開発と、静的に計算されたデータの効率的な使用です。それらに基づいて、AI は特定のアクションの最適性を判断します。同時に、ボットが利用可能なすべてのサブシステムを備えていることを常に保証できるとは限らないため、意思決定システムは十分な柔軟性と安定性を備えている必要があります。または、AI が果たす役割にどれだけうまく適応しているか。また、よく構築された AI 基盤が、部分的な損傷を乗り切るのに役立つこともあります。


World of Tanks で、大砲のように射撃できるように調整して、従来の戦車のロジックを大砲に使用しようと決めたとき、面白いケースがありました。私たちは、QAが彼がボットよりも優れていることを証明することを決定した定期的な戦いを行いました(実際、彼はそうですが、すべてがそれほど単純ではありません).


彼はボットを迂回して敵の基地に到着し、敵の砲兵をすべて破壊することにしました。彼は、基地から遠く離れていない敵車両に発見されたことを無視しました。砲兵隊の視界に入ると、すぐにフリーカメラモードで戦闘を観察しに行った。危険な敵の接近を見たボットは、彼が現れる可能性が最も高い場所を事前に計算して、彼を撃つことに決めたことが判明しました。そして、私たちのヒーローが視線に現れるとすぐに、ボットは彼に発砲しました.そして、すべてがうまくいくでしょうが、3つの大砲すべてが同時にこれを行いました。そして、まだ実装されていませんが、砲兵でのボットの予想外によく調整されたゲームを発見しました!



アクション (Act) -この部分では、開発者は、意思決定後に AI エージェントが命令を実行できるようにするメカニズムを実装します。ナビゲーション (たとえば、A * をゲームの機能に適合させる)、射撃などを担当するモジュールを実装します。たとえば、A * アルゴリズムを製品で使用できます。ただし、ほとんどの場合、崖などの追加の条件があります。最適化されていない場合、重いユニットのパスが崖に近づきすぎて落下する可能性があります。この場合、崖やその他の不便なタイプの地形に近づくための追加の係数を導入し、ルートのスムーズなスムージングを実装する必要があります。そうしないと、ボットは「はしご」を歩いてしまいます。この領域は、そのメカニズムを使用してタスクを完了するため、ゲームプレイに非常に近いものです。


ツールAI 開発者は、サイクル (Sense >> Think >> Act) の実装に加えて、自分自身、ゲーム デザイナー、および QA 用のツールを作成します。場合によっては、特定のメカニズムを実装するために、機能を構成して使用できるツールを作成してから、タスク自体の実装に直接進む方が簡単です。ゲーム デザイナーは、AI の決定のロジックとシーケンスを分析できる必要があります。これらの目的のために、World of Tanks では、戦闘中のボットのすべてのアクションを記録し、ボットのステップ、下された一連の決定、およびこれらの決定に基づいたデータを視覚化するリプレイを作成できるツールを作成しました。作る。


開発者は、AI がゲームの開発を支援できるようにするシステムも作成しています。ボットをレベルごとにすばやく配置し、シナリオの目標を設定できるようにするレベル デザイナー用のツールキットを作成できます。


たとえば、マップ全体を調べて、パス能力で問題がないかどうかを確認します。 QA では、ボットを使用してゲームの個々のサブシステムをチェックできるツールを作成する必要があることがよくあります。


World of Tanks では、AI を使用して AI がマップ上でどのようにプレイするかをカスタマイズします。これを行うために、統計収集ツールを作成しました。次に、ボットの戦略ゾーンの外観や、ゾーン間の移動ポイントの場所など、マップを変更します。次に、サーバー上で 1000 ~ 3000 のバトルが開始されます。その後、統計とヒート マップを使用して戦闘パターンを確認します。ゲーム デザイナーは、マップの設定を調整し、このデータに基づいて円で繰り返します。同時に、十分なサーバー容量を使用して、ボットの夜にそのような統計を取得し、朝に分析して変更を加えることができます.



実際の仕組み

World of Tanks の実際の例を使用して、AI を使用して新しい機能を作成する完全なサイクルを見てみましょう。また、プログラマー、ゲーム デザイナー、および QA が互いにどのようにやり取りするかを観察することもできます。


このタスクから始めましょう。プレイヤーに体当たりして爆発し、プレイヤーとその周囲の小さな半径にダメージを与えるボットが必要です。それらを「ハリネズミ」と呼びましょう。これらの「ハリネズミ」は、追加の条件下でプレイヤーよりも速く移動します。彼らは撃たず、ボールに似た形をしており、一発で爆破でき、プレイヤーのみに体当たりしなければならず、X ユニットのグループに乗る必要があります。何が簡単なのだろうか?


ゲーム デザイナーからこのデータを受け取った後、開発者は数学とプレーヤーの動きのリードを計算する方法を思い出し、ゲーム デザイナーと協力して、ボットを敵に向けて突進させるビヘイビア ツリー ロジック セットを作成しました。特定のメソッドのセットは、プログラマー側の弱体化とエリアの損傷に対して責任を持って実装されました。確認するために、彼らは 1 つのラフ ボットと 1 つの通常のボットを配置する特別なスクリプトを作成しました。


最初のものは 2 番目のものに首尾よく衝突し、すべてが順調でした。チーム内でゲーム内テストを行い、統計を収集することにしました。そして、実際のマップ上のボットがプレイヤーに届かないことを示しました。バンプでの跳ね返りや落下時の速度が速いため、ボットがダメージを受けたことが判明しました。そのような落下が数回あった後、それらは爆発し、隣接するラフに損傷を与えました。順番に、それは連鎖反応を生み出しました。ライブボットの数を修正し、ロジック分散ドライブを追加しました。また、丘のある実際の地図に基づいてテスト シナリオを微調整しました。


2 番目のテスト段階を実行した後、ボットが非常に「礼儀正しい」ことがわかりました。問題は、彼らがプレイヤーを移動経路に沿ってのみ、つまり正面から突っ込んだということです。しかし、後ろから近づくと、大きな弧を描いてプレイヤーの周りを回り始めました。ゲームデザイナーとオプションについて話し合った後、プログラマーはラミング軌道を選択するための式を変更しました。新しい一連のテストを行った後、QA は、ボットが速すぎて正確すぎて、プレイヤーにチャンスがないというフィードバックを与えました。そのため、公式に戻ってエラーになる場合があるように修正し、ボットがプレーヤーを逃した後に新しい円に近づく動作を変更しました。


ボットの向きを変えて体当たりする弾道が増加し、プレイヤーがリロードして撃ち返すことができるようになりました。ボットが時々マップから飛び出したり、時には逃して最後の数秒で命中させたりと、エキサイティングなゲームプレイの瞬間を生み出しました。時々、彼らはプレイヤーをうまく捕まえて、別の方向から攻撃しました。 QA はラフに遭遇するゲームプレイ エクスペリエンスを高く評価し、この機能はプレーヤー リリースに組み込まれました。


この例からわかるように、機能の開発を通じて、プログラマー、ゲーム デザイナー、および QA は常に連絡を取り合っていました。これにより、機能の問題領域を見つけて、プレーヤーに到達する前に修正することがより効率的になりました。また、プログラマーとゲーム デザイナーが協力してプレイヤーに体当たりするためのアルゴリズムを開発し、QA はそのようなボットと対戦するのがどれほど楽しいかについてフィードバックを提供しました。これは、私たちのチームと Silent Hill シリーズのクリエイターによる PVE モードの Mirny-13 の実例です。


AI 開発者になるために必要なこと


まず、ゲームが大好き!まじめな話、ゲームが好きじゃないのに、どうしてやるの?

2 つ目は、自分の製品を何度もプレイすることが不可欠です。なぜなら、プレイヤーの立場に身を置くことによってのみ、プレイヤーのプレイ方法とボットのプレイ方法を理解できるからです。


そうしないと、ゲーム デザイナーのタスクを「コーディング」することになり、その方法では AI 開発者になることはできません。最後に、何かがこのように、またはそのように機能する理由を理解したいという欲求です。複雑なゲームの AI は明確なロジックを使用しておらず、感覚 >> 思考 >> 行動サイクルの結果が常に 100% 予測可能で理解可能であるとは限りません。 AI が正しく動作したかどうかを理解するために、ゲーム デザイナーや QA と共に開発者がボットによる決定に関するデータを分析しなければならないことは珍しくありません。また、ハード スキルとソフト スキルは必要ありません。


ハード スキル(これは一連の技術的な知識です)。リストの最初に挙げられるのは、通常はゲームプレイのゲーム ロジックを記述したスクリプト プログラミング言語の知識です。たとえば、World of Tanks では Python、Unity では C# になります。 2 番目の必須項目は C++ です。それがなければ、ほとんどの最適化が行われるため、簡単ではありません。


次のステップです。


データ構造とアルゴリズムの十分な理解。 AI の開発には多くの計算が必要であり、データの保存と処理に最適な戦略を選択することで、多くの時間と CPU およびメモリ リソースを節約できます。また、大学2年レベルの数学の知識も必要になります。もちろん、AI 開発の基本的なアプローチ (AI サイクルと意思決定のアプローチ) を知っておくとよいでしょう。


ソフト スキル(チームで作業し、建設的な対話を行うためのスキル)。価値のあるソフト スキルは数多くありますが、AI 開発では、1 つだけ取り上げたいと思います。


チームワーク!


ゲーム デザイナー、プログラマー、および QA は非常に密接に連携しており、彼らの経験と知識を組み合わせることなしにタスクを完了したり、問題を解決したりすることはしばしば不可能です。そのため、人の話を聞く、議論するより議論する、質問するなどのスキルが基本となります。ゲームやメカニクスの特定のニュアンスについて、自分で発明してやり直し、長い間苦労しながらやり直すよりも、ゲーム デザイナーや QA に尋ねたほうがよい場合があります。ゲーム内の AI の優れた作業は、常に 1 人のスペシャリストだけでなく、チーム全体のメリットです!


ご覧のとおり、ゲーム用の AI を作成するのは難しいですが、とても楽しくて楽しいものです。とりわけ、これはハード スキルとソフト スキルの両方を開発するのに適した領域です。


これまでとは違ったエキサイティングなゲームを作りましょう。AI が助けてくれます。