Jika proyek Anda dalam tahap perencanaan, disarankan untuk merancang proyek untuk jaringan sejak awal. Mengaitkan kode jaringan dalam keadaan terakhir dari proyek kemungkinan besar akan mengarah pada refactoring besar-besaran atau sejumlah besar peretasan, menghasilkan kode yang sulit dirawat dan dikuasai bug.
Cara terbersih adalah menerapkan seluruh game seolah-olah itu adalah game jaringan murni. Yaitu, mengimplementasikan kode untuk server khusus, dan mengimplementasikan kode ini hanya sebagai kode server. Terapkan kode klien game dengan cara yang serupa. Server dan klien dapat berjalan dalam proses yang sama dan bahkan tidak perlu menggunakan soket jaringan nyata, tetapi mereka harus entitas yang terpisah dan semua kode harus dirancang untuk bekerja seperti itu. Ketika pemain melompat, jangan mengubah vektor lompatan pemain secara langsung, tetapi kirim paket 'lompat-tekan-tombol' ke server dan biarkan server mengatasinya.
Ini berarti bahwa bahkan dalam permainan singleplayer, ada server tak terlihat yang berjalan di latar belakang. Versi multipemain dari gim yang sama hanya perlu terhubung ke server jarak jauh alih-alih yang lokal dan voila, multipemain dilakukan. Keuntungan dari ini adalah:
tidak ada kode terpisah untuk tunggal dan multipemain, kode jaringan diuji dan dikembangkan selama seluruh kode bersih proyek
Proyek yang menggunakan skema ini hampir semua permainan menggunakan mesin Quake, Civilization 4, Neverwinter Nights, dan banyak lagi.
Untuk menghubungkan klien dan server dalam proses yang sama dengan nol latensi, soket lokal dapat digunakan. Ini disediakan oleh Zoidcom dan mengirimkan paket langsung dari satu ZCom_Control ke yang lain, tanpa melalui soket level OS.
Saya setuju dengan saran yang dikutip dalam jawaban Leftium; desain untuk jaringan sejak awal, karena Anda tidak akan dapat menambahkannya nanti .
Pertama kali saya mencoba membuat game multiplayer (saya bahkan tidak mencoba membuat game pemain tunggal!), Saya pikir saya pertama-tama akan membuat game bekerja dan kemudian menambah jaringan. Ide buruk. Saya ditinggalkan dengan prototipe permainan pemain tunggal yang benar-benar membosankan dan tidak ada petunjuk bagaimana mengubahnya menjadi permainan multipemain. Saya menghapus seluruhnya dan mulai lagi, kali ini menulis kode jaringan multipemain sejak awal. Semuanya diklik.
Saya yakin bukan tidak mungkin untuk memulai dengan game satu pemain dan menambahkan fungsionalitas multi pemain. Jika Anda memikirkannya, rencanakan dengan benar dan pastikan Anda tahu strategi Anda, kemudian yakin, cobalah. Saya pikir itu akan menjadi teka-teki yang menarik untuk dikerjakan paling tidak. Tapi benar-benar pastikan Anda tahu rencana Anda tentang bagaimana Anda akan menambahkan jaringan.
Saya pikir ada jalan tengah (meskipun saya belum pernah mencobanya). Anda bisa menulis beberapa kelas dummy untuk fitur jaringan / multipemain, dan rajin menggunakannya saat Anda sedang menulis permainan pemain tunggal. Kemudian nanti, jika Anda memutuskan untuk mengimplementasikan multi-pemain, cukup isi kelas dummy dan Anda akan hampir selesai. Ini sangat mendekati metode server / klien, tetapi Anda mungkin dapat pergi dengan sedikit kerja; lagipula, gim pemain tunggal lebih mudah dibuat daripada gim multipemain, jadi jika Anda akan menulis gim pemain tunggal Anda seperti gim multipemain, mengapa tidak membuat gim multipemain saja?
sumber