﻿1
00:00:04,310 --> 00:00:05,240
‫こんにちは､ ようこそ｡

2
00:00:05,240 --> 00:00:16,640
‫この講義では､ ビヘイビアツリーと黒板という2つの新しいタイプのアセットを紹介します｡ この2つのアセットを使うと､ Aを使って非常に面白いことができるようになります｡

3
00:00:16,640 --> 00:00:16,640
‫I..

4
00:00:16,640 --> 00:00:18,740
‫もっともっと複雑なことをさせてください｡

5
00:00:18,740 --> 00:00:23,600
‫私は非常に簡単にそれらを使用して､ それらを設定する方法を見て飛び込んでみましょう｡

6
00:00:25,140 --> 00:00:25,410
‫なるほど｡

7
00:00:25,410 --> 00:00:28,970
‫そこで､ 洗練されたAIの動作を作りたいと考えています｡

8
00:00:28,980 --> 00:00:33,960
‫さて､ Unreal でこれを行うには､ 通常､ ビヘイビアツリーと呼ばれるシステムを使用します｡

9
00:00:33,990 --> 00:00:35,050
‫さて､ これは何でしょう？

10
00:00:35,070 --> 00:00:38,990
‫まあ､ それを知るには､ 作ってみるのが一番なんですけどね｡

11
00:00:39,000 --> 00:00:41,970
‫それでは､ 右クリックして行ってみましょう｡

12
00:00:41,970 --> 00:00:45,150
‫ここでは､ 人工知能の下に注目しています｡

13
00:00:45,150 --> 00:00:48,450
‫そして､ この動作には､ ツリーと黒板の2つのオプションがあります｡

14
00:00:48,480 --> 00:00:51,050
‫この両方が欲しくなるのです｡

15
00:00:51,060 --> 00:00:54,650
‫では､ ビヘイビアツリーから見て行きましょう｡

16
00:00:54,660 --> 00:00:59,670
‫これの接頭辞がBHTで､ これを敵と呼ぶことにします｡

17
00:00:59,670 --> 00:01:01,320
‫だから行動木敵｡

18
00:01:01,350 --> 00:01:03,780
‫という感じで仕上げていくだけです｡

19
00:01:03,780 --> 00:01:04,490
‫これでよしとする｡

20
00:01:04,500 --> 00:01:09,180
‫そして､ もうひとつ､ そこにあった黒板も作る必要があります｡

21
00:01:09,180 --> 00:01:11,250
‫さて､ 黒板とはいったい何でしょう？

22
00:01:11,250 --> 00:01:12,300
‫ちょっとだけご紹介します｡

23
00:01:12,300 --> 00:01:15,930
‫でも､ ここではb bアンダースコアの敵と呼ぶことにします｡

24
00:01:15,940 --> 00:01:19,110
‫さっきも言ったけど､ 黒板ビートは挙動不審な木のためにあるんだよ｡

25
00:01:19,110 --> 00:01:22,320
‫ついでに､ ここでIに関連することをいくつか｡

26
00:01:22,320 --> 00:01:29,640
‫Aというフォルダを新規に作成します｡  I. で､ 黒板､ ビヘイビアツリーを移動させることになります｡

27
00:01:29,700 --> 00:01:33,900
‫そして､ このどこかにシューター､ AIコントローラーがあります｡

28
00:01:33,900 --> 00:01:40,530
‫そのすべてを「I move here」に入れて､ AI関連のすべてを扱う「AI」フォルダに移動することができます｡

29
00:01:41,070 --> 00:01:45,450
‫まずはビヘイビアツリーを開いて､ メインウインドウにドッキングさせましょう｡

30
00:01:45,660 --> 00:01:47,550
‫では､ いったいこれは何なのか？

31
00:01:47,550 --> 00:01:53,880
‫このため､ ビヘイビアのツリーを作成することができます｡ たとえば､ ここにトレース用のビヘイビアがあるとします｡

32
00:01:53,880 --> 00:01:55,350
‫一部は荒らしのため｡

33
00:01:55,350 --> 00:02:00,180
‫それは､ 何か他のもののためでもあり､ 扉を開くためでもあり､ そういうものでもあります｡

34
00:02:00,180 --> 00:02:06,480
‫通常､ ビヘイビアはビヘイビアのツリーやサブツリーなど､ たくさんのツリーとして構成されています｡

35
00:02:06,480 --> 00:02:15,780
‫詳しくは後述しますが､ ゲームの中で自然な振る舞いを組み立てるには最適な方法だと言えます｡

36
00:02:16,080 --> 00:02:17,610
‫今はそれがすべてではありません｡

37
00:02:17,610 --> 00:02:19,440
‫AIの技術はたくさんあるんです｡

38
00:02:19,440 --> 00:02:26,040
‫これは､ あなたのゲームに最適なものではないかもしれませんが､ 素晴らしいスタートであり､ これでかなり多くのことを達成することができます｡

39
00:02:26,520 --> 00:02:30,620
‫次に､ 上部にあるように､ この2つのアセットはリンクされています｡

40
00:02:30,630 --> 00:02:33,000
‫行動樹と黒板｡

41
00:02:33,000 --> 00:02:35,100
‫黒板とはいったい何なのか？

42
00:02:35,100 --> 00:02:42,240
‫まあ､ 黒板はA君の記憶みたいなものですからね｡  I. 本来は変数の束を格納する場所です｡

43
00:02:42,240 --> 00:02:46,650
‫ゲームプレイから入力するのは､ アニメーションシステムでやっていたのと同じで､

44
00:02:46,650 --> 00:02:51,150
‫ゲームプレイによって設定されるさまざまなプロパティがあります｡

45
00:02:51,150 --> 00:02:53,820
‫AIでも同じようなことをやっています｡

46
00:02:53,850 --> 00:03:00,180
‫ゲーム世界の情報を与えるプロパティをたくさん設定し､ ビヘイビアツリーはそれらのプロパティをもとに､

47
00:03:00,180 --> 00:03:03,540
‫自分の行動を決定していきます｡

48
00:03:03,540 --> 00:03:10,680
‫そのプロパティを設定したり､ メモリとして使ったり､ プロパティから読み出したり､ そういう素敵なことができるんだ｡

49
00:03:10,680 --> 00:03:17,790
‫では､ それを踏まえて､ blackboardのビヘイビアツリーが互いにリンクするように設定するには､ どうすればよいでしょうか｡

50
00:03:18,030 --> 00:03:20,460
‫では､ 詳細ペインで展開します｡

51
00:03:20,460 --> 00:03:26,010
‫この黒板アセットがあり､ 黒板アセットがこの b b 敵 I 黒板アセットにリンクされているように､

52
00:03:26,010 --> 00:03:32,790
‫自動的に記入されているのがわかると思います｡

53
00:03:33,000 --> 00:03:38,730
‫ビヘイビアツリーと黒板は完全にエディタ内にあるので､ これらのアセットを使うために､

54
00:03:38,730 --> 00:03:42,420
‫C++から少し離れることになります｡

55
00:03:42,420 --> 00:03:44,460
‫設計図ではありません｡

56
00:03:44,460 --> 00:03:49,320
‫これらは独自のエディタツールであり､ C++でインターフェースをとることができるのです｡

57
00:03:49,320 --> 00:03:53,580
‫でも､ これからの講義はC++だけでなく､ エディタも使うということです｡

58
00:03:53,580 --> 00:03:54,960
‫設計図はそうでもないですが｡

59
00:03:54,960 --> 00:04:02,400
‫行動ツリーと黒板を手に入れたのはいいけれど､ いったいどうやって使うんだろう？

60
00:04:02,400 --> 00:04:05,580
‫そのためには､ AIコントローラに戻ればいいんです｡

61
00:04:05,580 --> 00:04:14,640
‫私たちの行動を動かしているのは､ すべて私というコントローラーであり､ それはここでも例外ではありません｡

62
00:04:14,820 --> 00:04:19,110
‫ビヘイビアツリーは､ AIコントローラーが使用したり実行したりできる､ もうひとつのものに過ぎないのです｡

63
00:04:19,260 --> 00:04:30,090
‫この方法では､ AI コントロールに移動して､ 実行させたい動作ツリーをブループリントで参照する方法が必要です｡

64
00:04:30,600 --> 00:04:41,640
‫この機能をビヘイビアツリー機能に置き換えるため､ まず最初にコントロールCPに移動してTTICの内容をコメントアウトします｡

65
00:04:41,760 --> 00:04:46,440
‫そして､ この受容半径はもう必要ないので､ 削除してもいいということです｡

66
00:04:46,440 --> 00:04:51,180
‫そして､ その代わりに新しい動作へのポインターを使用することになります｡

67
00:04:51,780 --> 00:04:59,100
‫そして､ このThe American Way Treeとポインターを綴らなければならないのですが､ これはそこに欲しい動作の木なのです｡

68
00:04:59,100 --> 00:05:02,310
‫そして､ これをクラスを前にしてフォワード宣言する必要があるのです｡

69
00:05:02,310 --> 00:05:08,910
‫それから､ 基本的にここで言いたいのは､ これはAIの動作と｡

70
00:05:09,770 --> 00:05:13,340
‫ここでは､ 一貫性を持たせるために､ アメリカン・スペルのままにしておきます｡

71
00:05:13,340 --> 00:05:17,630
‫これが今ここで欲しいAIビヘイビアで､ 実際にビヘイビアを走らせるわけです｡

72
00:05:17,630 --> 00:05:18,560
‫これ以上ないほどシンプルです｡

73
00:05:18,560 --> 00:05:22,700
‫この場合も､ アイコントロールにはそのための機能が内蔵されています｡

74
00:05:22,700 --> 00:05:24,500
‫このランの挙動を

75
00:05:24,500 --> 00:05:26,390
‫ツリー関数はブーリアン値を返す｡

76
00:05:26,390 --> 00:05:30,650
‫うまく実行できるかどうかは別として､ 実行を開始すること､ です｡

77
00:05:30,650 --> 00:05:35,930
‫そして､ 新しいビヘイビアツリーに指定されたビートアセットを取り込みます｡

78
00:05:36,290 --> 00:05:40,040
‫これは､ begin playでやり直せるので､ ぜひ使ってみてください｡

79
00:05:40,040 --> 00:05:44,660
‫まず最初に､ ビヘイビアツリーが本当に存在するのかどうかを確認します｡

80
00:05:44,660 --> 00:05:47,210
‫だから､ I behaviorと言うことにしています｡

81
00:05:48,270 --> 00:05:53,640
‫はヌルポインタと等しくない｡ なぜなら､ そうでなければ使用したくないからである｡

82
00:05:53,640 --> 00:05:59,130
‫そして､ AIビヘイビアと呼ばれるビヘイビアツリーを走らせることができます｡

83
00:05:59,160 --> 00:06:06,420
‫本当に簡単で､ AIビヘイビアを動作させれば､ あとはコンパイルするだけです｡

84
00:06:07,420 --> 00:06:15,150
‫さらに､ ビヘイビアツリーでできることの1つは､ 実行時にビヘイビアツリーの動作を確認できることです｡

85
00:06:15,160 --> 00:06:18,910
‫だから､ その役割を十分に理解しないまま､ ノードを追加していくことになる｡

86
00:06:18,910 --> 00:06:23,830
‫ルートノード､ つまりマウスオーバーするとハイライトされるルートノードの下の部分から､

87
00:06:23,830 --> 00:06:29,350
‫シーケンスノードの上の部分までドラッグダウンして､ シーケンスノードを追加します｡

88
00:06:29,440 --> 00:06:30,850
‫そして､ それを保存しておくのです｡

89
00:06:31,240 --> 00:06:39,700
‫再生ボタンを押し､ ビヘイビアツリーアセットに移動すると､ ここにドロップダウンが表示されるはずですが､

90
00:06:39,700 --> 00:06:43,420
‫現在実行されていないため表示されません｡

91
00:06:43,420 --> 00:06:44,530
‫だから､ 遊ぶのはやめよう｡

92
00:06:45,010 --> 00:06:46,660
‫また､ なぜ動かないのか？

93
00:06:46,660 --> 00:06:49,360
‫シューターコントローラーにつないでいないからです｡

94
00:06:49,360 --> 00:06:52,840
‫だから､ それをフックするために､ そのミニチャレンジをしましょう｡

95
00:06:53,110 --> 00:06:54,610
‫うまくいけば､ それほど難しいことではないはずです｡

96
00:06:55,060 --> 00:06:56,170
‫では､ お帰りなさい｡

97
00:06:56,170 --> 00:07:01,330
‫そこで､ この中にあるAIの動作を探します｡

98
00:07:01,510 --> 00:07:04,300
‫なぜか､ 私の場合は再コンパイルが必要でした｡

99
00:07:04,300 --> 00:07:04,930
‫でも､ これでいい｡

100
00:07:04,930 --> 00:07:06,760
‫AIの振る舞いは､ 私たちが求めているものです｡

101
00:07:06,790 --> 00:07:07,780
‫ドロップダウンをクリックするのです｡

102
00:07:07,780 --> 00:07:10,630
‫今のところ､ ビヘイビアツリーが1本しかないので､ 選択肢は1つしかないんです｡

103
00:07:10,630 --> 00:07:14,200
‫では､ そちらを選択してコンパイル・保存してみましょう｡

104
00:07:14,200 --> 00:07:17,380
‫そして､ もし今､ 私たちがゲームを進めるとしたら｡

105
00:07:18,010 --> 00:07:20,830
‫そして､ 我々のビートの敵を見てきてください｡

106
00:07:21,280 --> 00:07:26,140
‫現在実行中のノードがハイライトされ､ 一時停止ボタンの横にある小さなドロップダウンで､

107
00:07:26,140 --> 00:07:33,130
‫現在どのIコントローラのビヘイビアツリーを観察しているかがわかります｡

108
00:07:33,160 --> 00:07:38,350
‫だから､ これは飛び道具として､ よし､ なんでだろう､ と思ってもらえるような機能なんです｡

109
00:07:38,350 --> 00:07:39,760
‫ただ､ 立ち止まっているだけです｡

110
00:07:39,760 --> 00:07:41,290
‫なぜ､ 彼は選手を追いかけないのですか？

111
00:07:41,290 --> 00:07:47,110
‫今､ どの動作をしているのかを見て､ 「あ､ あの動作がおかしくなったんだな」と分かるわけです｡

112
00:07:47,140 --> 00:07:48,910
‫デバッグにとても役立っています｡

113
00:07:48,910 --> 00:07:53,890
‫このドロップダウンを使って､ 世界中のAIが何をしているのか見に行くことができます｡

114
00:07:54,010 --> 00:07:54,550
‫素晴らしい内容です｡

115
00:07:54,550 --> 00:07:55,570
‫今回の講義は以上です｡

116
00:07:55,570 --> 00:08:04,600
‫次回の講義では､ C++からAIの黒板メモリに情報を設定する方法について説明します｡

117
00:08:04,600 --> 00:08:05,560
‫現地でお会いしましょう｡

