leonscottkfm

Unreal MVP
31 May 2015
1,538
5
219
63
28
(34) İstanbul Avrupa
store.steampowered.com
Unrealde tüm oyuncular üzerinde işlem yapmak için ne gerekiyor ? Get player control yaptığımızda orada dönen 0 ID sı her oyuncunun kendi locali mi yoksa oyuna ilk bağlanan kişiyi mi dikkate alıyor ?
Mesela tüm oyunculara widget göstermek istersem get all actors of class > PlayerController yapıp bunu for each ile create widget mi demem lazım ?

Tüm oyuncuları destroy etmek istiyorum mesela ? Ayrıca tüm oyuncular üzerinden işlem yaparken Multicastın bu olayla alakası yok değil mi o sadece bu olan olayları herkes görsün diye var. Yani asıl işlevi tüm oyuncuları etkilemek değil sadece olanı tümüne göstermek. Create widgeti multicast içinde yaparsam tüm oyunculara gitmez diye düşünüyorum.
 
leonscottkfm' Alıntı:
Unrealde tüm oyuncular üzerinde işlem yapmak için ne gerekiyor ? Get player control yaptığımızda orada dönen 0 ID sı her oyuncunun kendi locali mi yoksa oyuna ilk bağlanan kişiyi mi dikkate alıyor ?
Mesela tüm oyunculara widget göstermek istersem get all actors of class > PlayerController yapıp bunu for each ile create widget mi demem lazım ?

Tüm oyuncuları destroy etmek istiyorum mesela ? Ayrıca tüm oyuncular üzerinden işlem yaparken Multicastın bu olayla alakası yok değil mi o sadece bu olan olayları herkes görsün diye var. Yani asıl işlevi tüm oyuncuları etkilemek değil sadece olanı tümüne göstermek. Create widgeti multicast içinde yaparsam tüm oyunculara gitmez diye düşünüyorum.

  Serverda olduğundan emin olman ve orada tüm player controller ları toplaman gerekiyor. Aslında toplaman değilde, eğer böyle bir şeye ihtiyacın varsa daha bağlandıklarında onları bir dizide bir arada tutman lazım. Ancak kafa karıştırmayalım ve GetAllActorsOfClass la da toplayabilirsin. ( Söylemek istediğim eğer böyle tüm şeyler üzerinde işlem yapacaksak mümkünse bunları önceden ve bir kere listede toplamamız her zaman daha mantıklıdır.)

  Eğer local daysan ve playercontroller ları destroy edersen senin kendi localindekileri destroy etmiş olursun. Serverda kileri değil. Bu neye sebep olabilir bilmiyorum. Çökme de olabilir, local in diğerlerini görememesi de. Eğer serverdayssan ve destroy edersen kesinlikle tüm clientlarda o playercontroller lar destroy olacaktır.
 Multicast eğer serverdaysan aynı fonksiyonun bağlı diğer clientlarda da çalışmasını sağlar. Eğer client taysan bir fonksiyonu yoktur. Göstermek ya da göstermemek gibi bir görevi yok.
 Widgetlar zaten doğası itibari ile local dirler. Replication için tasarlanmamıştır. Yani normal şartlarda örnek vermek gerekirse karakter canlarını gösteren widget replicate edilmez. Health yani can replicate edildiğinden local PC ler sadece kendi widgetlarını bu replicate edilmiş float ile beslerler. Yani çok farklı bir şeyler yapmaya çalışmıyorsan widget ların bu network, internet, yada replication ile hiç ilgisinin olmaması lazım.
 
leonscottkfm' Alıntı:
Teşekkürler . Ekrana bir mesaj bırakacağım mesela ve tüm oyuncularda bu mesaj görünecek bu işlemi nereden yapmam lazım tam olarak ?
Herkesin ekranında bir geri sayım çıkaracağım mesela... Bu widget nereden çağırılırsa tüm oyunculara ulaşabilir?


1) Player controllerın içine event oluştur. Bu evente "ShowWidget" ismini verelim. Run on owning client yapıp reliable işaretle.
2) ShowWidget eventine create widget ve add to viewport komutlarını bağla. (Hangi widgetının herkeste gözükmesini istiyorsan onu buraya ekle.)
3) Geri sayım widgetına gel. Geri sayım sona erdiğinde player controllerı cast edip "ShowWidget" eventini çağır.
 
Peki ben başka bir şey sorayım siz anlıyor gibisiniz.
Mesela ben kurucu start tuşuna bastığı anda tüm oyuncuların buttonu "Ready" ise hepsinin ana levele travel olmasını istiyorum.
Sizce nasıl bir yol izlenmeli ?
Ready değişkeni PlayerState denilen yerde mi tutulmalı ? Yoksa bir PlayerControllerde mi ?
Oyun GameInstanceden mi travel olmalı yoksa bir GameModeden mi ?
 
leonscottkfm' Alıntı:
Peki ben başka bir şey sorayım siz anlıyor gibisiniz.
Mesela ben kurucu start tuşuna bastığı anda tüm oyuncuların buttonu "Ready" ise hepsinin ana levele travel olmasını istiyorum.
Sizce nasıl bir yol izlenmeli ?
Ready değişkeni PlayerState denilen yerde mi tutulmalı ? Yoksa bir PlayerControllerde mi ?
Oyun GameInstanceden mi travel olmalı yoksa  bir GameModeden mi ?


Travel konusunda bende çok az bilgiye sahibim. Lobideki ready sistemiyle ilgili bu video size yardımcı olur. 
Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.

Ayrıca bu video serisinde travel olayına da değiniliyor. Umarım yardımı olur.