﻿1
00:00:04,350 --> 00:00:05,040
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,040 --> 00:00:15,030
‫ในการบรรยายนี้ เราจะคอยจับตาดูผู้ติดตามและนำทางไปทั่วโลก หลีกเลี่ยงอุปสรรคและมักจะสร้างความรำคาญเล็กน้อย

3
00:00:15,030 --> 00:00:17,520
‫มาดูกันว่ามันเป็นไปได้อย่างไร

4
00:00:18,360 --> 00:00:27,460
‫ดังนั้น จิ๊กซอว์ชิ้นต่อไปที่ชัดเจนและชัดเจนที่สุดที่เราต้องแก้ตรงนี้คือการทำให้ตาของเราเคลื่อนเข้าหาเรา

5
00:00:27,480 --> 00:00:29,100
‫มันไม่ดีที่พวกเขายืนอยู่ที่นั่น

6
00:00:29,130 --> 00:00:31,770
‫พวกเขายังต้องเคลื่อนไหวและจากนั้นพวกเขาจะต้องยิง

7
00:00:31,770 --> 00:00:34,800
‫ก่อนอื่น มาคิดกันก่อนว่าเราจะเคลื่อนไหวได้อย่างไร

8
00:00:35,340 --> 00:00:41,550
‫เวลาที่คุณเคลื่อนไหวด้วยสายตาจำเป็นต้องรู้เกี่ยวกับสิ่งกีดขวาง มันจำเป็นต้องทำสิ่งที่เรียกว่าการค้นหาเส้นทาง

9
00:00:41,550 --> 00:00:45,210
‫เพราะพูดว่า ฉันซ่อนตัวอยู่ในทางเดินนี้ และมันต้องการมาหาฉัน

10
00:00:45,240 --> 00:00:48,540
‫ต้องรู้ว่าไม่สามารถเคลื่อนที่ทะลุกำแพงได้

11
00:00:48,540 --> 00:00:53,880
‫มันจะต้องวางแผนเส้นทางเพื่อหลบสิ่งกีดขวางและเข้ามาหาฉัน

12
00:00:54,210 --> 00:01:01,260
‫วิธีการทำงานโดยทั่วไปในเกมโดยทั่วไป และโดยเฉพาะใน Unreal ที่นี่คือ เราสร้างเมชที่บอกเราว่าตำแหน่งใดที่สามารถเดินได้ภายในระดับ

13
00:01:01,260 --> 00:01:10,440
‫แล้วใช้อัลกอริธึมต่างๆ ซึ่งหนึ่งในนั้นเรียกว่าการค้นหาเส้นทางของดวงดาว

14
00:01:10,440 --> 00:01:18,190
‫คุณสามารถนำทางบนตาข่ายนี้และสร้างแผนเส้นทาง จากนั้น AI จะใช้แผนเส้นทางนี้เพื่อก้าวต่อไป

15
00:01:18,210 --> 00:01:20,360
‫นั่นคือโครงร่างของกระบวนการ

16
00:01:20,370 --> 00:01:22,260
‫โชคดีที่มีหลายอย่างที่ทำเพื่อเรา

17
00:01:22,260 --> 00:01:24,020
‫เราไม่ต้องเขียนโค้ดนี้ตั้งแต่เริ่มต้น

18
00:01:24,030 --> 00:01:28,290
‫สิ่งที่เราต้องทำคือ อย่างแรกเลย คือสามารถเห็น nav mesh ได้

19
00:01:28,290 --> 00:01:32,780
‫และในขณะนี้เราไม่สามารถมองเห็นตาข่ายได้เพียงบางส่วนเพราะไม่มีตาข่าย

20
00:01:32,790 --> 00:01:40,260
‫สิ่งที่เราต้องทำคือดูในหน้าต่างนักแสดงที่เราวางไว้ที่นี่ หรือดังนั้นเราจึงไปที่หน้าต่างและมองหานักแสดงที่วางไว้

21
00:01:40,620 --> 00:01:47,190
‫เราจำเป็นต้องค้นหา nav mesh และกำลังมองหา nav mesh bounds

22
00:01:47,190 --> 00:01:54,090
‫ตอนนี้มันสร้างวอลลุ่ม ชนิดของกล่อง และทุกอย่างภายในกล่องนั้นจะถูกตรวจสอบว่านำทางได้อย่างไร

23
00:01:54,090 --> 00:01:58,380
‫โดยพื้นฐานแล้ว ไม่ว่าจะแบนราบหรือไม่สูงชันเกินไป

24
00:01:58,950 --> 00:02:04,010
‫โดยพื้นฐานแล้ว ที่ซึ่งมีกำแพงอยู่นั้น คุณไม่สามารถทะลุกำแพงได้ คุณไม่สามารถเดินข้ามกำแพงได้ เพราะมันสูงชันเกินไป

25
00:02:04,020 --> 00:02:16,590
‫ดังนั้น หากเราลากปริมาตรของ nav mesh bounds และนำมันมาที่นี่แล้ววางผ่านพื้นเล็กน้อยเพื่อให้พื้นเป็นส่วนหนึ่งของการคำนวณการนำทางนั้น

26
00:02:16,590 --> 00:02:21,120
‫สิ่งที่เราต้องทำคือทำให้มองเห็นได้ ตาข่าย NAV

27
00:02:21,120 --> 00:02:28,110
‫คุณสามารถทำได้โดยคลิกที่ปุ่มแสดงที่ด้านบนซ้ายของวิวพอร์ตของคุณ จากนั้นคลิกที่การนำทางหรือใช้ทางลัด

28
00:02:28,110 --> 00:02:29,880
‫P ดังนั้นฉันจะใช้ทางลัด

29
00:02:29,880 --> 00:02:33,870
‫P และเมื่อเลือกได้ดีแล้ว คุณไม่จำเป็นต้องเลือกขอบเขตของเสียงด้วยซ้ำ

30
00:02:33,870 --> 00:02:40,800
‫คุณจะเห็นตาข่ายสีเขียวปรากฏขึ้นในปริมาตรของขอบเขตทันที ซึ่งบอกเราว่านี่คือพื้นที่ที่เดินได้

31
00:02:40,800 --> 00:02:50,580
‫ดังนั้นถ้าเรามีศัตรูอยู่ในพื้นที่นี้และเป้าหมายของเขาอยู่ในพื้นที่ด้วย มันก็จะพบเส้นทางตามตาข่ายนี้

32
00:02:50,760 --> 00:02:55,200
‫ตอนนี้เรามาดูกันว่าจะเกิดอะไรขึ้นถ้าเราย้ายสิ่งนี้ไปยังที่ที่มีอุปสรรค

33
00:02:55,200 --> 00:03:00,060
‫คุณจะเห็นได้ว่าตาข่ายตัดออกรอบสิ่งกีดขวางนี้

34
00:03:00,060 --> 00:03:07,680
‫สิ่งที่เราอยากทำจริงๆ คือ ให้เล่มนี้ครอบคลุมระดับทั้งหมดของเรา และคุณสามารถเลือกไม่ทำหรือทำเฉพาะในบางเซกเมนต์

35
00:03:07,680 --> 00:03:15,780
‫แต่วิธีที่ง่ายที่สุดคือเพียงเพิ่มขอบเขตของไดรฟ์ข้อมูลนี้ ซึ่งคุณทำได้

36
00:03:15,780 --> 00:03:20,310
‫หากคุณไปที่บานหน้าต่างรายละเอียดทางด้านขวา แสดงว่ามีการตั้งค่าแปรง และคุณสามารถเปลี่ยนขนาดของแปรงได้

37
00:03:20,310 --> 00:03:28,770
‫เพื่อให้คุณเห็นว่าเราสามารถทำให้มันใหญ่ขึ้น เราสามารถทำให้มันกว้างขึ้น และเป็นสีแดงเมื่อมีการคำนวณใหม่

38
00:03:28,770 --> 00:03:33,300
‫คุณจะเห็นว่ามันกำลังสร้าง nav mesh และยิ่งมีขนาดใหญ่เท่าใด การสร้าง

39
00:03:33,300 --> 00:03:35,640
‫nav mesh ก็ยิ่งยากขึ้นเท่านั้น

40
00:03:35,640 --> 00:03:37,590
‫แต่คุณจะเห็นว่าสิ่งนี้ใช้ได้ผล

41
00:03:37,590 --> 00:03:39,210
‫มันตัดทางเดิน

42
00:03:39,210 --> 00:03:43,000
‫มันตัดสิ่งกีดขวางที่เราเดินไปมาไม่ได้

43
00:03:43,020 --> 00:03:52,170
‫ส่วนที่สองของปริศนานี้คือการทำให้ตาของเราสามารถทำอัลกอริธึมการรูตบนตาข่ายนี้ได้

44
00:03:52,200 --> 00:03:57,930
‫เอาล่ะ ไปเปิดการควบคุมการมองของ BP Shooter กัน เพราะฉันต้องการแสดงให้คุณเห็นบางอย่างที่อยู่ในนี้

45
00:03:57,960 --> 00:04:02,370
‫ฉันจะเปิดโปรแกรมแก้ไขพิมพ์เขียวฉบับสมบูรณ์ที่นี่ และดูที่นี่

46
00:04:02,370 --> 00:04:06,180
‫มีองค์ประกอบที่เรียกว่าองค์ประกอบตามเส้นทาง

47
00:04:06,360 --> 00:04:16,230
‫ส่วนประกอบนั้นมีหน้าที่ในการค้นหา F mesh จากนั้นให้เราสร้างเส้นทางและติดตามพวกมันและเคลื่อนที่โดยอัตโนมัติ

48
00:04:16,230 --> 00:04:19,080
‫ดังนั้นเราจึงไม่ต้องสร้างฟังก์ชันใด ๆ ขึ้นมา

49
00:04:19,080 --> 00:04:24,300
‫สิ่งที่เราต้องทำคือใช้ฟังก์ชันที่มีอยู่ในตัวควบคุม AI ของเรา

50
00:04:24,300 --> 00:04:35,490
‫หากคุณไปค้นหาตัวควบคุม AI H และมองหาฟังก์ชันย้ายไปที่ ให้ย้ายไปด้วยวงเล็บเปิด

51
00:04:35,490 --> 00:04:37,200
‫แล้วมีสองสามตัวเลือกที่นี่

52
00:04:37,200 --> 00:04:40,350
‫เรามีหนึ่งที่จะย้ายเพื่อขอ

53
00:04:40,470 --> 00:04:45,510
‫มีตัวเลือกอื่น ๆ ที่นี่เช่นกัน แต่จริง ๆ แล้วพวกเขาใช้ชื่ออื่น

54
00:04:45,510 --> 00:04:55,350
‫ตอนนี้ ใน Unreal เวอร์ชันต่อมา เราได้ย้ายไปยังนักแสดง และเราได้ย้ายไปยังตำแหน่ง ซึ่งมีความแตกต่างเช่นเดียวกับจุดเน้นการตั้งค่าของเรา

55
00:04:55,350 --> 00:05:00,630
‫คุณสามารถตั้งโฟกัสไปที่บางสิ่งที่เคลื่อนไหวเหมือนนักแสดง หรือคุณสามารถตั้งค่าโฟกัสไปที่ปลายทางเฉพาะ

56
00:05:00,630 --> 00:05:06,420
‫เช่น จุดอ้างอิงในเส้นทางการลาดตระเวนของคุณ เช่น อาจเป็นการย้ายไปยังตำแหน่ง

57
00:05:06,420 --> 00:05:10,680
‫ดังนั้นฉันอยากให้คุณลองพยายามย้ายไปเป็นความท้าทายของคุณ

58
00:05:10,680 --> 00:05:17,850
‫ดังนั้นให้นำตาข่ายนำทางมาใช้ในฉากของคุณ ทำให้มันครอบคลุมฉากได้มากเท่าที่คุณต้องการเพื่อให้คุณสามารถเคลื่อนที่ไปมาและมี

59
00:05:17,910 --> 00:05:23,640
‫ฉันติดตามคุณในทุกสถานที่แล้วเรียกย้ายไปยังการกระทำหรือย้ายไปยังตำแหน่ง

60
00:05:23,640 --> 00:05:29,300
‫คุณเป็นผู้ตัดสินใจว่าโรงแรมใดจะเริ่มเล่นเพื่อให้ AI ไล่ตามเรา

61
00:05:29,310 --> 00:05:31,110
‫หยุดวิดีโอชั่วคราวแล้วไปกันเลย

62
00:05:32,330 --> 00:05:32,750
‫ตกลง.

63
00:05:32,750 --> 00:05:33,290
‫ยินดีต้อนรับกลับ.

64
00:05:33,350 --> 00:05:34,470
‫มาลองดูกัน

65
00:05:34,490 --> 00:05:35,870
‫ดังนั้นสิ่งแรกก่อน

66
00:05:35,870 --> 00:05:44,660
‫เราจะมี ฉันจะใช้การย้ายไปยังนักแสดงและเราจะต้องกำหนดเป้าหมายนักแสดง

67
00:05:44,660 --> 00:05:51,920
‫ไปที่มือปืนของเรา ฉันควบคุม CP และในนั้นเริ่มเล่นเราสามารถย้ายไปเป็นนักแสดงและเราได้นักแสดงแล้วผู้เล่น

68
00:05:51,920 --> 00:05:57,590
‫- ซึ่งเราได้จากการบรรยายครั้งที่แล้วลองดูกัน

69
00:05:57,590 --> 00:06:00,350
‫มีคุณสมบัติที่เป็นประโยชน์อื่น ๆ ที่นี่หรือไม่?

70
00:06:00,350 --> 00:06:01,940
‫เรามีรัศมีการยอมรับ

71
00:06:01,940 --> 00:06:04,010
‫ในขณะนี้ไม่มีรัศมีการยอมรับ

72
00:06:04,010 --> 00:06:06,140
‫โดยพื้นฐานแล้วมันเข้าใกล้มากที่สุดเท่าที่จะทำได้

73
00:06:06,140 --> 00:06:08,870
‫ฉันคิดว่ามันอาจจะเป็นการบุกรุกเล็กน้อย

74
00:06:08,870 --> 00:06:14,750
‫ฉันจะให้รัศมีการยอมรับเป็นสองเมตร ดังนั้นมันจะพยายามเข้าไปภายในสองเมตรจากเรา

75
00:06:15,110 --> 00:06:16,910
‫ไปข้างหน้าและสร้างสิ่งนั้น

76
00:06:17,690 --> 00:06:20,600
‫เสร็จแล้วก็เข้าเครื่องได้เลย

77
00:06:20,600 --> 00:06:21,740
‫และมาดูกัน

78
00:06:21,740 --> 00:06:29,690
‫ฉันจะไม่ขยายปริมาณการตีกลับที่นี่เพียงเพื่อให้คุณได้ทราบว่าเหตุใดเราจึงต้องการปริมาณการตีกลับในตอนแรก

79
00:06:29,690 --> 00:06:32,120
‫มาเริ่มกันด้วย alt p

80
00:06:32,780 --> 00:06:33,530
‫และนี่คือเรา

81
00:06:33,530 --> 00:06:38,000
‫เราอยู่บนเครือข่ายนำทาง และผู้ชายคนนี้ได้เคลื่อนเข้ามาหาเราโดยอัตโนมัติ

82
00:06:38,000 --> 00:06:45,380
‫แต่ถ้าฉันออกจากระบบนำทางนั้น เขาจะเข้าใกล้ฉันไม่ได้อีกต่อไปเพราะเขาหาเส้นทางไม่เจอ

83
00:06:45,380 --> 00:06:48,980
‫เขาไม่สามารถหาทางเข้าหาฉันได้

84
00:06:48,980 --> 00:06:55,100
‫สิ่งที่เราจะทำคือในความเป็นจริง เราไม่แน่ใจว่าเป็นสิ่งที่เกิดขึ้นจริงที่นี่ เพราะบางทีสิ่งที่เกิดขึ้นคือเขาอยู่ในรัศมีการยอมรับของฉัน

85
00:06:55,100 --> 00:07:01,550
‫และพวกเขาจะไม่ลองอีกครั้ง

86
00:07:01,550 --> 00:07:12,620
‫วิธีหนึ่งที่จะตรวจสอบได้ก็คือ ลบรัศมีการยอมรับออกแล้วคอมไพล์ใหม่ จากนั้นเราจะไปดูกันว่าเกิดอะไรขึ้น

87
00:07:12,620 --> 00:07:16,340
‫ใช่ เขาเข้ามาหาฉันทันที ถ้าฉันย้ายออกไป

88
00:07:16,340 --> 00:07:19,130
‫โดยพื้นฐานแล้วเขาลืมคำสั่งนั้นไป

89
00:07:19,130 --> 00:07:26,720
‫สิ่งที่เราอยากทำคือทำสิ่งนี้ใน tic เพราะโดยพื้นฐานแล้ว เมื่อเขามาถึงฉัน เขาจะเลิกคิดที่จะไล่ตามฉัน

90
00:07:26,720 --> 00:07:28,940
‫ลองย้ายไปที่ tic

91
00:07:28,940 --> 00:07:31,580
‫นี่ไม่ใช่วิธีที่เหมาะที่จะทำ แต่นั่นคือสิ่งที่เรากำลังจะทำ

92
00:07:31,580 --> 00:07:40,820
‫ตอนนี้ฉันกำลังจะคัดลอกลายเซ็นของ Tic จากนักแสดง H และฉันรู้ว่ามันอยู่ในส่วนสาธารณะ ดังนั้นฉันจะสร้างส่วนสาธารณะที่ด้านบน

93
00:07:42,770 --> 00:07:50,210
‫คัดลอกลายเซ็น ทำให้มันแทนที่ แค่ความปลอดภัย แล้วนำไปใช้ใน C++ และย้ายตัวแสดงการเคลื่อนไหวของเราเข้าไปที่เครื่องหมาย

94
00:07:50,210 --> 00:07:57,980
‫และรัศมีการยอมรับยังคงเป็นสองเมตรที่ลองทำตอนนี้ และเห็นได้ชัดว่ามันบ่นว่าเราไม่มี ผู้เล่น

95
00:07:57,980 --> 00:08:01,370
‫-- ตรงนั้น

96
00:08:01,370 --> 00:08:06,530
‫ไปกันเถอะ และทำให้แน่ใจว่าเรากำลังทำซ้ำบรรทัดนี้ที่ได้รับผู้เล่นคนแรก

97
00:08:06,530 --> 00:08:09,230
‫- ในห้องใต้หลังคาเช่นกัน

98
00:08:09,230 --> 00:08:14,180
‫และตอนนี้ เราควรจะสามารถทดสอบมันได้ถูกต้อง ทำ alt pig ในโลกนี้

99
00:08:14,180 --> 00:08:16,250
‫เขามาและรับเราภายในสองเมตร

100
00:08:16,250 --> 00:08:18,710
‫ฉันถอยห่างจากเขาและฉันจะดูสิ่งนั้น

101
00:08:18,710 --> 00:08:24,470
‫ครั้งนี้เขาไม่ได้เล็งมาที่ผมอย่างถูกต้องด้วยซ้ำ แต่เขาพยายามทำตาม

102
00:08:24,740 --> 00:08:29,630
‫แต่ทันทีที่ฉันออกจากเครือข่ายนำทางนั้น เขาก็ไม่รู้ว่าจะหาฉันเจอได้อย่างไร

103
00:08:29,630 --> 00:08:31,190
‫งั้นเรามาแก้ไขกันดีไหม?

104
00:08:31,190 --> 00:08:35,450
‫เราจะไปที่ปริมาณการตีกลับของ nav mesh

105
00:08:36,250 --> 00:08:37,390
‫ถ้าเลือกได้.

106
00:08:37,390 --> 00:08:37,990
‫เราจะไปที่นั่น.

107
00:08:37,990 --> 00:08:44,170
‫จากนั้นเราต้องการที่จะซูมออกที่นี่จริง ๆ เพื่อพยายามรวมระดับทั้งหมดของเรา

108
00:08:44,180 --> 00:08:49,210
‫ภายนอกระดับนี้ดูสกปรกไปหน่อย แต่นั่นเป็นเพียงวิธีที่สิ่งต่าง ๆ มักจะทำงาน

109
00:08:49,210 --> 00:08:52,990
‫นั่นคือคุณสร้างระดับเพื่อดูจากภายใน ไม่ใช่จากภายนอก

110
00:08:52,990 --> 00:08:55,480
‫เรามาทำให้มันกว้างกว่านี้กันเถอะ

111
00:08:55,480 --> 00:09:04,000
‫ทำให้มันสูงขึ้นมากเพื่อให้ครอบคลุมทุกระดับแล้วลากมันออกมาเพื่อให้ครอบคลุมขอบเขตทั้งหมดของระดับที่นี่

112
00:09:04,000 --> 00:09:12,790
‫แค่ทำให้กว้างขึ้นอีกนิด ยาวขึ้นอีกนิดด้วย และตรวจสอบให้แน่ใจว่าทั้งหมดนี้ถูกรวมไว้อย่างสมบูรณ์

113
00:09:13,150 --> 00:09:16,690
‫และคุณจะเห็นสีเขียวปรากฏขึ้นเมื่อคำนวณตาข่ายนำทาง

114
00:09:16,690 --> 00:09:26,140
‫และให้ตรวจสอบให้แน่ใจว่าการวัดการนำทางลดลงจนครอบคลุมขอบเขตที่ต่ำที่สุดในแผนที่ของเราซึ่งดูเหมือนว่าจะครอบคลุมอยู่ในขณะนี้

115
00:09:26,140 --> 00:09:33,760
‫ดังนั้นถ้าเราไปข้างหน้าและเราสามารถซ่อนและนำทางได้ในขณะนี้ที่เราได้ตั้งค่าทั้งหมดและเราสามารถทำ alt

116
00:09:33,760 --> 00:09:40,480
‫p เพื่อไปข้างหน้าและเล่นและเขาสามารถหาเราและติดตามเราได้ทุกที่ที่เราไปถึงในระดับนี้

117
00:09:40,780 --> 00:09:47,830
‫คุณจะเห็นได้ว่าผู้รับใช้ที่ภักดีที่ไว้ใจได้ของเรากำลังตามหลังเราไปทุกที่ที่เราเลือกไป

118
00:09:47,860 --> 00:09:51,040
‫เขาแค่ไล่ตามเราและตามเรา ซึ่งน่ารำคาญมาก

119
00:09:51,040 --> 00:09:53,830
‫แต่เขาสามารถทำเช่นนั้นได้

120
00:09:54,590 --> 00:09:55,190
‫บางสิ่งบางอย่าง

121
00:09:55,190 --> 00:10:05,450
‫ดังนั้นในการบรรยายครั้งนี้ เราได้เห็นวิธีที่เราสามารถสร้างมาตรการ NAV ของเรา และวิธีที่เราสามารถใช้มาตรการเหล่านี้เพื่อให้อากาศของเราติดตามเราไปทั่วระดับ

122
00:10:06,490 --> 00:10:12,220
‫การบรรยายครั้งต่อไป เราจะวนกลับไปรอบ ๆ เพื่อแก้ไขจุดบกพร่องและตรวจแนวสายตา

123
00:10:12,220 --> 00:10:16,330
‫เพื่อที่เราจะได้ไม่ต้องไล่ตามผู้เล่นตลอดเวลา

124
00:10:16,330 --> 00:10:17,050
‫ดูที่นั่น

125
00:10:18,390 --> 00:10:22,860
‫และฉันเพิ่งสังเกตเห็นข้อผิดพลาดเล็กๆ น้อยๆ ที่ฉันทำที่นี่ นั่นคือฉันไม่ได้เรียก

126
00:10:22,860 --> 00:10:25,620
‫super colon tic

127
00:10:25,620 --> 00:10:31,860
‫นั่นคือเหตุผลที่บางครั้งคุณได้รับข้อผิดพลาดแปลกๆ ที่ไม่สามารถอธิบายได้เหล่านี้ หากคุณไม่ได้โทรหา

128
00:10:31,890 --> 00:10:35,160
‫super สิ่งต่างๆ ก็ไม่ได้ผลตามที่คาดไว้เสมอไป

129
00:10:35,160 --> 00:10:42,270
‫นั่นเป็นสาเหตุที่โฟกัสหยุดทำงานเพราะโดยพื้นฐานแล้วเราได้ปิดการใช้งาน tic บนคอนโทรลเลอร์ระดับสูงซึ่งไม่ดี

130
00:10:42,330 --> 00:10:47,520
‫หากคุณเปิดใช้งานสิ่งนี้ ทุกอย่างควรทำงานตามปกติด้วยการตั้งค่าโฟกัส

