﻿1
00:00:04,460 --> 00:00:05,240
‫Merhaba ve hoş geldiniz.

2
00:00:05,240 --> 00:00:10,250
‫Bu derste, istediğimiz herhangi bir oyun modunda çağrılabilecek sanal -- öldürülmüş

3
00:00:10,250 --> 00:00:17,270
‫bir yönteme sahip olmamız nedeniyle oluşturabileceğimiz olası oyun modlarından sadece biri olacak olan katil

4
00:00:17,270 --> 00:00:19,940
‫bir mobil oyun modu oluşturacağız.

5
00:00:19,970 --> 00:00:24,560
‫Şimdi bu sanal yöntemi nasıl uygulayacağımızı görelim.

6
00:00:25,540 --> 00:00:28,640
‫Bu yüzden oyunumuzun sona ermesini istiyoruz.

7
00:00:28,660 --> 00:00:29,760
‫Bir oyunun sona ermesi ne anlama gelir?

8
00:00:29,770 --> 00:00:34,990
‫Bu, tek olduğumuz ya da kaybettiğimiz bir duruma girdiğimiz anlamına gelir.

9
00:00:34,990 --> 00:00:37,240
‫Bazı kullanıcı arayüzlerini kullanarak oyuncuyu bilgilendiriyoruz.

10
00:00:37,270 --> 00:00:40,810
‫Onlara belki yeniden başlatma ve tekrar oynama seçeneği sunuyoruz.

11
00:00:41,050 --> 00:00:43,020
‫Bu çizgide bir şey.

12
00:00:43,030 --> 00:00:46,900
‫Şimdi bununla ilgili sınıflar tipik olarak bir oyun modudur.

13
00:00:46,900 --> 00:00:52,420
‫Oyun modu, kimin kazandığı ve kimin kaybettiği gibi oyunla ilgili kurallara karar vermekten sorumludur.

14
00:00:52,780 --> 00:00:56,470
‫Bunun için de kimin öldürüldüğünü bilmemiz gerekecek.

15
00:00:56,470 --> 00:01:02,500
‫Bu yüzden burada Piyon Öldürüldü adında bir sanal metodumuz olacak ve bu metot,

16
00:01:02,500 --> 00:01:09,370
‫ölen ister yapay zeka ister oyuncu olsun, öldüğünde nişancı piyonumuzdan çağrılacak.

17
00:01:10,360 --> 00:01:15,310
‫Dahası, buraya küçük bir karmaşıklık eklemek istiyorum; ana nişancı oyun modumuzdan

18
00:01:15,310 --> 00:01:18,550
‫türetilmiş farklı oyun modlarımız olacak.

19
00:01:18,550 --> 00:01:20,320
‫Bu oyun modunu uygulayacaklar.

20
00:01:20,320 --> 00:01:21,580
‫Ok burada bu anlama geliyor.

21
00:01:21,580 --> 00:01:25,840
‫Okun gittiği yol genellikle biraz mantıksızdır ama hepsini öldürün.

22
00:01:25,840 --> 00:01:33,310
‫Oyun modu, nişancı oyun modundan miras alınır ve saymak ve oyunun kurallarına farklı şekilde karar vermek için

23
00:01:33,310 --> 00:01:35,770
‫öldürülen piyonu geçersiz kılar.

24
00:01:35,770 --> 00:01:41,980
‫İşte bu yüzden ana atıcı oyun moduna sanal bir piyon öldürme yöntemi koymak ve ardından kendimiz için

25
00:01:42,130 --> 00:01:48,130
‫uyguladığımız oyun modu olacak olan tümünü öldür oyun modunda bunu tekrar uygulamak veya geçersiz

26
00:01:48,130 --> 00:01:49,570
‫kılmak istiyorum.

27
00:01:49,570 --> 00:01:54,490
‫Ve belki de seviyedeki düşmanların hepsini öldürmek yerine sadece belirli bir miktarını

28
00:01:54,490 --> 00:01:58,450
‫öldürmek istediğiniz farklı oyun modları yapmayı seçebilirsiniz.

29
00:01:58,450 --> 00:02:00,670
‫Belki bayrak kapmaca, farklı bir şey.

30
00:02:01,900 --> 00:02:08,560
‫Ama temelde olacak olan şey, nişancı -- nişancı oyun modu türüne sahip

31
00:02:08,560 --> 00:02:13,060
‫oyun modunu bulacak ve onu -- öldürdü diyecek.

32
00:02:13,060 --> 00:02:19,060
‫Ve sonra gerçekte orada bulunan uygulamaya bağlı olarak, geçersiz kılma yoluyla

33
00:02:19,060 --> 00:02:21,250
‫uygulamaya gidecektir.

34
00:02:21,910 --> 00:02:28,390
‫Şimdi, buradaki bir başka karmaşıklık da, kullanıcı arayüzü mantığımızın ve yeniden başlatma mantığımızın, oyun modu gibi

35
00:02:28,390 --> 00:02:35,200
‫global bir şeyden ziyade, genellikle oyuncunun yetkisinde olan oyuncu denetleyicisi kullanıcı arayüzünde gerçekleşmesi gereken

36
00:02:35,200 --> 00:02:36,310
‫bir şey olmasıdır.

37
00:02:36,340 --> 00:02:42,850
‫Bu özellikle çok oyunculu oyunlarda geçerlidir çünkü oyun modu aslında oyuncunun makinesinde

38
00:02:42,850 --> 00:02:45,160
‫değil, sadece sunucuda bulunur.

39
00:02:45,160 --> 00:02:49,270
‫Bu yüzden herhangi bir kullanıcı arayüzü öğesi oyuncu kontrolöründe devam etmelidir.

40
00:02:49,540 --> 00:02:52,690
‫Bu çok oyunculu bir oyun olmadığı için bu konuda endişelenmemize gerek

41
00:02:52,690 --> 00:02:57,430
‫yok, ancak sınıfları Unreal'da kullanılmaları beklenen amaçlar için kullanmak yine de iyidir.

42
00:02:57,880 --> 00:03:04,750
‫Dolayısıyla, oyuncu denetleyicisi, gerçek kök oyuncu denetleyicisi sınıfı, özellikle bu amaç için game has

43
00:03:04,750 --> 00:03:12,610
‫ended adlı sanal bir yönteme sahiptir, böylece oyun modu bu yöntemi çağırabilir ve kullanıcı arayüzü, yeniden başlatma gibi

44
00:03:12,610 --> 00:03:17,770
‫şeyleri yapmak için kendi atıcı oyuncu denetleyicimizde uygulayabiliriz.

45
00:03:17,830 --> 00:03:23,590
‫Ancak oyunun bittiğine karar verdiğimizde bunu oyun modumuzdan çağırmamız gerekecek.

46
00:03:23,590 --> 00:03:28,270
‫Bu yüzden kök oyuncu kontrol cihazında sanal oyun sona erdi diyeceğiz.

47
00:03:28,390 --> 00:03:33,910
‫Ve sonra bu kök oyuncu kontrolörü aslında bir nişancı olduğu için, oyuncu kontrolörü geri dönecek

48
00:03:33,910 --> 00:03:35,290
‫ve arayacaktır.

49
00:03:35,290 --> 00:03:36,130
‫Bu oyun sona erdi.

50
00:03:36,130 --> 00:03:42,040
‫Dolayısıyla, nişancı piyonumuzdan nişancı oyun modu aracılığıyla katil daha fazla oyun moduna, oyuncu kontrolörüne

51
00:03:42,040 --> 00:03:46,570
‫ve nişancı oyuncu kontrolörüne çağıracağımız dolambaçlı bir yol gibi görünüyor.

52
00:03:46,570 --> 00:03:52,360
‫Ancak bu, kullanıcı arayüzünü farklı şekillerde, farklı seviyelerde gösterecek farklı oyuncu kontrol cihazlarını karıştırıp

53
00:03:52,360 --> 00:03:55,900
‫eşleştirebileceğimiz konusunda bize çok fazla esneklik sağlıyor.

54
00:03:55,900 --> 00:04:00,130
‫Farklı şekillerde çalışacak farklı oyun modlarını karıştırıp eşleştirebiliriz

55
00:04:00,130 --> 00:04:02,260
‫ve bu şekilde tasarlamamın nedeni de bu.

56
00:04:02,260 --> 00:04:07,750
‫Bizim projemiz için biraz abartılı olsa da, bunun Capture the Flag oyun modları ve farklı türde oyuncu kontrolörleri

57
00:04:07,750 --> 00:04:11,970
‫ile diğer projelere nasıl genişletilebileceğini gösteriyor.

58
00:04:11,980 --> 00:04:14,500
‫Öyleyse bunu uygulamaya çalışalım.

59
00:04:14,530 --> 00:04:18,040
‫Gidip öncelikle bir rota oyun modu bulacağız.

60
00:04:18,040 --> 00:04:22,330
‫Bir C++ projesinden başladığım için zaten oluşturulmuş bir tane var.

61
00:04:22,330 --> 00:04:28,120
‫Basit bir nişancı oyun modu tabanımız var ve burada yapmak istediğim şey, void döndürecek

62
00:04:28,120 --> 00:04:35,800
‫bir public fonksiyon oluşturmak ve bu fonksiyon -- öldürülecek ve biz de burada öldürülen --'i içeri aktarmak zorunda

63
00:04:35,830 --> 00:04:37,480
‫kalacağız.

64
00:04:37,480 --> 00:04:42,400
‫Yani bu şekilde öldürülen bir yıldız olacak.

65
00:04:42,400 --> 00:04:46,720
‫Başlangıçta bunu sanal bir yöntem haline getireceğiz ve burada esasen

66
00:04:46,720 --> 00:04:50,770
‫hiçbir şey yapmayan temel bir uygulama oluşturacağız.

67
00:04:50,770 --> 00:04:52,930
‫Sonra bir alt sınıf oluşturacağız.

68
00:04:52,930 --> 00:05:00,010
‫Yani yeni C++ sınıfı, tüm sınıfları gösterecek ve temel sınıfımız olarak atıcı, basit atıcı oyun

69
00:05:00,010 --> 00:05:02,230
‫modu tabanımızı arayacağız.

70
00:05:02,230 --> 00:05:12,010
‫Buna "hepsini öldür" oyun modu adını vereceğiz ve devam edip bu sınıfı oluşturacağız.

71
00:05:12,010 --> 00:05:18,100
‫Sonra bu derlendiğinde, bir saniyeliğine geçiş yapmak ve nişancı karakterimize gitmek istiyorum.

72
00:05:18,130 --> 00:05:23,620
‫CP Ve burada hasar alma yönteminde bizim ölü olduğumuzu görebilirsiniz.

73
00:05:23,830 --> 00:05:30,490
‫Şimdi eğer bu ölmüşse, yapmak istediğim şey oyun modumuzu ele geçirmek ve -- öldürüldü --

74
00:05:30,490 --> 00:05:31,180
‫demek.

75
00:05:31,210 --> 00:05:38,470
‫Bunu yapmanın yolu, oyun modunu almak için get world'ü çağırmakla başlıyoruz, sonra

76
00:05:38,470 --> 00:05:40,690
‫get auth oyun modu.

77
00:05:40,690 --> 00:05:46,750
‫Ve sonra yapmak istediğimiz şey, bu oyun modunun doğru türde olması, yani basit, kök olan, basit nişancı oyun

78
00:05:46,750 --> 00:05:52,150
‫modu, daha sonra bu karakteri değiştirmemize, bayrağı ele geçirme oyun modları gibi farklı oyun

79
00:05:52,150 --> 00:05:54,910
‫modlarıyla kullanmamıza izin veriyor.

80
00:05:55,060 --> 00:06:01,540
‫Bunu yapabilmemizin yolu, açılı parantezleri tam burada tüm oyun modlarını al kısmında kullanabiliriz

81
00:06:01,540 --> 00:06:07,900
‫ve basit bir nişancı oyun modu yapacağız ve bunu en üste eklememiz gerekecek.

82
00:06:08,320 --> 00:06:15,270
‫Yani hash, basit nişancı oyun modu temelini içerir.

83
00:06:15,550 --> 00:06:18,070
‫Yani sınıfın adını tam olarak doğru anlayamadım?

84
00:06:18,070 --> 00:06:18,700
‫Sanırım öyle.

85
00:06:18,700 --> 00:06:22,180
‫Basit bir nişancı oyun modu tabanı olacak.

86
00:06:22,360 --> 00:06:23,710
‫Biz de bunu elde etmeye çalışıyoruz.

87
00:06:24,130 --> 00:06:29,290
‫Ve devam edip bunu bir değişken işaretçisinde saklayabiliriz, buna oyun modu diyelim.

88
00:06:29,290 --> 00:06:35,860
‫Ve sonra yapmak istediğimiz şey, bu yeni satırda, muhtemelen buna sahip olduğumuzu ve bunun bir null pointer olmadığını kontrol

89
00:06:35,860 --> 00:06:36,790
‫etmek istiyoruz.

90
00:06:36,790 --> 00:06:40,630
‫Yani oyun modu boş bir işaretçiye eşit değildir.

91
00:06:40,630 --> 00:06:47,680
‫Ve sonra null pointer'a eşit değilse, oyun modu ok piyonu öldürüldü ve piyon öldürüldü

92
00:06:47,680 --> 00:06:50,590
‫demek istediğimiz yer burasıdır.

93
00:06:50,590 --> 00:06:55,150
‫Yani artık oyun modu bir piyonun öldürüldüğünün farkında.

94
00:06:55,170 --> 00:07:00,460
‫Hepsini öldür oyun modunu geçersiz kılabilmeniz için küçük bir mini meydan okuma.

95
00:07:00,580 --> 00:07:06,880
‫Öldürüldüğünde oturumu kapatın ve bunu haritanızda varsayılan oyun modu olarak ayarlayın.

96
00:07:07,210 --> 00:07:09,680
‫Umarım bu küçük meydan okumayı denemişsinizdir.

97
00:07:09,700 --> 00:07:11,800
‫Devam edeceğiz ve uygulayacağız.

98
00:07:11,800 --> 00:07:17,740
‫Bu yüzden bunu basit nişancı oyun modu tabanımızın genel bölümünü kopyalayarak yapacağım ve tüm

99
00:07:17,740 --> 00:07:19,540
‫bunları takip etmek zor.

100
00:07:19,540 --> 00:07:24,070
‫Daha sonra bu oyun modundan miras kalan hepsini öldür oyun modu tabanımıza gideceğiz.

101
00:07:24,310 --> 00:07:31,360
‫Sanal yöntemi yapıştıracağız ve bu yöntemi doğru şekilde geçersiz kıldığımızdan emin olmak için override

102
00:07:31,360 --> 00:07:33,850
‫anahtar sözcüğünü ekleyeceğiz.

103
00:07:34,730 --> 00:07:39,620
‫Daha sonra KML oyun modu tabanımız için C++'da bir uygulama oluşturacağım.

104
00:07:40,100 --> 00:07:42,980
‫Bu günlük mesajını almamız gereken yer burasıdır.

105
00:07:42,980 --> 00:07:48,430
‫Ve çok dikkatli olmak gerekirse, uygulamada bir şey olmadığını biliyoruz, ama asla bilemezsiniz.

106
00:07:48,440 --> 00:07:52,130
‫İşler daha sonra değişebilir ve bombadan ısırılabiliriz.

107
00:07:52,140 --> 00:07:55,250
‫Bu yüzden öldürülen bir piyon yapmak istiyoruz.

108
00:07:56,310 --> 00:07:59,160
‫Süper öldürüldü.

109
00:07:59,190 --> 00:08:00,060
‫Mantıklı.

110
00:08:00,330 --> 00:08:09,630
‫Ve sonra burada temel olarak bir -- öldürüldüğünü söyleyen bir giriş yapmak istiyoruz ve bunun işe yarayıp yaramadığını

111
00:08:09,630 --> 00:08:17,940
‫Unreal'e gidip derleyerek, ardından araç çubuğundaki planlar öğesine gidip proje ayarlarında

112
00:08:17,940 --> 00:08:23,250
‫varsayılan oyun modumuzu seçerek görebiliriz.

113
00:08:23,250 --> 00:08:29,040
‫Oyun modunu, temel sınıfı seçersek, bunun KML tabanlı oyun modu olmasını isteriz.

114
00:08:29,040 --> 00:08:31,770
‫Temel olarak, devam edin ve bunu yapın.

115
00:08:31,770 --> 00:08:35,640
‫Aslında, gidip seçtiğimizde yapmamızı istediğimiz şey tam olarak bu değil.

116
00:08:35,640 --> 00:08:44,160
‫Aslında bunun bir plan çocuğu olmasını istedik ve zaten pek çok şeyi ayarlanmış bir plan çocuğumuz

117
00:08:44,160 --> 00:08:45,060
‫var.

118
00:08:45,060 --> 00:08:47,820
‫Bu yüzden yeniden ebeveynlik yapalım.

119
00:08:48,390 --> 00:08:54,090
‫Köklere gideceğiz, burada sahip olduğumuz BP shooter oyun modunu bulacağız.

120
00:08:54,240 --> 00:09:02,790
‫Bu BP'yi yeniden adlandıracağız, hepsini öldür oyun modu ve sonra bunu açabilir, pencereyi kenetleyebilir, tam

121
00:09:02,790 --> 00:09:11,940
‫plan düzenleyicisini açabilir, sınıf ayarlarına gidebilir ve üst öğeyi KML oyun modu, C++ olarak değiştirebiliriz.

122
00:09:12,030 --> 00:09:18,030
‫Ve bu şekilde, mesajımıza çıktı günlüğümüze gidip oynat düğmesine basarsak ve ardından bir

123
00:09:18,030 --> 00:09:25,740
‫karakteri öldürürsek doğru kodu çalıştırıyor olmalıyız, bir sorunumuz var doğru kuruluma sahip görünmüyor.

124
00:09:25,740 --> 00:09:35,010
‫Dolayısıyla, sınıf varsayılanlarımıza geri dönersek ve varsayılan -- sınıfını BP atıcı karakteri olarak değiştirirsek,

125
00:09:35,010 --> 00:09:36,900
‫bu doğru olacaktır.

126
00:09:36,900 --> 00:09:39,330
‫Yanlış olması ihtimaline karşı kaydedin ve derleyin.

127
00:09:39,330 --> 00:09:42,000
‫Ve sonra buraya bıraktığım planları kontrol edin.

128
00:09:42,000 --> 00:09:44,700
‫KML oyun modunu seçti, C++ olanı.

129
00:09:44,700 --> 00:09:49,530
‫Bu yüzden aslında burada blueprint olanı seçmek istiyoruz ve devam edip play tuşuna basıyoruz.

130
00:09:49,530 --> 00:09:50,850
‫Şimdi piyonumuzu bulduk.

131
00:09:50,850 --> 00:09:57,330
‫Devam edip bu adamı öldürebiliriz ve bir piyonun öldürüldüğünü log mesajında görebilirsiniz.

132
00:09:57,330 --> 00:10:00,090
‫Yani bu harika bir şekilde çalışıyor.

133
00:10:00,240 --> 00:10:05,580
‫Şimdi bir sonraki derste, bunun ikinci kısmına bakacağız, yani oyunu gerçekten

134
00:10:05,580 --> 00:10:12,870
‫bitirmek istediğimizde ve oradan yeniden başlatabilmek için oyun sona erdi diyeceğiz.

135
00:10:12,960 --> 00:10:15,930
‫O konferansta görüşürüz.

