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