Saya mengembangkan permainan papan iPhone dua pemain. Pemain komputer (AI) dapat berupa lokal (dalam kode game) atau berjalan di server. Dalam kasus ke-2, kode klien dan server dikodekan dalam Lua. Di server, kode AI sebenarnya terpisah dari kode soket TCP dan kode coroutine (yang memunculkan instance AI terpisah untuk setiap klien yang tersambung).
Saya ingin dapat lebih jauh mengisolasi kode AI sehingga bagian itu bisa menjadi modul yang dikodekan oleh siapa pun dalam bahasa pilihan mereka. Bagaimana saya bisa melakukan ini? Teknik / teknologi apa yang memungkinkan komunikasi antara soket Lua TCP / kode coroutine dan modul AI?
game-design
ai
lua
TokyoDan
sumber
sumber
Jawaban:
Skema perpesanan berbasis soket dapat digunakan untuk memungkinkan bahasa sembarang berinteraksi dengan AI. Anda dapat menggunakan pesan berbasis biner, xml, teks, dll. Hanya dengan jelas menentukan apa format pesan itu dan pesan apa yang akan Anda kirim dan terima.
Teknik ini bekerja relatif baik untuk penanganan komunikasi yang ringan sampai sedang. Tentu saja ada penalti latensi yang terkait dengannya, tetapi karena permainan Anda merupakan gaya permainan papan, ia tidak harus dijalankan secara waktu nyata.
sumber
Untuk bahasa X apa pun, Anda tidak dapat mengetahui fitur interop apa yang dilakukannya atau tidak memiliki bahasa — diharapkan tidak menyediakan fitur interoperasi apa pun. Yang paling dapat diandalkan adalah gaya-C, karena itulah (hampir pasti) apa yang digunakan OS Anda, meskipun ini tidak berarti bahwa bahasa tersebut benar-benar mengeksposnya.
Mungkin yang paling independen akan menggunakan pipa bernama yang disediakan oleh OS dan mengirimkan, katakanlah, pesan XML. Namun, ini adalah skema enkapsulasi paling ekstrim yang paling sedikit berhenti mengenkapsulasi bahasa pembuat.
sumber