
已經(jīng)搬家到新博客 jjyy.guru
繼續(xù)和大家跟分享游戲技術(shù)、編程心得、unity3d、cocos2d、emacs、操作系統(tǒng)
手游框架設計從兩個角度出發(fā):
我們?yōu)槭裁葱枰蚣軒椭_發(fā)呢?首先明確一點:技術(shù)是為產(chǎn)品服務的。在我看來,一個好的框架,能夠做到快速開發(fā)、性能優(yōu)秀、節(jié)省資源、容易學習,我們從兩個角度來看。本人畢業(yè)后端游工作,后來在手游公司擔任主程,目前在鵝廠。這里會特意對比演示過去的(在端游)做法與我改進的做法(在手游),寫的都是個人經(jīng)驗之談,如果有什么不對請指正,希望對大家有幫助。其中例子代碼用lua編寫。
1.從用戶的角度:
這里明確以下性能指標中有要求的幾個點:首先是性能,當然是越快越好,那么我們可以通過調(diào)整幀率,節(jié)省手機電量以及消去發(fā)熱量,手游對性能要求是不低的。其次是內(nèi)存,基本要求是不會因為內(nèi)存用量過度導致閃退,市面上各種低端android機型內(nèi)存都不高,那么要求就變得更性能一樣了,也是越省越好。然后是體積,體積對下載量的影響非常大,不過體積不是越小越好,因為有的玩家就是不玩小體積游戲,這個合適范圍就可以了,通常網(wǎng)游限制在100M以內(nèi),單機限制在20M以內(nèi),要求高的可以用切包的方式壓到5M以內(nèi)。然后是流量,玩久了玩家會察覺出來的,最好用自己的協(xié)議通信編碼壓縮。最后,版本更新應該做到增量更新,玩家在面對全量更新的時候是很痛苦的。
以上這些功能,應該在框架這一層就封裝好,對業(yè)務開發(fā)者隱藏起來。
2.從開發(fā)者的角度:
上面說的性能問題,CPU、內(nèi)存、外存、流量等等問題都被框架解決了,開發(fā)者可以只管專注業(yè)務的開發(fā),但也可以插入自己的特殊處理。重點是是迭代速度,盡量讓開發(fā)者專注業(yè)務開發(fā),寫最少的代碼完成最大的工作。我們對開發(fā)流程分開耗費時間的步驟,這里有條粗略的時間線:
策劃案->美術(shù)->界面開發(fā)--+
+->數(shù)據(jù)表-+ |
+->協(xié)議->開發(fā)功能->發(fā)布測試->debug->上線
這里可以看到從想法到實現(xiàn)中間經(jīng)歷了多個步驟,如果我們可以把這些都打平,真正地把哪些不屬于業(yè)務的工作在框架層面就把它解決。那么我們就能獲得最快的開發(fā)速度。比如我經(jīng)常看到有些項目中自己寫一套數(shù)據(jù)表的Parse來解析不同的數(shù)據(jù),這就是典型不屬于業(yè)務的工作,應該自動化把各式各樣的數(shù)據(jù)自動解析。核心思想是貫徹自動化,借助腳本把真理保持在單點,并且自動進行推導到系統(tǒng)每一處,這樣我們每次修改或者開發(fā)功能,只需要改最小的部分就可以了。更重要的是,這樣做能夠讓代碼遵循語意,寫出來的代碼能夠輕松讀懂。下面每個涉及到開發(fā)的都一個個詳細來說。