Saya ingin tahu apakah menggabungkan Javascript clientside dengan PHP / mysql serverside adalah ide yang bagus untuk game browser HTML5 real-time multiplayer (skala kecil)?
Pengetahuan teknis saya sangat terbatas, dan meskipun saya berencana untuk belajar node.js di masa depan, kurva pembelajaran agak besar sekarang.
Karena saya sudah terbiasa dengan PHP, saya merasa akan berfungsi lebih cepat.
Skala yang saya pikirkan adalah 2-8 pemain saat itu. Dan berusaha menjaga agar pesan klien ke server serendah mungkin.
Nilai yang ingin saya simpan / pegang adalah:
- Nama dan ID pemain.
- Posisi X dan Y.
- Kesehatan.
- Barang yang dilengkapi (maksimum 8 slot, mungkin kurang).
- Tindakan (berjalan, menyerang, menggunakan dll tetapi hanya 1 aksi / pemain pada suatu waktu).
- Bullet X, Y koordinat dan lintasan.
- Persekutuan / nama Klan.
- Dan beberapa fungsi dasar obrolan / surat.
Dugaan saya adalah meskipun itu bukan solusi terbaik, tetapi selama saya menjaga logikanya kecil, ini benar-benar bisa dilakukan. Apakah saya benar?
javascript
networking
html5
client-server
php
justanotherhobbyist
sumber
sumber
Jawaban:
Untuk gim real-time, Anda ingin meminimalkan latensi. Berikut adalah dua tips untuk mencapainya, dengan catatan tentang PHP dan Node:
Saya sendiri menemukan node.js sangat mudah untuk diambil dan karena Anda akan perlu sedikit kode JavaScript, saya sarankan Anda mencobanya. Setidaknya lihat sekilas tutorial socket.io untuk melihat seberapa sepele mengatur saluran komunikasi real-time.
sumber
Bersamaan dengan jawaban Tapio, saya hanya ingin menyarankan (jika mungkin) mengirim input pengguna (klik dan input keyboard) ke server, dan meminta kedua server dan klien meniru permainan. Setiap N dicentang, klien akan meminta server untuk menyinkronkan, dan server akan membalas dengan semua informasi yang dibutuhkan klien untuk membuat permainan seperti kesehatan, item, dll. Ini untuk memastikan klien tidak mendapatkan sinkronisasi juga banyak.
Tentu saja baik server dan klien harus memiliki implementasi permainan yang sama persis sehingga ini mungkin sedikit lebih banyak pekerjaan. Jika Anda memiliki implementasi yang sempurna pada klien dan server, klien harus lebih jarang melakukan sinkronisasi.
Ini akan mengurangi perpesanan klien / server dan ini mengurangi latensi. Ini juga akan membantu mencegah kecurangan.
Dengan asumsi Anda membuat game ini dalam JavaScript, mungkin bermanfaat untuk menulis back-end dalam JavaScript juga, menggunakan NodeJS. Dengan cara ini Anda bisa menggunakan kembali implementasi JavaScript dari gim Anda untuk server dan klien.
sumber
Saya merekomendasikan belajar Nodejs. Jika Anda sudah menggunakan Javascript, itu tidak akan terlalu sulit. Saya membuat game Multiplayer TRON dengan cepat dengan Nodejs, dan itu adalah hari pertama saya menggunakannya. (Oh, dan klien adalah kanvas HTML5; Saya hanya mengirim input kunci, seperti yang disebutkan dalam komentar lain.)
Lihatlah modul yang disebut nowjs. Semoga berhasil!
sumber