Sunday, September 8, 2019

networking - Javascript and PHP for real-time multiplayer?



I'm wondering if combining Javascript clientside with PHP/mysql serverside is a good idea for HTML5 real-time multiplayer (small scale) browser games?


My technical knowledge is very limited, and even though I plan on learn node.js in the future, the learning curve is rather huge right now.


Since I'm already familiar with PHP I feel I would get it functioning much faster.


The scale I'm thinking is 2-8 players at the time. And trying to keep the client to server message count as low as possible.



The values I intend to store/handle are:



  • Player name and ID.

  • X and Y position.

  • Health.

  • Equipped items (maximum 8 slots, probably less).

  • Actions (walk, attack, use etc but only 1 action/player at a time).

  • Bullet X,Y coordinates and trajectory.

  • Guild/Clan name.

  • And some basic chat/mailing function.



My guess is even though it's not the best solution, but aslong as I keep the logic small, that this is completely doable. Am I right?



Answer



For a real-time game, you want to minimize latency. Here's two tips for achieving it, with notes about PHP and Node:



  1. Use WebSockets. They allow fast two-way communication between the server and the client. Using node.js here has the advantage that you can use the same JavaScript API on both ends of the pipe. There's also the wonderful socket.io module for node.js that provides fallback technologies to lesser browsers that don't support WebSockets. Googling a bit, it seems you can also use WebSockets from PHP if you really want to.

  2. Don't involve database in time critical data such as coordinates of fast moving objects. This means keeping them in memory, which is not particularly well suited for the traditional PHP use model of having it fire once for each request to apache (or whatever web server), but you can launch your PHP server app also as standalone. I'd guess Node, with its V8 core, is going to be faster than PHP though. Whether that's an issue depends on how demanding your game is and how powerful the server is.


I myself find node.js very easy to pick up and since you are going to need to code quite a bit of JavaScript anyway, I'd recommend you try it. At least take a quick look at the socket.io tutorials to see how trivial it is to set up a real-time communication channel.


No comments:

Post a Comment

Simple past, Present perfect Past perfect

Can you tell me which form of the following sentences is the correct one please? Imagine two friends discussing the gym... I was in a good s...