Saya membaca ini: Cara merancang sistem replay Tapi itu tidak benar-benar menjawab pertanyaan saya.
Gim saya dibuat dengan "tampilan" klien dari gim tersebut sebagai program terpisah dari "model" dan "pengontrol" server. (sedikit seperti mmo, atau game multipemain yang dibuat dengan cara ini). Sisi server selalu merupakan "kebenaran" dari gim, hanya menerima permintaan tindakan sebagai masukan dari klien dan acara keluaran dan pesan "keadaan saat ini".
Model dan aturan gim sepenuhnya deterministik dengan siklus pembaruan "centang" yang telah diperbaiki, sehingga di sisi server saya dapat merekam peristiwa yang dikirim ke tampilan klien, dan permintaan tindakan. Keduanya terkait dengan nomor siklus tertentu.
Pertanyaannya adalah: dalam hal ini, untuk mengatur sistem replay, haruskah saya menggunakan input, atau permintaan tindakan pengguna (seperti yang disarankan di sana) atau peristiwa?
Tampak bagi saya bahwa keduanya akan memberikan output yang persis sama. Satu-satunya perbedaan yang dapat saya lihat adalah:
- Acara memberikan hasil nyata sementara permintaan tindakan harus diproses untuk memberikan acara.
- Permintaan tindakan mungkin jauh lebih sedikit data untuk direkam.
Apakah ada hal lain yang perlu dipertimbangkan?
Keduanya berfungsi, meskipun ada beberapa hal yang perlu dipertimbangkan.
Pertama, ingatlah bahwa Anda perlu mencatat informasi waktu. Untuk game dengan segala jenis frame rate, ini bisa sangat rumit; Anda perlu memastikan data replay Anda dapat memberikan informasi waktu yang persis sama dengan game yang awalnya digunakan untuk simulasi.
Anda juga perlu memperhitungkan tweak untuk perilaku game. Jika Anda merekam input dan kemudian men - tweak apapun bagian dari bagaimana input ditangani, bagaimana fisika diselesaikan, dll, rekaman Anda menjadi tidak valid. Bahkan jika Anda merekam acara permainan, jika ada bagian dari bagaimana peristiwa itu ditafsirkan perubahan, Anda terjebak.
Jika Anda hanya ingin pemutaran, pendekatan yang baik adalah merekam daftar posisi dan rotasi tertentu untuk entitas pemain bersama dengan informasi waktu. Nonaktifkan sebanyak mungkin logika fisika dan gameplay lainnya saat menjalankan pemutaran sebanyak yang Anda bisa. Seberapa mudah atau layaknya ini tergantung pada berapa banyak objek lain yang perlu Anda selaraskan.
sumber