Evet bilgili arkadaşları içeri davet ediyorum. Benim bilgi burada bitti gibi. Fakat ben açıklama yapınca siz anlayacaksınız.
Gerek uygulamalar gerek bazı oyunlar olsun arkada çalışan servisler barındırırlar.
Örneğin GTA gibi bir oyun düşünelim FIVEM mesela. Arkada banksystem var. Bu banksystem fiziksel bir şey değil. Fakat bir banka servisi arkada çalışıyor. Ya da mülk edinme sistemi gibi sistemler. Fakat bunlar doğrudan haritada script olarak çalışmıyor.
Mesela Unrealde mülk sistemi yapmak istesek bir BP kodlayıp haritaya mı atmalıyız? Mülk sistemim fiziksel olmak zorunda değil. PropertySystem diye bir şey kodlayıp bunu arkada çalıştıramaz mıyız?
Chat GPT nin söylediğine göre bunlara subsystem deniyormuş. GameInstanceye bağlı olarak çalışan alt Instanceler olarak geçiyormuş. Fakat ben böyle bir şeye ulaşamadım motor içerisinde.
Mesela meslek sistemi yapacağız diyelim. Property System , Bank System vs uzar gider. Tüm bu sistemler için BP ler kodlayıp haritaya mı atmak gerekiyor?
Bu sistemi PlayerPawnda yapamazsın. PlayerController de yapılmaz, PlayerState de yapılmaz, GameModede de yapılmaz. Nerede yapacağız? Bunlar farklı farklı modular sistemler çünkü servis olarak çalışmaları gerekiyor.
Tek bir GameInstanceye de bu kadar şey yığamayız. Farklı levellerde de çalışmaları gerekebilir. Örneğin oyuncu farklı bir moda farklı haritada giriş yapar fakat bank system o an devam etmek zorunda.
Dediğim şeyi tam anlatamamış olabilirim. Fakat anlarsınız diye düşünüyorum.
Mesela gün/zaman döngüsü de bir subsystemdir. Böyle global sistemler var. Fakat bunlar ne sıradan haritaya atılan BP ne de başka yerlere yazılabiliyor.
Mesela elimde banksystem_BP bulunacak fakat bu haritada olmayacak global çalışacak. Oyuncunun parasına sürekli faiz ekleyecek mesela örnek veriyorum. Oyuncu hangi atm objesinden erişirse erişsin bu servisle iletişim kurabilecek. Fakat bu servis asla bir dünyada bulunan bp olmayacak.
Yani dışarıdan external bir bp ile işlem yapılacak.
GameInstance gibi düşünebiliriz bunu. GameInstance dünyada yok oyun boyunca çalışan bir şey. Harita değişse bile veri tutar. BankSystemi de GameInstanceden türetilmiş alt dal gibi bir servis içerisinde bulunmalı. Bunu nasıl yaparız? Yani o bir actör olmayacak. Arkada çalışan bir servis olacak.
Mesela en basitinden bir vergi kuralı yazacağız diyelim. Tüm ürünlerin vergi çarpanı subsystemdeki vergi miktarına göre ayarlanıyor. Fakat bunu ayarlayan sistem haritada bulunan bir aktör değil. Dolayısıyla ben o çarpanı artırdıgımda şak diye her şeyin fiyatı fırlayacak.
Manager yani aslında. Kural belirleyici sistem.
Tüm araçların yenilenme olayı denilen bir şey yapalım mesela. Her araç 10 dakikada bir spawn noktasına geri dönsün ve sıfırlansın. Yol ortasında bırakılan araç park yerinde yeniden spawn olsun diyelim. Bu kod nereye yazılır? Hiçbir yere. Gamemodeye yazsan ben modu değiştirmek isteyebilirim. Oyuncuyla alakası olmadığından PC ya da playerstateye de yazılamaz. GameInstanceye yazsak mantılı olur fakat o da çok şişer. Oyun ayarları vs bir ton şeyi oraya mı yazacağız?
Subsystem lazım işte böyle şeyler için. Mesela GameInstanceden türetilmiş bir alt sınıf subsystem içine yazsak. Desek ki arkada 5 dakika say sonra tüm araçlara mesaj gönder. Tüm araçlara yenilenmesi gerektiğini iletir ve hepsi kendini yeniler. Fakat işte bunu nerede yapacağız? Bu tip sistemler için BP yazıp haritaya mı atacağız hepsini? Saçmalıktan ibaret olurdu. Sistem bunlar çünkü bir aktör değiller. Başka haritaya geçtiğimde ne olacak? Oraya da mı atacağız tek tek.
Olayın Plugin yazmak ile alakası yok bu arada. O bambaşka bir olay.
Böyle bir sistem de hata verme riski de çok düşüyor. Subsystem olursa. Tak çıkar gibi bir şeye dönüşüyor. Varsa çalışır yoksa çalışmaz.
Ben araştırdım C++ için GameInstanceSubsystem diye bir şey var. Main Game Instancene alt küme olan GameInstanceler bağlıyorsun subsystem şeklinde. Init oluyorlar ve ona göre aksiyon alınıyor. Fakat BP için böyle bir şey bulamadım.
Mesela oyun içi hile izleme sistemi yapmaya çalışsak bu da bir subsystem. Haritada bulunan bir aktör olamaz böyle bir şey. GameModede de bulunamaz çünkü oyun modu değişebilir. GameInstancede bulunabilir. Tüm oyun boyu izler ana menüde bile işlem uygulanabilir mesela oyuna girmesi engellenebilir. Makine banlanır GameInstancede makine okunabilir.
Ya çok önerilmez ama örnek veriyorum işte. Global merkezi sistemlerde BP yapıp haritaya atmakla iş çözülmüyor. Sürekli servis gibi arkada çalışan sistemler yapmak için bir çözüm arıyorum sadece.
Örnek vermek gerekirse : Faction/Wanted Level hesaplama/Reputation ve clanlar gibi şeyler.
Böyle şeyler GameState de barınabilir aslında. Fakat yine de olayın local kısımları var.
Gerek uygulamalar gerek bazı oyunlar olsun arkada çalışan servisler barındırırlar.
Örneğin GTA gibi bir oyun düşünelim FIVEM mesela. Arkada banksystem var. Bu banksystem fiziksel bir şey değil. Fakat bir banka servisi arkada çalışıyor. Ya da mülk edinme sistemi gibi sistemler. Fakat bunlar doğrudan haritada script olarak çalışmıyor.
Mesela Unrealde mülk sistemi yapmak istesek bir BP kodlayıp haritaya mı atmalıyız? Mülk sistemim fiziksel olmak zorunda değil. PropertySystem diye bir şey kodlayıp bunu arkada çalıştıramaz mıyız?
Chat GPT nin söylediğine göre bunlara subsystem deniyormuş. GameInstanceye bağlı olarak çalışan alt Instanceler olarak geçiyormuş. Fakat ben böyle bir şeye ulaşamadım motor içerisinde.
Mesela meslek sistemi yapacağız diyelim. Property System , Bank System vs uzar gider. Tüm bu sistemler için BP ler kodlayıp haritaya mı atmak gerekiyor?
Bu sistemi PlayerPawnda yapamazsın. PlayerController de yapılmaz, PlayerState de yapılmaz, GameModede de yapılmaz. Nerede yapacağız? Bunlar farklı farklı modular sistemler çünkü servis olarak çalışmaları gerekiyor.
Tek bir GameInstanceye de bu kadar şey yığamayız. Farklı levellerde de çalışmaları gerekebilir. Örneğin oyuncu farklı bir moda farklı haritada giriş yapar fakat bank system o an devam etmek zorunda.
Dediğim şeyi tam anlatamamış olabilirim. Fakat anlarsınız diye düşünüyorum.
Mesela gün/zaman döngüsü de bir subsystemdir. Böyle global sistemler var. Fakat bunlar ne sıradan haritaya atılan BP ne de başka yerlere yazılabiliyor.
Mesela elimde banksystem_BP bulunacak fakat bu haritada olmayacak global çalışacak. Oyuncunun parasına sürekli faiz ekleyecek mesela örnek veriyorum. Oyuncu hangi atm objesinden erişirse erişsin bu servisle iletişim kurabilecek. Fakat bu servis asla bir dünyada bulunan bp olmayacak.
Yani dışarıdan external bir bp ile işlem yapılacak.
GameInstance gibi düşünebiliriz bunu. GameInstance dünyada yok oyun boyunca çalışan bir şey. Harita değişse bile veri tutar. BankSystemi de GameInstanceden türetilmiş alt dal gibi bir servis içerisinde bulunmalı. Bunu nasıl yaparız? Yani o bir actör olmayacak. Arkada çalışan bir servis olacak.
Mesela en basitinden bir vergi kuralı yazacağız diyelim. Tüm ürünlerin vergi çarpanı subsystemdeki vergi miktarına göre ayarlanıyor. Fakat bunu ayarlayan sistem haritada bulunan bir aktör değil. Dolayısıyla ben o çarpanı artırdıgımda şak diye her şeyin fiyatı fırlayacak.
Manager yani aslında. Kural belirleyici sistem.
Tüm araçların yenilenme olayı denilen bir şey yapalım mesela. Her araç 10 dakikada bir spawn noktasına geri dönsün ve sıfırlansın. Yol ortasında bırakılan araç park yerinde yeniden spawn olsun diyelim. Bu kod nereye yazılır? Hiçbir yere. Gamemodeye yazsan ben modu değiştirmek isteyebilirim. Oyuncuyla alakası olmadığından PC ya da playerstateye de yazılamaz. GameInstanceye yazsak mantılı olur fakat o da çok şişer. Oyun ayarları vs bir ton şeyi oraya mı yazacağız?
Subsystem lazım işte böyle şeyler için. Mesela GameInstanceden türetilmiş bir alt sınıf subsystem içine yazsak. Desek ki arkada 5 dakika say sonra tüm araçlara mesaj gönder. Tüm araçlara yenilenmesi gerektiğini iletir ve hepsi kendini yeniler. Fakat işte bunu nerede yapacağız? Bu tip sistemler için BP yazıp haritaya mı atacağız hepsini? Saçmalıktan ibaret olurdu. Sistem bunlar çünkü bir aktör değiller. Başka haritaya geçtiğimde ne olacak? Oraya da mı atacağız tek tek.
Olayın Plugin yazmak ile alakası yok bu arada. O bambaşka bir olay.
Böyle bir sistem de hata verme riski de çok düşüyor. Subsystem olursa. Tak çıkar gibi bir şeye dönüşüyor. Varsa çalışır yoksa çalışmaz.
Ben araştırdım C++ için GameInstanceSubsystem diye bir şey var. Main Game Instancene alt küme olan GameInstanceler bağlıyorsun subsystem şeklinde. Init oluyorlar ve ona göre aksiyon alınıyor. Fakat BP için böyle bir şey bulamadım.
Mesela oyun içi hile izleme sistemi yapmaya çalışsak bu da bir subsystem. Haritada bulunan bir aktör olamaz böyle bir şey. GameModede de bulunamaz çünkü oyun modu değişebilir. GameInstancede bulunabilir. Tüm oyun boyu izler ana menüde bile işlem uygulanabilir mesela oyuna girmesi engellenebilir. Makine banlanır GameInstancede makine okunabilir.
Ya çok önerilmez ama örnek veriyorum işte. Global merkezi sistemlerde BP yapıp haritaya atmakla iş çözülmüyor. Sürekli servis gibi arkada çalışan sistemler yapmak için bir çözüm arıyorum sadece.
Örnek vermek gerekirse : Faction/Wanted Level hesaplama/Reputation ve clanlar gibi şeyler.
Böyle şeyler GameState de barınabilir aslında. Fakat yine de olayın local kısımları var.
Son düzenleme: