Recientemente he decidido comenzar a escribir un motor para un juego de cartas. No soy un gran jugador de "cartas", pero un amigo me presentó el juego (es un giro en el juego danés), y me enamoré.
Quiero desarrollar el juego en 3 segmentos:
- El motor básico, maneja cartas / mazos / estado del juego, etc.
- Una interfaz de usuario (en forma de una aplicación web móvil / de escritorio).
- Una inteligencia artificial con diversas estrategias / dificultades, etc.
Estos son proyectos muy distintos, en mi opinión ... y estoy luchando para ver cómo encajarán todos a la larga. Al principio, ni siquiera quiero poder "jugar" el juego usando el motor. El motor será probado principalmente por sus pruebas unitarias. Las pruebas de juego no comenzarán hasta que exista un cliente. Entonces hay algo de una relación cliente-servidor aquí.
El motor es una pieza muy grande del rompecabezas. Lo que me gustaría saber es: ¿cómo haría para desarrollar la "API pública" para este motor?
Estaba pensando que el motor podría ser un servicio web muy básico, que devuelve su estado a través de consultas a una API RESTful, pero me preocupa que desarrollar el motor en sí mismo como una aplicación web pueda conducir a malas decisiones de programación. (Por ejemplo, si elijo un micro marco MVC, bueno, esta API realmente no tendría vistas ... solo está devolviendo objetos serializados a través de JSON, o algo por el estilo. ¿Es malo usar MVC para un servicio como ¿esta? )
Mi otra idea era que el motor sería una aplicación de consola, y luego escribiría un puente de algún tipo para canalizar datos entre él y la aplicación web. (El puente realmente podría ser cualquier cosa. Quiero decir, el servidor web y el motor del juego podrían estar inactivos en un servidor IRC y compartir su estado en canales).
¿Qué enfoque adoptarías (desarrollar como un servicio web, o desarrollar como una aplicación independiente y cerrarlo más tarde), y por qué?
Gracias Robbie
EDITAR: Supongo que esto pertenece al desarrollo del juego. Para aclarar, voy a escribir un motor de juego de cartas. Estoy tratando de descubrir la mejor manera de exponer la API del motor para que pueda integrarse en el futuro con un cliente web y un cliente de IA.
Ni siquiera tenía una cuenta aquí, así que hola :)