Beyond Engine是由成都超越互动网络科技有限公司自主研发的一款跨平台3d游戏引擎。
目前引擎正致力于内部研发游戏项目《星际奇兵》,demo包链接:http://www.gameres.com/msg_298572.html
引擎代码托管:https://github.com/BeyondEngine/BeyondEngine
引擎有如下特点:
1. 支持 所见即所得 和 Play & Edit功能:能在编辑器中实时切换游戏和编辑状态,随时修改,立刻测试,从而提高工作效率。
2. 跨平台支持:目前支持 Windows, IOS, Android, 在未来会支持winphone。所有平台均共享一套架构,维护成本低。
3. 一键编译以及发布:由CMAKE支持了工程跨平台(不需要针对每个平台一个工程了),由android tool chain + visualgdb 支持安卓轻松部署和一键发布,让安卓Native开发更加轻松。
4. 静态数据反射:将C++代码中的变量自动反射到编辑器面板。目前支持的类型有:bool,int, unsigned int, float, double, string,枚举, 指针,std::vector, std::map,color, file path。大大减少了游戏开发流程中策划和程序员的交流成本,让程序员减轻了功能逻辑的开发负担,也调动了策划的参与积极性。
5. 组件编程模式:将函数和逻辑流程图形化,轻松实现或扩展自定义组件。降低了游戏开发和维护的成本,让所有人(即使不懂编程)都可以参与到游戏研发中。
6. 原生的数据驱动架构:引擎将所有的游戏内容组织成数据进行管理,最后游戏内容会被保存为二进制数据文件,游戏任何修改(参数修改,逻辑流程修改等)都可以通过修改该文件实现,彻底摒弃脚本语言,再也不必为热更新方案和配置文件烦恼(甚至可以根据自己的情况对数据整体批量修改,数值策划的好帮手)。
7. 更强大的编辑器和工具:轻松支持编辑器和游戏的多语言切换,支持多种分辨率下的游戏模拟,方便的性能分析工具(内存分析工具研发中),易扩展的UI、动画、地形、特效、AI等等编辑器。
相对于其他引擎的优势:
Cocos2dx:
1. Beyond Engine 有更合理的架构和更好的代码风格。好的架构可以让使用者不易出错,好的代码风格可以让阅读者更快更准的理解作者意图。
2. Beyond Engine 有更强大的开源编辑器和开发工具。所见即所得和数据反射可以更高效的开发, 工具开源意味着使用者可以随心所欲的根据自己的需求进行特殊定制和扩展。
3. Beyond Engine 有更合理的跨平台方式。所有平台均共享同一份架构和CMAKE文件,并且支持一键编译,不用额外安装软件。
4. Beyond Engine 的数据驱动架构避免了脚本语言带来的难以维护和调试复杂。
5. Beyond Engine 有更简洁高效的部署,开发,发布方案。visualgdb可以让Visual studio完全代替eclipse进行安卓开发和部署。
6. Beyond Engine 有更高效的性能、更宽的扩展空间和更强的功能,对自定义扩展支持支持得更为友好。
ps: 特别说明一下,我对cocos2dx引擎持非常肯定的态度。cocos2dx作为世界市场占有率最高的引擎,对推动全球游戏开发起了很大的作用,也让我们国内的开发者有了前进和超越的动力。作者王哲先生是我非常尊敬的、优秀并谦逊的人,通过和他的交流,我认为cocos2dx和Beyond Engine的最大区别在于,cocos2dx针对的游戏研发群体为大学生,新手和创业者;Beyond Engine是针对有一定经验的游戏研发人员。正是由于这样的定位所以会造成一定的差异性,这属于很正常的情况。我客观的进行了一次比较,如有冒犯之处,还请见谅。
Unity3d:
1. Beyond Engine开源。
2. Beyond Engine更轻巧。对于制作大型游戏,unity3d更加成熟。但对于制作中小型游戏,Beyond engine学习成本更低,速度更快。
3. Beyond Engine还在不停的完善和进步当中。对于国内开发者会提供更好的支持。
Unity3d和cocos2dx都是非常了不起的引擎,它们降低了游戏研发的门槛,让非专业人士更多的有机会参与游戏研发。但是从另外一个角度上来说,软件开发没有捷径,想要更快的开发优质精品游戏,开发人员的专业素养始终比用什么引擎更加重要。
特性演示:
1. 数据反射:
step 1. 重载ReflectData函数如下:
step 2. 重新编译代码.
step 3. 打开编辑器:
step 4. 各种数据类型的展示:
基本类型,当int 设置为15的时候,unsigned int才会显示,因为我们在反射参数中用了VisibleWhen关键字
枚举类型,支持自动映射枚举值和字符串。支持显示自定义枚举字符串。
std::vector类型,内部类型支持自动解析并且可以嵌套,比如vector可以嵌套vector或者指针,再被反射出来,现在是简单的反射了一个int。
std::map类型,和std::vector类似。key只支持基本类型。
指针实例化前(点加号实例化对象)
指针实例化后。实例化是自动解析的,会将对应类型的reflectdata执行一次。
抽象指针实例化之前,会弹出对话框列举所有可能被实例化的子类型。
颜色属性指定。属于自定义扩展。
文件属性反射,内部用string来保存。属于自定义扩展。
纹理属性反射,属于自定义扩展。
这个是我们在反射代码最后中做的依赖反射。可以链接其他TestComponent或者它的子类。
以上就是Beyond Engine提供的属性自动反射功能。该功能同时支持自动读入修改后的数据,只需要一份代码就可以维护数据的导入和导出。
2. 组件编程模式:
step 1. 定义自己的组件:
处理想反射给策划使用的信息:
step 2. 重编译代码。
step 3. 打开编辑器。
step 4. 简单的逻辑展示:
策划在编辑器中,将进入的依赖链接到了发起任务和播放音乐两个组件之上。
意味着,进入这个场景的时候,会先发起某个任务(此处为播放相机动画),然后播放某段背景音乐。这个逻辑会最后被序列化为数据解析。当我们需要更新某段逻辑的时候,只需要在编辑器中修改依赖或者参数,再重新导出数据,并热更新到游戏就可以了,无需修改代码。
3. 工具和编辑器:
1. 语言切换
提供了多语言的维护工具,轻松一键切换编辑器 / 游戏的语言。
2. 性能分析器
利用EIP自动根据位置进行层级判定,可以清晰的找到瓶颈位置所在。(数据不好看是debug的原因,drawcall太大是个编辑器bug,接下来就处理,项目drawcall稳定在60以内)
3. 模拟分辨率
引擎使用虚拟的逻辑分辨率,然后用FBO最后重绘了一次,这样方便直观的看到不同分辨率设备上游戏的布局和表现。
4. 实时相机参数
小,但是非常有用的功能
5. 批量修改
由于引擎本身是数据驱动的,所以批量修改非常容易。
6. 各种编辑器
UI模式下,可以轻松修改UI的位置,大小,锚点,旋转等属性。
动画模式下 ,可以用一个flash - like的工具编辑属性,目前写的比较粗糙,只支持线性插值,支持多种播放方式和预览。
地形编辑模式和特效编辑器开发之中。
游戏模式下可以立刻体验游戏,并随时切换回其他编辑模式中。
视频演示(请使用超清画质):
http://v.youku.com/v_show/id_XODEyMDU5MDg0.html
点击打开链接
引擎代码托管:https://github.com/BeyondEngine/BeyondEngine
关于引擎:
1. Beyond Engine的由来是:我们在开始手游研发的时候,发现Cocos2dx工具支持不够强,开发效率偏低,并且Cocostudio不开源导致了我们无法针对自身需求改进工具;UNITY3D不开源,并且对于制作中小型游戏显得比较牛刀,学习成本相对较大。所以我们在以往经验基础上,开发了Beyond Engine。
2. Beyond Engine不是基于cocos2dx修改而来的,但由于考虑到OpenSL对老版本安卓手机的支持并不是很好,为了照顾兼容性,声音部分直接照搬的cocos2dx代码。我们也没有模仿unity的意图,我们希望BeyondEngine能同时吸取cocos2dx和unity3d的优点,并在之间取得一个均衡。
3. 使用的三方库包括:wxwidgets, libpng, libzip, freetype, glfw, libjpeg, libtiff ,beats,开发环境为VS2012。
4. 代码约有10万行(包括编辑器),除了数据反射和组件系统需要做一些概念性解释外,其他部分很容易上手。
5. 目前整体架构基本已经稳定,经过一段时间的使用,没有产生哲学冲突问题,但是部分功能点仍然存在一些可被优化的地方,编辑器的易用性也有很宽的改进空间。
6. 目前引擎的前进方向由项目《星际奇兵》在推动,被证明用于制作2d游戏以及中小型3d游戏时,开发效率会非常高。我们非常欢迎对研发游戏引擎有兴趣的伙伴加入。
7. 我们真诚希望和各位研发同僚有任何形式的合作。我们也希望借这个机会能促进手游研发交流,如果能集众智做好一款国产引擎,我们将非常荣幸。
8. 如果您希望使用Beyond Engine进行研发,我们会免费提供培训,技术支持和维护。
关于我们:
联系方式:
Beyond Engine QQ群: 136750205
百度贴吧:超越引擎