Me pregunto si combinar el lado del cliente de Javascript con el lado del servidor de PHP / mysql es una buena idea para los juegos de navegador HTML5 en tiempo real (escala pequeña).
Mi conocimiento técnico es muy limitado, y aunque planeo aprender node.js en el futuro, la curva de aprendizaje es bastante grande en este momento.
Como ya estoy familiarizado con PHP, creo que lo haría funcionar mucho más rápido.
La escala que estoy pensando es de 2 a 8 jugadores en ese momento. Y tratando de mantener el recuento de mensajes del cliente al servidor lo más bajo posible.
Los valores que pretendo almacenar / manejar son:
- Nombre e identificación del jugador.
- Posición X e Y.
- Salud.
- Artículos equipados (máximo 8 espacios, probablemente menos).
- Acciones (caminar, atacar, usar, etc., pero solo 1 acción / jugador a la vez).
- Bullet X, Y coordenadas y trayectoria.
- Nombre del clan / clan.
- Y algunas funciones básicas de chat / correo.
Supongo que, aunque no es la mejor solución, pero mientras mantenga la lógica pequeña, esto es completamente factible. Estoy en lo cierto?
fuente
Respuestas:
Para un juego en tiempo real, debes minimizar la latencia. Aquí hay dos consejos para lograrlo, con notas sobre PHP y Node:
Yo mismo encuentro que node.js es muy fácil de aprender y, dado que necesitarás codificar bastante JavaScript de todos modos, te recomiendo que lo pruebes. Al menos, eche un vistazo rápido a los tutoriales de socket.io para ver lo trivial que es configurar un canal de comunicación en tiempo real.
fuente
Junto con la respuesta de Tapio, me gustaría sugerir que solo (si es posible) envíe la entrada del usuario (clics y entrada del teclado) al servidor, y que tanto el servidor como el cliente emulen el juego. Cada N marca el cliente le pedirá una sincronización al servidor, y el servidor responderá con toda la información que el cliente necesita para representar el juego, como la salud, los elementos, etc. Esto es para asegurarse de que el cliente no se desincronice también mucho.
Por supuesto, tanto el servidor como el cliente necesitarán tener exactamente la misma implementación del juego, por lo que esto podría ser un poco más difícil. Si tiene implementaciones perfectas tanto en el cliente como en el servidor, el cliente necesitará sincronizarse con menos frecuencia.
Esto reducirá la mensajería cliente / servidor y esto reducirá la latencia. Esto también ayudaría a prevenir las trampas.
Suponiendo que esté creando este juego en JavaScript, podría valer la pena escribir también el back-end en JavaScript, utilizando NodeJS. De esta forma, podría reutilizar la implementación de JavaScript de su juego tanto para el servidor como para el cliente.
fuente
Recomiendo aprender Nodejs. Si ya tiene Javascript, no será tan difícil. Hice un juego multijugador TRON rápidamente con Nodejs, y fue mi primer día usándolo. (Ah, y el cliente era un lienzo HTML5; solo estaba enviando información clave, como se menciona en los otros comentarios).
Eche un vistazo a un módulo llamado nowjs. ¡Buena suerte!
fuente