Saya telah berjuang dengan cara mengimplementasikan skrip di mesin game saya. Saya hanya memiliki beberapa persyaratan: Ini harus intuitif, saya tidak ingin menulis bahasa kustom, parser dan interpreter, dan saya tidak ingin menggunakan threading. (Saya yakin ada solusi yang lebih sederhana; Saya tidak perlu kerumitan banyak untaian logika permainan.) Berikut ini contoh skrip, dengan Python (alias pseudocode):
def dramatic_scene(actors):
alice = actors["alice"]
bob = actors["bob"]
alice.walk_to(bob)
if bob.can_see(alice):
bob.say("Hello again!")
else:
alice.say("Excuse me, Bob?")
Sepenggal kisah mendongeng itu menimbulkan masalah implementasi. Saya tidak bisa hanya mengevaluasi seluruh metode sekaligus, karena walk_to
membutuhkan waktu permainan. Jika kembali segera, Alice akan mulai berjalan ke Bob, dan (dalam bingkai yang sama) menyapa (atau disambut). Tetapi jika walk_to
ada panggilan pemblokiran yang kembali ketika dia mencapai Bob, maka permainan saya macet, karena itu memblokir alur eksekusi yang sama yang akan membuat Alice berjalan.
Saya mempertimbangkan untuk membuat setiap fungsi sebagai tindakan - alice.walk_to(bob)
akan mendorong suatu objek ke antrian, yang akan muncul setelah Alice mencapai Bob, di mana pun dia berada. Itu lebih rusak: if
cabang dievaluasi segera, jadi Bob mungkin menyapa Alice bahkan jika punggungnya berbalik padanya.
Bagaimana mesin / orang lain menangani skrip tanpa membuat utas? Saya mulai mencari di area non-game-dev, seperti rantai animasi jQuery, untuk mencari ide. Sepertinya harus ada beberapa pola yang baik untuk masalah seperti ini.