‫Merhaba ve hoş geldiniz.
‫Bu derste, seviyemdeki tüm düşmanları öldürebilmem için kazanma koşulunun çalışmasını
‫sağlayacağız.
‫Ve bana bu ön camı gösterecek.
‫Hurrah!
‫Hadi içeri dalalım ve nasıl yapıldığını görelim.
‫Bu yüzden oyuncumuzun bu oyunu gerçekten kazanmasının mümkün olmasını istiyoruz.
‫Şu anda yapamazlar.
‫Peki bunu nasıl yapacağız?
‫Bunu birkaç şekilde yapabilirsiniz.
‫Bunlardan biri, Piyon Öldürüldü denildiğinde ve piyon oyuncu kontrolörü değil de bir yapay zeka olduğunda olabilir.
‫Dünyada kaç tane yapay zeka olduğunu söyleyen bir değişkenden, kaç tanesini öldürmemiz gerektiğini çıkarabiliriz.
‫Ve sonra bu sıfıra indiğinde, oyunu oyuncu lehine sonlandırabiliriz.
‫Ancak bunun biraz kırılgan olduğunu düşünüyorum çünkü dünyada ne kadar düşman olduğunu iki yere
‫koymamızı gerektiriyor.
‫Esasen, oyun modunda olması gerekiyor, ancak aynı zamanda düşmanları yerleştirirken dünyada da
‫olması gerekiyor ve bu ikisi senkronize olmayabilir ve bu bazı sorunlara neden olacaktır.
‫Bu yüzden bunu yapmayı tercih ettiğim yol basitçe şunu söylemektir: Bir piyon öldürüldüğünde dünyadaki tüm
‫düşmanları sayalım, yeniden sayım yapalım, tüm YZ'nin kelle sayımını yapalım ve hangilerinin hala hayatta
‫olduğunu görelim.
‫Eğer onlardan biri hâlâ hayattaysa, oyunu henüz bitirmeyeceğiz demektir.
‫Temel olarak, oyun bitmemiştir, ancak hepsi ölmüşse ve oyun kumandası ölmemişse,
‫oyuncu kazanmıştır.
‫Bunu yapabilmemiz için, bir oyuncu kontrolörünün ölü olup olmadığını sorgulamanın bir yolunu bulmamız
‫gerekir.
‫Pardon, yani yapay zeka kontrolörü.
‫O zaman tetikçimizi arayalım.
‫Yapay zeka kontrolörü.
‫Burada yapmak istediğimiz şey, ölü olup olmadığını sorgulamamıza olanak tanıyan yeni bir genel yöntem oluşturmaktır.
‫Bu yüzden temelde ölü olan bir top yapacağız ve bu bir yarışma olacak çünkü çağrıldığında denetleyicide
‫gerçekte ne olduğunu değiştirmemelidir.
‫Ve devam edip bir uygulama oluşturabiliriz.
‫Artık ölü olup olmadığını bize söyleyebilecek bir aracı kontrol ediyor olmalıyız.
‫Eğer gidip tekrar bakarsak, tetikçi karakterine bir göz atmış oluruz ki bu da bir --.
‫Unutmayın, zaten bu ölü orada işlev göremez.
‫Yani esasen yapmak istediğimiz şey, talebi şu anda kontrol ettiğim atıcıya iletmek.
‫Evet.
‫KML oyun modunda, kumandayı ele geçirebilir, kontrol eden şeyi ele geçirebilir,
‫bir döküm yapabilir ve ardından bunun ölü olup olmadığını kontrol edebilirsiniz.
‫Ancak, bu genellikle en iyi uygulama değildir çünkü aniden ölümü nasıl hesapladığımızla ilgili
‫bir şey değişirse veya AI kontrolörü farklı türleri kontrol edecekse, aniden gidip oyun modunu değiştirmemiz gerektiği
‫anlamına gelir ki bu mantıklı değildir.
‫Bu yüzden bunu yapmak daha iyidir ve yapay zeka kontrolünün içinde geçiş yapmak daha sağlamdır.
‫Başka birinin sınıfının iç kısımlarıyla uğraşmamızı engeller, bu da genellikle işlerin ne zaman değişeceğini kısıtlayabileceğimiz,
‫kaç sınıfa dokunmamız, güncellememiz ve değiştirmemiz gerektiğini kısıtlayabileceğimiz anlamına gelir
‫ki bu her zaman iyi bir şeydir.
‫Yapmak istediğimiz şey, bir tetikçi karakteri olduğundan emin olmak için onu bulmak ve rolünü belirlemek.
‫O zaman alçı yapalım.
‫Bir tetikçiye gidecek.
‫Karakter.
‫Ve sanırım atıcı karakter hakkında bilgi sahibi olduğumuzdan emin olmak için göz kontrolümüzün üst kısmına
‫bir hash include yapmamız gerekecek.
‫Ve sonra bir get yaparak döküm yapacağız -- ve bunu bir değişkende saklamak isteyeceğiz,
‫böylece bir atıcı olacak.
‫Karakter işaretçisine kontrollü diyelim.
‫Karakter.
‫Buna sadece karakter diyemem çünkü bu zaten AI denetleyicisinde bir değişken ve satırın sonuna noktalı
‫virgül koyup bunun null olup olmadığını kontrol edeceğiz.
‫Yani kontrol karakteri null pointer'a eşit değildir, o zaman ölü olup olmadığına dair durumunu sorgulayabilmeliyiz.
‫Bu yüzden kontrol edilen karakteri geri döndürebilmeliyiz.
‫Öldü.
‫Temel olarak, kontrol karakteri bir tetikçi karakteri ise talebi kontrol karakterine iletiriz.
‫Ancak, burada bir return deyimimiz olmadığına dikkat edin.
‫Diğer durumda, dönüş değeri void değilse her zaman bir return olması gereken bir return deyimine
‫ihtiyacımız vardır.
‫Bu nedenle, if deyiminin içinde zaten geri dönmediğimiz durumu yakalamak için if deyiminin dışına
‫bir return deyimi koymamız gerekir.
‫Ve burada sadece diyeceğiz ki, bu karakter öldü mü?
‫Evet, esasen, eğer bu kadar doğru değilse, temelde ölmüştür.
‫Eğer bir piyonumuz yoksa, eğer bir piyonu kontrol etmiyorsak, o zaman aslında bu kontrolör bizim
‫için ölü gibidir.
‫Ve bu olabilir çünkü piyonun öldüğünde yapay zeka kontrolöründen ayrıldığını unutmayın.
‫Şimdi oyun moduna geri döneceğiz ve burada ne yapmak isteyeceğiz?
‫Esasen yapmak istediğimiz şey, A atıcısının tüm I'leri üzerinde bir for döngüsüdür. I..
‫Dünyada.
‫Ve bu for döngüsü ile.
‫Ne yapmak istiyoruz?
‫Öldüğünü görmek istiyoruz.
‫Temel olarak ve ya temel olarak ölmedi.
‫Ve eğer herhangi biri ölü değilse, o zaman anında tüm gözleri kontrol etmek zorunda olmadığımızı anlarız.
‫Sadece bir A bile olsa. I. hayatta kalırsa, oyun bitmez.
‫Böylece erken dönüş olarak bilinen ve muhtemelen daha önce gördüğünüz, içindeki
‫kodu daha fazla çalıştırmadan bu fonksiyondan çıkma işlemini yapabiliriz.
‫Dolayısıyla, bu erken dönüşten sonraki her şey for döngüsünün yürütülmesini durduracak, ondan sonraki her şeyin
‫yürütülmesini durduracaktır.
‫Ancak o zaman, bu tam döngüden erken dönmeden başarılı bir şekilde geçmeyi başarırsak, yaşayan
‫A olmadığını söyleyebiliriz. I. o zaman devam etmeli ve oyunu bitirmeliyiz.
‫Bu kadar basit.
‫Şimdi, burada bakmamız gereken bulmacanın bir parçası da oyunun sonudur.
‫Çünkü oyunumuz oyuncu kumandasında sona erdi.
‫Nişancı oyuncu kontrolörünün şu anda bununla nasıl başa çıktığına bir göz atalım.
‫CP'sine gidersek, şu anda gördüğümüz şey, şu anda B'nin kazanan olup olmadığını
‫tamamen görmezden geldiğidir.
‫O halde yapmamız gereken, B'nin kazanıp kazanmadığını söylemektir.
‫O zaman başka bir şey yapacağız.
‫Kaybetme ekranımızı görüntüleyeceğiz.
‫Kaybetme ekranını görüntülemekten sorumlu olan bu satırları buradan kesin.
‫Bunu alt ifadeye koyun ve her iki durumda da yeniden başlatacağız.
‫Yani şu anda B kazanıyor.
‫Ne yapacağız?
‫Pekala, devam edeceğiz ve muhtemelen bir rüzgar perdesi de oluşturacağız, ki bu oldukça basit
‫olacak.
‫Atıcı oyuncu kontrolörü için başlık dosyamıza gidiyoruz.
‫Kaybetme ekranı sınıfımızı çoğaltabilir ve burada bir kazanma ekranı sınıfı oluşturabiliriz.
‫Biz de devam edebiliriz.
‫Ve aslında, bu sizin için küçük bir meydan okuma.
‫Belki de devam edin ve ön cam yapabilecek şekilde ayarlayın.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Umarım bunu denemişsinizdir.
‫İçeri girip tüm kayıplar yerine buraya rüzgar camı koyacağız ve esasen diğer her şeyi kopyalayacağız.
‫Bu şekilde.
‫Devam edip bunu derleyeceğiz, ardından editöre geçeceğiz ve kendimize oyuncu denetleyici
‫sınıfını bulacağız.
‫Ve şimdi boş bir ön cam sınıfı olduğunu görmeliyiz ve yapacağımız şey UI'ye gitmek
‫ve ön camı çağırmak için kaybetme ekranını çoğaltacağım ve isterseniz kendinizinkini sıfırdan oluşturabilirsiniz.
‫Ama ben de benzer şekilde kullanacağım, sadece rengi yeşil olarak değiştireceğim.
‫Ve bunu kaybetmek yerine kazanmaya dönüştürün.
‫Çünkü yeniden başlatma mantığı etkili bir şekilde aynı olacaktır.
‫Nedense oradaki rengimi sıfırladı.
‫Gidip rengi tekrar yeşile ayarlayacağım.
‫Tamam, bu harika.
‫Ancak KML oyun modunda hala doldurulmamış bir yığın sözde kodumuz var.
‫Bunun nedeni de kazanmayı hesaplamanın sizin göreviniz olmasıdır.
‫Sözde kodu doldurun.
‫Size yardımcı olması için bu sınıfta aşağıdaki T aralığını kullanın.
‫Kontrolör üzerinde oluşturduğumuz new is dead fonksiyonunu kullanın ve test edin.
‫Dünyadaki tüm yapay zekayı öldürdüğünüzde ön camınızın görünüp görünmediğine bakın.
‫Bu yüzden bir göz atmanız için sözde kodu ekranınızda bırakacağım.
‫Tekrar hoş geldin.
‫Öyleyse for döngüsü ile başlayalım.
‫Bu yüzden dört tane yapacağız.
‫Döngü için ne yapacağız?
‫Şu anda bir kontrolör değil.
‫Atıcı yapay zeka kontrolörü olacak.
‫Bu yüzden bunu da dahil etmemiz gerekiyor.
‫Tetikçi olacak.
‫Ben kontrolör H.
‫Bu da bir atıcı üzerinde döngü yapacağımız anlamına geliyor, A. I. kontrolör, yıldız.
‫Sadece şortlar için denetleyiciyi çağırın ve sonra bir atıcı A için tekrar bir t aktör aralığı yapacağız.
‫I. kontrolör.
‫Bu iki tipin eşleşmesini sağlamamız ve ardından dünyayı almamız gerekiyor.
‫Bu yüzden bu seviyede yapıyoruz.
‫Ve sonra burada for döngüsünün gövdesi var, burada ölü olup olmadığını soracağız.
‫Eğer değilse, kontrolör oku ölmüştür.
‫Temel olarak ölmediğimizden emin olalım diyoruz.
‫Ve eğer ölmediyse, o zaman devam edip bu erken dönüşe geri dönüyoruz çünkü oyunun henüz bitemeyeceğini
‫biliyoruz.
‫Aksi takdirde, delik döngüsünden geri dönmeden geçtiysek, oyunu sonlandırmamız gerekir çünkü oyuncu
‫seviyedeki tüm yapay zekayı öldürmüş olmalıdır.
‫Yani bu durumda bir son oyun yapabiliriz.
‫Doğru.
‫Çünkü oyuncunun bir tane var.
‫Ve bu, etraftaki tüm oyuncu kontrolörlerini ve kumandalarını bilgilendirmelidir.
‫Güzel.
‫Şimdi gidip bunu derleyelim.
‫Öncelikle, Unreal'a gidip bir oyun oynayacağım.
‫Nedense editörüm bu belirtilen renk düzenleme işleminde olduğumu düşünüyor, bu yüzden onu kapatıp
‫yeniden başlatacağım.
‫Şimdi yeniden başlatıldığına göre, devam edip oyuna basacağım ve öldürüleceğim.
‫Her şeyden önce.
‫Evet, hala kaybediyorum.
‫Bu harika.
‫Bakalım o beni öldürmeden ben onu öldürebilecek miyim?
‫Hadi gidelim.
‫Bom, bom, bom, bom, bom, bom, bom.
‫Çok çabuk kaybediyorum.
‫Gidip silahı tekrar bulalım ve hazırlayalım.
‫Test amacıyla silahın verdiği hasarı oldukça yüksek tuttuk.
‫Gidip hasarı bu sefer 20'ye kadar düşüreceğim.
‫Yani hala hızlı ama o kadar da hızlı değil.
‫Git oyna ve bu adama birkaç kez vur.
‫Ve orada gördüğümüz şey aslında benim kazandığımdı çünkü seviye yeniden başladı.
‫Yani gidip bu adamı tekrar öldürürsem, hiçbir şey olmadığını göreceksiniz.
‫Mesaj günlüğünde, create öğesinin null sınıfıyla çağrıldığı belirtiliyor.
‫Bunun nedeni, BP atıcı oyuncu kontrol cihazımıza tekrar gidersek, ön camımızı bağlamadığımızı
‫görebilirsiniz.
‫Yapmayı unuttuğum bir şey var, böylece gidip derleyebilir, kaydedebilir ve oynayabilirsiniz.
‫Ve şimdi umarım bu adamı New Doom'a öldürürsem kazanırım ve 5 saniye içinde yeniden başlayacağım.
‫Ben de size aynı şeyin doğru olduğunu göstermek istiyorum.
‫Eğer dünyaya daha fazla oyuncu kontrolörü koyarsam, ikisini de öldürmem gerekecek.
‫Şimdi gidip nişancı karakterini buraya getirelim.
‫Ve bu benim öldüreceğim ikinci düşmanım olacak.
‫O zaman bu adamı öldür, bum.
‫Ve kazanamadı.
‫Sonra ikinci adama gittim, bom.
‫Ve şimdi bir tane var çünkü tüm yapay zekayı öldürdüm ve bunu yapmak için gidip herhangi bir değişkeni değiştirmemiz gerekmedi çünkü
‫for döngümüz tüm canlı A'yı sayıyor. I. her seferinde sıfırdan.
‫Yani şu anda oldukça sessiz bir dünyada yaşıyoruz.
‫Bu yüzden bir sonraki derste, nasıl ses kaydı yapabileceğimize biraz bakmak istiyorum.
‫Orada görüşürüz.