ฉันได้รับการดิ้นรนกับวิธีการใช้สคริปต์ในเครื่องมือเกมของฉัน ฉันมีข้อกำหนดเพียงไม่กี่ข้อเท่านั้น: มันควรจะเป็นสัญชาตญาณฉันไม่ต้องการเขียนภาษาที่กำหนดเองตัวแยกวิเคราะห์และล่ามและฉันไม่ต้องการใช้เธรด (ฉันแน่ใจว่ามีวิธีแก้ปัญหาที่ง่ายกว่า; ฉันไม่ต้องวุ่นวายกับหัวข้อเกมลอจิกหลายตัว) นี่เป็นสคริปต์ตัวอย่างใน Python (หรือที่รู้จักกันในนามของปลอม):
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?")
การเล่าเรื่องชิ้นเอกครั้งนี้ก่อให้เกิดปัญหาในการนำไปปฏิบัติ ฉันไม่สามารถประเมินวิธีการทั้งหมดในคราวเดียวเพราะwalk_to
ใช้เวลาเล่นเกม ถ้ามันกลับมาทันทีอลิซก็จะเริ่มเดินขึ้นไปหาบ๊อบและ (ในเฟรมเดียวกัน) พูดทักทาย (หรือได้รับการต้อนรับ) แต่ถ้าwalk_to
เป็นการบล็อกการโทรที่ส่งคืนเมื่อเธอไปถึงบ็อบเกมของฉันจะติดขัดเพราะมันบล็อกการดำเนินการของเธรดเดียวกันที่ทำให้อลิซเดินได้
ฉันคิดว่าการทำให้แต่ละฟังก์ชั่นalice.walk_to(bob)
จัดคิวแอคชั่น - จะผลักวัตถุไปยังคิวซึ่งจะหลุดออกหลังจากอลิซมาถึงบ๊อบไม่ว่าเขาจะอยู่ที่ไหน มันหักอย่างละเอียดมากขึ้น: if
สาขาจะถูกประเมินทันทีดังนั้นบ๊อบอาจทักทายอลิซแม้ว่าหลังของเขาจะหันไปหาเธอก็ตาม
เอ็นจิน / บุคคลอื่น ๆ จัดการสคริปต์อย่างไรโดยไม่สร้างเธรด ฉันเริ่มมองหาในพื้นที่ที่ไม่ใช่เกม - dev เช่น jQuery แอนิเมชันโซ่สำหรับแนวคิด ดูเหมือนว่าควรมีรูปแบบที่ดีสำหรับปัญหาประเภทนี้