Rumah > Artikel > hujung hadapan web > Adakah node.js sesuai untuk pembangunan bahagian belakang permainan? _node.js
Bagaimanakah pelayan laman web dan pelayan permainan disambungkan?
1. Terdapat banyak jenis permainan.
Tidak kira betapa mudahnya pelayan RPG, ia tidak dapat mengelak daripada berurusan dengan interaksi berbilang orang Dengan beratus-ratus orang dalam adegan yang sama, setiap pelanggan perlu menerima maklumat operasi daripada orang lain.
Kedua, operasi pengguna sangat kerap, dan pelayan umum cenderung untuk mengadakan sambungan yang panjang. Selain itu, pautan ini kerap berinteraksi dan tiada strategi pembahagian berterusan yang jelas, yang mengehadkan pengembangan mendatar pelayan Senario yang sama selalunya hanya boleh dijalankan pada satu mesin fizikal.
Ketiga, permainan pelanggan biasanya tidak berani untuk meletakkan operasi logik pada pelanggan Ia adalah perkara biasa bagi pengguna untuk memecahkannya untuk anda dalam beberapa minit, menukar syiling emas, dan membeli dua keping peralatan. Oleh itu, pelayan peta ini mesti mengesahkan operasi semua pemain dalam peta dan mengira satu siri logik perniagaan seperti raksasa AI dan kadar penurunan.
Kami dapat melihat bahawa terdapat perbezaan yang jelas antara pelayan permainan tradisional dan pelayan web, dengan keperluan perniagaan yang unik seperti sambungan panjang, berbilang siaran, logik perniagaan yang kompleks dan strategi pembahagian terhad.
2. Mari kita lihat manfaat concurrency kepada pelayan permainan.
Concurrency sebenarnya adalah proses logik program, dan ia tidak memerlukan sokongan fizikal berbilang teras. Maksud umum adalah untuk membuat berbilang aliran logik bebas kelihatan seperti ia berjalan pada masa yang sama. Keselarasan tahap sistem pengendalian ialah model berbilang-benang berbilang proses. Biarkan OS mengendalikan gangguan jam, penyekatan io dan isu lain.
Untuk pelayan, jika tugasan menghabiskan sebahagian besar masanya pada io, mekanisme konkurensi boleh menghalang keseluruhan perkhidmatan peta daripada disekat oleh akses io. Apabila tugasan disekat, peruntukkan sumber pengkomputeran ganti kepada tugasan lain. Dalam kes ini, konkurensi memberi manfaat kepada kecekapan pelayan dan masa tindak balas.
Bagi pengaturcara, aliran logik bebas bermakna mereka boleh menyelesaikan tugasan mereka dalam konteks yang boleh dipercayai, ringkas dan berganding longgar.
Oleh kerana pensuisan logik pengendali OS perlu berulang kali jatuh ke dalam kernel, sesetengah orang menganggap ini terlalu perlahan, jadi mereka mencipta beberapa utas dalam ruang pengguna dan mengawal berbilang aliran logik dalam proses. Kerana keterbatasan keupayaan huraian bahasa, adalah terlalu menyusahkan untuk menulis dan menggunakan perkara sedemikian dalam C/C. Akibatnya, gula sintaksis coroutine dalam Erlang, Go dan Lua telah dilahirkan.
Node.js pada asasnya mengawal berbilang aliran logik dengan sendirinya, tetapi aliran logik ini diedarkan berdasarkan status dan keutamaan io. Dalam pelaksanaan sebenar, ia cuba menggunakan io tak segerak yang tidak menyekat Apabila satu tugasan memanggil io, saya menghentikannya, dan apabila isyarat penyiapan io dihantar, saya memulakannya semula.
Perhatikan ini, setiap kali saya menjalankan tugasan, saya tidak akan beralih secara aktif kepada aliran program lain sehingga ia selesai atau panggilan io berlaku. Jadi jika tugas ini melibatkan terlalu banyak pengiraan, keseluruhan proses peta akan disekat di sini.
Oleh kerana node.js adalah tak segerak, anda perlu sentiasa menulis panggilan balik untuk memantau isyarat penyiapan io. Aliran logik satu tugasan akan terganggu beberapa kali. Apabila tugas menjadi agak rumit, terdapat apa yang dipanggil neraka callbak, yang akan membawa masalah besar untuk penyahpepijatan dan pembangunan.
3. Atas sebab di atas, saya tidak mengesyorkan menggunakan node.js dalam pembangunan pelayan MMORPG bukan prototaip.
4. Pelayan permainan mudah alih yang baru muncul agak sesuai untuk node.js, kerana permainan mudah alih terhad kepada masalah rangkaian . Bahagian pelayan telah dipermudahkan sehingga ia tidak berbeza dengan pelayan web, dan logik perniagaan juga mudah ia hanya perlu memproses data dan kemudian meneruskannya.