Desarrollé un juego de mesa para iPhone de dos jugadores. Los jugadores de computadora (AI) pueden ser locales (en el código del juego) o remotos en un servidor. En el segundo caso, tanto el código del cliente como el del servidor están codificados en Lua. En el servidor, el código AI real está separado del código de socket TCP y del código de rutina (que genera una instancia separada de AI para cada cliente que se conecta).
Quiero poder aislar aún más el código AI para que esa parte pueda ser un módulo codificado por cualquier persona en su idioma de elección. ¿Cómo puedo hacer esto? ¿Qué técnicas / tecnología permitirían la comunicación entre el socket Lua TCP / código de rutina y el módulo AI?
game-design
ai
lua
TokyoDan
fuente
fuente
Respuestas:
Se puede usar un esquema de mensajería basado en sockets para permitir que cualquier lenguaje arbitrario interactúe con la IA. Puede usar mensajes basados en binarios, xml, texto, etc. Simplemente defina claramente cuál es el formato del mensaje y qué mensajes enviará y recibirá.
Esta técnica funciona relativamente bien para un manejo de comunicación ligero a modesto. Hay una penalización de latencia asociada, por supuesto, pero dado que su juego es un estilo de juego de mesa, no tiene que ejecutarse en tiempo real.
fuente
Para cualquier lenguaje X, no puede saber qué función de interoperabilidad tiene o no tiene; no se espera que ningún idioma proporcione ninguna característica de interoperación. El más confiable es el estilo C, ya que es (casi seguro) lo que usa su sistema operativo, aunque esto no significa que el lenguaje lo exponga realmente.
Quizás el más independiente estaría usando una canalización con nombre provista por el sistema operativo y enviando, por ejemplo, mensajes XML. Sin embargo, esto es un poco extremo, la mayoría de los esquemas de encapsulación no llegan a encapsular el lenguaje de autoría.
fuente