1.熱更新
邏輯代碼熱更新, 是客戶端框架的一個重要功能, 主要解決的是上線期的問題. 這個特性能及時的修復(fù)bug, 增加功能, 減少用戶在游戲版本升級時候的流失(因為只需要小更).
不帶熱更新的框架, 通常意味著在這套框架上做的游戲沒有什么上線經(jīng)驗.
目前, 較為常見的熱更新方案是兩種
- lua代碼熱更新(最多)
- c#代碼熱更新(要注意iOS也要熱更)
2.實時戰(zhàn)斗
這里有三個要求:
- 實時性: 有接入過狀態(tài)同步的戰(zhàn)斗, 或者幀同步的戰(zhàn)斗
- 戰(zhàn)斗邏輯大部分在lua層實現(xiàn), 可以熱更
- 性能優(yōu)化
實時性, 這里體現(xiàn)了客戶端網(wǎng)絡(luò)層代碼和預(yù)表現(xiàn)層的實力, 能做到實時戰(zhàn)斗的客戶端不多, 幀同步的更少了.
戰(zhàn)斗在lua, 則體現(xiàn)了對lua層與c#層之間的性能瓶頸的理解, 還有對戰(zhàn)斗底層封裝的完備性.
性能優(yōu)化, 游戲中最耗資源的地方通常是多人同屏戰(zhàn)斗, 對戰(zhàn)斗的性能優(yōu)化, 涉及了網(wǎng)絡(luò)層, 競技計算層和預(yù)表現(xiàn)層, 還有對美術(shù)規(guī)范(資源)的要求.
3.工具集
工具分成兩大類,
- (1) 度量工具, 了解指標(biāo)
- (2) 自研工具, 提高生產(chǎn)力
度量工具, 主要是unity自帶的工具: Profiler, Frame Debugger, Occlusion Culling, Navigation, 還有就是Adreno Profiler(高通)等. 用度量工具的人, 基本就是程序員或者TA了, 他要能夠熟練使用度量工具來定位問題, 找到性能瓶頸. (然后才會有解決性能的方案)
上海侑虎就非常擅長利用度量工具得出性能指標(biāo), 進而指導(dǎo)他的客戶(游戲公司)調(diào)優(yōu)游戲性能.
自研工具, 主要是集成在unity3d里, 給項目組成員使用, 也就是對游戲制作的整個pipeline非常了解, 把其中的每個節(jié)點可以自動化的部分, 制作成工具提高生產(chǎn)力.還有一些自研工具, 是集成在美術(shù)資源開發(fā)工具(3dmax)中. 除了提高生產(chǎn)力, 還能規(guī)范輸出.
做自研工具的人, 最難的是他會了解所有相關(guān)崗位的業(yè)務(wù)過程. 并能制作工具來代替一部分的人工, 規(guī)范輸出, 不給人工"犯錯的機會". 舉例: 戰(zhàn)斗編輯器, 就是一個很核心的工具, 一定是做核心戰(zhàn)斗的程序員寫的. 讓策劃可以配英雄, 配技能, 配數(shù)值, 讓美術(shù)調(diào)表現(xiàn), 調(diào)性能.
4.美術(shù)規(guī)范和圖形學(xué)(shader)
從2d到3d, 對于美術(shù)規(guī)范的要求大大提高.
首先是能提出并維護好美術(shù)規(guī)范,
- 同屏面數(shù)
- 材質(zhì)球
- 骨骼
- 特效粒子
- 貼圖規(guī)格
- UI圖集打包
- ...
接著是用什么機制(工具)來檢查和保證美術(shù)規(guī)范達標(biāo), 從而在性能和表現(xiàn)中找到最優(yōu)解.
圖形學(xué)部分, 我想把shader先歸類在這里. 因為美術(shù)規(guī)范和shader通常是TA的工作內(nèi)容, 他們熟練使用度量工具找到性能瓶頸, 然后利用圖形學(xué)知識, 找到高性價比的方式(比如shader)來實現(xiàn)表現(xiàn).
5.工程管理
因為商業(yè)化項目都有保密的需求, 所以如何對工程進行加密, 混淆, 避免代碼流出, 也是一個強需求. 成熟的團隊里, 會有美術(shù)工程, 讓美術(shù)人員在美術(shù)工程制作預(yù)制件, 再用工具導(dǎo)入到主工程中, 減少直接接觸代碼的人數(shù).
多版本同時制作, 怎么同步代碼和資源, 還有考慮到更新, 對工程管理的要求也很高.
想要解決問題, 要用好gitlab, 以及自動構(gòu)建.
6.unity版本號
unity的自身bug是很多的, 但這幾年快速發(fā)展, bug修復(fù)的也很快, 所以適當(dāng)?shù)母M官方版本是必要的. 這代表著框架維護人員的技術(shù)實力和追求. 而能夠知道每個版本之間的差異和升級框架所花費的代價, 就是對積累最真實的檢驗.
每次unity版本升級, 除了unity代碼適配, 還要注意整個工具鏈的適配, 特別是使用了第三方工具的情況.
7.平臺適配和sdk接入
需要掌握主流手機平臺的特性與語言
- 安卓
- iOS
不同平臺的語言特性各不相同, 至少要再掌握兩種語言. 時不時的, 各平臺還會有升級適配的需求, 比如新的iOS發(fā)布, https, 64位應(yīng)用等等. sdk接入, 需要耐心.
總結(jié)
一個unity3d的框架, 所涉及的知識點是又寬又深. 所以能維護好這樣框架的, 一個人是不夠的, 需要的是一個團隊. 能擁有這樣的框架, 一定是一個團隊多年的積累和驗證.
人才, 是手游公司最核心的資產(chǎn).?