收全流程指南:從標(biāo)準(zhǔn)制定到終驗(yàn)避坑)
做游戲外包最怕的不是開(kāi)發(fā)延期而是交付那天你打開(kāi)包發(fā)現(xiàn)做出來(lái)的東西跟你腦子里想的那款游戲完全不是一回事。我做過(guò)發(fā)行、也接過(guò)外包兩邊角色都干過(guò)對(duì)“驗(yàn)收”這兩個(gè)字的體會(huì)特別深。很多人把驗(yàn)收當(dāng)成走流程覺(jué)得“東西交了、我看看沒(méi)問(wèn)題打款就完了”結(jié)果項(xiàng)目上線(xiàn)才半個(gè)月各種隱藏問(wèn)題集中爆炸再回去找外包方人家一句“當(dāng)時(shí)驗(yàn)收你過(guò)了啊”就把你堵死了。這篇就圍繞游戲外包開(kāi)發(fā)的驗(yàn)收從驗(yàn)收標(biāo)準(zhǔn)怎么定、流程怎么走、常見(jiàn)怎么坑到不同平臺(tái)的側(cè)重點(diǎn)全部捋一遍。1. 游戲外包驗(yàn)收的核心認(rèn)知1.1 驗(yàn)收不是終點(diǎn)是項(xiàng)目風(fēng)險(xiǎn)的最后一道閘門(mén)游戲開(kāi)發(fā)外包和買(mǎi)標(biāo)準(zhǔn)件完全不同。買(mǎi)一百個(gè)螺絲釘抽檢三個(gè)合格這一批基本沒(méi)問(wèn)題。但游戲是個(gè)復(fù)雜的軟件系統(tǒng)加數(shù)字內(nèi)容產(chǎn)品有玩法邏輯、美術(shù)表現(xiàn)、程序穩(wěn)定、適配兼容、性能優(yōu)化、計(jì)費(fèi)安全等一串維度交織在一起。任何一個(gè)環(huán)節(jié)出問(wèn)題玩家感知到的都是“這游戲真爛”。外包開(kāi)發(fā)模式下驗(yàn)收就是你手里唯一的正式控制手段。開(kāi)發(fā)過(guò)程中就算你天天看版本、提反饋乙方在最后階段也可能為了趕工或降成本悄悄替換素材、精簡(jiǎn)實(shí)現(xiàn)邏輯、甚至把某些功能做成“看起來(lái)是這樣其實(shí)是假的”。這些小心思只有在嚴(yán)格驗(yàn)收時(shí)才會(huì)暴露。我把驗(yàn)收比作游戲上線(xiàn)前的“安檢”你不可能因?yàn)閷?duì)方說(shuō)“我們做了安全檢測(cè)”就放心登機(jī)你必須親眼看到檢測(cè)報(bào)告、親自確認(rèn)關(guān)鍵指標(biāo)。游戲外包驗(yàn)收做得越扎實(shí)項(xiàng)目上線(xiàn)后的運(yùn)營(yíng)風(fēng)險(xiǎn)和口碑風(fēng)險(xiǎn)就越低。1.2 分清驗(yàn)收和體驗(yàn)反饋別把兩件事混為一談很多項(xiàng)目方犯的第一個(gè)錯(cuò)誤是把“驗(yàn)收”當(dāng)成“試玩提意見(jiàn)”。朋友玩了一下說(shuō)“手感不對(duì)”老板看了一下說(shuō)“按鈕不夠炫”這些是主觀(guān)體驗(yàn)反饋雖然重要但不是驗(yàn)收的正式依據(jù)。真正的驗(yàn)收依據(jù)是事先明確、雙方書(shū)面確認(rèn)的標(biāo)準(zhǔn)。它包含兩類(lèi)量化標(biāo)準(zhǔn)可測(cè)量的指標(biāo)比如啟動(dòng)時(shí)長(zhǎng)不超過(guò)3秒、幀率穩(wěn)定在30或60fps、崩潰率低于0.5%、包體大小不超過(guò)200MB、內(nèi)存占用峰值不超過(guò)1GB等。清單標(biāo)準(zhǔn)功能完整度清單比如“商店系統(tǒng)包含商品展示、購(gòu)買(mǎi)、支付回調(diào)、發(fā)貨、斷網(wǎng)重試、訂單查詢(xún)六個(gè)模塊”每一個(gè)模塊必須按需求文檔逐項(xiàng)確認(rèn)。主觀(guān)體驗(yàn)只能作為“是否達(dá)到驗(yàn)收邊界條件”的參考不能作為拒絕驗(yàn)收的核心理由。如果驗(yàn)收標(biāo)準(zhǔn)里寫(xiě)了“操作手感流暢無(wú)遲滯感”那這個(gè)“流暢”也需要定義成“點(diǎn)擊響應(yīng)時(shí)間小于100ms角色移動(dòng)與輸入延遲不超過(guò)一幀”否則雙方理解永遠(yuǎn)不一致。1.3 合同階段就要寫(xiě)清驗(yàn)收條款不是做完再說(shuō)這是我踩過(guò)最深的坑之一。早年我接過(guò)一個(gè)休閑游戲外包合同里關(guān)于驗(yàn)收只寫(xiě)了一句“符合雙方確認(rèn)的設(shè)計(jì)文檔”。結(jié)果交付時(shí)對(duì)方美術(shù)風(fēng)格大變我說(shuō)不符合人家拿出文檔里一句“風(fēng)格兼顧卡通與寫(xiě)實(shí)”懟回來(lái)。這種模糊表述到了驗(yàn)收階段就是扯皮源頭。正確的做法是在合同或者附件里明確嵌入驗(yàn)收條款。幾個(gè)必須寫(xiě)清楚的點(diǎn)驗(yàn)收依據(jù)文檔列表列出需求規(guī)格說(shuō)明書(shū)、UI/UX設(shè)計(jì)稿、技術(shù)方案文檔、QA測(cè)試用例清單這些文檔一旦雙方確認(rèn)就具有合同效力。驗(yàn)收節(jié)點(diǎn)和周期比如初驗(yàn)、復(fù)驗(yàn)、終驗(yàn)三個(gè)節(jié)點(diǎn)每輪驗(yàn)收的反饋時(shí)間窗口是幾個(gè)工作日超出默認(rèn)怎么處理。驗(yàn)收通過(guò)的定義是“無(wú)嚴(yán)重Bug、無(wú)功能缺失、達(dá)到所有量化指標(biāo)”才算通過(guò)還是“主要功能可用、已知問(wèn)題有處理計(jì)劃”就算通過(guò)必須白紙黑字寫(xiě)明白。未通過(guò)的處理機(jī)制是限期修改后重新驗(yàn)收還是罰款、按比例扣款或者允許項(xiàng)目方自行修復(fù)后從尾款中扣除費(fèi)用。2. 驗(yàn)收前的準(zhǔn)備工作2.1 建立驗(yàn)收標(biāo)準(zhǔn)清單一個(gè)原因兩個(gè)維度準(zhǔn)備驗(yàn)收第一步不是“打開(kāi)包開(kāi)始玩”而是先把標(biāo)準(zhǔn)清單寫(xiě)出來(lái)。我習(xí)慣用一份驗(yàn)收明細(xì)表把整個(gè)驗(yàn)收拆成多個(gè)可勾選、可打分的項(xiàng)。這份表不是我自己悶頭寫(xiě)而是從需求文檔里逐條提取并跟乙方在開(kāi)發(fā)中期就對(duì)過(guò)一遍。清單至少包含兩個(gè)維度缺一不可功能維度需求文檔里的每一個(gè)用戶(hù)故事、每一個(gè)模塊、每一個(gè)按鈕跳轉(zhuǎn)全部列成條目標(biāo)明“必須實(shí)現(xiàn)”“建議實(shí)現(xiàn)”“可選實(shí)現(xiàn)”三個(gè)優(yōu)先級(jí)。必須實(shí)現(xiàn)的遺漏直接算驗(yàn)收不通過(guò)。建議實(shí)現(xiàn)和可選實(shí)現(xiàn)可以商量但談判籌碼要跟尾款掛鉤。質(zhì)量維度性能指標(biāo)、兼容性范圍、安全要求、代碼規(guī)范、資源規(guī)范如每張圖的大小上限、音頻采樣率等非功能性的要求。這部分最容易遺漏也最容易在驗(yàn)收時(shí)爆發(fā)矛盾。一個(gè)游戲如果美術(shù)精美玩法完整但一到低端機(jī)就閃退玩家照樣罵街那這個(gè)驗(yàn)收只能算“半個(gè)通過(guò)”。我通常會(huì)做一份表格化的驗(yàn)收清單示例大致長(zhǎng)這樣驗(yàn)收類(lèi)別驗(yàn)收項(xiàng)驗(yàn)收標(biāo)準(zhǔn)驗(yàn)收方式結(jié)果功能新手引導(dǎo)玩家在3分鐘內(nèi)完成完整引導(dǎo)流程引導(dǎo)步驟無(wú)卡死人工試玩自動(dòng)測(cè)試通過(guò)/不通過(guò)功能商店購(gòu)買(mǎi)支付成功后2分鐘內(nèi)到賬斷網(wǎng)時(shí)有明確提示重復(fù)點(diǎn)擊不會(huì)重復(fù)扣款人工支付沙箱通過(guò)/不通過(guò)性能啟動(dòng)時(shí)間冷啟動(dòng)不超過(guò)3秒中端設(shè)備性能測(cè)試工具通過(guò)/不通過(guò)性能幀率核心玩法場(chǎng)景幀率穩(wěn)定在30fps以上Profile工具持續(xù)記錄10分鐘通過(guò)/不通過(guò)兼容設(shè)備覆蓋覆蓋目標(biāo)機(jī)型Top100列表全部通過(guò)啟動(dòng)與核心玩法測(cè)試真機(jī)云測(cè)通過(guò)/不通過(guò)安全協(xié)議防篡改核心道具購(gòu)買(mǎi)請(qǐng)求無(wú)法通過(guò)簡(jiǎn)單抓包篡改實(shí)現(xiàn)代碼審計(jì)抓包測(cè)試通過(guò)/不通過(guò)2.2 準(zhǔn)備測(cè)試環(huán)境、測(cè)試工具和測(cè)試賬號(hào)驗(yàn)收最怕什么最怕兩邊環(huán)境不一致。你說(shuō)“我這邊崩了”他回“我這邊好的”最后一查一個(gè)是Android 13一個(gè)是Android 8一個(gè)是iOS 16.5一個(gè)是iOS 17 beta問(wèn)題壓根不在同一頻道上。準(zhǔn)備驗(yàn)收材料時(shí)必須同步準(zhǔn)備以下東西測(cè)試設(shè)備矩陣列出覆蓋目標(biāo)用戶(hù)群的測(cè)試機(jī)型列表至少包含低端機(jī)2臺(tái)、中端機(jī)2臺(tái)、高端機(jī)2臺(tái)、iOS和Android各半有條件地把平板也納入。測(cè)試網(wǎng)絡(luò)環(huán)境弱網(wǎng)模擬工具比如Charles、Network Link Conditioner分別模擬2G/3G/4G/Wi-Fi高延遲環(huán)境驗(yàn)證游戲在網(wǎng)絡(luò)波動(dòng)時(shí)的表現(xiàn)。測(cè)試賬號(hào)體系包含不同付費(fèi)等級(jí)的賬號(hào)白號(hào)、首充號(hào)、活躍賬號(hào)以及用于測(cè)試支付回調(diào)的沙箱賬號(hào)。日志與抓包工具Logcat、Xcode Console、Charles、Wireshark等遇到問(wèn)題時(shí)可以第一時(shí)間拿到證據(jù)跟乙方溝通時(shí)直接甩日志效率比來(lái)回截圖高十倍。我個(gè)人的習(xí)慣是在驗(yàn)收前建一個(gè)共享的問(wèn)題管理表乙方、我方測(cè)試、我方策劃都在里面。所有驗(yàn)收過(guò)程中發(fā)現(xiàn)的問(wèn)題誰(shuí)發(fā)現(xiàn)的、什么設(shè)備、什么操作步驟、什么現(xiàn)象、日志鏈接、截圖鏈接、指派給誰(shuí)、修復(fù)狀態(tài)全部記錄明確。這個(gè)表既是驗(yàn)收過(guò)程的追蹤工具也是最后簽署驗(yàn)收?qǐng)?bào)告的附件證據(jù)。2.3 安排角色分工誰(shuí)驗(yàn)收、誰(shuí)拍板、誰(shuí)記錄驗(yàn)收不是一個(gè)人的事情也不是讓“某位同事順便玩一玩”。一個(gè)規(guī)范的項(xiàng)目驗(yàn)收至少要三個(gè)角色驗(yàn)收負(fù)責(zé)人我方項(xiàng)目經(jīng)理或制作人負(fù)責(zé)把控整體進(jìn)度、安排驗(yàn)收計(jì)劃、匯總問(wèn)題清單、對(duì)接乙方負(fù)責(zé)人、最終簽署驗(yàn)收?qǐng)?bào)告。測(cè)試人員專(zhuān)職QA或者懂技術(shù)的同事負(fù)責(zé)按測(cè)試用例逐項(xiàng)執(zhí)行記錄問(wèn)題提交復(fù)測(cè)。業(yè)務(wù)/策劃代表負(fù)責(zé)從產(chǎn)品角度判斷功能是否滿(mǎn)足需求文檔玩法是否符合設(shè)計(jì)意圖UI交互是否合理。如果把產(chǎn)品經(jīng)理也拉進(jìn)驗(yàn)收當(dāng)然更好但一定要避免“人人都有發(fā)言權(quán)、最后沒(méi)人拍板”的局面。外包驗(yàn)收講究的是“以標(biāo)準(zhǔn)為準(zhǔn)以證據(jù)說(shuō)話(huà)”不是比誰(shuí)嗓門(mén)大。在所有問(wèn)題處理完畢后只有驗(yàn)收負(fù)責(zé)人有權(quán)跟乙方說(shuō)“通過(guò)”還是“不通過(guò)”。3. 驗(yàn)收流程實(shí)操?gòu)奶釡y(cè)到達(dá)標(biāo)的完整鏈路3.1 第一步乙方提測(cè)先做冒煙測(cè)試乙方說(shuō)“我們做完了可以驗(yàn)收了”你不能直接開(kāi)大會(huì)更不能不測(cè)試就召集所有人一起看。先讓測(cè)試團(tuán)隊(duì)做一輪冒煙測(cè)試也就是快速過(guò)一遍核心鏈路游戲能不能啟動(dòng)、主界面能不能進(jìn)去、新手引導(dǎo)能不能走完、核心玩法能不能跑通、商店能不能打開(kāi)、支付能不能發(fā)起。冒煙測(cè)試的目標(biāo)不是找細(xì)節(jié)Bug而是判斷這個(gè)包“到底有沒(méi)有資格進(jìn)入正式驗(yàn)收”。冒煙測(cè)試但凡有一步過(guò)不去直接打回讓乙方修好再重新提測(cè)。這一步看著簡(jiǎn)單但能幫雙方省掉大量時(shí)間。我有一次驗(yàn)收乙方信誓旦旦說(shuō)做完了結(jié)果安裝包在iOS 16真機(jī)上直接白屏連啟動(dòng)都過(guò)不去那還驗(yàn)收什么直接打回重做省得浪費(fèi)整個(gè)團(tuán)隊(duì)一下午。冒煙測(cè)試通過(guò)后就可以進(jìn)入正式驗(yàn)收流程。我在實(shí)際操作中會(huì)將冒煙測(cè)試的結(jié)果也記錄進(jìn)問(wèn)題管理表作為正式驗(yàn)收第一階段的狀態(tài)方便后續(xù)追溯。3.2 第二步正式驗(yàn)收按清單逐項(xiàng)執(zhí)行正式驗(yàn)收階段我建議把功能測(cè)試放在第一步性能測(cè)試和兼容性測(cè)試可以并行或交叉進(jìn)行。因?yàn)楣δ軠y(cè)試發(fā)現(xiàn)問(wèn)題往往需要乙方修改邏輯修改有可能影響性能和兼容性先測(cè)功能能減少后續(xù)測(cè)試輪次中的變數(shù)。功能驗(yàn)收的具體操作方式是拿著之前做好的驗(yàn)收清單從第一條開(kāi)始逐項(xiàng)過(guò)。這里要強(qiáng)調(diào)一個(gè)詞“逐項(xiàng)”不是“大概看一下”。每一個(gè)功能都要在對(duì)應(yīng)設(shè)備上執(zhí)行對(duì)應(yīng)操作路徑并記錄結(jié)果。比如驗(yàn)收“背包系統(tǒng)”測(cè)試操作至少包括背包打開(kāi)、關(guān)閉、滑動(dòng)道具分類(lèi)篩選道具詳情查看道具使用及效果觸發(fā)道具批量使用背包滿(mǎn)狀態(tài)背包內(nèi)道具數(shù)量超上限時(shí)的提示所有操作過(guò)程中的內(nèi)存與幀率記錄我不能在這兒把每個(gè)系統(tǒng)的完整測(cè)試用例都寫(xiě)出來(lái)但核心思路是功能驗(yàn)收必須細(xì)化到可以復(fù)現(xiàn)的具體操作路徑而不是停留在“這個(gè)功能能用”的主觀(guān)判斷。功能驗(yàn)收的同時(shí)并發(fā)測(cè)試的還有支付流程。游戲項(xiàng)目里支付環(huán)節(jié)是最敏感的部分測(cè)試重點(diǎn)有三塊正常支付流程是否順暢、支付取消/失敗是否不影響用戶(hù)數(shù)據(jù)、斷網(wǎng)情況下支付回調(diào)延遲或丟失時(shí)用戶(hù)資產(chǎn)是否正確發(fā)放。支付一旦出了問(wèn)題輕則玩家刷單運(yùn)營(yíng)虧損重則被渠道處罰。3.3 第三步性能、兼容性和安全測(cè)試這部分在工作量上可能不亞于功能測(cè)試但很多人會(huì)忽略或壓縮它。我以前遇到過(guò)一位外包項(xiàng)目經(jīng)理他說(shuō)“我們性能沒(méi)問(wèn)題手機(jī)上都玩得挺流暢”結(jié)果拿低端機(jī)一測(cè)主界面60秒界面卡死直接就露餡了。性能測(cè)試的核心指標(biāo)和參考值可以這樣定指標(biāo)參考范圍測(cè)試方法冷啟動(dòng)時(shí)間中端安卓機(jī)不超過(guò)3秒從點(diǎn)擊圖標(biāo)到進(jìn)入主界面計(jì)時(shí)安裝包體積根據(jù)目標(biāo)市場(chǎng)一般小于200MB為宜直接查看安裝包文件大小運(yùn)行時(shí)內(nèi)存建議不超過(guò)設(shè)備物理內(nèi)存的40%使用Unity Profiler或Android Studio Profiler記錄峰值幀率核心玩法穩(wěn)定30fps推薦目標(biāo)60fps使用Profile工具記錄10分鐘中位數(shù)與P95溫度連續(xù)游戲30分鐘設(shè)備背面溫度不超過(guò)45°C體感溫?zé)釤岢上駜x或手機(jī)自帶溫度監(jiān)控電耗30分鐘游戲耗電小于10%滿(mǎn)電測(cè)試前后對(duì)比每個(gè)項(xiàng)目目標(biāo)不同數(shù)值要按實(shí)際情況調(diào)整。有些重度3D游戲包體大、內(nèi)存高是正常的有些輕度休閑游戲標(biāo)準(zhǔn)就必須苛刻。關(guān)鍵是標(biāo)準(zhǔn)要在驗(yàn)收前定下來(lái)而不是驗(yàn)收中臨時(shí)拍腦袋。兼容性測(cè)試方面建議結(jié)合遠(yuǎn)程真機(jī)云測(cè)平臺(tái)做覆蓋測(cè)試比如用Testin、百度云測(cè)或者各廠(chǎng)商云真機(jī)平臺(tái)把Top100的機(jī)型清單跑一遍安裝啟動(dòng)和核心玩法場(chǎng)景重點(diǎn)記錄啟動(dòng)失敗、崩潰、渲染異常等問(wèn)題。安全測(cè)試更偏向于有后端接口的項(xiàng)目。需要驗(yàn)證接口有沒(méi)有做簽名校驗(yàn)、是否有重放攻擊風(fēng)險(xiǎn)、敏感數(shù)據(jù)是否明文傳輸、客戶(hù)端包體是否容易被篡改或二次打包。如果項(xiàng)目沒(méi)有后端單機(jī)邏輯也要關(guān)注存檔是否有被本地修改的風(fēng)險(xiǎn)。這部分如果不熟悉可以請(qǐng)懂安全的同事支持或者直接要求外包方提交安全自測(cè)報(bào)告再針對(duì)重點(diǎn)做抽樣復(fù)核。3.4 第四步bug分級(jí)、復(fù)測(cè)與驗(yàn)收結(jié)論驗(yàn)收過(guò)程中發(fā)現(xiàn)的所有問(wèn)題我習(xí)慣按嚴(yán)重程度分成四個(gè)級(jí)別致命Blocker游戲無(wú)法啟動(dòng)、核心功能無(wú)法使用、閃退、數(shù)據(jù)丟失、支付錯(cuò)亂。存在任意一個(gè)驗(yàn)收不能通過(guò)。嚴(yán)重Critical主要功能無(wú)法正常使用、重大性能問(wèn)題、高概率崩潰、兼容性問(wèn)題覆蓋核心機(jī)型。存在多個(gè)時(shí)驗(yàn)收不能通過(guò)。一般Major非核心功能缺陷、界面顯示異常、特定機(jī)型性能問(wèn)題、操作卡頓等。需要修復(fù)后再?gòu)?fù)測(cè)但不一定影響驗(yàn)收結(jié)論。輕微Minor文案錯(cuò)誤、極低概率的顯示問(wèn)題、優(yōu)化建議類(lèi)??梢杂涗浀胶罄m(xù)維護(hù)清單不阻塞驗(yàn)收。每輪驗(yàn)收結(jié)束后把對(duì)應(yīng)級(jí)別的問(wèn)題清單發(fā)給乙方約定修復(fù)時(shí)間。致命和嚴(yán)重問(wèn)題需要修復(fù)后復(fù)測(cè)。一般問(wèn)題如果不影響核心體驗(yàn)可以在雙方協(xié)商下安排到下一迭代修復(fù)但這需要明確記錄并作為扣款或后續(xù)維保的參考。復(fù)測(cè)不是簡(jiǎn)單地問(wèn)“改好了嗎”而是要按原問(wèn)題路徑重新執(zhí)行一遍操作確認(rèn)修復(fù)且沒(méi)有引入新的相關(guān)回歸問(wèn)題。這一步必須有我方人員親手操作不能只相信乙方反饋。我說(shuō)過(guò)很多次非我操作不算數(shù)。4. 不同游戲類(lèi)型和場(chǎng)景的驗(yàn)收側(cè)重點(diǎn)4.1 微信小程序游戲開(kāi)發(fā)的驗(yàn)收特別項(xiàng)這幾年微信小游戲外包需求增長(zhǎng)很快小程序游戲和原生App游戲在驗(yàn)收上有明顯的不同。小游戲包體限制2MB主包現(xiàn)在部分支持4MB加載方式、性能表現(xiàn)、運(yùn)行環(huán)境都和原生游戲差異很大。驗(yàn)收時(shí)除了常規(guī)內(nèi)容必須加測(cè)以下方面首包加載時(shí)間在普通4G網(wǎng)絡(luò)下從點(diǎn)擊進(jìn)入小游戲到出現(xiàn)可交互界面建議不超過(guò)5秒超過(guò)的話(huà)流失率會(huì)非常明顯。分包加載策略確認(rèn)分包邏輯是否正確當(dāng)玩家進(jìn)入某個(gè)玩法時(shí)才拉取對(duì)應(yīng)資源包而不是一啟動(dòng)就把全部分包加載了。微信API兼容性登錄、分享、支付、廣告組件都要逐一驗(yàn)證真實(shí)調(diào)用。尤其注意iOS和Android在微信內(nèi)的不同表現(xiàn)比如某些API在iOS端或Android端的支持程度會(huì)有差異。內(nèi)存與性能微信瀏覽器環(huán)境的內(nèi)存限制比原生系統(tǒng)更嚴(yán)格長(zhǎng)時(shí)運(yùn)行后頁(yè)面變卡是常見(jiàn)問(wèn)題測(cè)試時(shí)特別留意連續(xù)游戲30分鐘以上的表現(xiàn)。緩存與更新小游戲版本更新時(shí)老玩家能否正確拉到最新版本不因緩存問(wèn)題導(dǎo)致白屏或邏輯錯(cuò)亂。小游戲項(xiàng)目最坑的一點(diǎn)是很多外包方會(huì)用一套Unity或Cocos代碼打包成原生游戲后硬轉(zhuǎn)小游戲?qū)е掳w超標(biāo)、啟動(dòng)巨慢。驗(yàn)收時(shí)必須重點(diǎn)驗(yàn)證運(yùn)行環(huán)境是否真的是微信環(huán)境測(cè)試網(wǎng)絡(luò)面板和性能面板確認(rèn)沒(méi)有在小游戲環(huán)境內(nèi)嵌隱藏WebView運(yùn)行的情況。4.2 Godot項(xiàng)目的驗(yàn)收開(kāi)源引擎要盯緊資源管理和導(dǎo)出配置Godot是目前技術(shù)圈討論熱度很高的開(kāi)源引擎很多小團(tuán)隊(duì)和個(gè)人開(kāi)發(fā)者入坑Godot做獨(dú)立游戲也催生了Godot相關(guān)的外包需求。Godot項(xiàng)目驗(yàn)收與Unity/Cocos項(xiàng)目有一個(gè)顯著差異引擎本身免費(fèi)且開(kāi)源但項(xiàng)目工程質(zhì)量參差不齊極其嚴(yán)重。用Godot做外包項(xiàng)目驗(yàn)收有幾個(gè)特別要留意的地方資源導(dǎo)入規(guī)范Godot對(duì)紋理壓縮、音頻重采樣、字體格式有一定要求如果外包方處理粗糙最終包體可能異常膨脹。驗(yàn)收時(shí)要檢查導(dǎo)出報(bào)告里各類(lèi)資源的占比判定是否有未壓縮的大尺寸資源被直接打包。場(chǎng)景與腳本組織Godot項(xiàng)目常常因?yàn)殚_(kāi)發(fā)者水平差異把大量邏輯堆在場(chǎng)景節(jié)點(diǎn)的_Process里或者用全局單例亂搞。這種代碼風(fēng)格可能不影響功能實(shí)現(xiàn)但會(huì)給后續(xù)維護(hù)埋雷。如果合同里有“代碼可維護(hù)性”要求驗(yàn)收時(shí)就要抽查腳本組織是否合理。導(dǎo)出配置Godot在不同平臺(tái)導(dǎo)出的坑不少比如Android導(dǎo)出需要配置自定義構(gòu)建模板、iOS導(dǎo)出需要特定Xcode版本。驗(yàn)收時(shí)要確認(rèn)每個(gè)目標(biāo)平臺(tái)都有真實(shí)的導(dǎo)出包真機(jī)測(cè)試記錄而不只是在編輯器里跑通就行。版本鎖定Godot版本更新較快不同版本的導(dǎo)入格式和Shader兼容性都有差異驗(yàn)收時(shí)檢查引擎版本與項(xiàng)目配置版本是否統(tǒng)一鎖定避免后續(xù)版本更新導(dǎo)致項(xiàng)目無(wú)法打開(kāi)或運(yùn)行異常。4.3 美術(shù)和UI外包驗(yàn)收的獨(dú)立標(biāo)準(zhǔn)游戲開(kāi)發(fā)外包不只是程序外包美術(shù)外包是另一個(gè)大頭而且美術(shù)驗(yàn)收標(biāo)準(zhǔn)跟程序完全不同。程序可以看指標(biāo)、看日志、看崩潰率美術(shù)驗(yàn)收主要靠眼睛和規(guī)范。美術(shù)外包驗(yàn)收時(shí)我一般看三樣?xùn)|西與概念設(shè)計(jì)的風(fēng)格一致性不是看單張圖好不好看而是跟整體世界觀(guān)、UI風(fēng)格、參考圖放一起看協(xié)調(diào)度。很多美術(shù)外包單張出彩放進(jìn)游戲里跟UI、跟其他場(chǎng)景完全不搭。技術(shù)規(guī)范達(dá)標(biāo)比如角色模型面數(shù)是否在規(guī)定范圍、貼圖尺寸和通道是否合規(guī)、動(dòng)作資源是否有合理壓縮、UI切圖是否遵循九宮格規(guī)則、字重行距是否一致。這些不懂行的人看不見(jiàn)但直接決定運(yùn)行效率。實(shí)現(xiàn)表現(xiàn)動(dòng)畫(huà)是否流暢、特效是否遮擋操作、UI布局在異形屏上是否安全、多語(yǔ)言文本下是否會(huì)溢出。這些必須實(shí)際進(jìn)游戲跑一遍才能發(fā)現(xiàn)。美術(shù)外包驗(yàn)收最講究“參考對(duì)照”驗(yàn)收的時(shí)候最好打開(kāi)需求文檔里的參考圖和動(dòng)效參考視頻逐幀對(duì)比別憑感覺(jué)說(shuō)“還行就這樣吧”不然等美術(shù)外包走了你看著自己游戲里那套UI只會(huì)越想越難受。5. 驗(yàn)收過(guò)程的實(shí)戰(zhàn)技巧與常見(jiàn)爭(zhēng)議5.1 如何應(yīng)對(duì)“程序上的Bug不是功能性缺陷”的甩鍋驗(yàn)收過(guò)程中最常遇到的扯皮是乙方對(duì)問(wèn)題定級(jí)有異議。比如你提“主城界面加載時(shí)出現(xiàn)半秒白屏”乙方說(shuō)“這個(gè)不影響功能屬于優(yōu)化問(wèn)題不列入驗(yàn)收Bug清單”。這時(shí)候不要爭(zhēng)論直接拿出之前確認(rèn)的驗(yàn)收標(biāo)準(zhǔn)指著“啟動(dòng)流程中不應(yīng)出現(xiàn)明顯白屏或黑屏”這一條告訴他這是合同標(biāo)準(zhǔn)不是我的個(gè)人意見(jiàn)。只要標(biāo)準(zhǔn)寫(xiě)得明白扯皮的空間就很小。如果標(biāo)準(zhǔn)里確實(shí)沒(méi)寫(xiě)那就事論事評(píng)估是否影響核心體驗(yàn)再商量是修、還是記入后續(xù)優(yōu)化清單同時(shí)調(diào)整尾款付款比例。項(xiàng)目驗(yàn)收不是玩零和游戲不是非要壓對(duì)方一頭核心原則是明確的問(wèn)題明確修不明確的問(wèn)題商量著處理。5.2 遠(yuǎn)程驗(yàn)收時(shí)怎么保證測(cè)試真實(shí)性有些外包方是異地團(tuán)隊(duì)項(xiàng)目方無(wú)法到現(xiàn)場(chǎng)驗(yàn)收遠(yuǎn)程驗(yàn)收就成了常態(tài)。遠(yuǎn)程驗(yàn)收比現(xiàn)場(chǎng)驗(yàn)收更容易出現(xiàn)“乙方一邊演示、一邊讓問(wèn)題不出現(xiàn)”的情況。遠(yuǎn)程驗(yàn)收我的做法是要求乙方提供錄屏所有核心功能測(cè)試路徑要求乙方按清單預(yù)先錄制操作視頻而不是直播時(shí)臨時(shí)演示。遠(yuǎn)程控制或模擬器加真機(jī)一起測(cè)可以要求乙方開(kāi)放遠(yuǎn)程真機(jī)控制權(quán)限或者使用云真機(jī)平臺(tái)保證你的測(cè)試操作是自己執(zhí)行的。關(guān)鍵問(wèn)題孤證不立任何一個(gè)嚴(yán)重/致命問(wèn)題必須由我方人員在云端真機(jī)、或者用我方指定的測(cè)試設(shè)備上復(fù)現(xiàn)。乙方那邊“我這兒好的呀”完全不能作為證據(jù)。我特別反感一句話(huà)“這個(gè)bug我們這邊復(fù)現(xiàn)不了。”在驗(yàn)收語(yǔ)境里這句話(huà)的意義非常有限。正確的回答是“那你按我的操作步驟再試錄屏發(fā)我?!睆?fù)現(xiàn)不了要么是不想復(fù)現(xiàn)要么是環(huán)境確實(shí)不同但只要是真實(shí)用戶(hù)路徑中會(huì)發(fā)生的就需要被正視。5.3 驗(yàn)收與尾款支付什么時(shí)候付、付多少游戲外包項(xiàng)目通常的付款方式是里程碑付款也就是設(shè)計(jì)原型、首個(gè)可玩版本、內(nèi)容完善、最終交付等節(jié)點(diǎn)分期付款。終驗(yàn)通過(guò)后支付尾款比例一般是總額的10%到30%??铐?xiàng)和驗(yàn)收的關(guān)系我建議這樣安排節(jié)點(diǎn)付款比例付款前提啟動(dòng)20%–30%雙方簽訂合同并確認(rèn)需求文檔里程碑一20%首個(gè)可玩版本交付核心循環(huán)可跑通里程碑二20%–30%內(nèi)容開(kāi)發(fā)完畢版本功能完整終驗(yàn)10%–20%終驗(yàn)通過(guò)簽署驗(yàn)收?qǐng)?bào)告維保期滿(mǎn)5%–10%上線(xiàn)維保期結(jié)束后無(wú)重大問(wèn)題終驗(yàn)通過(guò)后一般來(lái)說(shuō)尾款要在一個(gè)明確的賬期內(nèi)比如15個(gè)工作日支付不要拖。拖尾款在行業(yè)里口碑影響極大而且容易導(dǎo)致對(duì)方后續(xù)維保不配合。反過(guò)來(lái)項(xiàng)目方也一定要堅(jiān)決執(zhí)行“不驗(yàn)收不付尾款”的原則哪怕對(duì)方說(shuō)自己資金緊張也不行。驗(yàn)收是質(zhì)量證明尾款是契約履行兩者不沖突但必須掛鉤。5.4 知識(shí)產(chǎn)權(quán)與驗(yàn)收?qǐng)?bào)告一起簽署寫(xiě)到最后必須提一嘴知產(chǎn)因?yàn)楹芏囗?xiàng)目方在驗(yàn)收時(shí)會(huì)忘掉這件事。游戲外包項(xiàng)目的核心知識(shí)產(chǎn)權(quán)代碼、美術(shù)、音頻、策劃文檔、技術(shù)方案的歸屬應(yīng)該在合同中有明確條款。大多數(shù)情況下費(fèi)用結(jié)清后知識(shí)產(chǎn)權(quán)應(yīng)全部歸項(xiàng)目方所有。驗(yàn)收?qǐng)?bào)告的簽字頁(yè)或附件里最好增加一頁(yè)“交付物清單及知識(shí)產(chǎn)權(quán)確認(rèn)書(shū)”乙方確認(rèn)以下事項(xiàng)所有交付的源碼、資源、文檔均為乙方原創(chuàng)或已獲得合法授權(quán)未侵占第三方知識(shí)產(chǎn)權(quán)項(xiàng)目方支付全部合同費(fèi)用后擁有完整知識(shí)產(chǎn)權(quán)乙方移交全部源工程和構(gòu)建工具鏈確保項(xiàng)目方可獨(dú)立編譯構(gòu)建新版本。這一頁(yè)簽完才算真正閉環(huán)。我有朋友因?yàn)槭×诉@一頁(yè)半年后想做個(gè)新功能發(fā)現(xiàn)乙方找不到人、代碼庫(kù)不完整、引擎版本被修改過(guò)無(wú)法構(gòu)建整個(gè)項(xiàng)目只能推倒重來(lái)。6. 驗(yàn)收單和問(wèn)題清單模板的實(shí)操分享這部分是我最想拿出來(lái)的私貨直接用表格結(jié)構(gòu)和思路分享給大家。在實(shí)際項(xiàng)目中我通常把兩類(lèi)文檔配合使用。6.1 驗(yàn)收確認(rèn)單的核心字段不管你用什么工具Execl也好、在線(xiàn)表格也好驗(yàn)收確認(rèn)單至少要有這些字段項(xiàng)目名稱(chēng)與版本號(hào)驗(yàn)收階段初驗(yàn)/復(fù)驗(yàn)/終驗(yàn)驗(yàn)收日期與驗(yàn)收人驗(yàn)收依據(jù)文檔版本號(hào)需求文檔、設(shè)計(jì)文檔、測(cè)試用例清單版本功能完整度結(jié)論完整/部分缺失質(zhì)量指標(biāo)結(jié)論達(dá)標(biāo)/不達(dá)標(biāo)附測(cè)試數(shù)據(jù)嚴(yán)重/致命問(wèn)題數(shù)量0為通過(guò)前提遺留問(wèn)題清單及解決計(jì)劃結(jié)論通過(guò)/有條件通過(guò)/不通過(guò)雙方簽字6.2 問(wèn)題管理表的實(shí)操細(xì)節(jié)問(wèn)題管理表的字段上一條已經(jīng)提過(guò)我再補(bǔ)幾個(gè)實(shí)操細(xì)節(jié)編號(hào)規(guī)則建議按“階段縮寫(xiě)-日期-序號(hào)”記錄復(fù)測(cè)時(shí)通過(guò)原編號(hào)作為前綴派生新編號(hào)比如“FINAL-0601-07”復(fù)測(cè)后變成“RETEST-0610-07”這樣整個(gè)問(wèn)題生命周期一目了然。優(yōu)先級(jí)自動(dòng)排序所有致命和嚴(yán)重問(wèn)題自動(dòng)置頂未關(guān)閉的問(wèn)題數(shù)實(shí)時(shí)統(tǒng)計(jì)方便進(jìn)度追蹤。截圖與日志強(qiáng)制綁定每一個(gè)問(wèn)題必須有截圖或日志不能只有文字描述。一個(gè)“游戲閃退”的條目任何程序員看到都無(wú)從下手但配上了logcat日志和時(shí)間點(diǎn)之后定位速度會(huì)提升十倍。6.3 驗(yàn)收?qǐng)?bào)告的存檔意義驗(yàn)收?qǐng)?bào)告簽完之后所有相關(guān)文檔——驗(yàn)收清單、問(wèn)題管理表、測(cè)試日志、錄屏證據(jù)、正式驗(yàn)收?qǐng)?bào)告、知識(shí)產(chǎn)權(quán)確認(rèn)書(shū)——統(tǒng)一存入項(xiàng)目檔案。這些文檔不僅是為了存檔而存檔它們有幾個(gè)實(shí)際用途上線(xiàn)后如果出現(xiàn)問(wèn)題可以快速定位是否已知遺留問(wèn)題。維護(hù)期外包方如果扯皮這份記錄就是憑證。后續(xù)接手的團(tuán)隊(duì)可以通過(guò)驗(yàn)收?qǐng)?bào)告快速理解項(xiàng)目有哪些坑。7. 驗(yàn)收之后你還需要做這幾件事很多人覺(jué)得驗(yàn)收通過(guò)就萬(wàn)事大吉了其實(shí)驗(yàn)收完成只代表“乙方該做的做完了”還遠(yuǎn)遠(yuǎn)不是項(xiàng)目的終點(diǎn)。驗(yàn)收通過(guò)后至少還有兩件事要做安排素材和源碼歸檔。拿到乙方交付的全套源工程后立即做一次構(gòu)建驗(yàn)證確認(rèn)在你自己的電腦或服務(wù)器上不依賴(lài)乙方環(huán)境也能編譯構(gòu)建成功。如果有CI/CD環(huán)境馬上把項(xiàng)目導(dǎo)入跑一遍自動(dòng)化打包流水線(xiàn)。如果構(gòu)建失敗立刻反饋給乙方此時(shí)尾款還在你手里解決一切問(wèn)題都還來(lái)得及。做一次內(nèi)部體驗(yàn)評(píng)審。驗(yàn)收測(cè)試是通過(guò)標(biāo)準(zhǔn)的但標(biāo)準(zhǔn)不是萬(wàn)能的。把項(xiàng)目發(fā)給團(tuán)隊(duì)里沒(méi)有參與開(kāi)發(fā)過(guò)程的同事、朋友玩一玩你往往會(huì)收獲很多測(cè)試用例里寫(xiě)不到的真實(shí)視角。但注意區(qū)分“體驗(yàn)意見(jiàn)”和“驗(yàn)收問(wèn)題”體驗(yàn)意見(jiàn)可以整理成下一版本迭代建議不要拿來(lái)推翻驗(yàn)收結(jié)果。我個(gè)人的體會(huì)是游戲外包開(kāi)發(fā)能不能做好很大程度不取決于外包團(tuán)隊(duì)的技術(shù)天花板而取決于項(xiàng)目方對(duì)驗(yàn)收的理解和執(zhí)行力度。驗(yàn)收嚴(yán)格外包方就會(huì)拿出更好的資源來(lái)對(duì)待你的項(xiàng)目驗(yàn)收松散對(duì)方就會(huì)認(rèn)為你“好糊弄”后續(xù)服務(wù)和維護(hù)質(zhì)量都可能打折扣。最后分享一個(gè)我常用的技巧驗(yàn)收過(guò)程中溝通全部用文字記錄重要結(jié)論發(fā)送雙方確認(rèn)郵件。不是不信任對(duì)方而是項(xiàng)目周期長(zhǎng)、人員可能流動(dòng)哪天對(duì)接人換了這些記錄就是項(xiàng)目管理的唯一錨點(diǎn)。你認(rèn)真對(duì)待驗(yàn)收流程其實(shí)也在幫助對(duì)方養(yǎng)成嚴(yán)謹(jǐn)?shù)慕桓读?xí)慣最終受益的還是項(xiàng)目的質(zhì)量本身。