Decidi recentemente começar a escrever um mecanismo para um jogo de cartas. Eu não sou um grande jogador de "cartas", mas um amigo me apresentou o jogo (é um giro no jogo dinamarquês), e eu me apaixonei.
Eu quero desenvolver o jogo em 3 segmentos:
- O mecanismo básico, lida com cartões / baralhos / estado do jogo, etc.
- Uma interface do usuário (na forma de um aplicativo Web para celular / desktop).
- Uma inteligência artificial com várias estratégias / dificuldades, etc.
Estes são projetos muito distintos, na minha opinião ... e estou lutando para ver como eles se encaixam a longo prazo. No começo, nem quero ser capaz de "jogar" o jogo usando o mecanismo. O motor será testado principalmente por seus testes de unidade. O teste de reprodução não será iniciado até que um cliente exista. Portanto, há algo de um relacionamento cliente-servidor aqui.
O motor é uma peça muito grande do quebra-cabeça. O que eu gostaria de saber é: como você desenvolveria a "API pública" para esse mecanismo?
Eu estava pensando que o mecanismo poderia ser um serviço da Web muito básico, que retorna seu estado por meio de consultas a uma API RESTful, mas estou preocupado que o desenvolvimento do próprio mecanismo como um aplicativo da Web possa levar a más decisões de programação. (Por exemplo, se eu escolhesse uma microestrutura MVC, bem, essa API não teria realmente visualizações ... está apenas retornando objetos serializados via JSON ou algo nesse sentido. É ruim usar o MVC para um serviço como esta? )
Minha outra idéia era que o mecanismo seria apenas um aplicativo de console e, posteriormente, eu escreveria uma ponte de algum tipo para canalizar dados entre ele e o aplicativo da web. (A ponte pode realmente ser qualquer coisa. Quero dizer, o servidor da Web e o mecanismo de jogo podem ficar ociosos em um servidor de IRC e compartilhar seu estado nos canais.)
Que abordagem você adotaria (desenvolver como um serviço da Web ou como um aplicativo independente e fazer a ponte posteriormente) e por quê?
Obrigado, Robbie.
EDIT: Então eu acho que isso pertence ao desenvolvimento de jogos. Para esclarecer, vou escrever um mecanismo de jogo de cartas. Estou tentando descobrir a melhor maneira de expor a API do mecanismo para que possa ser integrada no futuro com um cliente da Web e um cliente de IA.
Eu nem tinha uma conta aqui, então olá :)