2012-04-12 11 views
7

Sunucu için node.js ve istemciler için bir HTML5 tuvalinde gömülü .js dosyası kullanarak küçük bir oyun yapıyorum. Oyuncuların her birinin ok tuşları ile hareket edebilecekleri bir nesne vardır.Benim node.js oyunumu güncelleme hakkında sorular

Şimdi oyunu güncellemenin 2 farklı yolunu yaptım, biri her değiştiğinde oyuncunun yeni pozisyonunu gönderiyordu. Çalıştı, ancak sunucum saniyede 60 x/y çiftini işlemek zorunda kaldı (müşterinin güncelleme hızı 30/sn ve 2 oyuncunun kesintisiz hareket etmesi vardı). İkinci yöntem, yalnızca yön hızını değiştirdiklerinde oyuncunun yeni pozisyonunu ve hızını/yönünü göndermekti, yani temelde diğer istemcilerde, oyuncunun hareketi son güncellemeden gelen yön/hız kullanılarak enterpole edildi. Sunucum sadece çok az x/y7speed/yön paketini işlemek zorundaydı, ancak paketler, enterpolasyon pozisyonu genellikle pakette yazılan gerçek pozisyondan biraz uzakta olduğu zaman müşteriler geldiğinde biraz gecikme yaşadı.

Şimdi sorularım: Hangi yöntemi önerirsiniz? Ve her iki yöntem için gecikme tazminatımı nasıl yapmalıyım?

cevap

3

Düşük gecikme süresine sahipseniz, nesnenin yeni konuma getirildiği konumdan enterpolasyon yapın. Düşük gecikme süresinde, bir farkın çoğunu temsil etmez.

Yüksek gecikme süreniz varsa, bir tür EPIC uygulayabilirsiniz. http://www.mindcontrol.org/~hplus/epic/

Tarayıcı görevinde nasıl yapıldığını da kontrol edebilirsiniz. https://github.com/mozilla/BrowserQuest

İyi şanslar!

+0

makalesi sorunu çözmek için iyi bir başlangıç ​​noktası gibi görünüyor, ancak hala çözümden bir şey anlamadım :)) – mihai

+0

@mihai Eğer C++ 'yı biliyorsanız, EPIC kütüphanesinin kaynağı açıktır. Sadece yorum içeren iki dosya (Extrapolator.h ve Extrapolator.cpp) C++ 'da akıcı değilseniz, bunu açıklamak ya da uygulamak için çaba harcayabilirim. – rromeroar

+0

nah tamam. Kaynak koduna bakmadım, sadece işaret ettiğin makaleyi oku. Algoritmanın açıklaması oldukça kısa ve bunu anlamakta zorluk çekiyordum ama eminim ki mantıklı. – mihai