ระบบส่วนประกอบเอนทิตี

Entity-Component-System คืออะไร?

Entity-Component–System (ECS) เป็นรูปแบบสถาปัตยกรรม รูปแบบนี้ใช้กันอย่างแพร่หลายในการพัฒนาแอปพลิเคชันเกม ECS ปฏิบัติตามหลักการการจัดองค์ประกอบมากกว่าการสืบทอด ซึ่งให้ความยืดหยุ่นที่ดีกว่าและช่วยให้คุณระบุเอนทิตีที่วัตถุทั้งหมดในฉากของเกมถือเป็นเอนทิตีได้

การเขียนโปรแกรม ECS เป็นวิธีการเขียนโค้ดที่ให้ประสิทธิภาพสูงตามค่าเริ่มต้น

ระบบนี้ประกอบด้วยคำศัพท์สามคำ

  1. เอกลักษณ์
  2. ตัวแทน
  3. System

ให้เราเรียนรู้แนวคิดนี้โดยละเอียด:

ในบทช่วยสอนระบบองค์ประกอบเอนทิตีนี้ คุณจะได้เรียนรู้:

เอนทิตีคืออะไร?

เอนทิตีเป็นวัตถุที่แตกต่างซึ่งเป็นตัวแทนของนักแสดงในพื้นที่จำลอง ไม่มีข้อมูลหรือพฤติกรรมที่แท้จริง ส่วนประกอบนี้ให้ข้อมูลแก่เอนทิตี โดยทั่วไปจะเป็นป๋อหรือพจนานุกรม

ตัวอย่างเช่น หากเรากำลังจำลองจักรวาลของเกม Minecraft'สิ่งของ' ที่มองเห็นและจับต้องได้ทั้งหมดในจักรวาลของเกมนั้นจะถูกนับเป็นเอนทิตี

ส่วนประกอบคืออะไร?

ส่วนประกอบเป็นพฤติกรรมเอกพจน์ที่กำหนดให้กับเอนทิตี ชื่อขององค์ประกอบควรสื่อสารได้อย่างดีเยี่ยมว่าเอนทิตีจะแสดงพฤติกรรมใด อย่างไรก็ตาม ส่วนประกอบเองก็ไม่มีการทำงานใดๆ เป็นโมดูลที่ใช้ซ้ำได้ซึ่งแนบกับเอนทิตี ส่วนประกอบจะแสดงลักษณะที่ปรากฏ ลักษณะการทำงาน และฟังก์ชันการทำงาน

ตรรกะทั้งหมดถูกนำไปใช้โดยใช้ส่วนประกอบซึ่งช่วยให้คุณกำหนดออบเจ็กต์ประเภทต่างๆ โดยการผสมและกำหนดค่าส่วนประกอบ

ระบบคืออะไร?

ระบบจะวนซ้ำส่วนประกอบจำนวนมากเพื่อดำเนินการในระดับต่ำ

ฟังก์ชั่นต่างๆ เช่น การเรนเดอร์กราฟิก การแสดงฟิสิกส์

การคำนวณหรือการค้นหาเส้นทาง โดยนำเสนอขอบเขต การจัดการ และบริการระดับสากลสำหรับประเภทของส่วนประกอบ

อย่างไรก็ตาม ระบบไม่ใช่ทางเลือก แต่เราสามารถใช้เพื่อแยกตรรกะและข้อมูลได้ นอกจากนี้ยังช่วยคุณจัดการส่วนประกอบทางลอจิคัลซึ่งทำหน้าที่เป็นที่เก็บข้อมูล

ตัวอย่าง

  • แรงโน้มถ่วง (ความเร็ว) – ช่วยให้คุณเร่งความเร็วเนื่องจากแรงโน้มถ่วง
  • มันเพิ่มความเร็วให้กับตำแหน่ง
  • ตั้งค่าอินพุตของเอนทิตีที่ควบคุมด้วยบอทตามตัวแทน AI
  • เรนเดอร์ (ตำแหน่ง, สไปรท์) – ดึงสไปรท์
  • การควบคุมผู้เล่น (เครื่องเล่นอินพุต) ช่วยให้คุณตั้งค่าอินพุตของเอนทิตีที่ผู้เล่นควบคุมตามคอนโทรลเลอร์

ส่วนประกอบ

องค์ประกอบคือองค์ประกอบที่คุณสามารถแนบส่วนประกอบต่างๆ ได้มากขึ้นเพื่อเพิ่มรูปลักษณ์ พฤติกรรม หรือฟังก์ชันการทำงานเพิ่มเติม คุณยังสามารถอัพเดตค่าส่วนประกอบเพื่อตั้งค่าคอนฟิกเอนทิตีได้

ข้อได้เปรียบของอีซีเอส

ข้อดีของการใช้ ECS ในการเขียนโปรแกรมมีดังนี้:

  • คุณสามารถสร้างโค้ดที่สั้นลงและซับซ้อนน้อยลงได้
  • พฤติกรรมฉุกเฉินที่ยืดหยุ่นมาก
  • เป็นสถาปัตยกรรมสำหรับการพัฒนา 3D และ VR
  • เปิดใช้งานการเขียนสคริปต์ตามพฤติกรรมของผู้ที่ไม่ใช้เทคโนโลยี
  • ช่วยให้คุณแบ่งชั้นเรียนเสาหินของคุณ
  • ขยะง่ายและเป็นส่วนประกอบได้
  • ตัวเลือกที่ง่ายสำหรับการทดสอบและการเยาะเย้ยหน่วย
  • ช่วยให้คุณสามารถสร้างแอปพลิเคชัน VR ได้อย่างมีความซับซ้อน
  • ทดแทนส่วนประกอบด้วยส่วนประกอบที่จำลองขณะรันไทม์
  • ช่วยให้คุณขยายคุณสมบัติใหม่ ๆ
  • ECS เป็นวิธีการที่เป็นมิตรสำหรับการประมวลผลแบบขนานและมัลติเธรด
  • ช่วยคุณแยกข้อมูลจากฟังก์ชันที่ทำหน้าที่นั้น
  • ให้ความยืดหยุ่นที่ดีขึ้นเมื่อกำหนดวัตถุโดยการผสมกับชิ้นส่วนที่นำมาใช้ซ้ำได้
  • มีการออกแบบที่สะอาดตาโดยใช้วิธีการแยกส่วน การห่อหุ้ม การทำให้เป็นโมดูล และการนำกลับมาใช้ใหม่

ข้อเสียของการใช้ ECS

นี่คือข้อเสียเปรียบบางประการของการใช้ ECS

  • ไม่ได้กำหนดไว้อย่างเป็นรูปธรรมเท่ากับรูปแบบอื่นๆ เช่น MVC
  • ใช้งานยาก ใช้งานผิดวิธีได้ง่าย ส่วนประกอบที่ดีต้องคำนึงถึงการออกแบบมากขึ้น
  • ECS จำเป็นต้องเขียนระบบขนาดเล็กจำนวนมากที่เชื่อมโยงกับเอนทิตีจำนวนมากซึ่งอาจก่อให้เกิดความเสี่ยงในการเขียนโค้ดที่ไม่มีประสิทธิภาพ
  • คนส่วนใหญ่ไม่เคยได้ยินเกี่ยวกับรูปแบบนี้มาก่อน

ตัวอย่างระบบส่วนประกอบเอนทิตี

ให้เราดูตัวอย่างของกระต่าย:

ดูที่กล่องเส้นประรอบส่วนประกอบเหล่านี้ นั่นคือเอนทิตีกระต่าย ซึ่งไม่มีอะไรมากไปกว่าคอนเทนเนอร์ของส่วนประกอบ คุณยังสามารถกำหนดเอนทิตีเป็นการรวมส่วนประกอบย่อยใดๆ ก็ได้

คุณสามารถดูภาพที่ให้ไว้ข้างต้น มันเป็นหนึ่งในเอนทิตีกระต่าย - ไม่มีอะไรมากไปกว่าคอนเทนเนอร์ของส่วนประกอบ คุณสามารถกำหนดเอนทิตีเป็นการรวมชุดย่อยของส่วนประกอบใดๆ เช่น Carrot:

การไหลของข้อมูลใน ECS:

พฤติกรรมของระบบคือโมเดล ECS ที่เปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง

ให้เราเข้าใจโดยใช้ตัวอย่างนี้:

พฤติกรรม: “กระต่ายนั่งอยู่บนต้นไม้ล้มลงเนื่องจากแรงโน้มถ่วง”

จะนำพฤติกรรมข้างต้นไปใช้อย่างไร?

คุณสามารถสร้างได้ด้วยค่า z มากกว่า 0 ซึ่งจะลดลงเมื่อเวลาผ่านไปเป็น 0

พฤติกรรม: “สิ่งมีชีวิตอายุ”

มาดูกันว่าคุณสามารถใช้พฤติกรรมนี้ได้อย่างไร?

คุณสามารถทำให้ส่วนประกอบของสิ่งมีชีวิตมีค่าตามอายุซึ่งเพิ่มขึ้นเมื่อเวลาผ่านไป

สรุป:

  • Entity-Component–System (ECS) เป็นรูปแบบสถาปัตยกรรม
  • เอนทิตีเป็นวัตถุที่แตกต่างซึ่งเป็นตัวแทนของนักแสดงในพื้นที่จำลอง
  • ส่วนประกอบเป็นพฤติกรรมเอกพจน์ที่กำหนดให้กับเอนทิตี
  • ระบบจะวนซ้ำองค์ประกอบหลายอย่างเพื่อทำหน้าที่ระดับต่ำ เช่น การเรนเดอร์กราฟิก การคำนวณทางฟิสิกส์ หรือการค้นหาเส้นทาง
  • องค์ประกอบคือองค์ประกอบที่คุณสามารถแนบส่วนประกอบต่างๆ ได้มากขึ้นเพื่อเพิ่มรูปลักษณ์ พฤติกรรม หรือฟังก์ชันการทำงานเพิ่มเติม
  • ด้วยการใช้รูปแบบ ECS คุณสามารถสร้างโค้ดที่สั้นลงและซับซ้อนน้อยลงได้
  • ไม่ได้กำหนดไว้อย่างเป็นรูปธรรมเหมือนกับรูปแบบอื่นๆ เช่น MVC
  • พฤติกรรมของระบบคือโมเดล ECS ที่เปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง