Eu desenvolvi um jogo de tabuleiro para dois jogadores no iPhone. Os jogadores de computador (AI) podem ser locais (no código do jogo) ou remotos em execução em um servidor. No segundo caso, o código do cliente e do servidor é codificado em Lua. No servidor, o código do AI real é separado do código do soquete TCP e do código da rotina (que gera uma instância separada do AI para cada cliente que está se conectando).
Quero poder isolar ainda mais o código de IA para que essa parte possa ser um módulo codificado por qualquer pessoa no idioma de sua escolha. Como posso fazer isso? Quais técnicas / tecnologias permitiriam a comunicação entre o código soquete / corotina Lua TCP e o módulo AI?
game-design
ai
lua
TokyoDan
fonte
fonte
Respostas:
Um esquema de mensagens baseado em soquete pode ser usado para permitir que qualquer linguagem arbitrária interaja com a IA. Você pode usar mensagens binárias, xml, texto etc. Apenas defina claramente qual é o formato da mensagem e quais mensagens você enviará e receberá.
Essa técnica funciona relativamente bem para manipulação de comunicação leve a modesta. Existe uma penalidade de latência associada a ele, é claro, mas como o jogo é um estilo de jogo de tabuleiro, ele não precisa ser executado em tempo real.
fonte
Para qualquer idioma X, você não pode saber qual recurso de interoperabilidade ele possui ou não - nenhum idioma deve fornecer nenhum recurso de interoperação. O mais confiável é o estilo C, pois é (quase certamente) o que seu sistema operacional usa, embora isso não signifique que o idioma o exponha.
Talvez o mais independente esteja usando um pipe nomeado fornecido pelo sistema operacional e enviando, digamos, mensagens XML. No entanto, esse é um pouco extremo - a maioria dos esquemas de encapsulamento não encapsulam a linguagem de autoria.
fonte