﻿1
00:00:04,310 --> 00:00:05,240
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,240 --> 00:00:11,660
‫ในการบรรยายนี้ เราจะแนะนำเนื้อหาใหม่ 2 ประเภท ได้แก่ โครงสร้างพฤติกรรมและกระดานดำ ซึ่งเป็นทรัพย์สินสองประเภทที่ช่วยให้เราสามารถทำสิ่งที่น่าสนใจกับ

3
00:00:11,660 --> 00:00:16,640
‫A ได้ ฉัน..

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
‫และมีสองตัวเลือกที่นี่ พฤติกรรม ต้นไม้และกระดานดำ

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
‫และในขณะที่เรากำลังดำเนินการอยู่ เรามีบางสิ่งที่เกี่ยวข้องกับฉันที่นี่

26
00:01:22,320 --> 00:01:29,640
‫ฉันจะสร้างโฟลเดอร์ใหม่ชื่อ A ฉัน. และเราจะย้ายกระดานดำ ต้นไม้พฤติกรรม

27
00:01:29,700 --> 00:01:33,900
‫และที่ไหนสักแห่งที่นี่ เรามีปืน ตัวควบคุม AI

28
00:01:33,900 --> 00:01:40,530
‫ทั้งหมดนี้เข้าไปที่ ฉันย้ายมาที่นี่ จากนั้นเราสามารถไปที่โฟลเดอร์ 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
‫สิ่งต่อไปที่เราเห็นด้านบนขวา เนื้อหาทั้งสองนี้เชื่อมโยงกัน

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 ของคุณ ฉัน. โดยพื้นฐานแล้วเป็นที่ที่คุณจัดเก็บตัวแปรจำนวนมาก

43
00:02:42,240 --> 00:02:51,150
‫คุณป้อนข้อมูลเหล่านี้จากการเล่นเกมเหมือนกับที่เราทำกับระบบแอนิเมชั่นที่คุณมีคุณสมบัติที่แตกต่างกันเหล่านี้ซึ่งกำหนดโดยการเล่นเกม

44
00:02:51,150 --> 00:02:53,820
‫เราทำสิ่งเดียวกันกับ AI

45
00:02:53,850 --> 00:03:03,540
‫เราตั้งค่าคุณสมบัติมากมายที่ให้ข้อมูลเกี่ยวกับโลกของเกม จากนั้นแผนผังพฤติกรรมจะดึงคุณสมบัติเหล่านั้นมาใช้และตัดสินใจว่าจะทำอะไร

46
00:03:03,540 --> 00:03:10,680
‫มันสามารถตั้งค่าคุณสมบัติเหล่านั้น ใช้เป็นหน่วยความจำ อ่านจากคุณสมบัติเหล่านั้นและทุกสิ่งที่น่ารัก

47
00:03:10,680 --> 00:03:17,790
‫เมื่อคำนึงถึงสิ่งนั้น เราจะตั้งค่าแผนผังพฤติกรรมของเราในกระดานดำเพื่อให้เชื่อมโยงกันได้อย่างไร

48
00:03:18,030 --> 00:03:20,460
‫เราจะขยายออกไปในบานหน้าต่างรายละเอียดของเรา

49
00:03:20,460 --> 00:03:26,010
‫คุณจะเห็นว่ามีเนื้อหาบนกระดานดำนี้ และดูเหมือนว่าจะกรอกข้อมูลให้เราโดยอัตโนมัติเพื่อให้เนื้อหาบนกระดานดำเชื่อมโยงกับเนื้อหากระดานดำนี้

50
00:03:26,010 --> 00:03:32,790
‫ข ข ข ศัตรู ฉัน

51
00:03:33,000 --> 00:03:42,420
‫ตอนนี้เราจะเลิกใช้ C++ สักพักแล้ว เพื่อใช้แอสเซ็ทเหล่านี้ เนื่องจากแผนผังพฤติกรรมและกระดานดำล้วนอยู่ภายในตัวแก้ไข

52
00:03:42,420 --> 00:03:44,460
‫พวกเขาไม่ใช่พิมพ์เขียวเช่นนั้น

53
00:03:44,460 --> 00:03:49,320
‫พวกเขาเป็นเครื่องมือแก้ไขของตัวเองและเราสามารถติดต่อกับพวกเขาใน C ++

54
00:03:49,320 --> 00:03:53,580
‫แต่มันหมายความว่าเราจะใช้ตัวแก้ไขสำหรับการบรรยายครั้งต่อไปเช่นเดียวกับ C++

55
00:03:53,580 --> 00:03:54,960
‫แม้ว่าพิมพ์เขียวไม่มากนัก

56
00:03:54,960 --> 00:04:02,400
‫เป็นเรื่องดีที่เรามีต้นไม้พฤติกรรมและกระดานดำนี้ แต่ในความเป็นจริงแล้วเราจะใช้มันอย่างไร?

57
00:04:02,400 --> 00:04:05,580
‫สำหรับสิ่งนั้น เรากลับไปที่ตัวควบคุม AI ของเรา

58
00:04:05,580 --> 00:04:14,640
‫ฉันถ้าคุณจำได้ ฉันเป็นผู้ควบคุมรับผิดชอบทั้งหมดสำหรับการดำเนินการพฤติกรรมของเรา และนั่นก็ไม่มีข้อยกเว้นในที่นี้

59
00:04:14,820 --> 00:04:19,110
‫โครงสร้างพฤติกรรมเป็นอีกสิ่งหนึ่งที่ตัวควบคุม AI สามารถใช้หรือเรียกใช้ได้

60
00:04:19,260 --> 00:04:30,090
‫วิธีที่เราจะทำเช่นนี้คือเราจะไปที่การควบคุม AI ของเราและเราจำเป็นต้องมีวิธีการอ้างอิงในพิมพ์เขียวว่าต้นไม้พฤติกรรมใดที่เราต้องการให้เรียกใช้

61
00:04:30,600 --> 00:04:35,130
‫สิ่งแรกที่ฉันจะทำคือฉันจะไปที่ control CP และแสดงความคิดเห็นใน

62
00:04:35,130 --> 00:04:41,640
‫TTIC เพราะเราจะแทนที่ฟังก์ชันนี้ด้วยฟังก์ชันต้นไม้พฤติกรรมแทน

63
00:04:41,760 --> 00:04:46,440
‫แล้วนั่นหมายความว่าฉันสามารถลบรัศมีการยอมรับนี้ที่นี่ เพราะเราไม่ต้องการมันอีกต่อไป

64
00:04:46,440 --> 00:04:51,180
‫และเราจะใช้ตัวชี้ไปยังพฤติกรรมใหม่แทน

65
00:04:51,780 --> 00:04:59,100
‫และฉันต้องสะกดว่า The American Way Tree และตัวชี้ นั่นคือต้นไม้พฤติกรรมที่เราต้องการที่นั่น

66
00:04:59,100 --> 00:05:02,310
‫และฉันต้องส่งต่อประกาศสิ่งนี้โดยมีคลาสอยู่ข้างหน้า

67
00:05:02,310 --> 00:05:08,910
‫และโดยพื้นฐานแล้วที่นี่ สิ่งที่ฉันต้องการจะพูดคือนี่คือพฤติกรรมของ AI และ

68
00:05:09,770 --> 00:05:13,340
‫ฉันจะใช้ตัวสะกดแบบอเมริกันที่นี่เพื่อความสม่ำเสมอ

69
00:05:13,340 --> 00:05:17,630
‫นี่คือพฤติกรรมของ AI ที่เราต้องการให้แสดงพฤติกรรมนี้ในตอนนี้

70
00:05:17,630 --> 00:05:18,560
‫มันไม่ง่ายเลย

71
00:05:18,560 --> 00:05:22,700
‫อีกครั้ง การควบคุมการมองมีฟังก์ชันในตัวสำหรับสิ่งนี้

72
00:05:22,700 --> 00:05:24,500
‫เรามีพฤติกรรมการวิ่งแบบนี้

73
00:05:24,500 --> 00:05:26,390
‫ฟังก์ชันต้นไม้เปลี่ยนเป็นบูลีน

74
00:05:26,390 --> 00:05:30,650
‫ไม่ว่าคุณจะสามารถดำเนินการได้สำเร็จหรือไม่ก็ตาม ให้เริ่มดำเนินการ นั่นคือ

75
00:05:30,650 --> 00:05:35,930
‫และรับบีทแอสเซทซึ่งกำหนดให้กับโครงสร้างพฤติกรรมใหม่

76
00:05:36,290 --> 00:05:40,040
‫นั่นคือสิ่งที่เราต้องการใช้ และเราสามารถทำสิ่งนี้ได้ในการเริ่มเล่น

77
00:05:40,040 --> 00:05:44,660
‫สิ่งที่เราจะทำคือ อย่างแรกเลย เราจะตรวจสอบว่า เรามีแผนผังพฤติกรรมตรงนี้

78
00:05:44,660 --> 00:05:47,210
‫เราจะบอกว่าพฤติกรรม

79
00:05:48,270 --> 00:05:53,640
‫ไม่เท่ากับ null pointer เพราะเราไม่ต้องการใช้อย่างอื่น

80
00:05:53,640 --> 00:05:59,130
‫แล้วสิ่งที่เราทำได้คือเราสามารถเรียกใช้แผนผังพฤติกรรมที่เรียกว่าพฤติกรรม AI ของเราได้

81
00:05:59,160 --> 00:06:06,420
‫มันง่ายมากที่จะทำให้พฤติกรรมของ AI ทำงานและเราสามารถดำเนินการต่อและรวบรวมได้

82
00:06:07,420 --> 00:06:12,790
‫และอีกอย่างหนึ่งที่เราสามารถทำได้กับแผนผังพฤติกรรมคือเราสามารถเห็นพวกมันทำงานที่รันไทม์ แต่การจะทำเช่นนั้นได้

83
00:06:12,790 --> 00:06:15,150
‫คุณต้องมีโหนดบางประเภทในนี้

84
00:06:15,160 --> 00:06:18,910
‫ดังนั้นเราจะเพิ่มโหนดโดยไม่เข้าใจสิ่งที่มันทำ

85
00:06:18,910 --> 00:06:29,350
‫ฉันจะเพิ่มโหนดของซีเควนซ์และฉันจะเชื่อมต่อมันด้วยการลากลงจากโหนดรูท บิตที่อยู่ใต้โหนดรูทที่ไฮไลต์เมื่อฉันวางเมาส์เหนือมันลงไปที่บิตเหนือโหนดซีเควนซ์

86
00:06:29,440 --> 00:06:30,850
‫และฉันจะบันทึกสิ่งนั้น

87
00:06:31,240 --> 00:06:39,700
‫ฉันจะไปและกดปุ่มเล่นและไปที่เนื้อหาต้นไม้พฤติกรรมของฉันและคุณควรจะเห็นรายการแบบเลื่อนลงที่นี่

88
00:06:39,700 --> 00:06:43,420
‫แต่เราไม่ได้เพราะไม่ได้ทำงานอยู่ในขณะนี้

89
00:06:43,420 --> 00:06:44,530
‫ก็เลยเลิกเล่น

90
00:06:45,010 --> 00:06:46,660
‫แล้วทำไมมันไม่วิ่ง?

91
00:06:46,660 --> 00:06:49,360
‫เพราะเราไม่ได้ติดมันในตัวควบคุมปืนของเรา

92
00:06:49,360 --> 00:06:52,840
‫ลองทำความท้าทายเล็กๆ น้อยๆ เพื่อให้คุณได้มีส่วนร่วม

93
00:06:53,110 --> 00:06:54,610
‫หวังว่าคงไม่ยากเกินไป

94
00:06:55,060 --> 00:06:56,170
‫โอเค ยินดีต้อนรับกลับ

95
00:06:56,170 --> 00:07:01,330
‫ถ้าเราไปดูที่นี่ เรากำลังมองหาพฤติกรรม AI ของเราอยู่

96
00:07:01,510 --> 00:07:04,300
‫ด้วยเหตุผลบางอย่าง ฉันต้องคอมไพล์ใหม่เพื่อแสดงให้ฉันเห็น

97
00:07:04,300 --> 00:07:04,930
‫แต่นี่มัน.

98
00:07:04,930 --> 00:07:06,760
‫พฤติกรรม AI คือสิ่งที่เราต้องการ

99
00:07:06,790 --> 00:07:07,780
‫เราคลิกดรอปดาวน์

100
00:07:07,780 --> 00:07:10,630
‫มีเพียงทางเลือกเดียวในขณะนี้ เนื่องจากเรามีแผนผังพฤติกรรมเพียงรายการเดียว

101
00:07:10,630 --> 00:07:14,200
‫ลองเลือกอันนั้นแล้วคอมไพล์และบันทึก

102
00:07:14,200 --> 00:07:17,380
‫และถ้าตอนนี้เราไปข้างหน้าและเล่นเกม

103
00:07:18,010 --> 00:07:20,830
‫และไปดูศัตรูที่พ่ายแพ้ของเรา

104
00:07:21,280 --> 00:07:26,140
‫คุณจะเห็นว่ามันกำลังเน้นโหนดที่กำลังทำงานอยู่ และคุณมีรายการดรอปดาวน์เล็กๆ

105
00:07:26,140 --> 00:07:33,130
‫นี้ถัดจากปุ่มหยุดชั่วคราว ซึ่งจะบอกคุณว่าตัวควบคุมตัวใดที่คุณกำลังสังเกตแผนผังพฤติกรรมของ

106
00:07:33,160 --> 00:07:38,350
‫นี่เป็นฟังก์ชันที่ยอดเยี่ยมสำหรับคุณสามารถกระโดดเข้าไปได้ ตกลง ทำไมเป็นอย่างนั้น?

107
00:07:38,350 --> 00:07:39,760
‫ฉันได้แต่ยืนนิ่ง

108
00:07:39,760 --> 00:07:41,290
‫ทำไมเขาไม่ไล่ผู้เล่น?

109
00:07:41,290 --> 00:07:47,110
‫คุณสามารถดูได้ว่าส่วนใดของพฤติกรรมที่เขาวิ่งอยู่และไป อ่า คุณรู้ สิ่งนั้นผิดพลาด

110
00:07:47,140 --> 00:07:48,910
‫มันมีประโยชน์มากสำหรับการดีบัก

111
00:07:48,910 --> 00:07:53,890
‫คุณสามารถไปและดูว่า AI ของคุณทั้งหมดในโลกนี้ทำอะไรได้บ้างโดยใช้เมนูดร็อปดาวน์นี้

112
00:07:54,010 --> 00:07:54,550
‫สิ่งที่ดี

113
00:07:54,550 --> 00:07:55,570
‫นั่นคือทั้งหมดสำหรับการบรรยายนี้

114
00:07:55,570 --> 00:08:01,930
‫ในการบรรยายครั้งต่อไป เราจะมาดูว่าเราจะตั้งค่าข้อมูลในหน่วยความจำกระดานดำของ

115
00:08:01,930 --> 00:08:04,600
‫AI จาก C++ ได้อย่างไร

116
00:08:04,600 --> 00:08:05,560
‫ฉันจะไปพบคุณที่นั่น.

