ระบบส่วนประกอบเอนทิตี
Entity-Component-System คืออะไร?
Entity-Component–System (ECS) เป็นรูปแบบสถาปัตยกรรม รูปแบบนี้ใช้กันอย่างแพร่หลายในการพัฒนาแอปพลิเคชันเกม ECS ปฏิบัติตามหลักการการจัดองค์ประกอบมากกว่าการสืบทอด ซึ่งให้ความยืดหยุ่นที่ดีกว่าและช่วยให้คุณระบุเอนทิตีที่วัตถุทั้งหมดในฉากของเกมถือเป็นเอนทิตีได้
การเขียนโปรแกรม ECS เป็นวิธีการเขียนโค้ดที่ให้ประสิทธิภาพสูงตามค่าเริ่มต้น
ระบบนี้ประกอบด้วยคำศัพท์สามคำ
- เอกลักษณ์
- ตัวแทน
- System
ให้เราเรียนรู้แนวคิดนี้โดยละเอียด:
ในบทช่วยสอนระบบองค์ประกอบเอนทิตีนี้ คุณจะได้เรียนรู้:
- Entity-Component-System คืออะไร?
- เอนทิตีคืออะไร?
- ส่วนประกอบคืออะไร?
- ระบบคืออะไร?
- ส่วนประกอบ
- ข้อได้เปรียบของอีซีเอส
- ข้อเสียของการใช้ ECS
- ตัวอย่างระบบส่วนประกอบเอนทิตี
- การไหลของข้อมูลใน ECS:
เอนทิตีคืออะไร?
เอนทิตีเป็นวัตถุที่แตกต่างซึ่งเป็นตัวแทนของนักแสดงในพื้นที่จำลอง ไม่มีข้อมูลหรือพฤติกรรมที่แท้จริง ส่วนประกอบนี้ให้ข้อมูลแก่เอนทิตี โดยทั่วไปจะเป็นป๋อหรือพจนานุกรม
ตัวอย่างเช่น หากเรากำลังจำลองจักรวาลของเกม Minecraft'สิ่งของ' ที่มองเห็นและจับต้องได้ทั้งหมดในจักรวาลของเกมนั้นจะถูกนับเป็นเอนทิตี
ส่วนประกอบคืออะไร?
ส่วนประกอบเป็นพฤติกรรมเอกพจน์ที่กำหนดให้กับเอนทิตี ชื่อขององค์ประกอบควรสื่อสารได้อย่างดีเยี่ยมว่าเอนทิตีจะแสดงพฤติกรรมใด อย่างไรก็ตาม ส่วนประกอบเองก็ไม่มีการทำงานใดๆ เป็นโมดูลที่ใช้ซ้ำได้ซึ่งแนบกับเอนทิตี ส่วนประกอบจะแสดงลักษณะที่ปรากฏ ลักษณะการทำงาน และฟังก์ชันการทำงาน
ตรรกะทั้งหมดถูกนำไปใช้โดยใช้ส่วนประกอบซึ่งช่วยให้คุณกำหนดออบเจ็กต์ประเภทต่างๆ โดยการผสมและกำหนดค่าส่วนประกอบ
ระบบคืออะไร?
ระบบจะวนซ้ำส่วนประกอบจำนวนมากเพื่อดำเนินการในระดับต่ำ
ฟังก์ชั่นต่างๆ เช่น การเรนเดอร์กราฟิก การแสดงฟิสิกส์
การคำนวณหรือการค้นหาเส้นทาง โดยนำเสนอขอบเขต การจัดการ และบริการระดับสากลสำหรับประเภทของส่วนประกอบ
อย่างไรก็ตาม ระบบไม่ใช่ทางเลือก แต่เราสามารถใช้เพื่อแยกตรรกะและข้อมูลได้ นอกจากนี้ยังช่วยคุณจัดการส่วนประกอบทางลอจิคัลซึ่งทำหน้าที่เป็นที่เก็บข้อมูล
ตัวอย่าง
- แรงโน้มถ่วง (ความเร็ว) – ช่วยให้คุณเร่งความเร็วเนื่องจากแรงโน้มถ่วง
- มันเพิ่มความเร็วให้กับตำแหน่ง
- ตั้งค่าอินพุตของเอนทิตีที่ควบคุมด้วยบอทตามตัวแทน AI
- เรนเดอร์ (ตำแหน่ง, สไปรท์) – ดึงสไปรท์
- การควบคุมผู้เล่น (เครื่องเล่นอินพุต) ช่วยให้คุณตั้งค่าอินพุตของเอนทิตีที่ผู้เล่นควบคุมตามคอนโทรลเลอร์
ส่วนประกอบ
องค์ประกอบคือองค์ประกอบที่คุณสามารถแนบส่วนประกอบต่างๆ ได้มากขึ้นเพื่อเพิ่มรูปลักษณ์ พฤติกรรม หรือฟังก์ชันการทำงานเพิ่มเติม คุณยังสามารถอัพเดตค่าส่วนประกอบเพื่อตั้งค่าคอนฟิกเอนทิตีได้
ข้อได้เปรียบของอีซีเอส
ข้อดีของการใช้ ECS ในการเขียนโปรแกรมมีดังนี้:
- คุณสามารถสร้างโค้ดที่สั้นลงและซับซ้อนน้อยลงได้
- พฤติกรรมฉุกเฉินที่ยืดหยุ่นมาก
- เป็นสถาปัตยกรรมสำหรับการพัฒนา 3D และ VR
- เปิดใช้งานการเขียนสคริปต์ตามพฤติกรรมของผู้ที่ไม่ใช้เทคโนโลยี
- ช่วยให้คุณแบ่งชั้นเรียนเสาหินของคุณ
- ขยะง่ายและเป็นส่วนประกอบได้
- ตัวเลือกที่ง่ายสำหรับการทดสอบและการเยาะเย้ยหน่วย
- ช่วยให้คุณสามารถสร้างแอปพลิเคชัน VR ได้อย่างมีความซับซ้อน
- ทดแทนส่วนประกอบด้วยส่วนประกอบที่จำลองขณะรันไทม์
- ช่วยให้คุณขยายคุณสมบัติใหม่ ๆ
- ECS เป็นวิธีการที่เป็นมิตรสำหรับการประมวลผลแบบขนานและมัลติเธรด
- ช่วยคุณแยกข้อมูลจากฟังก์ชันที่ทำหน้าที่นั้น
- ให้ความยืดหยุ่นที่ดีขึ้นเมื่อกำหนดวัตถุโดยการผสมกับชิ้นส่วนที่นำมาใช้ซ้ำได้
- มีการออกแบบที่สะอาดตาโดยใช้วิธีการแยกส่วน การห่อหุ้ม การทำให้เป็นโมดูล และการนำกลับมาใช้ใหม่
ข้อเสียของการใช้ ECS
นี่คือข้อเสียเปรียบบางประการของการใช้ ECS
- ไม่ได้กำหนดไว้อย่างเป็นรูปธรรมเท่ากับรูปแบบอื่นๆ เช่น MVC
- ใช้งานยาก ใช้งานผิดวิธีได้ง่าย ส่วนประกอบที่ดีต้องคำนึงถึงการออกแบบมากขึ้น
- ECS จำเป็นต้องเขียนระบบขนาดเล็กจำนวนมากที่เชื่อมโยงกับเอนทิตีจำนวนมากซึ่งอาจก่อให้เกิดความเสี่ยงในการเขียนโค้ดที่ไม่มีประสิทธิภาพ
- คนส่วนใหญ่ไม่เคยได้ยินเกี่ยวกับรูปแบบนี้มาก่อน
ตัวอย่างระบบส่วนประกอบเอนทิตี
ให้เราดูตัวอย่างของกระต่าย:
ดูที่กล่องเส้นประรอบส่วนประกอบเหล่านี้ นั่นคือเอนทิตีกระต่าย ซึ่งไม่มีอะไรมากไปกว่าคอนเทนเนอร์ของส่วนประกอบ คุณยังสามารถกำหนดเอนทิตีเป็นการรวมส่วนประกอบย่อยใดๆ ก็ได้
คุณสามารถดูภาพที่ให้ไว้ข้างต้น มันเป็นหนึ่งในเอนทิตีกระต่าย - ไม่มีอะไรมากไปกว่าคอนเทนเนอร์ของส่วนประกอบ คุณสามารถกำหนดเอนทิตีเป็นการรวมชุดย่อยของส่วนประกอบใดๆ เช่น Carrot:
การไหลของข้อมูลใน ECS:
พฤติกรรมของระบบคือโมเดล ECS ที่เปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง
ให้เราเข้าใจโดยใช้ตัวอย่างนี้:
พฤติกรรม: “กระต่ายนั่งอยู่บนต้นไม้ล้มลงเนื่องจากแรงโน้มถ่วง”
จะนำพฤติกรรมข้างต้นไปใช้อย่างไร?
คุณสามารถสร้างได้ด้วยค่า z มากกว่า 0 ซึ่งจะลดลงเมื่อเวลาผ่านไปเป็น 0
พฤติกรรม: “สิ่งมีชีวิตอายุ”
มาดูกันว่าคุณสามารถใช้พฤติกรรมนี้ได้อย่างไร?
คุณสามารถทำให้ส่วนประกอบของสิ่งมีชีวิตมีค่าตามอายุซึ่งเพิ่มขึ้นเมื่อเวลาผ่านไป
สรุป:
- Entity-Component–System (ECS) เป็นรูปแบบสถาปัตยกรรม
- เอนทิตีเป็นวัตถุที่แตกต่างซึ่งเป็นตัวแทนของนักแสดงในพื้นที่จำลอง
- ส่วนประกอบเป็นพฤติกรรมเอกพจน์ที่กำหนดให้กับเอนทิตี
- ระบบจะวนซ้ำองค์ประกอบหลายอย่างเพื่อทำหน้าที่ระดับต่ำ เช่น การเรนเดอร์กราฟิก การคำนวณทางฟิสิกส์ หรือการค้นหาเส้นทาง
- องค์ประกอบคือองค์ประกอบที่คุณสามารถแนบส่วนประกอบต่างๆ ได้มากขึ้นเพื่อเพิ่มรูปลักษณ์ พฤติกรรม หรือฟังก์ชันการทำงานเพิ่มเติม
- ด้วยการใช้รูปแบบ ECS คุณสามารถสร้างโค้ดที่สั้นลงและซับซ้อนน้อยลงได้
- ไม่ได้กำหนดไว้อย่างเป็นรูปธรรมเหมือนกับรูปแบบอื่นๆ เช่น MVC
- พฤติกรรมของระบบคือโมเดล ECS ที่เปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง