﻿1
00:00:04,280 --> 00:00:05,540
‫Merhaba ve hoş geldiniz.

2
00:00:05,540 --> 00:00:09,140
‫Bu derste, bizi dünya çapında takip eden bir gözümüz var.

3
00:00:09,140 --> 00:00:11,570
‫Beni gözden kaybettiğinde gidip araştıracak.

4
00:00:11,570 --> 00:00:13,730
‫Bu yüzden kaybetmek oldukça zor.

5
00:00:13,730 --> 00:00:20,120
‫Ama çok fazla köşeye gidersem, bana ayak uyduramayacak ve sonunda ilgisini

6
00:00:20,120 --> 00:00:25,160
‫kaybedip başlangıç noktasına geri dönecek.

7
00:00:25,370 --> 00:00:31,010
‫Bu derste davranış ağacı görevimizi tamamlayarak uygulayacağımız şey de bu olacak.

8
00:00:31,010 --> 00:00:32,930
‫Hadi içeri dalalım ve nasıl yapıldığını görelim.

9
00:00:33,550 --> 00:00:38,380
‫Bu yüzden görevimizin yürütülmesini, gerçekten bir şeyler yapmasını istiyoruz.

10
00:00:38,380 --> 00:00:42,400
‫Ve özellikle de bu kara tahta değerini temizleyebilmek, üzerinde ne yazıyorsa onu yapmak istiyoruz.

11
00:00:42,820 --> 00:00:44,830
‫Peki bunu nasıl yapacağız?

12
00:00:44,860 --> 00:00:49,210
‫Bunun için temel sınıfımıza gitmemiz ve orada nelerin uygulandığına bir göz atmamız gerekiyor.

13
00:00:49,210 --> 00:00:56,350
‫Aslında, görev karatahtası tabanının mirasından da görebileceğiniz gibi, bir seviye daha yukarı çıkmamız

14
00:00:56,890 --> 00:00:57,880
‫gerekiyor.

15
00:00:57,880 --> 00:01:00,540
‫Bunun üzerinde BT görev düğümümüz var.

16
00:01:00,550 --> 00:01:05,320
‫O halde F 12'yi kullanarak buradaki uygulamaya gidelim.

17
00:01:05,320 --> 00:01:13,720
‫BT görev düğümü başlık dosyasının üst kısmına doğru ilerlerseniz, bu sınıfla ilgili bilgileri görebilirsiniz.

18
00:01:13,720 --> 00:01:18,670
‫Ve en önemlisi de bunların büyük olasılıkla uygulamak isteyeceğimiz sanal işlevler

19
00:01:18,670 --> 00:01:19,960
‫olmasıdır.

20
00:01:20,260 --> 00:01:22,510
‫Yani ilki görevi yürütmektir.

21
00:01:22,510 --> 00:01:30,760
‫Bu, görev yürütülmeye başladığında çağrılır, daha sonra, örneğin bir koşul yanlış hale geldiği için yürütmeyi durdurmamız

22
00:01:30,760 --> 00:01:36,100
‫gerektiğine karar verildiğinde bir yönetim kurulu görevimiz vardır ve bu sinyali

23
00:01:36,100 --> 00:01:37,060
‫ayarladık.

24
00:01:37,060 --> 00:01:38,710
‫Bu yüzden bu görevi iptal eder.

25
00:01:39,040 --> 00:01:43,720
‫Tik görevi, görevin yürütüldüğü her zaman gerçekleşir, ancak ilk tikte gerçekleşmez.

26
00:01:43,720 --> 00:01:46,660
‫Böylece ilk tik bundan sonra görevi yürütmeyi çağıracaktır.

27
00:01:46,660 --> 00:01:49,540
‫Her seferinde kene görevi demeye devam edeceğiz.

28
00:01:50,140 --> 00:01:56,200
‫Ve bu bir tik'ten daha uzun sürebilecek davranışlar içindir, örneğin bir düşmana doğru hareket etmek birden

29
00:01:56,200 --> 00:01:57,400
‫fazla tik alabilir.

30
00:01:57,400 --> 00:01:59,710
‫Yani kene görevi bir şeyler yapmamızı sağlar.

31
00:01:59,710 --> 00:02:05,860
‫Her tik ve açık mesajı, bu göreve bir mesaj gönderebilecek iptal etme dışındaki diğer şeyler içindir.

32
00:02:05,860 --> 00:02:09,250
‫Bu özel işlev hakkında gerçekten endişelenmemize gerek yok.

33
00:02:09,250 --> 00:02:15,370
‫Dolayısıyla, ilk üçü gerçekten daha çok ilgilendiklerimizdir ve görevimiz basitçe yürütülür

34
00:02:15,370 --> 00:02:21,370
‫yürütülmez karatahta değerini temizleyeceği ve ardından hemen biteceği için.

35
00:02:21,370 --> 00:02:24,100
‫Birden fazla tik boyunca bir şeyler yapması gerekmez.

36
00:02:24,100 --> 00:02:30,190
‫Biz execute göreviyle ilgileniyoruz, bu nedenle bu başlık dosyasında execute görevi için arama

37
00:02:30,190 --> 00:02:37,420
‫yaparsak, tam imzanın burada olduğunu ve dönüş türünün bu boot düğümü sonucu olduğunu görebilirsiniz.

38
00:02:38,080 --> 00:02:43,660
‫Ve iki şey alır: sahip bileşeni ve düğüm belleği.

39
00:02:43,720 --> 00:02:48,880
‫Şimdi, düğüm belleğini almasının nedeni biraz karmaşıktır, ancak burada

40
00:02:48,880 --> 00:02:58,930
‫bilinmesi gereken önemli şey, bir görev sınıfının veya bir görev sınıfı örneğinin, tüm yazı tahtaları başına yalnızca bir tane olduğudur.

41
00:02:58,930 --> 00:03:04,960
‫Esasen, her şey arasında paylaşılırlar, bu nedenle belirli bir davranış ağacındaki

42
00:03:04,960 --> 00:03:12,400
‫bir düğümle ilgili bazı bilgileri kaydetmek istiyorsanız, yapmanız gereken şey bu bellek işaretçisinde

43
00:03:12,400 --> 00:03:13,660
‫saklamaktır.

44
00:03:13,660 --> 00:03:16,210
‫Ancak bununla ilgili bir şey yapmayacağız.

45
00:03:16,210 --> 00:03:18,670
‫Bunu yapmak için biraz daha ileri seviyeye ihtiyaç var.

46
00:03:18,670 --> 00:03:23,860
‫Ve bunu aşmanın başka yolları da var, örneğin Unreal'ın her davranış ağacı için birden fazla örnek oluşturmasına

47
00:03:23,860 --> 00:03:28,450
‫izin vermek gibi, bu biraz daha düzgün olabilir veya olmayabilir, ancak bu biraz daha verimli bir yol

48
00:03:28,450 --> 00:03:30,430
‫ve bu konuda endişelenmemize gerek yok.

49
00:03:30,430 --> 00:03:35,620
‫Nihayetinde ilgilendiğimiz şey, kendi a bileşenimize, davranış ağacı bileşenine ve oradan da

50
00:03:35,620 --> 00:03:40,930
‫piyon vb. gibi diğer şeylere ulaşabilmemizdir. Ancak bu da başka bir

51
00:03:40,930 --> 00:03:43,270
‫dersin konusu.

52
00:03:43,270 --> 00:03:48,910
‫Şimdi ilginç ve önemli olan sadece yürütme görevimizi uygulamaktır.

53
00:03:48,910 --> 00:03:55,450
‫Bu yüzden imzayı kopyalayacağız, açık tahta değerimiz H'ye gideceğiz ve bu genel not olarak

54
00:03:55,450 --> 00:04:00,040
‫görelim, sanırım bu varsayılan bölümde olduğu için korunacak.

55
00:04:00,040 --> 00:04:04,930
‫Bu yüzden kendimize korumalı bir bölüm oluşturacağız ve buraya yapıştıracağız ve sonra devam edeceğiz ve sadece güvenli

56
00:04:04,930 --> 00:04:08,500
‫olduğundan emin olmak için bir geçersiz kılma oluşturacağız veya koyacağız.

57
00:04:08,500 --> 00:04:14,500
‫Ve sonra C++'da bir uygulama oluşturacağız, geçersiz kılarken her zaman super'i çağırmak

58
00:04:14,500 --> 00:04:21,520
‫istediğimizi hatırlayarak, super execute task with the owner component and the node memory being

59
00:04:21,520 --> 00:04:24,460
‫called up to our parent here.

60
00:04:24,460 --> 00:04:30,790
‫Ve sonra yapmak istediğimiz şey, anahtarı temizleyebilmek için yazı tahtamızı ele geçirmektir.

61
00:04:30,790 --> 00:04:32,230
‫Burada önemli olan iki şey var.

62
00:04:32,230 --> 00:04:35,140
‫Öncelikle, hangi Anahtarın seçildiğini nereden biliyoruz?

63
00:04:35,140 --> 00:04:41,230
‫Blackboard Base H'ye gidersek, oradaki yöntemlerden birinin seçili Blackboard Anahtarını al olduğunu

64
00:04:41,230 --> 00:04:42,340
‫görebilirsiniz.

65
00:04:42,340 --> 00:04:48,220
‫Böylece bunu C++'ınızda kolayca çağırabilir, Blackboard Key'i seçebilir ve bu da geri dönecektir.

66
00:04:48,220 --> 00:04:54,730
‫Üzerine gelirsek, davranış ağacında seçilen yazı tahtası tuşunun F adı olan bir F adı döndürür.

67
00:04:54,730 --> 00:04:59,380
‫Şimdi, yapmamız gereken bir diğer şey de bu davranış ağacıyla ilgili yazı tahtasını gerçekten ele

68
00:04:59,380 --> 00:05:00,280
‫geçirebilmektir.

69
00:05:00,280 --> 00:05:02,380
‫Bunun için de kendimize ait bir bilgisayarımız var.

70
00:05:02,380 --> 00:05:07,990
‫Şimdi, burada geçirilen owner comp türünün aslında bir işaretçi değil, bir referans olduğuna dikkat edin.

71
00:05:07,990 --> 00:05:09,850
‫Yani başlangıç için boş olamaz.

72
00:05:09,850 --> 00:05:10,720
‫Bu harika.

73
00:05:10,720 --> 00:05:15,730
‫Ancak bu aynı zamanda ok operatörü yerine nokta operatörünü kullanmamız gerektiği anlamına

74
00:05:15,730 --> 00:05:21,910
‫gelir çünkü bir işaretçi kullanmıyoruz ve buradan basitçe yazı tahtası bileşenini alabiliriz.

75
00:05:21,910 --> 00:05:26,260
‫Böylece, üzerine geldiğinizde yazı tahtası bileşenini alır, bu yazı tahtası bileşenine bir işaretçidir,

76
00:05:26,260 --> 00:05:29,470
‫bu nedenle ok operatörlerini kullanmanız gerekecektir.

77
00:05:29,470 --> 00:05:32,680
‫Yani tahtadaki tuşları nasıl temizleyeceğimizi zaten biliyoruz.

78
00:05:32,880 --> 00:05:34,590
‫Rakipler, bu sizin mücadeleniz olacak.

79
00:05:34,590 --> 00:05:36,690
‫Umarım meydan okuma çok karmaşık değildir.

80
00:05:36,690 --> 00:05:38,620
‫Seçili anahtarı silmek istiyorsunuz.

81
00:05:38,800 --> 00:05:41,730
‫Bunu daha önce nerede yaptığımızı kontrol edebilirsiniz.

82
00:05:42,240 --> 00:05:44,910
‫Bunu yapmak için herhangi bir eklentiye ihtiyacınız var mı?

83
00:05:44,910 --> 00:05:53,550
‫Belki de karatahtanın, davranış ağacınızda seçilen anahtarı temizlemek istediğimiz anahtar olarak kullanmayı içermesi gerekir.

84
00:05:53,550 --> 00:05:55,530
‫Videoyu durdurun ve bir deneyin.

85
00:05:55,560 --> 00:05:56,670
‫Tamam, tekrar hoş geldin.

86
00:05:56,670 --> 00:05:58,740
‫O zaman bir deneyelim.

87
00:05:58,740 --> 00:06:01,560
‫İlk olarak yazı tahtası bileşenimiz var.

88
00:06:01,560 --> 00:06:03,060
‫Burada hata operatörünü kullanalım.

89
00:06:03,360 --> 00:06:04,560
‫Hiçbir şey çıkmıyor.

90
00:06:04,560 --> 00:06:11,910
‫Bu yüzden ihtiyacım olduğunu varsayıyorum ve gerçekten de bazı kırmızı dalgalı çizgiler var, davranış ağacını yapmak için buraya bir karma

91
00:06:11,910 --> 00:06:15,960
‫eklemeye ihtiyacım var ve sonra burada ve şimdi karatahta bileşeni.

92
00:06:15,960 --> 00:06:21,300
‫Umarım otomatik tamamlama özelliğim çalışıyordur ve bu da temizlememi sağlayacaktır.

93
00:06:21,300 --> 00:06:23,580
‫Hafızalarımızı tazelemeye çalışalım.

94
00:06:23,580 --> 00:06:25,230
‫Bunu daha önce nerede yapmıştık?

95
00:06:25,230 --> 00:06:30,810
‫Nişancı I, Kontrolör CP'ye gidip burada ne olduğuna bakarsak, elimizde net bir değer olduğunu

96
00:06:30,810 --> 00:06:31,500
‫görürüz.

97
00:06:31,500 --> 00:06:32,790
‫Aradığımız kişi bu.

98
00:06:32,790 --> 00:06:35,430
‫Öyleyse bu net değeri deneyelim.

99
00:06:35,430 --> 00:06:36,600
‫Peki ne alıyor?

100
00:06:36,600 --> 00:06:41,370
‫Ya bir F tuşu ya da bir F adı alır, alabileceğimiz harika bir F adı.

101
00:06:41,370 --> 00:06:46,830
‫Ve bunu bu sınıfta bulunan get selected blackboard anahtarıyla elde edebileceğimizi nerede söylemiştik, çünkü bu anahtar

102
00:06:46,830 --> 00:06:48,030
‫ana sınıfta bulunuyor.

103
00:06:48,030 --> 00:06:51,300
‫Bu yüzden Blackboard Key'i seçin ve bu kadar basit.

104
00:06:51,300 --> 00:06:53,910
‫Seçilen Blackboard Anahtarının değerini temizliyoruz.

105
00:06:53,910 --> 00:06:55,590
‫Şimdi, yapmamız gereken son bir şey var.

106
00:06:55,590 --> 00:06:57,060
‫Bu senin mücadelenin bir parçası değildi, o yüzden endişelenme.

107
00:06:57,060 --> 00:07:03,240
‫Eğer bunu bilmiyorsanız, geri dönmemiz gerekiyor çünkü clear blackboard value execute görevimiz için bir

108
00:07:03,240 --> 00:07:04,680
‫geri dönüş değeri var.

109
00:07:04,680 --> 00:07:06,810
‫Ve geri dönüş değeri oldukça ilginç.

110
00:07:06,810 --> 00:07:07,410
‫Bir göz atalım.

111
00:07:07,410 --> 00:07:12,600
‫Bunu bir F 12 ile takip edelim ve execute testimizden ne gibi farklı durumlar döndürebileceğimizi görelim.

112
00:07:12,600 --> 00:07:14,400
‫Şimdi ilki başarılı oldu.

113
00:07:14,400 --> 00:07:14,760
‫Harika.

114
00:07:14,760 --> 00:07:19,710
‫Bu temel olarak davranış ağacına bu düğümün yürütülmesinin bittiğini ve bir sonrakine geçebileceğimizi

115
00:07:19,710 --> 00:07:20,910
‫bildirir.

116
00:07:20,910 --> 00:07:21,930
‫Yine başarısız oldu.

117
00:07:21,930 --> 00:07:27,450
‫Bir sonrakine geçebilmemiz için bu işlem tamamlandı, ancak bu kez başarısız olduğunu söylüyor.

118
00:07:27,450 --> 00:07:34,500
‫Böylece, örneğin sıra düğümleri veya seçilen düğümlerimiz için bu düğümlerin aslında ne yapması gerektiğine

119
00:07:34,500 --> 00:07:36,750
‫dair farklı göstergeler verir.

120
00:07:37,260 --> 00:07:44,850
‫Daha sonra, temelde başarısızlıkla aynı olan aborted'e ulaştık ve devam ediyoruz.

121
00:07:44,850 --> 00:07:51,420
‫Bir yürütme görevinden devam ederken geri dönerseniz, temel olarak ben size aksini söyleyene kadar tick'i çağırmaya

122
00:07:51,420 --> 00:07:57,120
‫devam etmeniz gerektiğini söyleyecektir, ben şimdi bitirdim diyene kadar bunu kullanmayacağız.

123
00:07:57,120 --> 00:08:02,700
‫Ancak uzun süre çalışan bir görev oluşturmanız gerekirse, birden fazla tikle karşılaşacağımızı aklınızda tutmanızda

124
00:08:02,700 --> 00:08:03,660
‫fayda var.

125
00:08:03,660 --> 00:08:06,060
‫O zaman devam etmek için geri dönmemiz gerekecek.

126
00:08:06,060 --> 00:08:08,220
‫Ama dediğim gibi, biz başarılı olmak istiyoruz.

127
00:08:08,400 --> 00:08:10,260
‫O zaman içeri girip bunu yapalım.

128
00:08:10,260 --> 00:08:14,490
‫EB Beat düğüm sonucunu döndür iki nokta üst üste, iki nokta üst üste.

129
00:08:14,490 --> 00:08:20,550
‫Ve başarılı olacak çünkü ne olursa olsun temelde bu değeri temizlemeyi başardık.

130
00:08:20,760 --> 00:08:25,470
‫Böylece devam edip tüm bunları kaydedebilir, editöre gidebilir ve derlemeye basabiliriz.

131
00:08:25,470 --> 00:08:31,710
‫Ve bu tamamlandığında, devam edelim ve yapay zekamızı ve davranış ağacımızı açalım.

132
00:08:31,740 --> 00:08:33,020
‫Peki o vuruş nerede?

133
00:08:33,030 --> 00:08:35,490
‫Ve onu ana pencereye yerleştiriyorum ve bir göz atalım.

134
00:08:35,490 --> 00:08:40,800
‫Artık bilinen son konuma gitmemize, karatahta değerini temizlememize, beş dakika beklememize ve

135
00:08:40,800 --> 00:08:47,250
‫ardından bu son bilinen oyuncu konumunun araştırılmasının kaldırılmış olması gerektiğini görmemize izin verebilecek

136
00:08:47,250 --> 00:08:52,200
‫bir temiz karatahta değerimiz var, bu yüzden başlangıç konumumuza geri dönmeliyiz.

137
00:08:52,200 --> 00:08:56,790
‫Şimdi görev tam olarak uygulandığına göre bu davranışın şimdi çalışıp çalışmadığını görelim.

138
00:08:56,800 --> 00:09:00,450
‫Yani bana geliyor, beni araştırıyor.

139
00:09:00,480 --> 00:09:01,800
‫Gidip saklanacağım.

140
00:09:01,800 --> 00:09:03,000
‫O zaman gidip saklanalım.

141
00:09:03,150 --> 00:09:04,200
‫Araştırmaya geliyor.

142
00:09:04,200 --> 00:09:05,550
‫Gidip tekrar saklanalım.

143
00:09:05,760 --> 00:09:07,290
‫O zaman git ve saklan.

144
00:09:07,830 --> 00:09:10,080
‫Bakalım onu orada görebilecek miyiz?

145
00:09:10,080 --> 00:09:16,020
‫Şu anda bekliyor olmalı ve sonra başlangıç konumuna geri dönecek, bu da ne yazık ki benimle

146
00:09:16,020 --> 00:09:18,420
‫kesişmesine neden oluyor.

147
00:09:18,420 --> 00:09:25,350
‫Şimdi bunun gerçekten beklediğimiz gibi çalışıp çalışmadığını, düşman penceremizi getirip sağ tarafa

148
00:09:25,350 --> 00:09:29,820
‫yerleştirerek ve ana penceremizi sol tarafa koyarak görelim.

149
00:09:29,820 --> 00:09:34,890
‫Biraz sıkışık ama idare edebiliriz ve sonra bu adamdan bir kez daha kaçmayı deneyeceğiz

150
00:09:34,890 --> 00:09:37,800
‫ve davranışlarına ne olacağını göreceğiz.

151
00:09:37,800 --> 00:09:41,910
‫Bilinen son oyuncu konumuna gittiğini görebilirsiniz.

152
00:09:42,510 --> 00:09:45,990
‫Ve şimdi değeri temizlemiş olarak bekliyor.

153
00:09:45,990 --> 00:09:51,360
‫Ve sonra şuraya geçeceğini görebilirsiniz ve dekoratörlerdeki bu kırmızı çubukların bize bu iki koşulun

154
00:09:51,360 --> 00:09:54,030
‫da doğru olmadığını söylediğini görebilirsiniz.

155
00:09:54,030 --> 00:09:55,950
‫Yani ikisini de yapamaz.

156
00:09:55,950 --> 00:09:57,840
‫Sonunda, başlangıç konumuna taşındı.

157
00:09:57,840 --> 00:10:01,170
‫Yani şimdi titriyor çünkü temelde hiçbir şey yapamıyor.

158
00:10:01,320 --> 00:10:09,810
‫Yani temel olarak bu derste kod çalıştırmak için görevleri nasıl alabileceğimizi gördük, görev çalıştırmadan dönebileceğiniz

159
00:10:09,810 --> 00:10:14,910
‫farklı durumları, görevden yazı tahtasını nasıl alacağımızı ve ayrıca bir yazı

160
00:10:14,910 --> 00:10:19,890
‫tahtası görevinde o anda seçili olan tuşu nasıl alacağımızı anladık.

161
00:10:19,890 --> 00:10:26,310
‫Bir sonraki derste, tahta davranış ağacının dışındaki dünyayı nasıl ele geçirebileceğimizi, bir davranış ağacı

162
00:10:26,310 --> 00:10:30,450
‫görevinin içinden piyonu nasıl ele geçirebileceğimizi göreceğiz.

163
00:10:30,450 --> 00:10:31,080
‫Orada görüşürüz.

