Librebox เอนจินเกมโอเพนซอร์สที่เข้ากันได้กับ Roblox
(github.com/librebox-devs)- Librebox คือเอนจินเกม 3D แบบ โอเพนซอร์สที่ใช้ Luau เป็นพื้นฐาน และมุ่งสู่ ความเข้ากันได้ระดับ API กับ Roblox
- นักพัฒนาสามารถมี กรรมสิทธิ์อย่างสมบูรณ์ตั้งแต่ตัวเอนจินไปจนถึงโค้ด ของเกมตนเอง
- ขณะนี้ยังอยู่ใน ขั้นเดโม โดยรองรับการเรนเดอร์ฉากหลัก การเคลื่อนที่ของกล้อง และการสร้างพาร์ตพื้นฐาน
- ในเวอร์ชันถัดไปมีแผนจะเพิ่ม ฟิสิกส์ อินพุตผู้ใช้ การรองรับหลายแพลตฟอร์ม และอื่น ๆ
- ไลเซนส์ คือ MIT ใช้งานได้ฟรีทั้งหมด และสามารถแก้ไขรวมถึงแจกจ่ายต่อได้อย่างอิสระ
แนะนำ Librebox
- Librebox คือเอนจินเกม 3D แบบ โอเพนซอร์ส ที่สร้างขึ้นบนเอนจิน Luau
- เป้าหมายหลักคือการ มอบ API ที่คล้ายกับ Roblox เพื่อรับประกัน ความเข้ากันได้ของโค้ด Luau เดิม ให้ได้มากที่สุด
- นักพัฒนาจะมี กรรมสิทธิ์และอิสระทั้งต่อตัวเอนจินและลอจิกของเกม และสามารถพัฒนาได้โดยไม่ผูกติดกับแพลตฟอร์ม
ทำไมต้อง Librebox?
- ใช้งานเอนจินได้อย่าง อิสระ และมีกรรมสิทธิ์อย่างเต็มที่
- นักพัฒนาที่คุ้นเคยกับ Roblox หรือ Luau เดิมสามารถ นำโค้ดกลับมาใช้ซ้ำได้แทบไม่ต้องแก้ไข
- สามารถสร้างแพลตฟอร์มของตัวเอง และ แจกจ่าย ดัดแปลง ทำเงิน ได้อย่างอิสระ
ตัวอย่างโค้ดหลัก
- ตัวอย่าง: สร้างพาร์ตแล้วหมุนพร้อมเปลี่ยนสี
- ดูไฟล์
examples/part_example.lua - สามารถสร้างพาร์ต กำหนดสี ตำแหน่ง การหมุน และการวนลูปได้ด้วยวิธีที่แทบเหมือนโค้ด Luau/Roblox เดิม
- ดูไฟล์
สรุปฟีเจอร์ที่รองรับ (อิงตามเวอร์ชันเดโม)
- การเรนเดอร์ฉาก แสง เงา และ skybox
- การเรนเดอร์ออบเจ็กต์ภายใน game.Workspace
- ฟังก์ชันการเคลื่อนที่ของกล้องพื้นฐาน
- รองรับ Instance System และชนิดข้อมูลหลัก
CFrame,Vector3,Color3,Randomเป็นต้นInstance.new, การคัดลอก/ทำลายพาร์ต, การควบคุมพร็อพเพอร์ตี
- บริการฝั่ง Client
- Workspace, Camera, Lighting, RunService เป็นต้น
- รองรับอีเวนต์ RenderStep/HeartBeat
- รองรับสคริปต์ Luau และตัวจัดตารางงาน
- coroutine, อีเวนต์, งานอะซิงก์ (
task.spawn,task.waitเป็นต้น)
- coroutine, อีเวนต์, งานอะซิงก์ (
- การจัดการหน้าต่างและการปรับแต่งโหมดเต็มหน้าจอ
แพลตฟอร์มและการขยายต่อ
- ปัจจุบันรองรับ Windows เท่านั้น
- ใช้ raylib จึงพอร์ตไปยัง OS อื่นได้ง่าย
- แจกจ่ายเป็น ไฟล์รันแบบ Standalone
ฟีเจอร์ที่วางแผนจะรองรับในอนาคต
- เอนจินฟิสิกส์และการตรวจจับการชน
- รองรับโมเดล/เมช, รูปภาพ, GUI, วัสดุ
- Onscreen GUI, Replication/Multiplayer (เซิร์ฟเวอร์)
- UserInputService, ContextActionService เป็นต้น
- สร้าง เอดิเตอร์ ของตัวเอง และระบบนิเวศเซิร์ฟเวอร์/ไคลเอนต์แบบครบวงจร
วิสัยทัศน์และอนาคต
- มุ่งสู่การเป็นเอนจินโอเพนซอร์สแบบสแตนด์อโลนเต็มรูปแบบ โดยมีเป้าหมายคล้าย Godot, Unity
- ทำให้การพัฒนาเป็นอิสระอย่างแท้จริงด้วยแนวคิด เกมของฉัน/โค้ดของฉัน โดยไม่ขึ้นกับแพลตฟอร์ม
- มีแผนขยายไปสู่ทุกด้านตั้งแต่ เอดิเตอร์ เซิร์ฟเวอร์ การแจกจ่าย และการสร้างรายได้
- สามารถเขียน API และซอร์สโค้ดใหม่ได้
ไลเซนส์และลิขสิทธิ์
- ไลเซนส์ MIT
- ใช้เฉพาะโอเพนซอร์สไลเซนส์ เช่น Luau (อิงเอนจิน Roblox, MIT), raylib (zlib/libpng)
- เป็น โปรเจกต์อิสระ ที่ไม่เกี่ยวข้องกับแพลตฟอร์มเชิงพาณิชย์หรือบุคคลที่สาม
- ไม่มีซอร์สภายนอก/แอสเซ็ต/โค้ด proprietary รวมอยู่
ติดต่อและชุมชน
- อีเมล: librebox.developers@gmail.com
- ทุกคนสามารถใช้งาน ให้ข้อเสนอแนะ แก้ไข และร่วมพัฒนาได้
เทคโนโลยีสแต็ก
- ประกอบด้วย C++, Lua, Luau, Python, C, CMake เป็นต้น
ความสำคัญและจุดได้เปรียบในการเปรียบเทียบ
- เอนจินโอเพนซอร์สทางเลือกอิสระสำหรับระบบนิเวศ Roblox/Lua
- มอบ อิสระในการสร้าง เป็นเจ้าของ และสร้างรายได้ ซึ่งแพลตฟอร์มเชิงพาณิชย์เดิมมักมีข้อจำกัด
- ด้วย การเปิดซอร์สทั้งหมด ความเข้ากันได้ระดับ API และเดโมบน Windows จึงเหมาะกับการสร้างเกม 3D/คอนเทนต์บนพื้นฐาน Lua
สรุป
- เป็นเอนจินเกมที่มีทั้ง ฟรี โอเพนซอร์ส ความเข้ากันได้ และอิสระ จึงเป็นตัวเลือกที่น่าสนใจสำหรับนักพัฒนาจูเนียร์และการพัฒนาเกมข้ามแพลตฟอร์ม
1 ความคิดเห็น
ความเห็นจาก Hacker News
:WaitForChild()ซึ่งกลับมีคนบอกว่านี่อาจเป็นข้อดีด้วยซ้ำwhile not parentObj:FindFirstChild("childObj name") do wait() endเท่าที่ผมรู้ ฟังก์ชันwait()ใช้เวลาอย่างน้อย 1/30 วินาทีต่อเฟรม ถ้าจะให้แทบทันทีจริง ๆ ก็ต้องรันทุก heartbeatRobloxStudio.exe --place game.rbxlx --script test_runner.lua --keep-openแล้วให้มันพ่น console output ต่อเนื่องได้ก็คงสะดวกมากloadPlaceFileเข้าไปใน repository ของ Lemur ผมก็ชะงักเพราะไม่แน่ใจว่าควรใส่ไว้ที่นั่นหรือเปล่า แล้วก็มารู้จัก Librebox ในจังหวะนั้น ตอนนี้เลยเริ่มคาดหวังว่าจะใช้สิ่งนี้ทำ local CI test สำหรับแอป react-lua ด้วย Jest ได้-iหรือโหมด interactive