Ich habe ein iPhone-Brettspiel für zwei Spieler entwickelt. Computerspieler (KI) können entweder lokal (im Spielcode) oder remote auf einem Server ausgeführt werden. Im zweiten Fall werden sowohl Client- als auch Servercode in Lua codiert. Auf dem Server ist der tatsächliche AI-Code vom TCP-Socket-Code und vom Coroutine-Code getrennt (wodurch für jeden Verbindungsclient eine separate AI-Instanz erzeugt wird).
Ich möchte in der Lage sein, den AI-Code weiter zu isolieren, damit dieser Teil ein Modul sein kann, das von jedem in der Sprache seiner Wahl codiert wird. Wie kann ich das machen? Welche Techniken / Technologien würden die Kommunikation zwischen dem Lua TCP-Socket / Coroutine-Code und dem AI-Modul ermöglichen?
game-design
ai
lua
TokyoDan
quelle
quelle
Antworten:
Ein Socket-basiertes Messaging-Schema kann verwendet werden, um es einer beliebigen Sprache zu ermöglichen, mit der KI zu interagieren. Sie können binärbasierte Nachrichten, XML, Text usw. verwenden. Definieren Sie einfach klar, wie das Nachrichtenformat lautet und welche Nachrichten Sie senden und empfangen.
Diese Technik eignet sich relativ gut für leichte bis bescheidene Kommunikationshandhabung. Damit ist natürlich eine Latenzstrafe verbunden, aber da Ihr Spiel ein Brettspielstil ist, muss es nicht in Echtzeit ausgeführt werden.
quelle
Für jede Sprache X können Sie nicht wissen, welche Interop-Funktion sie hat oder nicht - es wird nicht erwartet, dass eine Sprache Interoperationsfunktionen bietet. Am zuverlässigsten ist der C-Stil, da dies (mit ziemlicher Sicherheit) das ist, was Ihr Betriebssystem verwendet, obwohl dies nicht bedeutet, dass die Sprache es tatsächlich verfügbar macht.
Am unabhängigsten wäre es vielleicht, eine vom Betriebssystem bereitgestellte Named Pipe zu verwenden und beispielsweise XML-Nachrichten zu senden. Dies ist jedoch ein bisschen extrem - die meisten Kapselungsschemata hören auf, die Autorensprache zu kapseln.
quelle