¿Meteor sería una buena opción para construir una aplicación de ajedrez en línea?

La aplicación web en sí misma probablemente sea el caso de uso perfecto para Meteor: es ideal para todo lo que necesite compartirse en tiempo real, sin importar si se trata de una aplicación basada en una base de datos o un juego multijugador.

Sin embargo, si planea proporcionar un modo de “jugar contra la computadora”, esa parte sería muy intensiva en computación, ya que tendrá que esperar entre 10 y 20 movimientos en el juego, y el árbol de recursión, ya sabe, es exponencial (concedido, usará A *, pero aún así …).

Si necesita esta función, sugeriría crear una aplicación diferente del lado del servidor que obtenga como entrada la placa actual y su color (y posiblemente algún parámetro para controlar qué tan “buena” debe ser la computadora) y devolver el siguiente movimiento .
Es MUY IMPORTANTE que llame a este servicio ASINCRÓNICAMENTE desde su aplicación Meteor, para que no lo bloquee.
También tiene la máxima importancia que CACHE sus respuestas: acelerará particularmente el comienzo del juego, donde aparecen los mismos tableros en muchos juegos (avanzando en el juego, hay tantos tableros posibles que es poco probable que uno de ellos aparecerán en dos juegos diferentes durante la vida útil de un objeto dentro de su caché; también, es posible que desee tener un mecanismo de reemplazo en el caché que realice un seguimiento de la solicitud de una configuración, en lugar de solo LRU, o simplemente restringir el almacenamiento en caché a los primeros 5-10 movimientos).

Si desea guardar algunos de los movimientos en una base de datos, no use la base de datos de su aplicación principal: cree un pod diferente (línea de natación) para este servicio: esto mejorará la escalabilidad, la disponibilidad de su aplicación y la recuperación de fallas (usted sepa qué parte ha fallado y encontrará errores mucho más rápido).

Para la tecnología que se utilizará para esta parte, como Jeremy sugirió, A * es un algoritmo que puede hacer un buen uso de la paralelización, y nodejs no tiene ninguna computación paralela verdadera (el bucle de eventos le da la apariencia de que la computación está sucediendo en paralelo , pero en realidad hay un solo subproceso en ejecución).

Probablemente sugeriría Scala o Go para esta parte, pero la elección final depende de muchas cosas.

¡Espero que esto ayude!

Esto suena como un caso de uso perfecto para Meteor. Manejará la sincronización del estado del tablero entre los dos jugadores para usted y facilitará la creación del resto del sitio web y el sistema de cuenta de usuario.

Estoy de acuerdo con Sashko Stubailo; la interfaz web suena como un gran uso para Meteor.

Tenga en cuenta que Meteor no sería un buen candidato para escribir un jugador de ajedrez controlado por computadora. Si no mira hacia el futuro muy lejos y sus heurísticas son simples, podría implementar una IA simple del lado del cliente. Si el jugador de IA necesita vivir en el servidor, comprenda que los algoritmos de decisión como Minimax serán:

  1. Mucho, mucho más lento en Meteor / Node / JavaScript que en otras máquinas virtuales (como la JVM) o que cuando se compila en binarios nativos.
  2. Mucho, mucho más lento sin paralelización.
  3. Haga que su sitio no responda si están bloqueando el proceso principal de Meteor / Node.

Si desea seguir con la misma plataforma para todo, al menos implemente la IA en un servicio separado que se puede bifurcar.

Sí, Meteor es una buena opción para una aplicación de este tipo, de hecho, debería ser bastante trivial. Además de lo que han dicho Sashko Stubailo y Jeremy Fisher, me gustaría agregar que viniendo de Rails tal como eres, estarás un poco perdido en términos de estructura y flujo de la aplicación, ya que la última vez que revisé no había mucha guía en eso Departamento; Esto hace que sea realmente fácil crear una aplicación desordenada e incluso lenta si no toma las decisiones correctas. Investigaría cómo otros han creado aplicaciones con Meteor y veré qué se ajusta mejor a su escenario.

La mejor de las suertes con su proyecto, me encantaría ver el producto final.

He implementado con éxito un sistema de calificación ELO con meteorito. Visite http://rankz.meteor.com , https://github.com/feidens/rankz o mi blog post rankz – Sistema de calificación Elo en meteorito.
El sistema presenta gráficos para el historial de puntos y clasificaciones en varios grupos.

Meteor sería una buena opción para el juego en línea, ya que no tienes que codificar nada para implementar la sincronización en tiempo real en meteoritos. Creo que meteorito es el mejor para construir cualquier cosa que requiera una función de sincronización en tiempo real.

Seguro.