一个轻量级的跨平台模块化游戏引擎

今天给大家分享的这个开源项目是一个轻量级的跨平台模块化游戏引擎,是来自于读者的投稿,在这里也呼吁大家,如果你有好的开源项目,也可以向我们投稿。

这个开源项目是:EtherEngine,一个更专业的游戏引擎。

目前这个游戏引擎的基本介绍和功能特点如下:

  • 引擎语言:

    • 引擎本体:C / C++

    • 开发脚本:Lua

  • 支持功能和模块:

    • Algorithm:常用算法

    • Graphic:图形和渲染

    • Interactivity:用户交互事件

    • Media:音乐媒体播控

    • Network:网络支持

    • OS:操作系统相关

    • String:字符串扩展

    • Time:时间模块

    • Window:窗口操作

  • 优势:

    • 跨平台(非Windows平台OS模块部分API仍在开发)

    • 轻量级,使用静态库编译的引擎只有 5MB 左右

    • 引擎使用底层图形接口封装,运行效率极高

    • 使用Lua脚本开发,开发效率极高

    • 功能全面,文档详细,上手简单(麻雀虽小,五脏俱全),用以上手游戏开发的学习或项目实战场景使用均可

  • 使用到的技术:

    • SDL及其全家桶(SDL2,SDL_image,SDL_ttf,SDL_mixer,SDL_gfx)

    • Lua

    • cpp-httplib

是不是感觉还不错呢?如果你对这个游戏引擎,感兴趣的话,可以关注一下。

开源项目地址:https://github.com/VoidmatrixHeathcliff/EtherEngine

开源项目作者:VoidmatrixHeathcliff

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着html5 相关技术的兴起,因其平台的特性,和标准的日益完善。html5相关技术越来越多的被应用到前沿app的开发中,尤其是html5 小游戏的开发。 Laro 是一个基于html5 canvas的用于平面2d或者2.5d游戏制作的轻量级游戏引擎。 因为当前canvas作为画布形态的dom元素,并提供了大量关于矢量图以及texture绘制的api,但是由于其本身提供的api太过于底层,在类似游戏这一类交互性,逻辑性较为复杂的app时。需要开发者编写大量底层的api来实现本身的业务逻辑。 Laro出现的目的是为了简使用canvas制作游戏时的api调用。同时提供了一套“有限状态机”的开发模式,这种模式在对于游戏这一类的典型的“事件驱动”的模型的开发上。能够很好的做到模块间的低耦合,利于开发者梳理整个开发逻辑。 Laro 游戏引擎目前已经完成了游戏开发中所需要的模块和api的封装,并有一些实际的Demo和TestCase供使用者参考。而且随后会结合这个引擎整理出一套用于html5 小游戏开发的可视编辑工具。 旨在帮助开发者更快更容易的搭建一款小游戏为目的。 目前已经开源到github (https://github.com/AlloyTeam/Laro) 我们团队希望通过Laro的不断完善,能够帮助更多的html5 小游戏开发者以更快的速度,更优的质量完成 html5小游戏 产业的开发。 Version Log 0.1 - 基础模块搭建 0.2 - 融入jcanvas,配合鼠标事件处理 0.3 - 加强状态机模块 查看以下demo最好使用chrome  : ) http://hongru.github.com/proj/laro/examples/emberwind/ http://hongru.github.com/proj/laro/examples/typeshot/index.html http://hongru.github.com/proj/laro/examples/jxhome/ http://heroes.github.com/world-of-heroes/development/
### 回答1: 好的,以下是一个简单的 Urho3D 编辑器结合 Lua 的代码示例,这个示例会创建一个场景并添加一个盒子模型,然后在盒子上添加一个文字标签。在这个示例中,我们会使用 Urho3D 的 Lua API 来操作场景和模型,以及添加 Lua 脚本来控制模型的行为: ``` -- 创建 Urho3D 引擎 local engine = Urho3D.CreateContext() -- 创建场景 local scene = Urho3D.Scene() -- 创建相机 local cameraNode = scene:CreateChild("Camera") local camera = cameraNode:CreateComponent("Camera") -- 设置相机位置 cameraNode:SetPosition(Urho3D.Vector3(0, 0, -10)) -- 创建盒子模型 local boxNode = scene:CreateChild("Box") local boxModel = boxNode:CreateComponent("StaticModel") -- 设置盒子模型的外观 boxModel:SetModel(engine:GetResourceCache():GetResource("Models/Box.mdl")) -- 创建文字标签 local textNode = scene:CreateChild("Text") local text = textNode:CreateComponent("Text3D") -- 设置文字内容和位置 text:SetText("Hello, Urho3D!") textNode:SetPosition(Urho3D.Vector3(0, 1, 0)) -- 添加 Lua 脚本到盒子节点 local script = boxNode:CreateScriptObject("LuaScript") -- 在 Lua 脚本中定义函数,用于控制盒子模型的旋转 function script:Start() self.angle = 0 end function script:Update(timeStep) self.angle = self.angle + timeStep * 50 self.node:SetRotation(Urho3D.Quaternion(self.angle, Urho3D.Vector3(1, 0, 0))) end ``` 这个示例中,我们首先创建了一个 Urho3D 引擎,然后创建了一个场景和一个相机。接下来,我们创建了一个盒子模型和一个文字标签,并将它们添加到场景中。 最后,我们在盒子节点上添加了一个 Lua 脚本。在这个脚本中,我们定义了一个 `Start` 函数,在这个函数中初始了一个 `angle` 变量。然后,我们定义了一个 `Update` 函数,在这个函数中通过增加 `angle` 的值来实现盒子模型的旋转,并将旋转后的角度应用到盒子节点上。 注意,以上代码示例中的资源路径和模型名称可能需要根据实际情况进行调整。 ### 回答2: Urho3D编辑器是一个用于创建游戏和应用的开源平台引擎,而Lua是一种轻量级的脚本语言。结合Urho3D编辑器和Lua可以轻松创建游戏逻辑和功能。 下面是一个简单的代码示例: 1. 首先在Urho3D编辑器中创建一个新的场景,并添加一个空节点(Node)作为根节点。 2. 在根节点上添加一个可见的3D对象,例如一个盒子或球体。 3. 在Urho3D编辑器中打开Lua脚本编辑器,在编辑器中创建一个新的Lua脚本。 4. 在Lua脚本中,导入必要的Urho3D模块: ```lua require "Urho3D/Core/Object" require "Urho3D/Core/Context" require "Urho3D/Scene/Scene" require "Urho3D/Scene/Node" require "Urho3D/Graphics/StaticModel" ``` 5. 创建一个Lua类并继承Urho3D中的Object类,该类将作为游戏逻辑的入口点: ```lua SimpleGame = class(Object) function SimpleGame:Start() -- 获取场景和根节点 local scene = self.context_:GetSubsystem("Scene") local rootNode = scene:GetChild("Root") -- 添加一个盒子作为子节点 local boxNode = rootNode:CreateChild("Box") local boxModel = boxNode:CreateComponent("StaticModel") boxModel:SetModel(cache:GetResource("Model", "Models/Box.mdl")) -- 将盒子移动到一定的位置 boxNode:SetPosition(Vector3(0, 1, 0)) end ``` 6. 最后,在Lua脚本中创建一个全局的SimpleGame对象,并在脚本启动时调用Start方法: ```lua -- 创建一个全局SimpleGame对象 simpleGame = SimpleGame() -- 在脚本启动时调用Start方法 function Start() simpleGame:Start() end ``` 7. 在Urho3D编辑器中将创建的Lua脚本添加到场景中,并在场景开始时调用Start方法。 这个示例将在Urho3D引擎中创建一个简单的场景,并在场景中添加一个盒子。当游戏开始时,Lua脚本会初始场景,并将盒子移动到指定的位置。 ### 回答3: 使用Urho3D编辑器结合Lua,我们可以写一个简单的代码示例来展示如何创建一个窗口,并在窗口中显示一段文字。 首先,需要在Urho3D编辑器中创建一个新的场景。然后,右键点击场景,在弹出菜单中选择“新建节点”并选择“UI”节点类型。这将在场景中添加一个UI节点。 接下来,在编辑器界面的右侧属性面板中,找到“UI元素类型”属性,将其设置为“窗口”。然后,为窗口设置适当的位置和大小。 在Lua脚本中,我们首先需要导入Urho3D的Lua模块,并声明一个全局变量来保存窗口对象: ```lua require "LuaScripts/Utilities/LuaBindings" local window ``` 然后,在Lua脚本中编写一个函数来创建一个窗口并向其添加文本: ```lua function Start() -- 创建窗口 window = CreateWindow() -- 添加文本 AddText(window, "Hello, World!") end ``` 我们还需要在脚本中定义CreateWindow和AddText函数: ```lua function CreateWindow() -- 获取UI根节点 local ui = GetUI() -- 创建窗口 local window = ui:CreateWidget("Window", IntRect(0, 0, 200, 100), UI_ALIGN_CENTER, "window") -- 将窗口添加到UI根节点 ui.root:AddChild(window) return window end function AddText(window, text) -- 创建文本元素 local textElement = window:CreateChild("Text") -- 设置文本内容 textElement.text = text -- 设置文本样式 textElement:SetFont(cache:GetResource("Font", "Fonts/Anonymous Pro.ttf"), 20) textElement:SetAlignment(HA_CENTER, VA_CENTER) end ``` 最后,在主脚本中的Start函数中调用我们编写的函数来创建窗口和文本: ```lua SubscribeToEvent("Update", "Start") function Start(eventType, eventData) if window == nil then -- 创建窗口和文本 CreateWindow() AddText(window, "Hello, World!") -- 删除Update事件订阅 UnsubscribeFromEvent("Update") end end ``` 这样,我们就可以在窗口中显示一段文字并运行该脚本了。注意,这只是一个简单的示例,实际应用中可能需要更多的代码来处理窗口的交互和其他功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值