SORU
7 Mayıs 2009, PERŞEMBE


Oyun ağ fizik çarpışma

Nasıl iki taklit müşteri kontrollü tipik bir istemci/çarpışma (makul) bir ağ oyunu için server kurulum araçlar? Genel olarak dağıtılmış ağ fizik yapmak için nasıl this eminent blog post okudum (geleneksel istemci tahmin olmadan), ama bu soru özel olarak sahip olunan nesnelerin çarpışma olayı nasıl.

Örnek

Bir istemci 20 ms server, client B 300 ms önde sunucu (gecikme değişimi ve maksimum sayma) önde olduğunu söylüyorlar. Bu iki araç çarpıştığında, her ikisi de müşterileri 320 olarak diğer ms arkasında, diğer aracın hızı ters yönde göreceği anlamına gelir. Kafa kafaya bir İsveç karayolu üzerinde 16 metre/17.5 metre fark demek!

Denemek için değil

Neredeyse imkansız bu sonuca pozisyonları beri ben de çok karmaşık araçlar ile eklem ve vücudunun her yerine, hangi sırayla doğrusal ve açısal pozisyon, hız ve ivme söz değil, devletlerden kullanıcı girişi.

CEVAP
7 Mayıs 2009, PERŞEMBE


Mükemmel bir çözüm bilmiyorum, ve var olmayan bir his var. Eğer doğru aracın gelecekteki konumunu tahmin bile, kullanıcı denetimleri çalışacak şekilde tahmin etmek mümkün olacaktır. Bu sorun, istemci/sunucu lag olumsuz etkilerini en aza indirmek için aşağı gelir. Bunu unutmayın, principle of least astonishment konumu (Wikipedia'dan başka sözcüklerle ifade) bu yaklaşım istiyorum:

Kullanıcı arayüz tasarımı, en az ilkesini şaşkınlık (ya da sürpriz) bildiren, ne zaman iki boyutlu bir arayüzü çatışma, ya da belirsiz, davranış olmalı ki sürpriz olacak az insan kullanıcı zaman çatışma ortaya çıkar.

Sizin örnekte, her kullanıcı iki araç görür. Kendi ve başka bir oyuncu o. Kullanıcı kendi aracı tam olarak kontrol ettikleri şekilde davranmasını bekliyor, simülasyon bu yönü ile oynamak mümkün değildir. Ancak, kullanıcı başka bir kullanıcı kontrolünde olduğunu tam olarak bilmezonlarınaraç, ve bu belirsizlik kullanıcıdan lag gizlemek için kullanırdım.

Burada temel fikir:

  1. Sunucu yaklaşan bir çarpışma hakkında karar vermek. Çarpışma algılama algoritması sadece belli tutarsızlıkları önlemek için yeterince yakın olmalı 100% mükemmel olmak zorunda değil.
  2. Sunucu iki araç çarpıştı almıştır bir kez, iki kullanıcı her mesaj bir çarpışma kaçınılmaz olduğunu belirten gönderir.
  3. İstemci üzerinde, araç B pozisyonunun ayarı (gerçekçi) çarpışma olduğunu garanti etmek zorundadır.
  4. İstemci B, aracın konumu ayarlanmış (gerçekçi) çarpışma olduğunu garanti etmek zorundadır.
  5. Çarpışma sonrasında sırasında, her aracın konumunu sonuçta oyunun geri kalanı ile tutmak, böylece, gerektiği gibi ayarlanmış olabilir. Bu bölümü MedicineMan his answerönerilen tam olarak ne olduğunu.

Bu şekilde, her kullanıcı kendi araç tamamen kontrol ediyor. Çarpışma olduğunda, beklenmeyen olmayacaktır. Her kullanıcı diğer araç onlara doğru hareket görecek, ve hala gerçek zamanlı bir simülasyon hissi olacak. Güzel bir şey bu yöntem, düşük gecikme koşullarda bir tepki geliyor. Eğer her iki istemci sunucuya düşük gecikmeli bağlantıları varsa, düzeltme miktarı az. Sonuç, tabii ki, gecikme arttıkça daha kötüye gidecek, ama bu kaçınılmazdır. Eğer birisi birkaç saniye gecikme bedeli ile bir bağlantısı üzerinden hızlı tempolu aksiyon oyunu oynuyor, onlar sadece tam exeperience kurtarmayacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009
  • Xbox

    Xbox

    1 Kasım 2005