serhatwxe

Unreal MVP
3 Ocak 2016
317
1
54
28
(34) İstanbul Avrupa
Merhaba, player state ile game istance arasındaki fark nedir? Player state kullandığımda ilk levelden, 2. levele veri aktarımı sağlayabiliyordum ama aynı veri 3. levele yansımıyordu. Game istance kullanarak bu sorunu hallettim. Game istance daha kapsamlı ise neden player states kullanıyoruz?

Ayrıca Game Istance ile leveller arası veri aktarımı sağlayabiliyorum ama oyundan çıkınca bu veriler sıfırlanıyor. Misal oyun içi topladığım coinlerin oyundan çıkıp girince de kalmasını nasıl sağlayabilirim, bu yönteme ne ad veriliyor?
Teşekkürler.
 
serhatwxe' Alıntı:
Merhaba, player state ile game istance arasındaki fark nedir? Player state kullandığımda ilk levelden, 2. levele veri aktarımı sağlayabiliyordum ama aynı veri 3. levele yansımıyordu. Game istance kullanarak bu sorunu hallettim. Game istance daha kapsamlı ise neden player states kullanıyoruz?

Ayrıca Game Istance ile leveller arası veri aktarımı sağlayabiliyorum ama oyundan çıkınca bu veriler sıfırlanıyor. Misal oyun içi topladığım coinlerin oyundan çıkıp girince de kalmasını nasıl sağlayabilirim, bu yönteme ne ad veriliyor?
Teşekkürler.

GameInstance ı bildiğin RAM deki yani PC nin hafızasındaki EXE nin kendisi gibi düşün. Yani oyunu, sende çalışan uygulamayı, programı exeyi temsil ediyor. O yüzden oyun bir kere çalıştığında kapatana kadar level değiştirsende başka yerlere gitsende bir adet gameinstance var. Buna herşeyden ulaşabilirsin. Yani player controller dan pawndan UI dan widget tan her yerden ulaşabilirsin. Ancak oyunu kapattığında bu gider. Senin online oyun yaptığını düşündüğümden bu sistemin üzerinde durmamıştım ilk önce. Çünkü gameinstance olayı single player oyunda kullanılabilir. Online oyunda çöker.
   Playerstate ise oyundaki her karakter için bir tane bulunur. Karakterin tam da senin söylediğin şeyleri tutmak için kullanılır (Mesela ne kadar canı var ne kadar parası var, oyunun şu an hangi bölümünde , elinde hangi silah var vb.). Yani varoluş maksadı budur. Hem serverda hem clientta vardır ve online a hazırdır.  Oyunda bir tane bulunan Gamestate içinde bir dizi olarak tutulur oyundaki herkesin playerstatei. Senin durumda veri saklamak istiyorsun. Kapansada veri dursun istiyorsun. Bakman gereken konu "SaveGame". Bir tane SaveGame yapacaksın. Herşeyini orda saklayacaksın. Bu senin PC nde bir dosya olarak düşün. Oyun kapanıp açılabilir ancak savegame hep orada durur. İçine herşeyi kaydedebilirsin.
  Kolay gelsin.

Not: Playerstate levelden levele doğru geçiyorsan hiç bir zaman kaybolmaz. Mutlaka arada bir yaptığın bir şeyden bir yerlerde güme gidiyordur. 3 ncü level de farklı playerstate kullanmak ya da servertravel ile gitmemek gibi. Ama senin oyun online değil gameinstance kullanmak daha kolay olur.
 
Game instance: her bir client için oyun açılır açılmaz oluşturulan ve oyun kapanana kadar sürekli devrede kalan, sistemin cevizleri en büyük BP sidir ::) Open level geçişlerini Absolute seçeneğiyle de yapsan bundan etkilenmez, verileri sen müdahale etmediğin sürece değişmez. get game instance ile reference variable tanımlamaksızın her yerden erişim mümkündür. Begin Play yoktur, sadece senin çağırdığın event veya functionlar kullanılır.

Player state: level açıldığında her client için her bir player controllera bağlı olarak Game Mode tarafından oluşturulan hazır replicate edilmiş, online oyunlara yönelik clientın verilerini yalnızca tutmaya (saklamaya değil) yarayan BP dir. Buradaki veriler Server Travel haricinde resetlenir. 

Player state üzerindeki verileri level sonunda her client için Game Mode üzerinden player controller a aktararak kaydetmen gerekir. kaydetme işlemini player controller üzerinden Save Game to Slot ile yapabilir, Save sistemini Game instance üzerinde oluşturduysan Player controller üzerinden game instance save işlemini çağırabilir veya sadece bu veriyi game instance a aktarıp oyun sonunda kayıt edebilirsin.
 
erginegider' Alıntı:
GameInstance ı bildiğin RAM deki yani PC nin hafızasındaki EXE nin kendisi gibi düşün. Yani oyunu, sende çalışan uygulamayı, programı exeyi temsil ediyor. O yüzden oyun bir kere çalıştığında kapatana kadar level değiştirsende başka yerlere gitsende bir adet gameinstance var. Buna herşeyden ulaşabilirsin. Yani player controller dan pawndan UI dan widget tan her yerden ulaşabilirsin. Ancak oyunu kapattığında bu gider. Senin online oyun yaptığını düşündüğümden bu sistemin üzerinde durmamıştım ilk önce. Çünkü gameinstance olayı single player oyunda kullanılabilir. Online oyunda çöker.   Playerstate ise oyundaki her karakter için bir tane bulunur. Karakterin tam da senin söylediğin şeyleri tutmak için kullanılır (Mesela ne kadar canı var ne kadar parası var, oyunun şu an hangi bölümünde , elinde hangi silah var vb.). Yani varoluş maksadı budur. Hem serverda hem clientta vardır ve online a hazırdır.  Oyunda bir tane bulunan Gamestate içinde bir dizi olarak tutulur oyundaki herkesin playerstatei. Senin durumda veri saklamak istiyorsun. Kapansada veri dursun istiyorsun. Bakman gereken konu "SaveGame". Bir tane SaveGame yapacaksın. Herşeyini orda saklayacaksın. Bu senin PC nde bir dosya olarak düşün. Oyun kapanıp açılabilir ancak savegame hep orada durur. İçine herşeyi kaydedebilirsin.  Kolay gelsin.

Not: Playerstate levelden levele doğru geçiyorsan hiç bir zaman kaybolmaz. Mutlaka arada bir yaptığın bir şeyden bir yerlerde güme gidiyordur. 3 ncü level de farklı playerstate kullanmak ya da servertravel ile gitmemek gibi. Ama senin oyun online değil gameinstance kullanmak daha kolay olur.

nonlinear' Alıntı:
Game instance: her bir client için oyun açılır açılmaz oluşturulan ve oyun kapanana kadar sürekli devrede kalan, sistemin cevizleri en büyük BP sidir ::) Open level geçişlerini Absolute seçeneğiyle de yapsan bundan etkilenmez, verileri sen müdahale etmediğin sürece değişmez. get game instance ile reference variable tanımlamaksızın her yerden erişim mümkündür. Begin Play yoktur, sadece senin çağırdığın event veya functionlar kullanılır.

Player state: level açıldığında her client için her bir player controllera bağlı olarak Game Mode tarafından oluşturulan hazır replicate edilmiş, online oyunlara yönelik clientın verilerini yalnızca tutmaya (saklamaya değil) yarayan BP dir. Buradaki veriler Server Travel haricinde resetlenir. 

Player state üzerindeki verileri level sonunda her client için Game Mode üzerinden player controller a aktararak kaydetmen gerekir. kaydetme işlemini player controller üzerinden Save Game to Slot ile yapabilir, Save sistemini Game instance üzerinde oluşturduysan Player controller üzerinden game instance save işlemini çağırabilir veya sadece bu veriyi game instance a aktarıp oyun sonunda kayıt edebilirsin.

Teşekkür ederim.  
Edit: yeni yoruma bakar mısınız