文章摘要
Librebox是一款开源的、兼容Roblox的游戏引擎,支持运行Luau代码,旨在复制Roblox的公共API,使开发者能够在Librebox上运行Roblox代码。它赋予开发者对游戏代码和引擎的完全控制权,提供熟悉的界面,帮助开发者创建并完全拥有自己的沉浸式游戏平台。目前,Librebox处于演示阶段,支持基本场景渲染、光照、阴影、天空盒等有限功能。
文章总结
Librebox引擎(演示版)
开源且兼容Roblox的游戏引擎
注意:Librebox与Roblox或Roblox公司无任何关联。
什么是Librebox?
Librebox是一个开源的游戏引擎,支持运行Luau脚本。它的目标是复制Roblox的公共API,使得Roblox代码能够在Librebox引擎上运行。
为什么选择Librebox?
Librebox赋予开发者对游戏的完全控制权——从代码到引擎。通过熟悉的界面,开发者可以创建自己的沉浸式游戏,并完全拥有自己的平台。
示例
在Workspace中创建一个部件,同时旋转并循环改变其颜色。
```lua -- examples/part_example.lua local part = Instance.new("Part") -- 创建一个部件 part.Anchored = true -- 兼容性设置 part.Color = Color3.new(1, 0, 0) -- 将部件设为红色 part.Position = Vector3.new(0, 2.5, 0) -- 设置位置 part.Parent = workspace -- 放入Workspace
local rs = game:GetService("RunService") local t = 0 rs.RenderStepped:Connect(function(dt) t += dt part.CFrame = CFrame.new(part.Position) * CFrame.Angles(0, t, 0) -- 使用CFrame原地旋转 part.Color = Color3.fromHSV((t * 0.2 % 1), 1, 1) -- 设置部件颜色 end) ```
运行命令:
bash
./LibreboxPlayer.exe examples/part_example.lua
兼容性
Librebox目前处于演示阶段,仅实现了Roblox API的有限子集,但已支持以下功能:
- 基本场景渲染
- 光照、阴影、环境、天空盒
- 在game.Workspace中渲染部件
- 基本相机移动
- 标准数据类型:CFrame、Vector3、Color3、Random
- 实例系统:几乎完整的实例API(缺少:WaitForChild())、
.Parent、:Destroy()、:Clone() - 部件:实现BasePart、Instance.new("Part")、Part.Color、Part.Transparency、Part.Size、Part.Position、Part.CFrame
- 客户端服务:Workspace、workspace.CurrentCamera、RunService、Lighting、game:GetService()
- Luau脚本支持:强大的任务调度器、RBXScriptSignal、事件绑定、协程、脚本、LocalScripts、task.spawn、task.wait、task.delay
- 窗口处理和全屏优化
注意:Librebox不使用任何Roblox源代码或资源,仅复制了运行游戏的环境。未来将提供开源资源。
下载
在此处下载发布版本。
未来计划
当前版本仅为渲染演示,Librebox具有可扩展性,易于添加新服务和功能。在下一版本中,将加入UserInputService和StarterPlayer,使Librebox成为真正的交互式引擎。
平台支持
Librebox目前支持Windows,但可轻松移植到其他平台。唯一的依赖是“raylib”,而raylib本身已是跨平台的。
未来支持
未来版本将增加以下功能:
- 物理:碰撞事件
- 网格支持
- game.Players、Player
- UserInputService、ContextActionService
- 图像渲染、贴花
- 屏幕GUI
- 材质、更强的渲染
- 复制支持(和服务器)
Librebox的未来
未来版本可能实现以下功能:
- 在Librebox编辑器中创建游戏(资源和脚本)
- 部署Librebox服务器(类似Minecraft服务器)
- 实现自己的盈利模式
- 获得完整的用户体验和专业游戏开发
- 无平台依赖
- 使用自己的API或重写源代码
使用和文档
将尽快添加。构建依赖项使用“builddependencies.bat”脚本,构建引擎使用“buildengine.bat”。对于.exe文件,可以指定路径作为第一个参数(仅限Lua脚本),或使用--path(脚本或文件夹)。LibreboxPlayer.exe包含三个参数:--no-place、--target-fps和--path。
许可证
本项目使用:
- Luau,MIT许可证。
- raylib,zlib/libpng许可证。
法律声明
Librebox是一个独立的开源项目,与Roblox公司无任何关联。“Roblox”和“Roblox Corporation”是Roblox公司的商标。对Roblox公共API和兼容性的引用仅用于互操作性。Librebox不使用任何Roblox源代码、资源或其他专有材料。
联系
如有问题或请求,请发送邮件至librebox.developers@gmail.com。
评论总结
评论内容主要围绕Librebox项目的意义、技术实现、潜在用途以及开发者决策等方面展开,观点多样且平衡。
对Librebox的积极评价
- 评论4认为Librebox是保存Roblox游戏的有用工具,避免了类似Flash游戏的遗憾。
引用:
"This is fantastic! It is a very useful tool for preservation of games on Roblox."
“这是一个很棒的工具,对于保存Roblox上的游戏非常有用。” - 评论3希望Librebox能用于开发Linux原生客户端,并避免法律问题。
引用:
"A potential use-case might be to create a Linux-native client."
“一个潜在用途可能是开发Linux原生客户端。”
- 评论4认为Librebox是保存Roblox游戏的有用工具,避免了类似Flash游戏的遗憾。
对Librebox的质疑与批评
- 评论2认为Robux的使用限制是主要问题,引擎本身并无特别之处。
引用:
"The whole problem is Robux isn’t it? It’s not like the engine is anything special."
“问题在于Robux,不是吗?引擎本身并没有什么特别之处。” - 评论6指出项目名称与许可证不符,建议更名为“OpenBox”。
引用:
"You should rename the project to OpenBox if you are not using a copyleft license."
“如果你没有使用copyleft许可证,应该将项目更名为OpenBox。”
- 评论2认为Robux的使用限制是主要问题,引擎本身并无特别之处。
对技术实现的讨论
- 评论7强调Librebox目前只是演示版,许多API功能尚未实现。
引用:
"There’s a looooong list of API features that aren’t implemented."
“有许多API功能尚未实现。” - 评论8探讨了Librebox是否可以提高本地测试能力,并提到相关技术挑战。
引用:
"Does this increase local testability and thus QA-ability for roblox devs?"
“这是否能提高Roblox开发者的本地测试能力,从而提升QA能力?”
- 评论7强调Librebox目前只是演示版,许多API功能尚未实现。
对开发者决策的疑问
- 评论5质疑开发者为何选择开发Librebox,而不是专注于特定游戏或现有项目。
引用:
"How do the developers of Librebox decide to work on this instead of remaking one specific, good game on Roblox?"
“Librebox的开发者为何选择开发这个项目,而不是重制Roblox上的某个特定游戏?”
- 评论5质疑开发者为何选择开发Librebox,而不是专注于特定游戏或现有项目。
总结:评论中对Librebox的评价褒贬不一,支持者认为其在游戏保存和跨平台开发方面具有潜力,而批评者则指出其技术限制和决策合理性存疑。