Saat ini saya sedang mengembangkan penembak zombie top down, realtime,. Saya coding ini di Jawa, menggunakan JBox2D sebagai mesin fisika saya. Saya telah mengkode jaringan minggu ini, dan sekarang saya sampai ke sinkronisasi fisika.
Saya berencana untuk menggunakan model server klien / otoritas yang dapat diprediksi, di mana klien bebas bergerak, selama server menyetujuinya nanti. Ini melibatkan klien mengirim paket yang berisi data perpindahan ke server, dan server menghitung latensi, dan mensimulasikan kembali dunia dari keadaan yang lebih lama.
Masalah saya adalah, mesin fisika saya saat ini, JBox2D (pada dasarnya port dari Box2D), tidak mendukung memutar kembali dunia, dan tampaknya tidak mudah untuk membuat serialisasi data dunia. Saya punya 2 solusi, saya bisa memodifikasi / memperluas mesin fisika saya saat ini, atau menulis sendiri.
Alasan untuk menulis mesin fisika saya sendiri -
- Saya dapat menghapus fitur yang tidak perlu. Dalam permainan top down, saya hanya benar-benar membutuhkan mekanik tabrakan, dan kekuatan penanganan. Tidak ada gravitasi yang terlibat.
- Saya dapat memahami kode dengan lebih baik, dan [kemungkinan besar] akan lebih mudah untuk menerapkan fungsi roll back
Alasan untuk memperpanjang / memodifikasi JBox2D
- Menulis mesin fisika saya sendiri, akan menjadi pekerjaan yang signifikan, yang bisa jadi rumit
- JBox2D memiliki komunitas yang sangat mendukung, yang dapat membantu saya dengan dev saya
- JBox2D, memiliki optimasi khusus, untuk hal-hal seperti deteksi tabrakan, yang membuatnya berguna
- Beberapa pekerjaan telah dilakukan dalam hal ini, tetapi sedikit kode yang telah dibagikan
Jadi, apa pendapat Anda? Ini adalah game pertama saya, dan saya bukan pengembang game profesional. Kalau ada yang bisa memberikan beberapa tautan untuk pekerjaan yang sudah dilakukan di daerah (sebaiknya menggunakan JBox2D / Box2D / Java).
strictfp
mana-mana, yang akan berdampak serius pada kinerja. Kalau tidak, server dan klien mungkin tidak mendapatkan hasil yang persis sama. Saya akan merekomendasikan menggunakan titik tetap sebagai gantinya.