幀同步技術目標總結

在寫一些網路優化總結的時候,翻到了年初3月份寫的技術目標。在此之前因為玩法在不斷摸索,主要的時間都在獨立解決一些問題上,幾乎不會涉及到技術任務的分配。但因為4月份版本需要上線測試而且至關重要,但當時的版本還過於Demo化延遲性能等都有不少問題,因此也被委以重任制定技術上下個月版本的技術目標,希望能有所提升。

著實挖空心思了一番!喪盡天良的列出了一大堆優化目標(也厚顏無恥的請教了很多成功項目同事朋友>_<)。。。

經過大家的不懈努力,兩個版本之後基本所有的優化點都已完成(遊戲功能也在不斷開發),之後的版本有了大幅提升,順利的經過了n輪測試。現在回頭看看,真是一個非常痛苦而又快樂的過程,痛並快樂著,我想這就是遊戲開發的真實寫照。

    • 網路優化:
  1. 客戶端和伺服器立即發消息的收發方式。【優先順序高】。現在伺服器和客戶端有個緩存隊列(可靠UDP的機制,改進後我們將使用TCP,可靠UDP,非可靠UDP三種網路方式)消息不回立即發送。降低延遲。
  2. 客戶端收發協議多線程。【優先順序高】。更快的收發包,減少不受客戶端幀率影響。
  3. 實現非可靠UDP。【優先順序高】。當用戶網路不穩定丟包時可大幅降低延遲。使用冗餘包的方式保證UDP可靠,比現在的ACK保證可靠性流量更大但延遲率低。
  4. 網路數據測量分析。【優先順序高】。測量純網路ping值,和遊戲真實ping值。定位延遲問題,目前正常ping值在30ms左右,但網路層實際ping值在100ms左右,定位問題和解決方案。實際主要是因為客戶端邏輯層和表現層的更新順序問題。
  5. 斷線重連。【優先順序高】。分析和制定更好的斷線重連方案,測試提供測試用例,需要策劃配合。review和方案討論的時間,具體修改方法還需要測試討論。
  6. 將幀協議從protobuff改為二進位流。【優先順序低】。針對混戰角色較多提升客戶端收發包性能。
  7. 移動的行為預測,表現層預表現一段時間玩家操作,使用航位預測演算法平滑渲染層和邏輯層,降低移動延遲。
  8. 協議包的壓縮和限制,減小包的大小,忽略部分細微操作。
  • 底層優化
    1. 負載均衡機制,因為邏輯層是15幀,渲染層依賴玩家設備和遊戲環境但幾乎都會高於15幀,通過分攤邏輯運算降低幀率的毛刺。
    2. 道具掉落系統的格子演算法統一。【優先順序中】。目前IO模式使用了新的格子演算法,匹配還是老演算法。
    3. 貼圖資源泄漏。【優先順序中】。從主城到戰鬥等場景切換會有些貼圖無法釋放,導致玩家時間長之後內存膨脹。
    4. 堆內存優化。【優先順序中】。解決遊戲中頓卡問題,堆內存分析優化,通用內存池開發。
    5. 性能優化。【優先順序中】。分析遊戲的性能瓶頸解決遊戲中卡,發熱,幀率低等問題。已知有圖形配置的調整,追幀隱藏場景等。【每次封板前後review,有針對進行優化】【持續】
    6. 阻塞載入場景,再來一局同一場景不進行loading。【優先順序低】。提升loading速度。
    7. UI使用一些插件做一些動畫。【優先順序低】。
    8. 加密。使用關鍵數據內存加密的方式(僅客戶端),使用關鍵數據上報伺服器校驗的防作弊方式。
    9. 使用IL2CPP取代Mono的DLL加密方式,防止代碼逆向並提升性能。
    10. 更詳細的圖形配置測試,獲得每個圖形配置對幀率,發熱耗電的數據提現,針對標杆機型普及率高的機型做深度的推薦配置,讓玩家上來就獲得最好體驗。【優先順序低】。(取決於已有機型的數量)
  • 流程優化:
    1. 伺服器白名單。【優先順序中】。這幾次測試也有需求開服測試時可以屏蔽玩家,但是可以運行指定IP段提前連入測試,被伺服器擋掉的玩家有未開服公告。
    2. 熱更流程優化。【優先順序中】。重構現在的熱更代碼,和自動構建集成,支持不同服的版本使用不同的CDN配置,支持更新表格和lua,支持更新部分UI資源。【後續更多的資源更新需要對資源做更大的調整】
    3. GM工具。【優先順序低】。現在只有發公告。
    4. 開關服的流程優化。【優先順序低】。登陸公告,跑馬燈,踢人,封號,關服倒計時,更完善的公告。需要和策劃一起梳理。
    5. 自動構建的Build號校驗
  • 工具優化
    1. AI行為樹編輯器。【優先順序低】。暴露更多的介面給策劃,讓策劃便於編輯修改。【開發中下周】【持續】
    2. CMT技能編輯器。【優先順序低】。開發可視化的CMT編輯器,優點不需要寫代碼,缺點無法配置邏輯,不靈活。【持續】
    3. 自動的調試菜單更美觀易用,支持分頁。【優先順序低】。
    4. 支持本地錄像和日誌記錄功能,支持關鍵數據校驗不同步時實時上報日誌供呢個。
  • 重構
    1. MainUI拆分。【優先順序低】。因為開發了多個模式,很多模式的UI都混在一個預製體,戰鬥界面非常龐大而且容易出錯,性能也差,使用不方便。可以分攤到開發過程中。【持續】
    2. 玩家組件系統重構。【優先順序低】。純代碼重構。
    3. UI使用消息事件系統。【優先順序低】。使用消息系統可以使UI結構更清晰減少bug,新的界面使用了歷史遺留的一些界面沒使用。
    4. 幀同步遊戲內換人加入優化。【優先順序低】。因為IO模式支持中途換人,每次換人的時候需要發送該玩家擁有英雄數據天賦數據非常龐大,優化為只在換人的時候同步換的角色的屬性和天賦,否則後期英雄數量的時候會出問題。【是否可以不換人】
    5. 狀態機重構。【優先順序低】。統一目前遊戲內的多個狀態機,遊戲流程使用唯一的一個狀態機。客戶端2天。
    6. 資源管理方式使用引用計數方式。【待討論】

    推薦閱讀:

    腦洞之奧丁晶石與北歐神話的聯繫(二)
    從遊戲設計上講,東方系列跟斑鳩哪一個好玩?
    (2/3) DOOM/Quake I/II/III 網路模型的演化
    【內部分享】藝術認知 by 老何
    請問東方Project中的具體歷史考據有哪些?如有的話,請列出具體文獻名稱。

    TAG:游戏开发 | Unity游戏引擎 | 优化 |