J'ai développé un jeu de société iPhone à deux joueurs. Les joueurs sur ordinateur (AI) peuvent être locaux (dans le code du jeu) ou exécutés à distance sur un serveur. Dans le deuxième cas, les codes client et serveur sont codés en Lua. Sur le serveur, le code AI réel est distinct du code de socket TCP et du code coroutine (qui génère une instance distincte d'IA pour chaque client qui se connecte).
Je veux pouvoir isoler davantage le code AI afin que cette partie puisse être un module codé par n'importe qui dans la langue de son choix. Comment puis-je faire ceci? Quelles techniques / technologies permettraient la communication entre le code socket / coroutine Lua TCP et le module AI?
game-design
ai
lua
TokyoDan
la source
la source
Réponses:
Un schéma de messagerie basé sur socket peut être utilisé pour permettre à n'importe quel langage arbitraire d'interagir avec l'IA. Vous pouvez utiliser des messages binaires, du xml, du texte, etc. Définissez simplement clairement le format du message et les messages que vous enverrez et recevrez.
Cette technique fonctionne relativement bien pour une gestion de communication légère à modeste. Il y a bien sûr une pénalité de latence, mais comme votre jeu est un style de jeu de société, il n'a pas besoin d'être exécuté en temps réel.
la source
Pour n'importe quelle langue X, vous ne pouvez pas savoir quelle fonction d'interopérabilité il possède ou n'a pas - aucune langue n'est censée fournir des fonctionnalités d'interopérabilité. Le plus fiable est le style C, car c'est (presque certainement) ce que votre système d'exploitation utilise, bien que cela ne signifie pas que le langage l'expose réellement.
Le plus indépendant serait peut-être d'utiliser un canal nommé fourni par le système d'exploitation et d'envoyer, par exemple, des messages XML. Cependant, c'est un peu extrême - les schémas d'encapsulation les plus courts ne permettent pas d'encapsuler le langage de création.
la source