การเปิดตัวครั้งแรกของเอนจิ้นเกมโอเพ่นซอร์สที่มีผู้เล่นหลายคน Ambient

หลังจากหนึ่งปีของการพัฒนา Ambient เอ็นจิ้นเกมโอเพ่นซอร์สใหม่เปิดตัวครั้งแรกก็ถูกนำเสนอ เอ็นจิ้นจัดเตรียมรันไทม์สำหรับการสร้างเกมที่มีผู้เล่นหลายคนและแอปพลิเคชัน 3 มิติที่คอมไพล์เพื่อแสดง WebAssembly และใช้ WebGPU API สำหรับการเรนเดอร์ รหัสนี้เขียนด้วยภาษา Rust และเผยแพร่ภายใต้ใบอนุญาต MIT

เป้าหมายหลักในการพัฒนา Ambient คือการจัดหาเครื่องมือที่ทำให้การพัฒนาเกมแบบผู้เล่นหลายคนง่ายขึ้น และทำให้การสร้างเกมไม่ยากไปกว่าโปรเจ็กต์ผู้เล่นเดี่ยว เอ็นจิ้นนี้มีจุดประสงค์เพื่อสร้างรันไทม์สากลที่รองรับการพัฒนาเกมและแอพพลิเคชั่นในภาษาการเขียนโปรแกรมใด ๆ ที่สามารถคอมไพล์เป็นโค้ดระดับกลางของ WebAssembly ได้ อย่างไรก็ตาม รุ่นแรกรองรับเฉพาะการพัฒนา Rust เท่านั้นในตอนนี้

คุณสมบัติที่สำคัญของเครื่องยนต์ใหม่:

  • การสนับสนุนเครือข่ายที่โปร่งใส เอ็นจิ้นรวมฟังก์ชันไคลเอนต์และเซิร์ฟเวอร์ จัดเตรียมส่วนประกอบที่จำเป็นทั้งหมดสำหรับการสร้างลอจิกไคลเอนต์และเซิร์ฟเวอร์ และซิงโครไนซ์สถานะเซิร์ฟเวอร์ระหว่างไคลเอนต์โดยอัตโนมัติ แบบจำลองข้อมูลทั่วไปถูกใช้ในฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ ซึ่งช่วยให้การถ่ายโอนโค้ดระหว่างแบ็กเอนด์และฟรอนต์เอนด์ง่ายขึ้น
  • การรันแต่ละโมดูลในสภาพแวดล้อมที่แยกจากกัน ทำให้คุณสามารถจำกัดอิทธิพลของโค้ดที่ไม่น่าเชื่อถือได้ การหยุดทำงานของโมดูลจะไม่ทำให้แอปพลิเคชันทั้งหมดเสียหาย
  • สถาปัตยกรรมเชิงข้อมูล จัดทำแบบจำลองข้อมูลตามระบบส่วนประกอบที่สามารถจัดการได้โดยแต่ละโมดูล WASM การใช้รูปแบบการออกแบบ ECS (Entity Component System) การจัดเก็บข้อมูลของส่วนประกอบทั้งหมดในฐานข้อมูลส่วนกลางบนเซิร์ฟเวอร์ ซึ่งสถานะจะถูกจำลองแบบอัตโนมัติไปยังไคลเอนต์ ซึ่งด้านข้างสามารถขยายข้อมูลโดยคำนึงถึงสถานะในเครื่องได้
  • ความสามารถในการสร้างโมดูล Ambient ในภาษาการเขียนโปรแกรมใด ๆ ที่คอมไพล์เป็น WebAssembly (ตอนนี้รองรับเฉพาะ Rust เท่านั้น)
  • การสร้างไฟล์ปฏิบัติการสากลเป็นเอาต์พุตที่สามารถทำงานบน Windows, macOS และ Linux และทำหน้าที่เป็นทั้งไคลเอนต์และเซิร์ฟเวอร์
  • ความสามารถในการกำหนดส่วนประกอบและ "แนวคิด" ของคุณเอง (ชุดของส่วนประกอบ) โปรเจ็กต์ที่ใช้ส่วนประกอบและแนวคิดเดียวกันช่วยให้สามารถพกพาและแชร์ข้อมูลได้ แม้ว่าข้อมูลจะไม่ได้ได้รับการออกแบบมาโดยเฉพาะเพื่อใช้ในโปรเจ็กต์เฉพาะก็ตาม
  • รองรับการรวบรวมทรัพยากรในรูปแบบต่าง ๆ รวมถึง .glb และ .fbx ความเป็นไปได้ของการดาวน์โหลดทรัพยากรแบบสตรีมมิ่งผ่านเครือข่าย - ไคลเอนต์สามารถรับทรัพยากรที่จำเป็นทั้งหมดเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ (คุณสามารถเริ่มเล่นได้โดยไม่ต้องรอให้ทรัพยากรทั้งหมดโหลด) รองรับรูปแบบโมเดล FBX และ glTF รูปแบบเสียงและภาพต่างๆ
  • ระบบการเรนเดอร์ขั้นสูงที่ใช้ GPU เพื่อเพิ่มความเร็วในการเรนเดอร์และรองรับการคลิปฝั่ง GPU และการเปลี่ยนแปลงระดับรายละเอียด ใช้การเรนเดอร์ตามทางกายภาพ (PBR) เป็นค่าเริ่มต้น รองรับภาพเคลื่อนไหวและแผนที่เงาแบบเรียงซ้อน
  • รองรับการจำลองกระบวนการทางกายภาพตามกลไก PhysX
  • ระบบสำหรับสร้างส่วนต่อประสานผู้ใช้ที่คล้ายกับ React
  • ระบบอินพุตแบบรวมที่ไม่ขึ้นอยู่กับแพลตฟอร์มปัจจุบัน
  • ระบบเสียงเชิงพื้นที่พร้อมตัวกรองปลั๊กอิน

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



ที่มา: opennet.ru

เพิ่มความคิดเห็น