สมมติว่าคุณมีเกมที่มีเอนทิตีจำนวนมาก (จำนวนมาก) ที่ให้บริการฟังก์ชั่นบางอย่างซึ่งไม่จำเป็นต้องพิจารณาอย่างต่อเนื่องหรือจำเป็นต้องพิจารณาในทุกเฟรม ปัญหาที่เป็นรูปธรรมที่ฉันกำลังดำเนินการซึ่งปัญหานี้มีอยู่คือการจำลองรายละเอียดของร่างกายรวมถึงอวัยวะของมัน
ในเกมสิ่งมีชีวิตแต่ละตัวมีร่างกายของตัวเองซึ่งแบ่งออกเป็นส่วนเล็ก ๆ (ลำตัวขา ฯลฯ ) และบางครั้งส่วนเหล่านี้มีอวัยวะซึ่งทำหน้าที่เฉพาะในร่างกาย ไม่ว่าอวัยวะในปัจจุบันจะมีจุดประสงค์หรือไม่ก็ตามไม่ชัดเจน ท้ายที่สุดสัตว์อาจมีท้องว่างซึ่งไม่จำเป็นต้องย่อยอะไร มันจะค่อนข้างไร้สาระที่จะตรวจสอบหรือจำลองวัตถุทุกชิ้นในแต่ละเฟรมและมีราคาแพงมากทันทีที่คุณมีสิ่งมีชีวิตมากมายในโลก ดังนั้นฉันจึงคิดหาวิธีที่จะแยกความแตกต่างระหว่างวัตถุที่จำเป็นต้องได้รับการอัปเดตและสิ่งที่ไม่ทำอย่างชาญฉลาด
สิ่งที่ฉันคิดขึ้นมาดูเหมือนจะเป็นทางออกอย่างน้อยที่สุด มันสร้างคิว / สแต็กอย่างง่าย (ที่สำคัญคือแต่ละองค์ประกอบจะถูกลบออกทันทีที่อ่านคำสั่งนั้นไม่เกี่ยวข้อง) เรียกว่า "สนใจสแต็ก" ซึ่งมีวัตถุที่ต้องจำลองอยู่ วัตถุที่ต้องการความสนใจเพียงแค่วางลงบนสแต็กหรือถูกใส่โดยวัตถุอื่น วัตถุเหล่านี้อาจใช้ส่วนต่อประสานแบบง่าย ๆ กับฟังก์ชันจำลอง () -
นำไปใช้กับตัวอย่างการย่อยก่อนหน้าของฉันซึ่งหมายความว่า:
ผู้เล่นเลือกที่จะกิน (สมมติว่าเป็นขนมปัง) จากสินค้าคงคลังและใส่เข้าไปในปากของตัวละครของเขาและปากจะถูกวางลงบนกองความสนใจ ในเฟรมถัดไปปากจะถูกนำออกจากสแต็กและจำลอง () - ฟังก์ชันถูกเรียก เนื่องจากเป็นปากจึงเป็นการสมเหตุสมผลที่จะจำลองการเคี้ยวที่นี่ สิ่งนี้สามารถดำเนินต่อไปในไม่กี่เฟรมที่ปากวางตัวเองลงบนสแต็คจนกว่าจะตัดสินใจว่าอาหารพร้อมที่จะกลืน ในกรณีนี้ปากใส่ขนมปังที่เคี้ยวเข้าไปในกระเพาะอาหาร (ฉันรู้ว่ามันไม่ได้ไปที่นั่นโดยตรง แต่หลอดอาหารจะถูกปล่อยออกมาเพื่อให้เข้าใจง่าย) ซึ่งจากนั้นก็ใส่ลงไปในความสนใจ - สแต็ก ในเฟรมถัดไปการจำลองของกระบวนการย่อยเริ่มต้น และส่วนอื่น ๆ ของอวัยวะที่จำเป็น
ปัญหาที่คาดการณ์ได้จากสิ่งนี้คือวัตถุที่ไม่ทำงาน สัตว์นอนหลับเป็นตัวอย่างที่ดีของสิ่งนี้ มันสามารถทำได้ตามที่อธิบายไว้ก่อนหน้านี้โดยการเก็บสัตว์นอนอยู่บนสแต็กและตรวจสอบแต่ละครั้งหากจำเป็นต้องตื่นขึ้นมา แต่ดูเหมือนว่าสิ้นเปลืองเพราะนั่นเป็นสิ่งเดียวที่ทำ เพื่อให้วัตถุที่ไม่ทำงานมีประสิทธิภาพมากขึ้นฉันวางแผนที่จะเพิ่มประเภทของตารางเวลาที่จัดเก็บงานที่จะดำเนินการในเวลาที่กำหนด หากสัตว์เข้าสู่โหมดสลีปมันจะวางงานตามตารางเวลานั้นซึ่งจะถูกกำหนดเวลาไว้นานหลังจากที่สัตว์เข้านอน จากนั้นงานนี้จะช่วยให้สัตว์นอนหลับอยู่ในกองสนใจอีกครั้ง ตอนนี้คุณสามารถพูดได้ว่าสัตว์ประหลาดที่ไม่ได้อยู่ในกลุ่มความสนใจอาจถูกโจมตีจากบางสิ่งเพราะ AI ไม่ได้ถูกจำลอง
ตอนนี้ฉันก็ไม่รู้เหมือนกันว่านี่เป็นวิธีการแก้ปัญหาที่สง่างามสำหรับปัญหานี้หรือไม่เพราะขาดประสบการณ์ ฉันอยู่ใกล้กับสิ่งที่ใช้ได้หรือไม่ มักจะทำเช่นนี้หรือไม่มีใครมีข้อเสนอแนะหรือวิธีแก้ปัญหาที่ดีกว่า?