當前位置:編程學習大全網 - 編程語言 - 為什麽我要自己寫html5遊戲引擎

為什麽我要自己寫html5遊戲引擎

用html5寫遊戲,會面臨壹系列的問題,情況很復雜。而當下熱衷於html5開發遊戲的,有兩撥不同的人——熟悉dom、css、js、web2.0的傳統前端開發工程師和熟悉canvas的傳統遊戲開發工程師。這兩撥人的背景截然不同,所以在很多問題的處理上有出入。

1)js語法簡單,很多高級壹點的語法特性都沒有,不適合直接拿來開發大型項目。

js核心語法只經過壹個星期就設計完成了,很倉促。它在設計之初主要是為是給頁面寫壹點“表單驗證”之類的小功能,它是基於對象的語言,但extend、mix-in、import等語法都沒有提供,因為打從壹開始js之父從沒想過有壹天js會變得如此重要。在web2.0時代,有大量的DHTML需求,所以大型壹些的js框架都會著手解決“大型項目可維護性”方面的問題,擴展js語言,通過封裝api模擬高級語法特性,例如YUI3和Dojo。

extend和mix-in之類的還好解決壹點,特別值得壹提的是js模塊化問題。js原生不提供import和包的機制,所以聰明的工程師自己封裝了相關的api,更在近兩年形成了commonJS規範。模塊化、動態加載、依賴處理非常非常重要,不解決這個問題,很難優雅地處理大型項目。

html5遊戲,首先它得是個js大型項目。web site在這些年積累了很多這方面的經驗,html5遊戲開發者應該吸收這些經驗,不要寫出web2.0以前的js代碼水平。

2)html5是web前端技術,有web方面的特殊性。

比如說跨域問題、http優化、BOM相關接口。這些都是傳統前端開發方面的知識,我敢說壹大半的遊戲開發工程師們不清楚JSONP是幹嘛的。比如原生ajax和cookie的接口非常難用,總是要封裝壹下才好用的,包括1)裏所講的語法擴展,都是web開發相關的,但其實和遊戲又沒有直接的關系。html5遊戲引擎是不方便處理這些的。這些內容可以交給傳統前端的框架來做。

3)canvas和DOM,不同的GUI套路。

這是個巨大的鴻溝。前端們非常熟悉的三大基本元素html + css + js,傳統遊戲開發工程師們很陌生。特別是神器css,傳統遊戲工程師們很排斥,他們知道這個東西很好,卻提不起興趣學習,他們害怕瀏覽器兼容問題。他們號稱開發html5遊戲,其實只敢用canvas相關的子集。現在絕大多數的html5遊戲引擎都是基於canvas的,純canvas。

其實css是個巨大的神器,在GUI編程方面性價比奇高。css的api設計得如此簡單卻出奇強大!在桌面端已經有很多軟件使用c++做個框,框裏套個html,所有的GUI全是用html+css+js來實現的。在移動終端phonegap也是同樣的思路。

純canvas雖然省卻了css、dom、瀏覽器兼容的學習成本,卻主動放棄了css和dom引擎提供的大量幫助。撿芝麻丟西瓜。

4)大量不同終端和平臺的適配。

html5適用的終端包括pc、移動設備甚至平板電視。操作系統有windows、ios、android、win8等主流平臺,還有blackberry、web os、chrome os、ubuntu touch、firefox os,甚至wii u等非主流平臺。不同的操作系統、不同分辨率、不同物理尺寸。遊戲的尺寸該如何取舍?是放任縮放還是做響應式設計?瀏覽器能否全屏?瀏覽器狀態欄有多高?是否是從主屏打開的(ios設備)?是橫屏還是豎屏?

除了上面的這些操作系統,還有人人網、微博、微信這樣的平臺,也是html5遊戲可以發布的地方,這些地方對接入的遊戲尺寸又有哪些要求和限制?我能改頁面的viewport嗎?還是要將遊戲的根結點進行scale縮放?

除了遊戲的尺寸要適配,還有輸入設備也要適配。pc的輸入設備是鍵盤和鼠標,移動設備的輸入設備是觸摸屏和重力感應。什麽設備使用虛擬十字鍵,什麽設備鍵盤操作就行了,我們還需要對當前的終端做嗅探。

適配問題是個巨大的問題,終端多也就罷了,還很可能在不停地變化,系統升個級或者出來個新設備什麽的,適配方面的工作還得持續更新。這些,遊戲引擎們考慮過嗎?考慮得完善,能應付我的定制需要嗎?引擎更新得頻繁和及時嗎?

  • 上一篇:江門省石學校
  • 下一篇:x86與ARM架構下的編譯器的區別
  • copyright 2024編程學習大全網