Ejoy2D是一款圖形引擎、基于C和Lua開發(fā),底層是一個(gè)十分簡(jiǎn)單的核心層,基本上只負(fù)擔(dān)繪制工作,上層語(yǔ)言是Lua。Ejoy2D是國(guó)內(nèi)簡(jiǎn)悅(EJOY)游戲公司所開發(fā)的一款游戲圖形引擎,旨在幫助開發(fā)人員輕松地嵌入到游戲引擎中,方便開發(fā)者定制自己所需的功能。遵循MIT開源許可。
托管地址: https://github.com/cloudwu/ejoy2d
CSDN記者聯(lián)系到了Ejoy2D項(xiàng)目負(fù)責(zé)人云風(fēng)(微博:@簡(jiǎn)悅云風(fēng)),請(qǐng)他來分享Ejoy2D的開發(fā)歷程及他在游戲開發(fā)方面的感悟。
云風(fēng):真名吳云洋,曾任網(wǎng)易杭州研究中心總監(jiān),是網(wǎng)易《大話西游》、《夢(mèng)幻西游》等游戲的主要開發(fā)者,他在2011年9月從網(wǎng)易辭職,并與前網(wǎng)易COO詹鐘暉聯(lián)合創(chuàng)辦了簡(jiǎn)悅(EJOY)游戲公司,任公司CTO。
Ejoy2D項(xiàng)目負(fù)責(zé)人 云風(fēng)
CSDN:Ejoy2D項(xiàng)目創(chuàng)建的初衷是什么?
云風(fēng):Ejoy2D的起源來自于我在2013年初玩到的一款叫Clash of Clans的移動(dòng)平臺(tái)游戲,這讓我發(fā)現(xiàn)在移動(dòng)平臺(tái)上,除了一個(gè)人玩的傳統(tǒng)游戲之外,還可以有非常有趣且結(jié)合移動(dòng)平臺(tái)特性的游戲類型存在。在此之前,我們公司并沒有立刻開始移動(dòng)平臺(tái)開發(fā)計(jì)劃;之后,我們迫切的想進(jìn)入移動(dòng)平臺(tái)游戲的開發(fā)領(lǐng)域。在經(jīng)過公司內(nèi)部的充分討論后,我們打算先模仿Clash of Clans做一款類似的游戲練手。我個(gè)人判斷,把這類游戲做好,客戶端開發(fā)有一定的技術(shù)門檻,不太容易做的好。而我在十多年前就開始做2D游戲引擎,很有自信可以為這款游戲定制一款新的、適應(yīng)移動(dòng)平臺(tái)開發(fā)的2D引擎。這就是Ejoy2D的開始。
在獨(dú)立開發(fā)了大約一個(gè)月后,從我們的PC端游戲組調(diào)出了一名同事,和我一起來制作這款新游戲。邊用邊對(duì)Ejoy2D提出新需求,并完善它。
到了2013年7月左右,我們的外包美術(shù)資源開始進(jìn)入,這時(shí),我們又從外部招聘了一名同事專門為 Ejoy2D定制美術(shù)工具。這樣才慢慢完善了工具鏈,最終把游戲做了出來。這款游戲就是現(xiàn)在的陌陌爭(zhēng)霸。
從一開始,我就希望把引擎開源。因?yàn)橹拔覀冮_源的游戲服務(wù)器框架Skynet反響很好,幫助了不少朋友,同時(shí)開源也提高了代碼質(zhì)量,不少bug都是公司之外的同學(xué)發(fā)現(xiàn)的。這讓我們?cè)谧约荷a(chǎn)環(huán)境碰到bug前就得以修正。
但一開始的Ejoy2D代碼很不穩(wěn)定,且充滿了為了游戲項(xiàng)目能快速完成而臨時(shí)添加的補(bǔ)丁,所以直到我們的陌陌爭(zhēng)霸基本完成。后來,我花了大約2周時(shí)間全部重寫了Ejoy2D的代碼,覺得可以與大家見面了,就公布了代碼,并發(fā)布了開源的消息。接下來,我們內(nèi)部有兩個(gè)新的項(xiàng)目組開始使用新版的Ejoy2D開發(fā)游戲,這兩個(gè)組都有同事開始為Ejoy2D貢獻(xiàn)代碼。
CSDN:與其它游戲引擎相比,比如Cocos2d-x,Ejoy2D有哪些與眾不同的地方?
云風(fēng):Ejoy2D其實(shí)是對(duì)OpenGL ES的一個(gè)淺封裝。我并不想把它發(fā)展成一個(gè)游戲引擎,而只停留在圖形引擎層面上。但和別的引擎相比較大的區(qū)別是,它天生為和Lua結(jié)合而設(shè)計(jì)并實(shí)現(xiàn)的。你幾乎不可能只使用Ejoy2D的C API ,而我鼓勵(lì)你只用Lua API在其上做開發(fā)。只有解決不了的需求時(shí),再編寫一個(gè)供Lua調(diào)用的C模塊。由于這種設(shè)計(jì),在使用方式上,Ejoy2D應(yīng)該會(huì)比其它結(jié)合Lua腳本的引擎更高效些,使用起Lua API也會(huì)更自然。同時(shí),Ejoy2D保留了很小的C內(nèi)核,代碼全部用很簡(jiǎn)短的C實(shí)現(xiàn)。閱讀理解起來會(huì)比較容易,維護(hù)它更輕松一些。
CSDN:您們最近上線了一款手游,叫陌陌爭(zhēng)霸,在這款游戲中,Ejoy2D都做了些什么?
云風(fēng):陌陌爭(zhēng)霸的客戶端全部用Lua開發(fā),客戶端引擎就是用的Ejoy2D 。但Ejoy2D僅僅只是圖形引擎,所以我們還用C編寫了網(wǎng)絡(luò)模塊,資源打包的模塊等等。陌陌爭(zhēng)霸對(duì)AI方面還有比較高的性能需求,我們還用C語(yǔ)言為AI,士兵尋路編寫了一些代碼(在大部分其它類型游戲中,用Lua實(shí)現(xiàn)性能就夠了)。
由于陌陌爭(zhēng)霸開發(fā)的比較早,當(dāng)時(shí)的Ejoy2D沒有現(xiàn)在的版本完善,所以陌陌爭(zhēng)霸組的同事在UI模塊、粒子系統(tǒng)上花了更多精力。這些在現(xiàn)在開源版本的Ejoy2D中,在引擎層面已經(jīng)做了更多的支持。
CSDN:對(duì)于使用Ejoy2D的用戶,您有哪些建議/經(jīng)驗(yàn)告訴他們?
云風(fēng):最好能通過閱讀代碼來理解Ejoy2D的結(jié)構(gòu),明白它能解決什么問題。然后盡量只在Lua層面使用它。把需求提到開源社區(qū),大家來判斷該如何改進(jìn)引擎適應(yīng)不同的需求。對(duì)于很多引擎,通讀所有的代碼是件工作量很大的工作,但是Ejoy2D不同,它很簡(jiǎn)短,花不了太多時(shí)間。
CSDN:從風(fēng)魂引擎到Enjoy2D引擎,您在引擎和游戲開發(fā)方面有什么心得?您的設(shè)計(jì)思想和實(shí)現(xiàn)方式有什么變化?
云風(fēng):風(fēng)魂是我大學(xué)時(shí)代的作品,到現(xiàn)在已經(jīng)有十多年過去了。當(dāng)初我希望盡量幫助游戲開發(fā)人員解決所有問題,而現(xiàn)在不這么想了。我希望使用引擎的開發(fā)人員有足夠的選擇權(quán)。作為一個(gè)圖形引擎,應(yīng)該盡量配合開發(fā)人員的選擇權(quán),盡可能的把引擎做成一個(gè)方便開發(fā)人員組裝的一個(gè)組件。
引擎的實(shí)現(xiàn)應(yīng)該足夠簡(jiǎn)單,并盡可能的隱藏需要引擎解決的技術(shù)細(xì)節(jié)。
CSDN:與開發(fā)PC游戲相比,開發(fā)移動(dòng)游戲的痛點(diǎn)是什么?
云風(fēng):我并沒有正經(jīng)的開發(fā)過一款傳統(tǒng)的PC游戲,而我在意識(shí)里并不把MMO Game和傳統(tǒng)游戲歸為一類的。在移動(dòng)平臺(tái)上開發(fā)游戲讓我找到了一些開發(fā)游戲的樂趣,我覺得比開發(fā)MMO游戲更加有趣。至于痛點(diǎn),我覺得在國(guó)內(nèi)做游戲,或多或少的要迎合渠道的想法很討厭。比如說,我不希望我們的游戲需要玩家有一個(gè)賬號(hào)才能開始游戲,而各種國(guó)內(nèi)的平臺(tái)會(huì)強(qiáng)迫你接入他們的SDK ,需要玩家注冊(cè)賬號(hào),然后才能開始游戲。
CSDN:從事游戲開發(fā)這么多年,您最大的感悟是什么?
云風(fēng):心無旁騖方能獲得無窮樂趣。
CSDN:您一直都在鼓勵(lì)大家開源,并且把自己的一些作品都開源出去了,這樣做給您帶來了哪些好處/樂趣?對(duì)其它開發(fā)者來說,把自己的作品開源出去有哪些好處?
云風(fēng):開源對(duì)自己毫無損失。反而會(huì)督促你把代碼質(zhì)量提高,設(shè)計(jì)時(shí)也需要考慮得更完善。如果有其他人使用,他們往往會(huì)以一種你不曾考慮過的方式來用,從而發(fā)現(xiàn)你發(fā)現(xiàn)不了的漏洞。這些漏洞可能是實(shí)現(xiàn)上的,也可能是設(shè)計(jì)上的。
CSDN:您已經(jīng)這么牛了,在這個(gè)圈子里,有您崇拜的技術(shù)大腕嗎?您認(rèn)為這些人身上都有哪些特點(diǎn)?
云風(fēng):想不到 “崇拜” 這個(gè)詞能用在什么人身上,我不認(rèn)同人和人之間產(chǎn)生 “崇拜”的這種情感。只能說我喜歡怎樣的人吧。我喜歡思維理性,有想像力,有執(zhí)行力,總能自己動(dòng)手去解決問題的人。
以“啟蒙?開源”為主題的2014開源技術(shù)大會(huì)(Open Source Technology Conference 2014)將于3月30日在北京召開,目前公開征集演講議題,歡迎各路開源大俠積極參與。屆時(shí)云風(fēng)將親臨現(xiàn)場(chǎng),分享他多年的開源開發(fā)經(jīng)驗(yàn),歡迎大家來領(lǐng)略大神的風(fēng)采。