โดยปกติสคริปต์จะเป็นโค้ดที่ทำงานนอกเอ็นจิ้นหลักของคุณ มันมักจะมีอยู่ในไฟล์ข้อความทุกที่ที่คุณต้องการเก็บไว้ จากนั้นจะถูกโหลดโดยเอ็นจินแยกวิเคราะห์และดำเนินการตอนรันไทม์
สิ่งที่เกิดขึ้นโดยทั่วไปคือภาษาใดก็ตามที่คุณใช้ (เช่น Lua, Angelscript) ภาษานี้มักจะมีสิ่งอำนวยความสะดวกบางอย่างที่ทำให้โปรแกรมเมอร์โปรแกรมเมอร์สามารถแสดงฟังก์ชั่นของเครื่องยนต์หรือแม้แต่คลาสทั้งหมดกับอินสแตนซ์ของ "สคริปต์สคริปต์" .
ตัวอย่างเช่น (ตัวอย่างโง่โดยสิ้นเชิง แต่เพียงเพื่อให้ได้คะแนน) รหัสเกมของคุณอาจมีฟังก์ชั่นสาธารณะที่วางไข่ซอมบี้ที่ไหนสักแห่ง:
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
ภาษาสคริปต์ที่คุณใช้ตอนนี้ช่วยให้คุณสามารถเปิดเผยฟังก์ชันนี้กับตัวแยกวิเคราะห์สคริปต์ที่กำลังทำงานอยู่ สิ่งนี้หมายความว่าคุณสามารถเปิดไฟล์ข้อความเขียน "SpawnZombie (200,300,1337)" และเมื่อเอ็นจิ้นของคุณรันโค้ดแล้วซอมบี้จะวางไข่ที่ตำแหน่งนั้น
คำตอบอื่น ๆ แสดงรายการตัวอย่างที่ดีของวิธีการใช้งานนี้โดยทั่วไปแล้ว แต่พวกเขาก็ทิ้งประเด็นหนึ่งซึ่งฉันพบว่าสำคัญมาก:
สคริปต์ประเภทนี้ทำให้ง่ายต่อการตรวจแก้จุดบกพร่องหรือทดสอบการเล่นเกมระหว่างรันไทม์
สมมติว่าคุณต้องการหาวิธีที่สมบูรณ์แบบในการวางซอมบี้ลงบนแผนที่เพื่อให้มันมีเอฟเฟกต์หวาดกลัวสูงสุดต่อผู้เล่นเมื่อพวกเขาค้นพบมัน หากไม่มีการสนับสนุนสคริปต์คุณจะต้องออกจากแอปพลิเคชันเปลี่ยนหมายเลขเวทย์มนตร์บางอย่างในรหัสทำการคอมไพล์ใหม่และทดสอบ
ด้วยการสนับสนุนการเขียนสคริปต์ (ให้คุณมีวิธีการป้อนข้อความระหว่างรันไทม์ตัวอย่างเช่นคอนโซลการดีบัก) คุณเพียงพิมพ์ "SpawnZombie (333,444,555)" และดูว่ามันมีลักษณะอย่างไร
ในลักษณะเดียวกันอาจเป็นไปได้ที่คุณจะวางไข่อาวุธยานพาหนะโหลดแผนที่ที่แตกต่างเปลี่ยนค่าของบางสิ่งในเกม ฯลฯ ศัตรู instakill เพราะคุณไม่ต้องการเสียเวลาไปกับส่วนที่ต้องมี ผ่านการทดสอบ ฯลฯ
วิธีนี้จะช่วยให้คุณประหยัดเวลาได้มากในเกมที่ซับซ้อนมากขึ้น