leonscottkfm

Unreal MVP
31 May 2015
1,538
5
219
63
28
(34) İstanbul Avrupa
store.steampowered.com
İki oyuncumuz var birisi sunucuya önce bağlandı ve gitti objeyi yere düşürdü, sonra diğer oyuncumuz bağlandı ve objeyi yerde değil masada görüyor. Şimdi biz her olay için ilk girenlere düzenleme mi yapacağız ? Ya objeyi düşürdüyse ya kapının önüne kan sıçradıysa ya kapı kırıldıysa ya koridorda ceset simule olduysa ya oyuncunun adı değiştiyse ya obje spawn edildiyse diye ? Login olan adama bunları mı bildirmeliyiz tek tek . Bu sorunun cevabını verecek kişi Quantum fiziğine de cevap verebilir.
 
Oyunda nelerin eventlerle yapılması gerektiğini nelerin Replicated değişkenlerle ve RepNotify lar ile yapılması gerektiğini çözersen isterse 100 çeşit iş olsun bir tanesi ile bile ayrı ayrı uğraşmazsın. Bu tarz sonradan bağlanan oyuncuların da görmesi gereken şeyler Replicated değişkenler le yapıldığında kim ne zaman bağlanırsa bağlansın sıkıntı yaşamazsın. Örnek objenin yere düşmesi animasyonu bir event olabilir ancak objenin konumu kesinlikle replicated olmalı. Düşerken çıkardığı ses event olabilir ancak yerde bıraktığı lekeler replicated değişken ile olmalı. Çok basit aslında.
 
Physics durumun replicate edilmesi Multiplayer alandaki en zor konudur. Dolayısı ile diğer konularda yeterli hale gelmeden düşünmemek gerekir. Bu ilk okul öğrencisine integral problem çözdürmeye benzer. Bu yüzden bir multiplayer oyunda ya physics simulation göremezsin, ya da görsen bile yerdeki halleri hemen yavaşça kaybolur. Tabii ki yolları var ama senin benim seviyemde uğraşılması gereken bir şey değil.

Network ortamında bu şekilde clientlara senkronize edeceğin her şey zaten en azından BP olmalıdır. Actor harici replication yürümez. Dolayısı ile evet yerdeki hali yani lokasyonu replicated değişken olabilir ve sonradan gelen onu yerde görür. Zaten o adam için onun nasıl düşmüş olduğu hiç önemli değildir değil mi.
 
Mesela Garry's Mod diye bir oyun var aslında Half Life 2 modu bu.

Çokça yapı bulunuyor içinde Lua dilinden tut Wiremoduna kadar kodlamalar mevcut ve her türlü obje bulunuyor ve hepsinin durumu konumu kırılıp kırılmadığı haritanın neresinde decal yapıştırılmış kim ne yapmış hepsinin bilgisi sonradan girene de iletiliyor. Bunların hepsiyle tek tek uğraşılıyor mu yani. Bayağı sıkıntılı bir durum öyleyse bu. Çok fazla varyasyon var çünkü.
Günümüzde o tip oyunlar yok gerçi , oyuncular lobide toplanıp hep birlikte giriyor bu tip oyunlara ve sonradan oyuncu girişi olamıyor zaten.
 
Evet ugrasiliyor. Ama butun her propertyleri(int, float, bool, actor, kendi yarattigin nesneler) vs replicate etmek dogru bir yontem degildir.

Aktor uzerinde bulunan bir sistemi, bir yapiyi veya bir olayi replicate etmeden once sunu iyice dusunmeni tavsiye ederim

Bu iki oyuncu, bu aktorle etkilesime girdigi zaman, ortak olarak hangi degerleri birbirlerine yansitacak?

Bu kilit soruyu kendine dusundugunde aklina gelebilir. 

Daha ilerisine gidersek CharacterMovementComponent var orada karakterin konumunu replicate etmek icin cesitli network programming teknikleri kullaniliyor, yani mesela eger gecikmeli olarak bir paket goneriliyorsa, server su anki konumunu ve zamanini kontrol edip o paketleri diger clientlara daha gec zamanli olarak oynatabiliyor.

CharacterMovementComponent senin dedigin fizik simulasyonlarini hesaplamalara benzer bir sekilde mantigi calisiyor. Baya anlatmis ben de bakacagim bir aralar. 

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