淚目!網絡連接中斷的原因,終于找到了!

朋友們,出大事了!

不知道多少朋友玩過 DNF 這個游戲,這個我從小學玩到大學的 “破” 游戲,昨天竟然出手游了!

我都忘了自己曾幾何時預約過這個手游通知,昨天給我發了條通知信息說游戲已開服。

老玩家直接淚目了啊:時空之門,開!

好心動啊,然而我心中有一個聲音告訴自己:不能下!不能下!不能下!

因為根據我自己小時候凌晨偷摸爬起來玩游戲沖級的沉迷經歷,一旦我玩了,公司基本就沒救了,本來就忙的一批,怎能讓一個小 “破” 游戲,影響了我的大事!

玩笑話

言歸正傳,無論大家有沒有玩過這個,我相信大家都有過玩游戲或工作時 “網絡連接中斷” 的經歷吧。

我小時候還真就遇到過剛剛爆了好裝備,就網絡連接中斷的情況,當時都給我氣哭了,心里把策劃的祖宗十八代都問候了一遍。

但做了程序員之后,我現在已經能夠理解為什么會出現網絡連接中斷、服務器擠不進去、游戲延遲的情況了。

這篇文章就從技術的角度出發,給大家科普一些網絡方面的概念,也許能幫你打游戲更快哦~

網絡小知識

一、網絡連接中斷的常見原因

1、網絡延遲大或不穩定

延遲:指數據包從發送端到接收端所需的時間。這個概念在游戲中,尤其是 FPS 第一人稱射擊游戲和 RTS 實施策略游戲中尤為重要。因為延遲會導致操作反饋的滯后,玩家可能會感覺到游戲操作不流暢,甚至出現瞬間卡頓。

抖動:指數據包傳輸時間的變化。當抖動過大時,會導致數據包到達時間不一致,從而影響游戲體驗。典型的現象就是,玩家可能會看到游戲角色突然移動到另一個位置,實現 “瞬移”。

丟包:在數據傳輸過程中,某些數據包丟失,未能成功到達目的地。丟包會導致游戲中的信息不完整、出現卡頓、畫面跳動等問題。丟包率較高時,游戲基本就沒法玩了,持續丟包就有可能導致服務器斷開連接。

小時候我家里網絡差,最心酸的事情是因為網絡延遲跳過自己的行動回合、或者因為抖動和丟包導致怪物滿屏亂飄,當時戲稱這些是 “游戲特性”。

2、帶寬不足

即使不是程序員,我相信大家對帶寬這個概念也并不陌生。帶寬是指單位時間內可以傳輸的數據量,它很大程度上決定了網速的快慢。

帶寬分為上行帶寬和下行帶寬。上行帶寬指的是從客戶端(如家庭網絡)向服務器發送數據的速度,理解為上傳;下行帶寬則是從服務器向客戶端傳輸數據的速度,理解為下載。

當多個設備同時使用網絡時,如果帶寬不足,尤其是上行帶寬不足,就會導致網絡擁堵,影響游戲數據的傳輸速度。

需要注意的是,即使你家的網絡速度很快,游戲體驗也不一定會很好。因為網絡通信是客戶端和服務端雙向的。如果游戲公司的服務器本身性能較差、帶寬較小,即使你的帶寬很高,網絡傳輸的性能也不會很好,進而影響游戲體驗。

3、服務端問題

前面也提到了,除了自己的網絡外,服務端也是影響網絡連接和速度的決定性因素。比如游戲開服或秒殺活動上線時,瞬時間會有大量的流量涌入服務器,如果服務器沒有做好流量預估、擴容和相應的處理措施,很可能出現網絡擁塞、服務器過載等問題,導致玩家的網絡連接不穩定。

為了避免網絡擁塞和服務器過載,通常每個服務器都會設置一個允許連接的最大用戶數。所以才會出現下圖的名場面:

此外,一般游戲更新維護的時間都在凌晨或者玩家訪問量不大的時候;而且為了保證游戲數據不出問題、更好地進行測試,很多游戲會選擇停機維護。

哦對了,如果游戲服務器不幸被 DDoS 攻擊,也有可能會造成網絡連接中斷。

4、其他原因

除了上面幾點我們最明顯能感受到的網絡問題外,還有一些我們可能感受不到的影響網絡的因素,比如路由器配置和硬件問題、鄰近 Wi-Fi 網絡干擾等。

二、網絡優化小建議

分享了一些網絡知識后,再聊一聊可行的網絡優化小建議吧,我相信很多同學都實踐過。

1)盡量使用有線連接,會比無線連接更穩定,減少干擾。

2)選擇一個覆蓋面廣的路由器,可以定期檢查和更新固件,提升設備性能和穩定性。

3)除了升級自家帶寬外,平時可以多關注網絡帶寬的使用占比。因為現在很多應用都會在后臺默默傳輸一些數據,積少成多。追求極致性能的話,可以用一些網絡監控工具來分析帶寬占用,在打游戲時關閉掉一些軟件。

有位大佬開源了一款免費的網絡監控工具 TrafficMonitor,分享給大家:https://github.com/zhongyang219/TrafficMonitor

4)選擇合適的游戲服務器。這點其實很重要,建議選擇離自己地理位置較近的服務器。我小時候不懂,家在江蘇,非要去選個什么廣東的游戲大區。

5)使用專線網絡或游戲加速器。原理就是讓工具來幫我們選擇更合適的服務器節點、并且優化數據的傳輸路徑。但是這玩意我小時候打游戲的時候就不愛用,免費的沒啥效果,收費的又搞不起。

6)調整路由器的 QoS 設置。QoS(服務質量)是在網絡上為不同應用程序分配帶寬的技術,可以優先分配游戲所需的帶寬,盡量保證游戲數據包的通信質量。

最后

除了上面這些知識點外,其實我自己腦洞挺大的,還想了很多關于 “網絡連接中斷” 的猜想。比如寫下這樣一段代碼,吸引用戶充值:

if (用戶 A 爆了裝備 1) {if (裝備 1 是稀有裝備) {if (用戶沒充值) {// 強行中斷網絡連接connect.close()}}
}

或者這樣一段代碼,讓會員用戶體驗拉滿!

if (服務器人數已滿) {if (用戶 A 是普通用戶) {彈窗提示("服務器人數已滿")} else if (用戶 A 是會員) {// 允許進入服務器connect.start()// 讓一個普通用戶網絡連接中斷userBconnect.close()}
}

僅供娛樂,如果你是一家游戲公司的開發和策劃,請別這么干謝謝!

可訪問我的 Github:https://github.com/liyupi ,了解更多技術和項目內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15322.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gitee好用的瀏覽器插件【GiteeTree】

使用gitee的時候,可能拉到別人的項目后,只是想看下某些文件的代碼,但是不得不全部都拉下來,每次點又很麻煩。這個插件【GiteeTree】就很好用了,只需要搜索GiteeTree,然后把插件下載下來

git revert 和 git reset

文章目錄 工作區 暫存區 本地倉庫 遠程倉庫需求:已推送到遠程倉庫,想要撤銷操作git revert (添加新的提交來“反做”之前的更改,云端會殘留上次的提交記錄)git reset(相當于覆蓋上次的提交)1.--…

中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制

公眾號:生信漫談,獲取最新科研信息! 中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制https://mp.weixin.qq.com/s/ycNgYzACwkYZbo6k0Zqtcw 未來20年,我國將決戰全面建成社會主義現代化國家&…

MySQL筆記第三天(從小白到入門)

文章目錄 MySQL筆記SQL語言介紹數據庫系統關系型數據庫非關系型數據庫SQL和數據庫系統的關系數據庫系統架構 MySQL的介紹概念MySQL的版本 MySQL的DDL操作-重點基本數據庫操作基本表操作 MySQL的DML操作-重點insert-插入數據update-更新數據delete-刪除數據 MySQL的約束-了解概述…

工廠生產管理系統

為應對一些國內驗廠,如大疆等,他們需要客戶有自己的生產管理系統的,但實際很多公司是沒有引入ERP這類的系統的,從而想開發一套簡單的生產管理系統。 參考了網上一個比較古老的StorageMange項目,此項目用到DevExpress的…

數字簽名:確保信息完整性和身份驗證的關鍵技術

在數字時代,信息的安全性和真實性變得至關重要。數字簽名作為一種電子形式的簽名,提供了一種驗證信息來源和確保信息完整性的方法。本文將深入探討數字簽名的概念、工作原理、應用場景以及它如何幫助提高網絡安全性。 數字簽名的概念 數字簽名是一種加密…

C++與Android處理16進制大端/小端數據實例(二百七十六)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】🚀 優質專欄:多媒…

數據庫DCL語句

數據庫DCL語句 介紹: DCL英文全稱是Data Control Language(數據控制語言),用來管理數據庫用戶、控制數據庫的訪 問權限。 管理用戶: 查詢用戶: select * from mysql.user;創建用戶: create user 用戶名主機名 identified by 密碼;修改用…

Go語言垃圾回收機制原理

1. 概述 垃圾回收是一種自動內存管理技術:通過檢測程序中不再使用的內存,并釋放這些內存供其他對象使用。 應用程序中會使用到兩種內存,分別為堆(Heap)和棧(Stack)。GC不負責回收棧內存,只負責回收堆內存。 函數執行完后&#xff…

《計算機網絡微課堂》課程概述

? 課程介紹 本專欄主要是 B 站課程《計算機網絡微課堂》的文字版,作者是湖南科技大學的老師。 B 站地址:https://www.bilibili.com/video/BV1c4411d7jb 該課程好評如潮,包含理論課,實驗課,考研真題分析課&#xf…

Jenkins在windows上進行安裝

今天為了實現jmeter接口測試腳本的持續性集成安裝了jenkins,主要記錄jenkins的安裝和端口的修改。 前提條件:安裝了jdk,我本機安裝的jdk1.8。 1.下載jenkins安裝包 安裝jenkins我們需要先下載安裝包,可以通過下面的鏈接進行下載&a…

10分鐘用QEMU搭建嵌入式開發環境學習Linux

安裝依賴軟件 作者的使用的是ubuntu22.04版本。 sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build sudo apt-get install git-email sudo apt-get install libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libbz2-d…

JavaSE--基礎語法(第一期)

Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易于理解的語義。不僅如此,Java還是一個有一系列計算機軟件和規范形成的技術體系,這個技術體系提供了完整的用于軟件開發和 跨平臺部署的支持環境,并廣泛應用于嵌入式系統…

基于Docker的ElasticSearch、Kibana服務搭建并開啟用戶鑒權

🏷?個人主頁:牽著貓散步的鼠鼠 🏷?系列專欄:云原生與服務部署專欄 🏷?個人學習筆記,若有缺誤,歡迎評論區指正 目錄 1. 前言 2. 服務搭建 2.1. 部署ElasticSearch 2.2. 部署Kibana 3. …

安全態勢管理的六大挑戰:態勢感知

德迅云安全鑒于如今的安全威脅不斷變幻,企業對實施態勢管理策略至關重要,可以讓安全團隊根據需要進行安全策略的動態調整。如果企業在研究構建態勢感知管理,需要特別關注以下六個方面的挑戰。 如果企業正在使用一個或多個平臺,那么…

java為什么main方法是主程序入口?已回答

答: 其實是C語言程序員規定的main,java程序才能通過main來進入程序,java程序是通過jvm虛擬機來運行的,其實main方法是可以修改的,C程序員來規定是main方法來進入主程序,還是其他方法進入主程序,…

IS-IS鏈路狀態數據庫

原理概述 一個OSPF鏈路狀態數據庫是若干條LSA的集合。與此相似,一個IS-IS鏈路狀態數據庫是由若干條LSP的集合。與OSPF鏈路狀態數據庫不同,IS-IS鏈路狀態數據庫有Level-1和Level-2之分。 在IS-IS協議中,每一條LSA都有一條剩余生存時間、一個…

[力扣題解] 417. 太平洋大西洋水流問題

題目&#xff1a;417. 太平洋大西洋水流問題 思路 代碼 (1) MyMothed // 符合條件的點 : 既可以到達左或上邊界&#xff0c;也可以到達右或下邊界&#xff1b; class Solution { private:int dir[4][2] {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};vector<vector<int>&g…

safetensors介紹

1 介紹 safetensors 是 Huggingface 推出的一種可靠、易移植的機器學習模型存儲格式&#xff0c;用于安全地存儲 Tensor&#xff0c;而且速度很快&#xff08;零拷貝&#xff09;。 safetensors 格式結構&#xff1a; 8 bytes&#xff1a;一個無符號的整數&#xff0c;表示…

Dubbo源碼及總結

Springboot整合Dubbo啟動解析Bean定義 根據springboot啟動原理&#xff0c;會先把啟動類下的所有類先進行解析bean定義&#xff0c;所以要先EnableDubbo這個注解&#xff0c;再根據這個注解里面的注解&#xff0c;可以知道import的兩個類DubboComponentScanRegistrar和DubboCo…