游戲引擎怎么做到跨平臺(tái)部署的
游戲引擎能做到一次開發(fā),多平臺(tái)發(fā)布, 比如?android, iOS, H5, 微信小游戲,facebook等。
這些我們叫做跨平臺(tái)架構(gòu),瞬間感覺很NB和高大上。
今天我來給大家分析分析,我們的游戲引擎是怎么做到跨平臺(tái)的。
?
游戲引擎的架構(gòu)一般會(huì)分為3個(gè)層次:
????(1)平臺(tái)抽象層:
??????????a: 定義幾個(gè)統(tǒng)一的接口,來接入平臺(tái)的消息, 比如?mouse, touch, keyboard 等;
??????????b: 每個(gè)平臺(tái)會(huì)有一個(gè)runtime的環(huán)境,調(diào)用每個(gè)平臺(tái)的API,來將事件和消息接入到統(tǒng)一的接口里面;
??????????c: ?使用opengl, 等跨平臺(tái)圖行庫,來繪制游戲畫面;
??????????d: ?做好封裝,框架能調(diào)用原生態(tài)的函數(shù)或接口;
??????????…
????(2) 框架抽象層:
??????有了平臺(tái)抽象層,對(duì)于平臺(tái)的API,都是上面定義的統(tǒng)一的幾個(gè)入口, 事件入口等,?基于這些入口,再來開發(fā)游戲場(chǎng)景的框架層,使用游戲引擎特有的管理模式,做好幾大模塊和API和接口,游戲引擎的常用的模塊,?比如:網(wǎng)絡(luò)模塊,聲音模塊,渲染模塊,事件模塊,場(chǎng)景管理模塊等。那么業(yè)務(wù)層開發(fā)游戲就直接使用框架層抽象出來的API接口就可以了,不用關(guān)心具體系統(tǒng)的差異。
(3) 業(yè)務(wù)邏輯層:
有了框架抽象層,我們就可以調(diào)用框架的API接口,?來開發(fā)我們的應(yīng)用。
?
游戲引擎的?打包發(fā)布
???每個(gè)平臺(tái)都會(huì)有自己的開發(fā)工具,使用開發(fā)工具,把平臺(tái)抽象層 + 框架抽象層 + 業(yè)務(wù)邏輯層 打包發(fā)布成對(duì)應(yīng)平臺(tái)的應(yīng)用程序。所以使用游戲引擎打包發(fā)布的時(shí)候, 發(fā)布android要用android的開發(fā)工具,發(fā)布蘋果,要用蘋果的開發(fā)工具… …
?
游戲引擎這么NB,能否做跨平臺(tái)的普通APP?最好不要這么做。
????(1)游戲引擎對(duì)普通APP UI操作控件等支持的并不好
????(2) 游戲引擎基于幀頻驅(qū)動(dòng),所以會(huì)比普通APP基于事件驅(qū)動(dòng)要耗電;
????(3) 游戲引擎,每次全部重新繪制,APP是部分區(qū)域繪制;
?
最后配上一個(gè)小圖:
