﻿1
00:00:04,480 --> 00:00:05,260
‫Merhaba ve hoş geldiniz.

2
00:00:05,260 --> 00:00:09,820
‫Bu derste, davranış ağacında yeni bir şey olan hizmetleri tanıtacağız.

3
00:00:09,820 --> 00:00:14,560
‫Hizmetlerin ne olduğunu, kalıcı çalışma davranışında bize nasıl yardımcı olduklarını ve C++'da kendimizinkini

4
00:00:14,560 --> 00:00:16,390
‫nasıl yazabileceğimizi öğreneceğiz.

5
00:00:16,390 --> 00:00:17,380
‫Hemen konuya girelim.

6
00:00:18,060 --> 00:00:23,940
‫Artık yapay zeka denetleyicimizde davranış ağacımızda olmayan yalnızca birkaç mantık parçası kaldı.

7
00:00:24,000 --> 00:00:27,000
‫Bunlardan biri başlangıç konumunun ayarlanmasıdır.

8
00:00:27,000 --> 00:00:30,120
‫Bunu hala I kontrolöründen ayarlamak istiyorum.

9
00:00:30,510 --> 00:00:36,210
‫Ancak şimdi davranış ağacımızın içinden yapmak istediğim tik gibi şeyler.

10
00:00:36,390 --> 00:00:38,100
‫Burada ne yapmak istiyorum?

11
00:00:38,190 --> 00:00:40,020
‫Bunu nasıl yapabilirim?

12
00:00:40,410 --> 00:00:45,750
‫Bilinen son oyuncu konumunu güncellemek için oyuncu konumumuzu ayarlayın.

13
00:00:46,200 --> 00:00:51,540
‫Bunların her ikisini de plan hizmeti adı verilen bir şeyle yapabiliriz.

14
00:00:51,540 --> 00:00:56,030
‫Şimdi planlarımıza gidelim ve neler olduğuna bakalım.

15
00:00:56,040 --> 00:01:03,090
‫Yapay zekama gidip davranış ağacını açarsam, onu ana pencereye yerleştirirsem, size bir hizmetin ne olduğunu göstermem

16
00:01:03,090 --> 00:01:03,870
‫gerekir.

17
00:01:03,870 --> 00:01:10,770
‫Daha önce hiç kullanmadık ve esasen belirli bir yol aktif olduğunda her tikte veya

18
00:01:10,770 --> 00:01:14,790
‫sık sık bir şey çalıştırmanın bir yoludur.

19
00:01:14,790 --> 00:01:22,380
‫Yani burada Chase davranışı üzerinde bir hizmetim olsaydı, o zaman bazı kodlar Chase davranışının aktif olduğu her zaman çalışabilirdi, hareket ediyor

20
00:01:22,650 --> 00:01:26,880
‫olsak da, ateş ediyor olsak da, bu şeylerden herhangi birini ağırlıklandırıyor olsak

21
00:01:26,880 --> 00:01:28,800
‫da, her zaman çalışıyor olurdu.

22
00:01:28,800 --> 00:01:31,200
‫Ama soruşturmada olsaydık bu olmazdı.

23
00:01:31,410 --> 00:01:35,740
‫Yani bu tam da bir hizmet kullanmak istediğimiz türden bir durum.

24
00:01:35,760 --> 00:01:38,070
‫Şimdi örnek bir hizmet alalım.

25
00:01:38,070 --> 00:01:44,670
‫Oynarken fark ettiğimiz bir şey, yapay zeka menzilimize girdiğinde ve biz hareket ettiğimizde,

26
00:01:44,670 --> 00:01:51,480
‫bize bakmak için dönmüyor ve bunu burada zaten yerleşik bir hizmetle düzeltebiliriz.

27
00:01:51,480 --> 00:01:58,680
‫Bu düğüme sağ tıklayıp hizmet eklemeye gidersek ve varsayılan odak hizmetini ararsak, farklı bir renkte olduğunu görebilirsiniz,

28
00:01:58,680 --> 00:02:00,210
‫yeşil.

29
00:02:00,390 --> 00:02:05,370
‫Ve bu varsayılan hizmeti seçersek, dekoratörlerin yaptığı gibi bu sıra düğümlerinin üstüne

30
00:02:05,370 --> 00:02:06,870
‫değil altına gider.

31
00:02:07,350 --> 00:02:11,940
‫Böylece varsayılan odak seçiliyken, neye odaklanmak istediğinizi seçebilirsiniz.

32
00:02:11,940 --> 00:02:17,460
‫Ve bu durumda oyuncunun konumuna odaklanmak istiyoruz, devam edin ve kaydet'e ve oynat'a basın.

33
00:02:17,460 --> 00:02:23,370
‫Şimdi gidip bakarsak ve etrafta dolaşırsak, bizi takip etmek için döndüğünü görebilirsiniz.

34
00:02:23,790 --> 00:02:24,840
‫Harika şeyler.

35
00:02:24,930 --> 00:02:32,160
‫Şimdi C++'da benzer bir servis uygulayabilmek istiyoruz, bu servis oyuncumuzun konumunu sürekli

36
00:02:32,160 --> 00:02:38,940
‫güncelleyecek ve biz kovalarken bilinen son oyuncu konumumuzu güncelleyecek.

37
00:02:38,940 --> 00:02:45,000
‫Bu yüzden bunu iki ayrı hizmet olarak yapacağız ve otomatik hizmetlerin bunu tik olarak yapmaktan nasıl biraz

38
00:02:45,000 --> 00:02:51,090
‫daha verimli hale getirebileceğini görebilirsiniz çünkü bilinen son oyuncu konumunu yalnızca davranış

39
00:02:51,090 --> 00:02:54,870
‫ağacının doğru kısmında olduğunuzda çalıştırabilirsiniz.

40
00:02:54,870 --> 00:03:00,840
‫Sandbox'a gidelim, içerik tarayıcısına gidelim, yeni bir C++ sınıfı ekleyelim, tüm sınıfları gösterelim ve burada seçeneklerimizin

41
00:03:00,840 --> 00:03:02,880
‫neler olduğuna bakalım.

42
00:03:03,000 --> 00:03:11,370
‫BT hizmetini arıyoruz ve BT görevimizde olduğu gibi birkaç seçenek var, Blackboard tabanımız var ve aslında Blackboard

43
00:03:11,490 --> 00:03:16,080
‫Tabanını isteyeceğiz çünkü hangi anahtarı güncellememiz gerektiğini

44
00:03:16,080 --> 00:03:18,180
‫bilmek istiyoruz.

45
00:03:18,180 --> 00:03:20,640
‫Örneğin, oyuncunun bulunduğu yer mi olmalı?

46
00:03:20,640 --> 00:03:23,190
‫Bilinen son oyuncu konumu mu olmalı?

47
00:03:23,310 --> 00:03:28,830
‫Bu yüzden Blackboard Base seçiliyken bunun üzerine gidip next tuşuna basacağız

48
00:03:28,830 --> 00:03:36,540
‫ve bu BT hizmetini çağıracağız, oyuncu konumunun altını çizeceğiz ve devam edip bu sınıfı oluşturacağız.

49
00:03:36,660 --> 00:03:42,870
‫Derleme işlemini tamamladıktan sonra Visual Studio koduna gideceğiz ve Service Blackboard Base Call'dan

50
00:03:42,870 --> 00:03:48,390
‫devralınan bu BT hizmet oynatıcı konumuna sahip olduğumuzu görebilirsiniz.

51
00:03:48,390 --> 00:03:49,110
‫Bizim istediğimiz de buydu.

52
00:03:49,110 --> 00:03:51,870
‫Şimdi hangi işlevselliği buna taşıyacağız?

53
00:03:52,050 --> 00:03:58,470
‫Mümkün olan en basit işlevi deneyeceğim ve taşıyacağım, bu da sadece temel olarak bilinen son oyuncu

54
00:03:58,740 --> 00:04:01,650
‫konumunun değerini ayarlamaktır.

55
00:04:01,650 --> 00:04:08,340
‫Bu anahtar davranış ağacında yapılandırılacak olsa da, burada düz bir metin olarak değil, ancak oyuncu --

56
00:04:08,340 --> 00:04:12,390
‫konumunu alacak ve bir karatahta anahtarına ayarlayacaktır.

57
00:04:12,390 --> 00:04:17,640
‫Ve herhangi bir görüş hattı kontrolü yapmayacaktır, bunun nedeni davranış ağacımızda sadece kovaladığımızda

58
00:04:17,640 --> 00:04:21,930
‫çalıştırıyorsak, görüş hattı kontrolüne ihtiyacımız yoktur.

59
00:04:21,930 --> 00:04:25,470
‫Oyuncuyu otomatik olarak görebiliyoruz, durumun böyle olduğunu biliyoruz.

60
00:04:25,470 --> 00:04:29,010
‫Yani hizmette bunu yapmak için başka bir basitleştirme.

61
00:04:29,520 --> 00:04:36,840
‫BT hizmetinde bir yöntem çağrısını nasıl alacağımızı biliyorsak, bu oldukça basit olmalıdır.

62
00:04:37,230 --> 00:04:41,940
‫Şimdi gidip BT hizmetimize bir göz atalım ve orada nelerin mevcut olduğunu görelim.

63
00:04:41,940 --> 00:04:44,100
‫Belgeler nedir, ne yapabiliriz?

64
00:04:44,130 --> 00:04:51,120
‫Burada görebileceğiniz ana yöntemler, C ilgili tik düğümü ve arama başlangıcı üzerinde ilgili hale gelmektir.

65
00:04:51,150 --> 00:04:52,020
‫Arama başlangıcında.

66
00:04:52,020 --> 00:04:54,240
‫Özellikle ilgilenmiyoruz ama düğümü işaretleyin.

67
00:04:54,240 --> 00:05:00,870
‫Evet, bu hizmetin aktif bir yolda olduğuna dair her zaman bir güncelleme alacağımız yer burasıdır.

68
00:05:01,110 --> 00:05:02,970
‫İşte o zaman uygulamak isteyeceğiz.

69
00:05:02,980 --> 00:05:06,180
‫İmzanın tamamını bulmak için gidip bu dosyada arama yapacağız.

70
00:05:06,390 --> 00:05:08,010
‫Burada olduğunu görebiliyoruz.

71
00:05:08,010 --> 00:05:09,270
‫Bakalım, hangi bölümde?

72
00:05:09,270 --> 00:05:10,770
‫Korumalı bölümün altında.

73
00:05:10,770 --> 00:05:16,890
‫Bu yüzden oluşturduğumuz BT hizmetimize gideceğiz ve korumalı bir bölüm oluşturacağız.

74
00:05:17,530 --> 00:05:24,220
‫Ve yapıştırın, BT Service bunu bir üst sınıftan miras aldığı için burada otomatik olarak bir geçersiz kılma söz konusudur, ancak

75
00:05:24,220 --> 00:05:27,660
‫bunu kendimiz tekrar geçersiz kılmamızda bir sakınca yoktur.

76
00:05:27,670 --> 00:05:32,920
‫Uygulamayı oluşturmak için bir P kontrol kaydırması yapabiliriz ve ardından super'i çağırmak isteriz.

77
00:05:32,920 --> 00:05:39,550
‫Bu yüzden süper tik düğümü istiyoruz ve kendi comp'imizi ve düğüm belleğimizi iletmek istiyoruz.

78
00:05:39,550 --> 00:05:41,500
‫Bakalım, burada başka şeyler de var.

79
00:05:41,500 --> 00:05:46,930
‫Delta saniyemizin yanı sıra geçmemiz gerekenler de var ve son olarak noktalı virgül

80
00:05:46,990 --> 00:05:49,960
‫ile tick düğümü uygulamamızı bitirmeliyiz.

81
00:05:49,960 --> 00:05:56,320
‫Şimdi burada temel olarak bu davranışı I denetleyicisi CP'den yapmak istiyoruz, burada yazı tahtası bileşenini

82
00:05:56,320 --> 00:05:59,590
‫alıyoruz, ardından vektör olarak bir değer ayarlıyoruz.

83
00:05:59,590 --> 00:06:04,120
‫Karatahta bileşenlerini sahip bileşen referanslarından nasıl alacağımızı biliyoruz.

84
00:06:04,120 --> 00:06:05,410
‫Yani bu oldukça basit.

85
00:06:05,410 --> 00:06:11,590
‫Sadece sahip comp noktasını yapacağız ve ardından davranış ağacı ileri eğik çizgi karatahta bileşeni

86
00:06:11,590 --> 00:06:17,980
‫için buraya hash eklememiz gerektiğini hatırlayarak get karatahta bileşenini yapacağız.

87
00:06:17,980 --> 00:06:20,410
‫Sonra ok operatörümüzü kullanabiliriz.

88
00:06:20,500 --> 00:06:27,370
‫Burada yapmamız gereken sadece değeri vektör olarak ayarlamak ve ardından bir anahtara ihtiyacımız var.

89
00:06:27,370 --> 00:06:30,490
‫Bununla nasıl başa çıkacağımızı biliyoruz ama yine de hafızamızı tazeleyelim.

90
00:06:30,490 --> 00:06:36,370
‫BT hizmetimiz olan Blackboard Base'e gidersek, görevde olduğu gibi, get selected blackboard anahtarına

91
00:06:36,370 --> 00:06:38,380
‫sahip olduğumuzu görebilirsiniz.

92
00:06:38,380 --> 00:06:39,310
‫Biz de bunu kullanacağız.

93
00:06:39,340 --> 00:06:44,950
‫Get selected Blackboard Key, davranış ağacında seçilen anahtarı alır ve ardından vektör değerimizi

94
00:06:44,950 --> 00:06:45,940
‫isteriz.

95
00:06:45,940 --> 00:06:46,840
‫Bunu nereden bulacağız?

96
00:06:46,840 --> 00:06:48,580
‫Yapay zeka kontrolörüyle tamamen aynı olacağız.

97
00:06:48,580 --> 00:06:52,960
‫Oyuncuyu alacağız - her şeyden önce burada en üstte.

98
00:06:52,960 --> 00:06:57,880
‫Daha sonra bunun null olup olmadığını kontrol etmemiz ve oyun istatistiklerimizi de dahil etmemiz gerekir.

99
00:06:57,880 --> 00:07:04,600
‫Bu yüzden, oyuncu hizmeti oyuncu konumumuza dahil edilen denetleyici CP'den oyun istatistiklerinin dahil edildiğinden

100
00:07:04,750 --> 00:07:06,130
‫emin olalım.

101
00:07:06,790 --> 00:07:13,750
‫Sonra oyuncu piyonu null pointer'a eşitse, o zaman yapmak isteyeceğimiz şey yine erken

102
00:07:13,750 --> 00:07:20,080
‫dönmektir, burada void döndürür, böylece hızlı bir erken dönüş yapabiliriz.

103
00:07:20,140 --> 00:07:30,070
‫Daha sonra oyuncu piyonumuzu burada basitçe oyuncu konumunu almak için kullanabiliriz ve buraya bir ekleme yapmamız gerekebilir.

104
00:07:30,070 --> 00:07:30,970
‫Nasıl gideceğimizi göreceğiz.

105
00:07:30,970 --> 00:07:34,420
‫Güvende olmaktan zarar gelmez, değil mi ve bu konularda açık olmak.

106
00:07:34,420 --> 00:07:38,890
‫Bu yüzden oyun çerçevesi için bir include ve ardından forward slash yapacağız.

107
00:07:38,890 --> 00:07:44,050
‫H üzerinde piyonlanacak, böylece burada her şeyin yolunda olduğundan emin olabiliriz ve sonra

108
00:07:44,050 --> 00:07:46,090
‫değeri vektör olarak ayarlıyoruz.

109
00:07:46,090 --> 00:07:47,350
‫İhtiyacımız olan tek şey bu olmalı.

110
00:07:47,350 --> 00:07:49,210
‫Gidip derleyelim ve çalışıp çalışmadığını görelim.

111
00:07:49,210 --> 00:07:50,350
‫Aslında, bir şey daha var.

112
00:07:50,350 --> 00:07:54,700
‫Muhtemelen güzel bir isim istiyoruz, bu yüzden burada bir kurucumuz olmalı.

113
00:07:54,700 --> 00:08:00,550
‫Bu yüzden, sınıfın adı olacak yapıcı ile bir public bölüm oluşturacağım ve sonra

114
00:08:00,550 --> 00:08:03,760
‫devam edip bu uygulamayı oluşturacağız.

115
00:08:03,760 --> 00:08:08,590
‫Uygulamamı tick düğümü için uygulamanın üzerine getireceğim ve

116
00:08:08,590 --> 00:08:17,680
‫sonra düğüm adını oyuncu konumunu güncelle'ye eşit olarak ayarlayacağız ve bunun çalışıp çalışmadığını görelim.

117
00:08:17,710 --> 00:08:19,300
‫Görünüşe göre noktalı virgül eksik.

118
00:08:19,300 --> 00:08:20,170
‫Tekrar deneyelim.

119
00:08:20,170 --> 00:08:23,350
‫Bu başarılı bir şekilde derlendikten sonra düşmanımıza geçebiliriz.

120
00:08:23,350 --> 00:08:29,350
‫Ben ve ayar odağının yanı sıra, burada oyuncu konumu olarak gösterdiğimiz ve güzel adın temelde

121
00:08:29,350 --> 00:08:34,600
‫oyuncu konumunu güncelle olarak geldiği yeni bir hizmet eklemek istiyorum.

122
00:08:34,600 --> 00:08:40,720
‫Her 0'da bir tıklama sıklığını size söylemek istediğini görebilirsiniz. 4'e 0. 6 saniye.

123
00:08:40,720 --> 00:08:43,990
‫Bu, tick kullanmaktan daha iyidir çünkü tick'in burada her kare çalıştığını biliyoruz.

124
00:08:43,990 --> 00:08:46,660
‫Bu daha az sıklıkta çalışıyor, ki bu iyi bir şey.

125
00:08:46,660 --> 00:08:52,450
‫Ayrıntılara girip bir yazı tahtası anahtarı oluşturabilir, aşağı açabilir ve güncellemek istediğimizin

126
00:08:52,450 --> 00:08:58,720
‫yalnızca oyuncunun konumu değil, bilinen son oyuncu konumu olduğunu seçebiliriz, çünkü bu kovaladığımız sürece

127
00:08:58,720 --> 00:09:02,800
‫her karede gerçekleşecektir ve istediğimiz davranış budur.

128
00:09:02,800 --> 00:09:08,940
‫Devam etmek ve oluşturmak istediğimiz bir hizmet düğümü daha, AI denetleyicisinin kene içine inme ve ne kaldığını

129
00:09:08,950 --> 00:09:11,230
‫görme davranışını gerçekleştirecek.

130
00:09:11,230 --> 00:09:17,530
‫Burada yapmamız gereken, görüş hattına sahip olup olmadığımıza bağlı olarak oyuncunun konumunu güncellemektir.

131
00:09:17,530 --> 00:09:19,390
‫Bu yüzden oyuncunun konumunu güncellemesini istiyoruz.

132
00:09:19,390 --> 00:09:22,450
‫Görüş hattımız varsa, yoksa yeri temizleyin.

133
00:09:22,450 --> 00:09:25,750
‫Yani bu yeni bir hizmet düğümü olacak çünkü biraz farklı bir davranış.

134
00:09:25,780 --> 00:09:28,270
‫Yeni bir C++ sınıfı ekleyeceğiz.

135
00:09:28,270 --> 00:09:33,220
‫Tüm sınıfları göstermeye gideceğiz ve yine BT hizmeti yapacağız, temel sınıfımız

136
00:09:33,220 --> 00:09:39,910
‫olan karatahta tabanlarının altını çizeceğiz ve buna Beat Service Underscore adını vereceğiz.

137
00:09:40,590 --> 00:09:44,010
‫Görüldüyse oyuncu konumu.

138
00:09:44,130 --> 00:09:46,980
‫Ve devam edin ve bu sınıfı oluşturun.

139
00:09:46,980 --> 00:09:51,120
‫Ve tüm bunlar çoğunlukla daha önce gördüğünüz şeyler olduğu için, bu hizmeti uygulamak sizin göreviniz

140
00:09:51,120 --> 00:09:51,930
‫olacak.

141
00:09:51,930 --> 00:09:57,570
‫Yani yapay zeka denetleyicisindeki kodu kullanarak tik düğümünü uygulayacaksınız.

142
00:09:57,570 --> 00:10:04,350
‫Rehberiniz olarak, BT hizmeti içinden AI denetleyici işaretçisini ele geçirmeniz gerekecek.

143
00:10:04,350 --> 00:10:09,810
‫Şimdi bu, BT görevinde yaptığımızla tamamen aynıdır, bu yüzden bunu AI denetleyici işaretçisini ele geçirmek için

144
00:10:09,810 --> 00:10:11,340
‫bir rehber olarak kullanın.

145
00:10:11,520 --> 00:10:15,270
‫Görüş hattını kontrol etmek için AI kontrolör işaretçisine ihtiyacınız olacak.

146
00:10:15,270 --> 00:10:21,630
‫Unutmayın, görüş hattı AI denetleyicisinde bir yöntemdir ve ardından görüş hattı kontrolünüze bağlı olarak anahtarı

147
00:10:21,660 --> 00:10:27,270
‫güncellemeniz veya temizlemeniz ve ardından bu düğümü davranış ağacına yerleştirmeniz gerekir.

148
00:10:27,270 --> 00:10:32,130
‫Bu hizmetin çalışması için davranış ağacının doğru seviyesinin neresi olacağını düşünüyorsunuz?

149
00:10:32,130 --> 00:10:33,660
‫Bunu nasıl düşüneceksiniz?

150
00:10:33,660 --> 00:10:37,110
‫Biraz çenem kaşındı, bir videoyu duraklattım ve denedim.

151
00:10:38,070 --> 00:10:38,310
‫Tamam.

152
00:10:38,310 --> 00:10:38,870
‫Tekrar hoş geldiniz.

153
00:10:38,880 --> 00:10:44,670
‫Böylece Visual Studio kodunda yeni bir güzellik hizmeti ortaya çıktı.

154
00:10:44,670 --> 00:10:51,750
‫Şimdi başlıkta hemen hemen aynı olacak, bu yüzden devam edeceğim ve bunu yeni oluşturulan başlığımıza

155
00:10:51,750 --> 00:11:00,300
‫kopyalayacağım, istisna olarak yapıcının adını eşleşecek şekilde değiştirmemiz gerekiyor.

156
00:11:00,300 --> 00:11:07,650
‫Şimdi kurucu için bir uygulama oluşturacağız ve görüldüğünde oyuncunun konumunu güncellemek için ona

157
00:11:08,010 --> 00:11:12,690
‫bir düğüm adı vereceğiz ve buraya bir noktalı virgül ekleyeceğiz.

158
00:11:12,720 --> 00:11:14,400
‫Bu sefer bunu unutmayalım.

159
00:11:14,400 --> 00:11:21,660
‫Daha sonra C++'a geri dönerek tick düğümünü de uygulayacağım ve kendimize oyuncu konumunu

160
00:11:21,660 --> 00:11:25,080
‫bulabilirsek kopyalayacağım.

161
00:11:25,080 --> 00:11:32,610
‫CP Ve sadece süper çağrısını, oyuncu piyonunun alınmasını ve null dönüşünün kontrolünü kopyalayacağım.

162
00:11:32,610 --> 00:11:36,090
‫Aslında, tüm gövdeyi kopyalayacağım ve oradan değiştireceğiz.

163
00:11:36,600 --> 00:11:43,380
‫Bu yüzden bunu karşıya kopyalıyoruz ve ayrıca yazı tahtası bileşenine erişimi yazı tahtası bileşeni, oyun

164
00:11:43,740 --> 00:11:50,160
‫statiği ve piyon için include ile kopyalayacağız, çünkü bunların hepsine erişmemiz gerekiyor.

165
00:11:50,160 --> 00:11:53,130
‫Aslında, işlevselliğin çoğu burada paylaşılmaktadır.

166
00:11:53,130 --> 00:11:58,860
‫Bu kodu bir şekilde paylaşmalarını sağlamayı düşünebilirsiniz, ancak bence yeterince önemsediğimiz

167
00:11:58,860 --> 00:12:00,360
‫kadar çok tekrarlama yok.

168
00:12:00,840 --> 00:12:05,430
‫Burada yapmamız gereken şey, bir göz kontrolörümüz olup olmadığını da kontrol etmektir.

169
00:12:05,430 --> 00:12:15,450
‫Bu yüzden, owner bileşeni veya owner comp dot get I owner null işaretçisine eşitse, bu aşamada devam

170
00:12:15,720 --> 00:12:19,470
‫etmek ve geri dönmek isteyeceğiz.

171
00:12:19,950 --> 00:12:24,360
‫Sonra yapmak isteyeceğimiz bir sonraki şey görünürlüğümüzü kontrol etmektir.

172
00:12:24,360 --> 00:12:32,070
‫Bu yüzden bir if owner comp dot get I owner yapacağız ve sonra burada bir ok yapacağız ve kontrolörümüzü buraya

173
00:12:32,070 --> 00:12:34,440
‫dahil etmemiz gerekiyor.

174
00:12:34,440 --> 00:12:36,900
‫Yani karma olacak.

175
00:12:38,120 --> 00:12:41,810
‫Sonra da I kontrolörü H olacak.

176
00:12:42,380 --> 00:12:48,470
‫O zaman line yapmak istiyoruz ve burada doğru kullanımın ne olduğunu görelim.

177
00:12:48,470 --> 00:12:54,650
‫I kontrolör CP'sine gidersek, istediğimiz görüş hattı iki.

178
00:12:54,650 --> 00:13:00,380
‫Yani görüş hattı iki, o zaman oyuncu piyonuna görüş hattı yapmamız gerekiyor.

179
00:13:00,380 --> 00:13:02,870
‫Bu durumda, oyuncu piyonu ile görüş hattımız var mı?

180
00:13:03,320 --> 00:13:04,820
‫CP'de yaptığımız şey bu mu?

181
00:13:04,820 --> 00:13:05,810
‫Bunu iki kez kontrol edelim.

182
00:13:05,810 --> 00:13:06,680
‫Evet, öyle.

183
00:13:07,220 --> 00:13:11,450
‫Daha sonra devam etmek ve değerleri farklı şekilde ayarlamak isteyeceğiz.

184
00:13:11,510 --> 00:13:15,800
‫Böylece vektör değerini oyuncu piyonunun aktör konumunu almasına ayarlıyoruz.

185
00:13:15,800 --> 00:13:18,620
‫Evet, eğer başka bir görüş hattımız varsa.

186
00:13:18,620 --> 00:13:22,430
‫Eğer görüş hattımız yoksa, o değeri temizlememiz gerektiğini biliriz.

187
00:13:22,430 --> 00:13:26,030
‫Yani hala sahip bileşenini alacağız, tahta bileşenini alacağız.

188
00:13:26,060 --> 00:13:31,640
‫Daha sonra değeri temizleyeceğiz ve seçilen yazı tahtası tuşunun değerini temizlemeye

189
00:13:31,640 --> 00:13:37,790
‫devam edeceğiz ve bu, oyuncu konumunun uygulanması için bizi hemen hemen kapsamalıdır.

190
00:13:37,790 --> 00:13:41,480
‫Görüldüyse, gidip derleyelim ve iyi çalışıp çalışmadığını görelim.

191
00:13:41,480 --> 00:13:42,710
‫Derleme başarılı oldu.

192
00:13:42,710 --> 00:13:44,570
‫Davranış ağacına girelim.

193
00:13:44,570 --> 00:13:50,420
‫Şimdi bunun çalışmasını istediğim seviye temelde ilk seçicide en üst seviyede, çünkü oyuncu konumunu temelde

194
00:13:50,420 --> 00:13:56,060
‫her zaman güncellemesini istiyorum çünkü oyuncu konumunun ayarlanmasına bağlı olarak bu diğer davranışlardan

195
00:13:56,060 --> 00:13:59,600
‫herhangi birini iptal edebilmemiz gerekiyor.

196
00:13:59,600 --> 00:14:02,810
‫Bu yüzden istediğimiz zaman bunu ayarlayabilmemiz gerekir.

197
00:14:02,900 --> 00:14:08,870
‫Bu yüzden gidip üst düzey seçiciye sağ tıklayacağım, hizmet ekleyeceğim, görülürse oynatma konumunu ekleyeceğim.

198
00:14:09,200 --> 00:14:13,760
‫Daha sonra bu hizmet düğümünü seçmemiz ve oynatıcı konumumuz olacak olan karatahta anahtarını

199
00:14:13,760 --> 00:14:15,260
‫seçmemiz gerekecek.

200
00:14:15,710 --> 00:14:20,270
‫Böylece oyuncu konumunda bir set, oyuncu konumunu güncelleme, daha aptal olan son bilinen

201
00:14:20,270 --> 00:14:22,220
‫oyuncu konumunu güncelliyor.

202
00:14:22,550 --> 00:14:29,270
‫Ve şimdi AI denetleyicimize gidebilmeli ve TTIC'deki tüm bu kodu kaldırabilmeliyiz çünkü

203
00:14:29,270 --> 00:14:33,740
‫bunun yerine hizmetlerimiz tarafından yerini almıştır.

204
00:14:33,740 --> 00:14:36,350
‫Devam edip derleyebilir ve çalışıp çalışmadığına bakabiliriz.

205
00:14:36,350 --> 00:14:41,060
‫Editörün yanına gidip oynayalım ve bakalım düşmanımız hâlâ bize doğru geliyor mu?

206
00:14:41,060 --> 00:14:46,580
‫Koşarak bize doğru geliyor, görüş alanını kaybediyor, sonra tekrar bize doğru geliyor ve ateş etmeye başlıyor.

207
00:14:46,580 --> 00:14:46,850
‫Evet.

208
00:14:46,850 --> 00:14:53,000
‫Temel olarak her şey daha önce olduğu gibi çalışıyor, ancak şimdi bunu tamamen C++'da kendimiz için yazdığımız

209
00:14:53,000 --> 00:14:55,730
‫hizmetler aracılığıyla yapıyor.

210
00:14:55,760 --> 00:15:01,100
‫Bir sonraki derste, yapay zekanın ateş etmeye devam ettiği ve sonunda kendini öldürmeyi başardığı

211
00:15:01,100 --> 00:15:03,290
‫o sinir bozucu hatayı düzelteceğiz.

212
00:15:03,290 --> 00:15:04,160
‫Orada görüşürüz.

