遊戲上線了,聊聊遇到的坑

2021-08-02 16:04:19 字數 909 閱讀 3987

遊戲上線前,就先要做下壓力測試。所以需要寫一套自己的客戶端程式模擬真實玩家的操作。一般由於專案時間的限制 基本上都只會模擬主要的功能,比如做任務,按照主線任務一直做下去即可。由於做的遊戲基本都是rpg,所以模擬玩家一直做主線任務即可。玩家走路的速度釋放技能的間隔 做任務的速度盡量模擬真實的玩家,這樣就能真實模擬出玩家對伺服器的壓力,這樣的測試才最有意義和針對的方案優化。rpg遊戲核心的aoi沒有問題的話,基本上就是玩家同屏產生資料報過多,前端渲染遲緩。伺服器發現傳送較多的協議去掉不用的字段,使用二進位制協議,廣播的時候使用同一物件或者同乙個bytebuffer的duplicate,這樣既能減少記憶體的消耗,也能減少cpu

也減少了gc次數。

上線h5

rpg遊戲中有乙個比較消耗cpu的功能就是機械人。真實玩家下線一段時間後,伺服器會使用玩家的資料重新登入遊戲伺服器,然後伺服器控制該機械人在真實的地圖上殺怪掛機。經過壓力測試發現機械人消耗了大量的cpu在尋路上。一旦線上機械人過多就會對線上的伺服器造成很大的伺服器壓力,偶爾卡頓。一開始就是想優化底層的a星尋路演算法,發現很難有實質的效能提公升。既然不能優化那就減少尋路次數就行。嚴格控制每個機械人的尋路的時間間隔,雖然減少了一些尋路次數,但是會造成機械人老是會停頓的現象,體驗不太好。後面有個想法,那就用空間換時間吧,讓機械人按照指定的路徑走就行了,基本上減少了80%-90%的尋路。這樣機械人做的就像客戶端一樣走到指定的怪點才去**怪,迴圈走拐點就可,把兩個點之間的尋路點快取起來就可以了,這樣其他機械人就不用再尋路了,要尋路也是很短距離之間的尋路。這樣優化下來之後,場景新增更多的機械人壓力對於cpu只會緩慢上公升,只是廣播的資料報壓力會增大。

上線的時候bug有點多,基本上就是平時用的不多的功能,比如後台bug,充值bug,程式的命令除錯的時候是對的,但真正充值的時候各種環境,發現測試**很多時候模擬的是錯的。每次到上線的時候才發現各種工具沒有準備好。連續搞了2天了,有點困。隨記。

webSocket上線遇到的坑

在本地測試websocket的時候好好的,但是一到上線就壞了,這是為什麼呢,很多人總是忽略了一點,那就是本地測試採用的是http協議,沒有證書的協議,而上線的專案往往都會採用https協議,是帶證書的協議,就是忽略了這一點導致專案的websocket連線失敗,在網上很少能找到幫助資料,這篇文章就是解...

微信小遊戲遇到的坑

這個問題十分魔幻,第一次授權失敗第二次第三次以後都能成功了,就很魔性,這個問題煩了我一天,簡直懷疑人生主要錯誤異常 iv not 16 bytes long,說的iv不夠16位元組 然後我開始的思路是填充位元組數,此處有小坑啊,不能直接string.getbytes 這樣獲取到的位元組數同樣會有問題...

專案上線遇到的問題?

29.專案上線遇到的問題?a 路由攔截中,我需要訪問例項的一些方法,但是上線之後this訪問不到。定義router,把this改為router就行。b 路由攔截中,我需要觸發乙個action,但是拿不到store,因為非同步。解決方案 settimeout nexttick c 上傳的時候,pm2 ...