Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BLUE PROTOCOL の AI 実装 ~企画意図をふるまいに反映させるために行ったこと~

BLUE PROTOCOL の AI 実装 ~企画意図をふるまいに反映させるために行ったこと~

CEDEC2023の講演資料です。

講演タイトル:BLUE PROTOCOL の AI 実装 ~企画意図をふるまいに反映させるために行ったこと~
講演者:佐竹 敏久
共同研究・開発者:長谷 洋平

セッションの内容:
過去の CEDEC で BLUE PROTOCOL の AI 技術が発表されましたが、今回の講演ではその技術がどのようにエネミー挙動を制御しているかをより具体的に説明します。そして、プレイヤーを楽しませるためどのようにエネミーに挙動を指示しているかを、実装イメージを掴みやすくお話しできればと思います。

Bandai Namco Studios Inc.

December 19, 2023
Tweet

More Decks by Bandai Namco Studios Inc.

Other Decks in Technology

Transcript

  1. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Subtasks [吠える, こんぼうで叩く]

    PrimitiveTask [近づく] PrimitiveTask [吠える] PrimitiveTask [こんぼうで叩く]
  2. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Subtasks [吠える, こんぼうで叩く]

    PrimitiveTask [吠える] PrimitiveTask [こんぼうで叩く] PrimitiveTask [近づく]
  3. CompoundTask [攻撃する] Method [こんぼう] Preconditions [bHasClub == true] Subtasks [吠える,

    こんぼうで叩く] Method [つめ] Preconditions [bHasClub == false] Subtasks [ひっかく]
  4. CompoundTask [戦う] Subtasks [近づく, 攻撃する] PrimitiveTask [吠える] PrimitiveTask [こんぼうで叩く] PrimitiveTask

    [近づく] CompoundTask [攻撃する] Method [こんぼう] Preconditions [bHasClub == true] Subtasks [吠える, こんぼうで叩く] Method [つめ] Preconditions [bHasClub == false] Subtasks [ひっかく] PrimitiveTask [ひっかく] こんぼう つめ
  5. CompoundTask [戦う] Subtasks [近づく, 攻撃する] PrimitiveTask [吠える] PrimitiveTask [こんぼうで叩く] PrimitiveTask

    [近づく] CompoundTask [攻撃する] Method [こんぼう] Preconditions [bHasClub == true] Subtasks [吠える, こんぼうで叩く] Method [つめ] Preconditions [bHasClub == false] Subtasks [ひっかく] こんぼう
  6. CompoundTask [戦う] Subtasks [近づく, 攻撃する] PrimitiveTask [近づく] CompoundTask [攻撃する] Method

    [こんぼう] Preconditions [bHasClub == true] Subtasks [吠える, こんぼうで叩く] Method [つめ] Preconditions [bHasClub == false] Subtasks [ひっかく] PrimitiveTask [ひっかく] つめ
  7. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Method [こんぼう] Preconditions

    [bHasClub == true] Subtasks [こんぼうで叩く] PrimitiveTask [近づく] Preconditions [] Effects [Distance = Near] Action [MoveTo(Target)] PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)]
  8. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Method [こんぼう] Preconditions

    [bHasClub == true] Subtasks [こんぼうで叩く] PrimitiveTask [近づく] Preconditions [] Effects [Distance = Near] Action [MoveTo(Target)] PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)]
  9. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Method [こんぼう] Preconditions

    [bHasClub == true] Subtasks [こんぼうで叩く] PrimitiveTask [近づく] Preconditions [] Effects [Distance = Near] Action [MoveTo(Target)] PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)]
  10. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Method [こんぼう] Preconditions

    [bHasClub == true] Subtasks [こんぼうで叩く] PrimitiveTask [近づく] Preconditions [] Effects [Distance = Near] Action [MoveTo(Target)] PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)]
  11. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Method [こんぼう] Preconditions

    [bHasClub == true] Subtasks [こんぼうで叩く] PrimitiveTask [近づく] Preconditions [] Effects [Distance = Near] Action [MoveTo(Target)] PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)]
  12. PrimitiveTask [近づく] Preconditions [] Effects [Distance = Near] Action [MoveTo(Target)]

    PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)]
  13. PrimitiveTask [こんぼうで叩く] Preconditions [bHasClub == true] Effects [bHasClub = false]

    Action [SendAnimCommand(Swing)] Root precondition effect action ModifyState SendAnimCommand CheckState
  14. CompoundTask [戦う] Subtasks [近づく, 攻撃する] CompoundTask [攻撃する] Method [こんぼう] Preconditions

    [bHasClub == true] Subtasks [吠える, こんぼうで叩く] PrimitiveTask [近づく] Effects [Distance = Near] Action [MoveTo(Target)] PrimitiveTask [こんぼうで叩く] Preconditions [Distance == Near] Effects [bHasClub = false] Action [SendAnimCommand(Swing)] PrimitiveTask [吠える] Action [SendAnimCommand(Roar)]