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