mrtcnaslnts

Aktif üye
8 Ara 2019
610
2
44
28
Birkaç soru sormak ve yaşadığım bir sorun için de destek rica ediyorum
Multiplayer üzerine geliştirdiğim bir projem var bu projeyi steamda yayınlicam ve oyuncular server kurup birbirini davet edip oyun atcak pvp yapcak vs. yani proje bu şekilde Dedicated server değil.

1- Bu proje için visual studio üzerinden bir derlemeye ihtiyacım var mı?

2- Replicated etmem gerekiyor mu gerekiyorsa özelikle replicate etmem gerekenler kabaca neler? ( HP-DAMAGE-OYUNCUYA HAS ÖZELLİKLER VS VE BUNLARI NERDE TUTMAM DAHA SAĞLIKLI OLUR PLAYER STATE Mİ?)

3- Create-find-join sessionları Game instance icinde custom event ile oluşturup sonra Character controller içinde de yine custom event oluşturup buna bağlıyorum. Ve sonra oluşturduğum widget içine controllerdaki custom eventi çağırıp tetiklemeyi widgetdan yapyorum doğru mudur? Ve oyun bağladığında içinde olacak etkinlikler veya takımlara toplu verilecek özellikler puanlar vs yine benzer mantıkta mı yapmam gerek.

4-  Oyuncular her maç kazandığında ya da örn 1000 kill aldığında bir rozet kazanmasını istiyorum ve bu rozeti de oyun içinde gözükecek bunu nasıl sağlarım

5 - Projeyi paketlerken Shipping seçili paketliyorum doğru mu yapyorum?

6 - Create-find-join sessionları editörde test ederken oyunu "Listen server - Standalone - Client" Hangisi ile çalıştırıp test etmem gerekyo?
Sorularım bu kadar.

//////////////////////

Yaşadığım sorun da şu,

Create-find-join sessionları test ediyorum şuan. Oyunu editörde çalıştırıyorum 
1. Oyuncuda Create sesion çalıştırıyorum
2. Oyuncuda Join oluyorum ama 2 3 saniye sonra oyuncuyu sessiondan atıyor bunun sebebi ne acaba 2 gündür uğraşyorum ve fıtık etti

Oyunu birde paketleyip iki ayrı bilgisayarda test ettim birisine wifiden birisine telefondan bağlandım. Ama bu seferde 2. oyncu sessionu bulmuyor
Birde şimdi farkettim. Shipping olarak paketlediğimde steam oyunu görmüyor. Ama development olarak paketlersem görüyor
Bu arada Session oluşturma kısmında kimse posses olmuyor. main menude sadece create ve join bu kadar. oyunu sonradan başlatcak host
 
Bak dostum benim oyun tamamen multiplayer dediğin her özellik var.
Birbirimize bile ateş edip öldürüyoruz.Yapay zeka ekledim ama şuan çalışmıyor.
Sorularına cevap vereceğim uzun bir yazı ile sonra.

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.

Benim proje
 
Güzel görünüyor izledim hepsini evet. Menü tasarımı vs de başarılı. Sen de aynı proje üzerine çalışyorsan çok iyi ve tecrübelerinden faydalanmak isterim paylaşırsan çok mutu olurum.
 
Proje bana ait tamamen multiplayer. Başta sıkıntı yaşadık sunucu kurulumunda vs çözdük en son hepsini.


mrtcnaslnts' Alıntı:
Birkaç soru sormak ve yaşadığım bir sorun için de destek rica ediyorum
Multiplayer üzerine geliştirdiğim bir projem var bu projeyi steamda yayınlicam ve oyuncular server kurup birbirini davet edip oyun atcak pvp yapcak vs. yani proje bu şekilde Dedicated server değil.

1- Bu proje için visual studio üzerinden bir derlemeye ihtiyacım var mı?

2- Replicated etmem gerekiyor mu gerekiyorsa özelikle replicate etmem gerekenler kabaca neler? ( HP-DAMAGE-OYUNCUYA HAS ÖZELLİKLER VS VE BUNLARI NERDE TUTMAM DAHA SAĞLIKLI OLUR PLAYER STATE Mİ?)

3- Create-find-join sessionları Game instance icinde custom event ile oluşturup sonra Character controller içinde de yine custom event oluşturup buna bağlıyorum. Ve sonra oluşturduğum widget içine controllerdaki custom eventi çağırıp tetiklemeyi widgetdan yapyorum doğru mudur? Ve oyun bağladığında içinde olacak etkinlikler veya takımlara toplu verilecek özellikler puanlar vs yine benzer mantıkta mı yapmam gerek.

4-  Oyuncular her maç kazandığında ya da örn 1000 kill aldığında bir rozet kazanmasını istiyorum ve bu rozeti de oyun içinde gözükecek bunu nasıl sağlarım

5 - Projeyi paketlerken Shipping seçili paketliyorum doğru mu yapyorum?

6 - Create-find-join sessionları editörde test ederken oyunu "Listen server - Standalone - Client" Hangisi ile çalıştırıp test etmem gerekyo?
Sorularım bu kadar.

//////////////////////

Yaşadığım sorun da şu,

Create-find-join sessionları test ediyorum şuan. Oyunu editörde çalıştırıyorum 
1. Oyuncuda Create sesion çalıştırıyorum
2. Oyuncuda Join oluyorum ama 2 3 saniye sonra oyuncuyu sessiondan atıyor bunun sebebi ne acaba 2 gündür uğraşyorum ve fıtık etti

Oyunu birde paketleyip iki ayrı bilgisayarda test ettim birisine wifiden birisine telefondan bağlandım. Ama bu seferde 2. oyncu sessionu bulmuyor
Birde şimdi farkettim. Shipping olarak paketlediğimde steam oyunu görmüyor. Ama development olarak paketlersem görüyor
Bu arada Session oluşturma kısmında kimse posses olmuyor. main menude sadece create ve join bu kadar. oyunu sonradan başlatcak host


1-) Herhangi bir derlemeye ihtiyacın yok projen C++ ise ve C++ dosyalarınla ilgili bir problem yaşadıysan sağ tıklayıp generate visual studio files demen lazım.
2-) HP - Damage olaylarını bir çok yerde kullanabilirsin fakat Server-Side bunların çoğu. Yani server biliyor sadece sen sadece sonuçlarını görürsün. Server der ki mesela adamın canı 0 oldu senin karakterde replicated bir şekilde ölüm animasyonu gerçekleştirir mesela ve diğer oyuncular da bunu görür. Can değerini de alabilirsin. Fakat verilen hasarı arkaplanda azalan can değerini vs damage olaylarını sadece server görür bu da güvenliği artırır.
3-) Lobinin playercontrolleri ayrı oyunun playercontrolleri ayrı olur. Karakter ise hareket etmeyen saçma sapan bir şey olur lobide ve menüde.
Tabi oyununda lobi sistemi var ise.
4-) Rozet gibi kalıcı ödülleri GameInstancede alıp SaveGame ile kayıt edebilirsin ve oyun yüklendiğinde bunları da profil kısmına SaveGameden çekebilirsin.
5-) Projeni paketlerken Shipping yapman iyidir.
6-) Editörde sunucu işlemlerini test ederken Listen Server olarak açman lazım, Client ise bildiğimiz client olur ve bağlanmaya çalışır.

Son olarak Replicate işlemleri derin bir konu ve biraz karışıktır başta. Ama birkaç şey deneyip öğrenebilirsin.
Oyuncunun sessiondan atılma sebebi daha önceki konudada söyledim , projeni C++ olarak kurman lazım yoksa bağlanamazsın. Ayrıca arkadaşınla dene bu tür şeyleri. Az önceki konudaki eleman yok öyle bir sorun dedi ama var, mesela yaratık bende normalde hareket ediyor ama paketleyip arkadaşımla girdiğimde hareket etmediğini gördüm.
 
Senin yaşadığın sorunun 2 pc olması veya olmaması ile alakası yok. O sorununu Navmesh'i dynamic yaparak çözdüm demişsin. O sorun UE'de eskiden beri var olan bir bug. Dynamic yapman şart falan değil.

Benim projemde Static kullanıyorum ve bütün yapay zekalar Paketledikten sonra, önce, aynı pc veya farklı pc farketmeksizin sorunsuz çalışıyor.

Navmesh problemini çözmenin iki yolu var.

1. Proje klasöründen intermediate ve saved dosyalarını silip tekrar compile edip düzeltmek.

2. Eğer 1. olmaz ise navmesh'i kullandığın map içinden silip ve mapte oluşturduğu recastnav dosyasını da sildikten sonra kayıt ediceksin. O mapi Duplicate edip yenisine tekrar navmesh atacaksın.

Bu sorunun sebebi aynı pc ayrı pc falan değil yani. Online sistemden tamamen bağımsız bir sorun.
 
Ben ona demedim ki ? Bu sorun bende bugün oldu. Ben Session sisteminde Travel yapmak için gerçek bir ortam lazım dedim. Local pc den 2 client travel yaparsa proje cortluyor. O yüzden 2 pc lazım dedim.
Navmesh problemini bilmiyorum ben bug mudur nedir artık. Daha önce çalışıyordu şimdi çalışmadı nedense. Dynamic yapıp çözdüm direkt, senin dediğini yaparsam tüm ayarlar yok olur. visual studio files generate etmem gerekir vs vs vs uğraştırır baya.

Lobi sistemi var mı senin oyununda ?

Mesela lobi levelimi açtım diyelim ve listen server ile 2 oyuncu yaptım , daha sonra ready verdik yükleme ekranında kalıyor öyle travel gerçekleşmiyor. Ama steamde arkadaşımla denediğim zaman direkt açıyor leveli.

Senin için video çektim. Sunucu kurup katıl diyorum crashı yiyorum :D

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 
Bilgilendirme için teşekkür ederim. Attığın videoda menü tasarımın çok güzel olmuş valla bravo profesyonel duruyo.

Sorun hala devam Yeni proje açtım orda denedim sorun yok. ama ana projede ya bağlanmıyor ya da başlanırsa join olan clienti atıyor 2 3 saniye sonra valla derlicem

Edit: Çözüldü
 
Lobi sistemi var, hazır olunca başlama sistemi var ve local olarak bile çalışıyor. Sen de farklı bir sorundan kaynaklı oluyor. Bende aynı sistemler var. Lobiye geçiliyor oradan hazır verilip start ile mape travel gerçekleşiyor. Söylediğim klasörleri silince hiç bir ayarın kaybolmaz. Sadece Map ve içindeki materialler falan tekrar derlenir.
 
NooXRii Hocam son yorumumu editlemiştim çözüldü diye teşekkürler bende zaten lobi sistemiyle çözdüm. Önce lobiye bağlanyolar sonra ilgili mape travel olyolar
 
Travel yapabilmen için zaten farklı bir mapte oyunun başlamış olması lazım yani lobide. Daha sonra birinin katılmasını istemiyorsan Lobide iken Destroy Session yaparsan o anki oyuncular kalır ve başkası giremez. Ve lobiden travel olduktan sonra tekrar travel yapmak istiyorsan sanırım ?listen kullanman gerekiyor. Şimdiden söyleyeyim onu da sana. ?listen kullanarak dene sonraki traveller için eğer gerekliyse.
Sonradan sunucuya oyuncu girişini engellemek istersen dediğim gibi Destroy Session yapıp listeden kaldırmalısın sunucuyu oyun başlaynıca ya da lobi de herkes Ready verince.


Bana hazır olunca başlama sistemini gösterebilir misin ? Ben orayı yapamadım. Sadece Host hazır olunca açılıyor. Eğer bir gün müsait olursan yardımcı olabilir misin o konuda ? Gerekirse projem çıkınca sana hertürlü desteği sağlarım. Reklamı iyi yapacağız çünkü iletişimde kalırsak , projem tutarsa senin projene reklam desteği bile sağlarım. İstersen tabi.
 
Karşılık sunmana gerek yok elimden gelirse tabiki destek olurum kardeşim. Ama dediğin aşamaya henüz gelmedim. Senin bahsettiğin şey lobiye oyuncular geldikten sonra hepsi hazırsa host da son olarak hazır deyip oyunu başlatması mı?

Ona şey yapabilirsin ya mesela lobi yani levele giren oyuncları kontrol ettirip oyun kaç kişilikse örn  5 diyelim. sayı tamam olunca başlat tuşu aktif olur mesela basit düşün. bilemedim henüz yapmadım bende ama böyle yapardım hralde. Bugün zaman olursa ona girişirim zaten haberleşiriz
 
Multiplayer konusunda aradığın soruların ve sorabileceğin bir çok kısmın cevapları burada var.

Sana tavsiyem bu sistemler hakkında biraz yüzeysel de olsa bilgi edinmeden başlama çünkü "x mekaniğini yaptım diğerinde görünmüyor" gibi birçok soru sorarak sadece günü kurtarıp, mantığını anlamadan geçersin. İleride de yine takılırsın.

Unreal Engine multiplayer sistemi biraz kanserdir. Elinde olmayan sebeplerden dolayı da sürekli hata alabilirsin. Şimdiden hazırlıklı ol.  :heart:


https://github.com/ugurowent/UE4_NetworkCompendium/blob/master/UE4_NetworkCompendium.pdf
 
creos Evet hocam çok kanser ediyor ummadığın yerde hatalar patlak veriyor  üstelik herşeyi doğru yaptığımı düşündüğüm halde. O linkteki paylaştığın bilgiyle alakalı anlatımlı video izledim çok faydalı çok güzel olmuş ama paylaşan arkadaş devamını da getirse tadından yenmez valla