Şu anda yukarıdan aşağıya, gerçek zamanlı bir zombi atıcısı geliştiriyorum. Bunu Java'da kodluyorum, fizik motorum olarak JBox2D kullanıyorum. Bu hafta ağları kodluyorum ve şimdi fizik senkronizasyonuna bağlıyım.
Sunucu daha sonra onayladığı sürece, istemcinin taşımak için ücretsiz olduğu tahmini istemci / yetkili sunucu modelini kullanmayı planlıyorum. Bu, istemcinin sunucuya hareket verileri içeren paketleri göndermesini ve sunucunun gecikmeyi hesaplamasını ve dünyayı eski bir durumdan yeniden simüle etmesini içerir.
Benim sorunum şu anki fizik motorum JBox2D (temelde Box2D'nin bir limanı), dünyayı geri almayı desteklemiyor ve görünüşe göre dünya verilerinin serileştirilmesi o kadar kolay değil. 2 çözümüm var, mevcut fizik motorumu değiştirebilir / genişletebilir veya kendim yazabilirim.
Kendi fizik motorumu yazmanın nedenleri -
- Gereksiz özellikleri kaldırabilirim. Yukarıdan aşağıya bir oyunda sadece çarpışma mekaniğine ve taşıma kuvvetlerine ihtiyacım var. Hiçbir yerçekimi söz konusu değildir.
- Kodu daha iyi anlayabilirim ve [büyük olasılıkla] geri alma işlevlerini uygulamak daha kolay olurdu
JBox2D'yi genişletme / değiştirme nedenleri
- Kendi fizik motorumu yazmak, hantal olabilen önemli miktarda çalışma olurdu.
- JBox2D, geliştiricime yardımcı olabilecek çok destekleyici bir topluluğa sahip
- JBox2D, çarpışma tespiti gibi şeyler için belirli optimizasyonlara sahiptir.
- Bazıları bu konuda zaten yapılmış gibi çalışıyor, ancak çok az kod paylaşıldı
Peki düşüncelerin neler? Bu benim ilk oyunum ve profesyonel bir oyun geliştiricisi değilim. Herkes bölgede zaten yapılan iş için bazı bağlantılar sağlayabilir (tercihen JBox2D / Box2D / Java kullanarak).
strictfp
her yerde kullanmanız gerekeceğini ve bu da performansı ciddi şekilde etkileyeceğini unutmayın. Aksi takdirde, sunucu ve istemci tam olarak aynı sonuçları alamayabilir. Bunun yerine sabit nokta kullanmanızı tavsiye ederim.