﻿1
00:00:04,310 --> 00:00:05,240
‫Merhaba ve hoş geldiniz.

2
00:00:05,240 --> 00:00:11,660
‫Bu derste, A ile çok ilginç şeyler yapmamıza olanak tanıyan iki yeni varlık türü olan davranış ağacı

3
00:00:11,660 --> 00:00:16,640
‫ve yazı tahtasını tanıtıyoruz. I..

4
00:00:16,640 --> 00:00:18,740
‫Çok daha karmaşık hale getirmemize izin verin.

5
00:00:18,740 --> 00:00:23,600
‫Çok kolay bir şekilde dalalım ve bunları nasıl kullandığımızı ve kurduğumuzu görelim.

6
00:00:25,140 --> 00:00:25,410
‫Tamam.

7
00:00:25,410 --> 00:00:28,970
‫Bu yüzden bazı sofistike yapay zeka davranışları yaratmak istiyoruz.

8
00:00:28,980 --> 00:00:33,960
‫Unreal'da bunu genellikle davranış ağaçları adı verilen bir sistem kullanarak yaparız.

9
00:00:33,990 --> 00:00:35,050
‫Şimdi, bunlar nedir?

10
00:00:35,070 --> 00:00:38,990
‫Bunu öğrenmenin en iyi yolu bir tane yaratmaktır.

11
00:00:39,000 --> 00:00:41,970
‫O halde devam edelim ve sağ tıklayıp gidelim.

12
00:00:41,970 --> 00:00:45,150
‫Burada yapay zekanın altına bakıyoruz.

13
00:00:45,150 --> 00:00:48,450
‫Ve burada iki seçenek var davranış, ağaç ve yazı tahtası.

14
00:00:48,480 --> 00:00:51,050
‫Bunların ikisini de isteyeceğiz.

15
00:00:51,060 --> 00:00:54,650
‫Şimdi gidip davranış ağacıyla başlayalım.

16
00:00:54,660 --> 00:00:59,670
‫Bunun ön eki BHT'dir ve biz buna düşman diyeceğiz.

17
00:00:59,670 --> 00:01:01,320
‫Yani davranış ağacı düşmanı.

18
00:01:01,350 --> 00:01:03,780
‫Sadece bununla bitiriyorum.

19
00:01:03,780 --> 00:01:04,490
‫Al bakalım.

20
00:01:04,500 --> 00:01:09,180
‫Ayrıca orada bir yazı tahtası olan diğer şeyi de oluşturmamız gerekiyor.

21
00:01:09,180 --> 00:01:11,250
‫Şimdi, kara tahta da nedir?

22
00:01:11,250 --> 00:01:12,300
‫Bu konuya birazdan geleceğiz.

23
00:01:12,300 --> 00:01:15,930
‫Ama biz buna sadece b b alt çizgi düşmanı diyeceğiz.

24
00:01:15,940 --> 00:01:19,110
‫Daha önce de söyledim, karatahta davranış ağacını yener.

25
00:01:19,110 --> 00:01:22,320
‫Hazır başlamışken, burada benimle ilgili birkaç şey var.

26
00:01:22,320 --> 00:01:29,640
‫A adında yeni bir klasör oluşturacağım. I. ve yazı tahtasını, davranış ağacını hareket ettireceğiz.

27
00:01:29,700 --> 00:01:33,900
‫Ve buralarda bir yerde atıcımız, yapay zeka kontrolörümüz var.

28
00:01:33,900 --> 00:01:40,530
‫Tüm bunlar buraya taşınır ve ardından yapay zeka ile ilgili her şeyle ilgilenmek için yapay zeka klasörümüze gidebiliriz.

29
00:01:41,070 --> 00:01:45,450
‫Öncelikle davranış ağacımızı açalım ve ana pencereye yerleştirelim.

30
00:01:45,660 --> 00:01:47,550
‫Bu da ne böyle?

31
00:01:47,550 --> 00:01:52,890
‫Dolayısıyla bu, davranış ağaçları oluşturmamıza olanak tanır; burada davranışın bir kısmının izleme için olduğunu

32
00:01:52,890 --> 00:01:53,880
‫söyleyebilirsiniz.

33
00:01:53,880 --> 00:01:55,350
‫Bir kısmı trollemek için.

34
00:01:55,350 --> 00:02:00,180
‫Bir kısmı başka bir şey için, kapıları açmak için, bu tür şeyler için.

35
00:02:00,180 --> 00:02:06,480
‫Tipik olarak davranışları çok sayıda davranış ağacı ve alt ağaçlar vb. olarak yapılandırırlar.

36
00:02:06,480 --> 00:02:14,070
‫Tüm bunların ayrıntılı olarak devam ettiğini göreceğiz, ancak oyunlarınızda doğal davranışları bir araya getirmenin harika bir yolu

37
00:02:14,070 --> 00:02:15,780
‫olduğunu söylemek yeterli.

38
00:02:16,080 --> 00:02:17,610
‫Şimdi bu her şey ve her şeyin sonu değil.

39
00:02:17,610 --> 00:02:19,440
‫Çok sayıda yapay zeka tekniği var.

40
00:02:19,440 --> 00:02:23,820
‫Oyununuz için tercih etmek istediğiniz oyun bu olmayabilir, ancak harika bir başlangıçtır ve

41
00:02:23,820 --> 00:02:26,040
‫bununla oldukça fazla şey başarabilirsiniz.

42
00:02:26,520 --> 00:02:30,620
‫Şimdi üstte görebileceğimiz bir sonraki şey, sağda, bu iki varlık birbirine bağlı.

43
00:02:30,630 --> 00:02:33,000
‫Davranış ağacı ve kara tahta.

44
00:02:33,000 --> 00:02:35,100
‫Kara tahta da neyin nesi?

45
00:02:35,100 --> 00:02:41,520
‫Kara tahta, A harfinin hafızası gibidir. I. Esasen bir grup değişkeni depoladığınız

46
00:02:41,520 --> 00:02:42,240
‫yerdir.

47
00:02:42,240 --> 00:02:46,650
‫Bunları oyundan giriyorsunuz, tıpkı animasyon sisteminde yaptığımız

48
00:02:46,650 --> 00:02:51,150
‫gibi, oyun tarafından belirlenen bu farklı özelliklere sahipsiniz.

49
00:02:51,150 --> 00:02:53,820
‫Aynı şeyi yapay zeka için de yapıyoruz.

50
00:02:53,850 --> 00:03:00,180
‫Oyun dünyası hakkında bilgi veren birçok özellik belirliyoruz ve ardından davranış ağacı bu özelliklerden

51
00:03:00,180 --> 00:03:03,540
‫yararlanarak ne yapacağına karar veriyor.

52
00:03:03,540 --> 00:03:09,510
‫Bu özellikleri ayarlayabilir, bunları bir bellek olarak kullanabilir, bu özelliklerden okuyabilir ve tüm bu güzel

53
00:03:09,540 --> 00:03:10,680
‫şeyleri yapabilir.

54
00:03:10,680 --> 00:03:17,790
‫Bunu göz önünde bulundurarak, davranış ağacımızı blackboard'da birbirleriyle bağlantılı olacak şekilde nasıl kurabiliriz?

55
00:03:18,030 --> 00:03:20,460
‫Pekala, ayrıntılar bölmemizi genişleteceğiz.

56
00:03:20,460 --> 00:03:26,010
‫Burada bu yazı tahtası varlığının olduğunu görebilirsiniz ve yazı tahtası varlığı bu b b b düşmanı

57
00:03:26,010 --> 00:03:32,790
‫I yazı tahtası varlığına bağlanacak şekilde otomatik olarak bizim için doldurulmuş gibi görünüyor.

58
00:03:33,000 --> 00:03:38,730
‫Şimdi bu varlıkları kullanmak için C++'dan biraz ayrılacağız çünkü davranış ağaçları

59
00:03:38,730 --> 00:03:42,420
‫ve yazı tahtaları tamamen editör içinde.

60
00:03:42,420 --> 00:03:44,460
‫Bunlar plan falan değil.

61
00:03:44,460 --> 00:03:49,320
‫Bunlar kendi editör araçlarıdır ve bunlarla C++'da arayüz oluşturabiliriz.

62
00:03:49,320 --> 00:03:53,580
‫Ancak bu, önümüzdeki birkaç derste C++'ın yanı sıra editörü de kullanacağımız anlamına geliyor.

63
00:03:53,580 --> 00:03:54,960
‫Gerçi o kadar da planlı değil.

64
00:03:54,960 --> 00:04:00,810
‫Bu davranış ağacına ve kara tahtaya sahip olmamız harika, ama bunları gerçekte

65
00:04:00,810 --> 00:04:02,400
‫nasıl kullanacağız?

66
00:04:02,400 --> 00:04:05,580
‫Bunun için yapay zeka kontrolörümüze geri dönüyoruz.

67
00:04:05,580 --> 00:04:14,640
‫Hatırlarsanız, I kontrolörü davranışlarımızın yürütülmesinden tamamen sorumludur ve bu durum burada da istisna değildir.

68
00:04:14,820 --> 00:04:19,110
‫Davranış ağacı, yapay zeka kontrolörünün kullanabileceği veya çalıştırabileceği başka bir şeydir.

69
00:04:19,260 --> 00:04:24,810
‫Bunu yapmanın yolu, yapay zeka kontrolümüze gideceğiz ve hangi davranış ağacını çalıştırmasını

70
00:04:24,810 --> 00:04:30,090
‫istediğimizi blueprint'te referans göstermenin bir yolunu bulmamız gerekiyor.

71
00:04:30,600 --> 00:04:35,130
‫Bu yüzden yapacağım ilk şey aslında kontrol CP'sine gidip TTIC'deki şeyleri

72
00:04:35,130 --> 00:04:41,640
‫yorumlamak olacak çünkü bu işlevselliği davranış ağacı işlevselliği ile değiştireceğiz.

73
00:04:41,760 --> 00:04:46,440
‫Bu da artık ihtiyacımız olmadığı için buradaki kabul yarıçapını kaldırabileceğim anlamına geliyor.

74
00:04:46,440 --> 00:04:51,180
‫Bunun yerine yeni davranış için bir işaretçi kullanacağız.

75
00:04:51,780 --> 00:04:59,100
‫Ve bunu The American Way Tree ve pointer olarak hecelemek zorundayım, orada istediğimiz davranış ağacı budur.

76
00:04:59,100 --> 00:05:02,310
‫Ve bunu önünde bir sınıf ile beyan etmem gerekiyor.

77
00:05:02,310 --> 00:05:08,910
‫Ve burada temel olarak söylemek istediğim şey, bunun yapay zeka davranışı olduğu ve

78
00:05:09,770 --> 00:05:13,340
‫Tutarlılık açısından burada Amerikan yazımını kullanacağım.

79
00:05:13,340 --> 00:05:17,630
‫İşte bu, şimdi davranışı gerçekten çalıştırmak için burada istediğimiz AI davranışıdır.

80
00:05:17,630 --> 00:05:18,560
‫Daha basit olamazdı.

81
00:05:18,560 --> 00:05:22,700
‫Yine, göz kontrolünün bunun için yerleşik bir işlevi vardır.

82
00:05:22,700 --> 00:05:24,500
‫Koşma davranışımız var.

83
00:05:24,500 --> 00:05:26,390
‫Ağaç işlevi bir boolean'a dönüşür.

84
00:05:26,390 --> 00:05:30,650
‫Başarılı bir şekilde uygulayabilseniz de uygulamasanız da, uygulamaya başlayın.

85
00:05:30,650 --> 00:05:35,930
‫Ve yeni davranış ağacına atanan beat varlığını alır.

86
00:05:36,290 --> 00:05:40,040
‫Bu yüzden kullanmak isteyeceğimiz şey bu olacak ve bunu begin play'de yapabiliriz.

87
00:05:40,040 --> 00:05:44,660
‫Şimdi yapacağımız şey, öncelikle burada gerçekten bir davranış ağacımız olup olmadığını kontrol etmektir.

88
00:05:44,660 --> 00:05:47,210
‫Bu yüzden ben davranıyorum diyeceğiz.

89
00:05:48,270 --> 00:05:53,640
‫null pointer'a eşit değildir çünkü başka türlü kullanmak istemeyiz.

90
00:05:53,640 --> 00:05:59,130
‫Ve sonra yapabileceğimiz şey, AI davranışımız olarak adlandırılan davranış ağacını çalıştırabiliriz.

91
00:05:59,160 --> 00:06:06,420
‫Bir yapay zeka davranışını çalıştırmak gerçekten bu kadar basit ve devam edip derleyebiliriz.

92
00:06:07,420 --> 00:06:12,790
‫Davranış ağaçlarıyla yapabileceğimiz bir şey daha var, onları çalışma zamanında görebiliriz, ancak bunu yapmak

93
00:06:12,790 --> 00:06:15,150
‫için burada bir tür düğüm olması gerekir.

94
00:06:15,160 --> 00:06:18,910
‫Yani ne işe yaradığını tam olarak anlamadan sadece bir düğüm ekleyeceğiz.

95
00:06:18,910 --> 00:06:23,830
‫Bir sıra düğümü ekleyeceğim ve bunu kök düğümden aşağı doğru sürükleyerek bağlayacağım, kök

96
00:06:23,830 --> 00:06:28,780
‫düğümün altında fareyle üzerine geldiğimde vurgulanan kısım sıra düğümünün üstündeki kısma

97
00:06:28,780 --> 00:06:29,350
‫kadar.

98
00:06:29,440 --> 00:06:30,850
‫Ve bunu saklayacağım.

99
00:06:31,240 --> 00:06:39,700
‫Gidip oynat düğmesine basacağım ve davranış ağacı varlığıma gideceğim ve burada bir açılır menü görebilmeniz gerekir,

100
00:06:39,700 --> 00:06:43,420
‫ancak şu anda çalışmadığı için göremiyoruz.

101
00:06:43,420 --> 00:06:44,530
‫O zaman oynamayı bırakalım.

102
00:06:45,010 --> 00:06:46,660
‫Peki neden çalışmıyor?

103
00:06:46,660 --> 00:06:49,360
‫Çünkü atıcı kontrolörümüze bağlamadık.

104
00:06:49,360 --> 00:06:52,840
‫O halde bunu bağlayabilmeniz için şu mini meydan okumayı yapalım.

105
00:06:53,110 --> 00:06:54,610
‫Umarım çok zor olmaz.

106
00:06:55,060 --> 00:06:56,170
‫Tamam, tekrar hoş geldin.

107
00:06:56,170 --> 00:07:01,330
‫Yani buraya gidip bir göz atarsak, yapay zeka davranışımızı arıyoruz.

108
00:07:01,510 --> 00:07:04,300
‫Bazı nedenlerden dolayı, benim için görünmesi için yeniden derlenmesi gerekiyordu.

109
00:07:04,300 --> 00:07:04,930
‫Ama işte burada.

110
00:07:04,930 --> 00:07:06,760
‫Yapay zeka davranışı bizim istediğimiz şeydir.

111
00:07:06,790 --> 00:07:07,780
‫Açılır menüye tıklıyoruz.

112
00:07:07,780 --> 00:07:10,630
‫Şu anda tek bir seçenek var çünkü sadece bir davranış ağacımız var.

113
00:07:10,630 --> 00:07:14,200
‫Şimdi bunu seçelim ve derleyip kaydedelim.

114
00:07:14,200 --> 00:07:17,380
‫Ve eğer şimdi devam edip oyunu oynarsak.

115
00:07:18,010 --> 00:07:20,830
‫Ve gidip düşmanımıza bir göz atın.

116
00:07:21,280 --> 00:07:26,140
‫Şu anda çalışmakta olan düğümü vurguladığını görebilirsiniz ve duraklatma durdurma düğmelerinin

117
00:07:26,140 --> 00:07:33,130
‫yanında, şu anda hangi I denetleyicisinin davranış ağacını gözlemlediğinizi söyleyen küçük bir açılır pencere var.

118
00:07:33,160 --> 00:07:38,350
‫Dolayısıyla bu, devreye girip "Tamam, neden?" diyebilmeniz için harika bir işlevdir.

119
00:07:38,350 --> 00:07:39,760
‫Öylece duruyorum.

120
00:07:39,760 --> 00:07:41,290
‫Neden oyuncuyu kovalamıyor?

121
00:07:41,290 --> 00:07:47,110
‫Şu anda davranışın hangi kısmını yürüttüğünü görebilir ve "Ah, şu şey yanlış gitti" diyebilirsiniz.

122
00:07:47,140 --> 00:07:48,910
‫Hata ayıklama için gerçekten yardımcı oluyor.

123
00:07:48,910 --> 00:07:53,890
‫Bu açılır menüyü kullanarak dünyadaki tüm yapay zekalarınızın neler yaptığına göz atabilirsiniz.

124
00:07:54,010 --> 00:07:54,550
‫Harika bir şey.

125
00:07:54,550 --> 00:07:55,570
‫Bu ders için hepsi bu kadar.

126
00:07:55,570 --> 00:08:01,930
‫Bir sonraki derste, C++ ile yapay zekamızın karatahta belleğine nasıl bilgi yerleştirebileceğimize

127
00:08:01,930 --> 00:08:04,600
‫bakacağız.

128
00:08:04,600 --> 00:08:05,560
‫Orada görüşürüz.

