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).
- ¿Qué cartas mágicas representan grandes pasos en el cambio de diseño?
- Creo que los desarrolladores de juegos tienen hambre de dinero. ¿Qué piensas?
- ¿Funcionará bien un juego instalado en la unidad E: \?
- ¿Cuál es el mejor juego de Call Of Duty de la serie?
- ¿Los juegos de estrategia en tiempo real dan los mismos beneficios mentales que el ajedrez?
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!