¿Es posible crear un juego en tiempo real con node.js que requiera reflejos de contracción? ¿Qué tan alta es la latencia? ¿Qué tan bajo puede ser realista?node.js juego en tiempo real
Respuesta
Los servidores HTTP suelen estar optimizados para el rendimiento/ancho de banda por sobre la latencia. node.js es poco probable que sea una excepción, y HTTP es intrínsecamente pobre para latencia baja de todos modos debido a la estructura del protocolo.
One informal benchmark usando node.js admite esto, mostrando latencias de cientos de milisegundos. En comparación, la mayoría de los juegos de twitch admiten latencias de no más de 30 o 40 ms, idealmente menos.
Por lo tanto, recomendaría descartar el aspecto de contracción si no puede eliminar HTTP.
Es posible hacer un juego en tiempo real en node.js como lo haría con cualquier otro idioma/framework.
El problema aquí sería qué tipo de servidor y cliente usarías.
Usar la característica http server para tal juego sería una mala idea y muy difícil, pero podría usar el TCP server (ahora llamado servidor de red) como lo haría en cualquier otro idioma.
El cliente estaría en alguna plataforma en la que pueda usar sockets, como Flash, applets de Java o software de escritorio.
Tenga en cuenta que incluso con el uso de un servidor de socket TCP puede tener problemas de latencia para un juego de contracción, pero esto está fuera del área relacionada con esta pregunta y más acerca de games and networking.
PS: Usted podría tomas de uso en la web, ya que en teoría debe trabajar como sockets TCP, pero todavía no existe un buen soporte para ellos en los navegadores modernos actuales.
EDITAR:
Parece que no me he explicado correctamente, puede hacer un juego accesible navegador como usted ha dicho, sólo tiene que utilizar un protocolo que permite a envía datos rápidamente hacia adelante y hacia atrás en tiempo real.
Si quieres un juego navegador "puro" sin terceros plugins la única manera, como he dicho antes, está utilizando JavaScript con websockets que no está bien soportado todavía por los principales navegadores . (Se puede usar un puente de Flash y aún así tener su juego en JavaScript sin embargo.)
El uso de un tercero plug-in de Flash que tiene y Java (además de los numerosos plugins menos conocidos como la unidad y así sucesivamente). Ambos tienen sockets TCP (no estoy seguro acerca de UDP) y se pueden hacer para conectarse a un servidor de red node.js (con algunas limitaciones de seguridad). La mayoría de la gente diría que vayas con Flash ya que hay un soporte más grande pero a Apple no le gusta, así que no tienes Flash en iPhone/iPad/iPod Touch ni en otros dispositivos móviles misceláneos (que en cambio soportan Java).
Así que sí ... buena suerte con esto.
EDIT 2: apoyo WebSocket
en los navegadores es ahora bastante decente, así que recomiendo para juegos en tiempo real, si desea utilizar el navegador como cliente.
usando TCP para un juego no es muy inteligente, UDP es el camino a seguir. –
Estoy totalmente en desacuerdo. Usar UDP para un juego no es muy inteligente, TCP es el camino a seguir. – Ricket
De cualquier manera, UDP es aún menos compatible con estas plataformas. (No recuerdo si Flash lo admite, creo que sí lo hacen las manzanas de Java). –
Es posible, pero depende de la cantidad de datos que se deben transmitir entre el servidor y el cliente y qué tan rápido (hablando de latencia). Eche un vistazo a Sousaball by Creationix, por ejemplo.
Además, si va a utilizar websockets, eche un vistazo a la biblioteca Socket.IO de learnboost. Utiliza websockets cuando está disponible y regresa al cometa en otros casos.
- 1. WebRTC el correcto? (juego multijugador en tiempo real)
- 2. Principios del juego multijugador en tiempo real para TCP y Node.js
- 3. GC de Lua y juego en tiempo real
- 4. Algoritmos para el juego de estrategia en tiempo real AI
- 5. ¿Hay marcos para hacer modelos en tiempo real en node.js?
- 6. Raspe las páginas web en tiempo real con Node.js
- 7. aplicaciones en tiempo real rubí: CALAMBRE vs Node.JS
- 8. ¿En qué se basa el tiempo del juego? ¿Tiempo real o marcos?
- 9. de Java en tiempo real depuración (juegos)
- 10. Cómo usar websockets para juegos en tiempo real
- 11. ¿Cuál debería elegir AMQP o XMPP para el juego basado en navegador en tiempo real?
- 12. Interoperabilidad Java en tiempo real
- 13. Lucene indexación en tiempo real?
- 14. ¿Qué modelo se adapta mejor a la optimización para un juego de estrategia en tiempo real?
- 15. ¿Es viable un juego multijugador en tiempo real usando Google App Engine?
- 16. ¿Quién es un buen anfitrión para un servidor de juego TCP/IP en tiempo real?
- 17. Tiempo real y php?
- 18. Mostrando tiempo real
- 19. en tiempo real de vídeo (imagen) cosiendo
- 20. Sugerencias de patrones de diseño para sincronizar datos de múltiples usuarios en un juego en línea en tiempo real
- 21. Novato de aplicaciones en tiempo real - Node.JS + Redis o RabbitMQ -> cliente/servidor ¿cómo?
- 22. Node.js y Socket.io: ¿qué tan lejos pueden llegar con las aplicaciones web en tiempo real?
- 23. MongoDb Transmisión de datos insertados en tiempo real (o casi en tiempo real)
- 24. flash Sugerencias servidor de juego (Node.js, Red5, etc)
- 25. Colaboración en tiempo real en Eclipse
- 26. Gráficos en tiempo real en Java
- 27. Gráfico en tiempo real en MATLAB
- 28. ¿Grabar audio en tiempo real en java?
- 29. Seguimiento en tiempo real en el Iphone
- 30. programación en tiempo real en Linux
No veo qué tiene que ver HTTP con eso. Para actualizaciones de baja latencia entre jugadores en un juego multijugador, las personas usualmente usan UDP o TCP, y ambos pueden hacerlo node.js. – JasonWoof
Tiene toda la razón. Sin embargo, cuando publiqué esta respuesta, pocas personas hablaban sobre el uso de node.js para nada excepto como servidor web y el soporte UDP aún estaba a 2 meses de distancia. – Kylotan
Ahh :) Me sorprende lo rápido que se está desarrollando node.js. – JasonWoof