Basit bir UDP oyunu için neler var?


17

Bir keresinde bir hafta içinde UDP ile basit bir oyun yazmaya çalıştım. Korkunç gitti.

Erken fırlattım. Sahip olduğum temel sorun, tüm oyuncuların / düşmanların / nesnelerin oyun durumunu eski bir duruma geri yüklemek ve oyunu oyuncunun oynadığı zamana (yani bir atlamadan yarım saniye önce hızlı bir şekilde) ileriye götürmekti. oyuncunun atlamayı kaçırmasını sağla)

Belki de bu yöntem en kolay yol değildir? olduğundan şüpheleniyorum ama başından beri yanlış tasarladım ve 2. günün sonunda fark ettim. (bu yüzden çok fazla şey öğrenmedim ya da çok fazla zaman harcadım)

Kendim ve diğerleri için, Basit bir UDP oyununa neler dahildir ve nasıl yazarım? Ya da düzgün bir şekilde geri yüklemek için tahmin problemini nasıl çözebilirim.

Bunu CW bc olarak işaretleyeceğim, çok sayıda yararlı cevap olacağını biliyorum.

Yanıtlar:


9

Glenn Fiedler, temel kavramların neredeyse tamamını kapsayan mükemmel bir makale seti yazdı .


Kayan Nokta Determinizm makalesi başımı havaya uçurdu. Okumak istediğim için çok kötü Eşitleme Durumu yapılmaz. Kayan Nokta Determinizm birçok soruya cevap verse de.

Bu makaleleri hiçbiri o istediği şeyi olduğu devlet senkronizasyon, yaklaşık derinlemesine gitmek
Danny Pflughoeft - BlueRaja

3

Kendinizi yuvarlamak eğitici olabilir, ancak mevcut bir uygulamadan (veya en azından oradan başlayarak) yararlanabiliyorsanız, genellikle daha fazlasını yaparsınız.

Her ikisi de kullandım ENet ve RakNet . Enet'i sadece basit bir oyunda kullandım ama ihtiyacım olanı yaptı. Enet, Raknet'ten daha düşük düzeyli bir API kullanır. Raknet daha büyük bir projede kullanıldı. Raknet son derece güçlü, ancak oyununuzu Raknet'in çerçevesi etrafında yapılandırmanızı istiyor.

enet:

  • Bağlantı Yönetimi
  • Sıralama
  • Kanallar
  • Güvenilirlik
  • Parçalanma ve Yeniden Birleştirme
  • toplanma
  • adapte olabilirlik
  • taşınabilirlik
  • özgürlük

RakNet:

  • Nesne çoğaltma
  • Autopatcher
  • Güvenli bağlantılar
  • Sağlam iletişim katmanı (temel olarak tüm Enets özellikleri tek bir öğede toplanır)
  • Uzaktan yordam çağrıları
  • Sesli iletişim
  • NAT geçişi

ENet için +1, bir süredir müşteriler için kullanıyorum ve beğendiler.
Len Holgate


-1, BlueRaja ile aynı sebep
Jonathan Dickinson


0

Eğer (benim yaptığım gibi) homebrew giderseniz ton - öğreneceksiniz de bilmek istemediğiniz şeyler hakkında. NAT geçişi gibi. Caspin'e göre, Enet bunu kaçırıyor, ancak çoğu durumda çalışan bazı açık kaynaklı STUN kodlarını her zaman bulabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.