Ejoy2D是一款图形引擎、基于C和Lua开发,底层是一个十分简单的核心层,基本上只负担绘制工作,上层语言是Lua。Ejoy2D是国内简悦(EJOY)游戏公司所开发的一款游戏图形引擎,旨在帮助开发人员轻松地嵌入到游戏引擎中,方便开发者定制自己所需的功能。遵循MIT开源许可。 托管地址: https://github.com/cloudwu/ejoy2d CSDN记者联系到了Ejoy2D项目负责人云风(微博:@简悦云风),请他来分享Ejoy2D的开发历程及他在游戏开发方面的感悟。 云风:真名吴云洋,曾任网易杭州研究中心总监,是网易《大话西游》、《梦幻西游》等游戏的主要开发者,他在2011年9月从网易辞职,并与前网易COO詹钟晖联合创办了简悦(EJOY)游戏公司,任公司CTO。 Ejoy2D项目负责人 云风 CSDN:Ejoy2D项目创建的初衷是什么? 云风:Ejoy2D的起源来自于我在2013年初玩到的一款叫Clash of Clans的移动平台游戏,这让我发现在移动平台上,除了一个人玩的传统游戏之外,还可以有非常有趣且结合移动平台特性的游戏类型存在。在此之前,我们公司并没有立刻开始移动平台开发计划;之后,我们迫切的想进入移动平台游戏的开发领域。在经过公司内部的充分讨论后,我们打算先模仿Clash of Clans做一款类似的游戏练手。我个人判断,把这类游戏做好,客户端开发有一定的技术门槛,不太容易做的好。而我在十多年前就开始做2D游戏引擎,很有自信可以为这款游戏定制一款新的、适应移动平台开发的2D引擎。这就是Ejoy2D的开始。 在独立开发了大约一个月后,从我们的PC端游戏组调出了一名同事,和我一起来制作这款新游戏。边用边对Ejoy2D提出新需求,并完善它。 到了2013年7月左右,我们的外包美术资源开始进入,这时,我们又从外部招聘了一名同事专门为 Ejoy2D定制美术工具。这样才慢慢完善了工具链,最终把游戏做了出来。这款游戏就是现在的陌陌争霸。 从一开始,我就希望把引擎开源。因为之前我们开源的游戏服务器框架Skynet反响很好,帮助了不少朋友,同时开源也提高了代码质量,不少bug都是公司之外的同学发现的。这让我们在自己生产环境碰到bug前就得以修正。 但一开始的Ejoy2D代码很不稳定,且充满了为了游戏项目能快速完成而临时添加的补丁,所以直到我们的陌陌争霸基本完成。后来,我花了大约2周时间全部重写了Ejoy2D的代码,觉得可以与大家见面了,就公布了代码,并发布了开源的消息。接下来,我们内部有两个新的项目组开始使用新版的Ejoy2D开发游戏,这两个组都有同事开始为Ejoy2D贡献代码。 CSDN:与其它游戏引擎相比,比如Cocos2d-x,Ejoy2D有哪些与众不同的地方? 云风:Ejoy2D其实是对OpenGL ES的一个浅封装。我并不想把它发展成一个游戏引擎,而只停留在图形引擎层面上。但和别的引擎相比较大的区别是,它天生为和Lua结合而设计并实现的。你几乎不可能只使用Ejoy2D的C API ,而我鼓励你只用Lua API在其上做开发。只有解决不了的需求时,再编写一个供Lua调用的C模块。由于这种设计,在使用方式上,Ejoy2D应该会比其它结合Lua脚本的引擎更高效些,使用起Lua API也会更自然。同时,Ejoy2D保留了很小的C内核,代码全部用很简短的C实现。阅读理解起来会比较容易,维护它更轻松一些。 CSDN:您们最近上线了一款手游,叫陌陌争霸,在这款游戏中,Ejoy2D都做了些什么? 云风:陌陌争霸的客户端全部用Lua开发,客户端引擎就是用的Ejoy2D 。但Ejoy2D仅仅只是图形引擎,所以我们还用C编写了网络模块,资源打包的模块等等。陌陌争霸对AI方面还有比较高的性能需求,我们还用C语言为AI,士兵寻路编写了一些代码(在大部分其它类型游戏中,用Lua实现性能就够了)。 由于陌陌争霸开发的比较早,当时的Ejoy2D没有现在的版本完善,所以陌陌争霸组的同事在UI模块、粒子系统上花了更多精力。这些在现在开源版本的Ejoy2D中,在引擎层面已经做了更多的支持。 CSDN:对于使用Ejoy2D的用户,您有哪些建议/经验告诉他们? 云风:最好能通过阅读代码来理解Ejoy2D的结构,明白它能解决什么问题。然后尽量只在Lua层面使用它。把需求提到开源社区,大家来判断该如何改进引擎适应不同的需求。对于很多引擎,通读所有的代码是件工作量很大的工作,但是Ejoy2D不同,它很简短,花不了太多时间。 |