- 百萬在線:大型游戲服務端開發
- 羅培羽
- 867字
- 2021-09-17 17:04:51
1.1 每走一步都有事情發生
從玩家的角度來看,一款網絡游戲大都會涉及如下流程:
1)打開游戲,客戶端向服務端發起網絡連接。
2)玩家輸入賬號密碼,經過驗證后,進入游戲場景。
3)操作交互,比如行走、打怪、購買道具等。
4)下線退出游戲。
在此過程中,藏在幕后的服務端做了很多事情,那究竟做了哪些?此服務端系統又是如何開發的呢?下面一起來看看。
1.1.1 走路的五個步驟
從玩家的視角來看,整個游戲系統如圖1-2所示,多個客戶端通過網絡與服務端相連,服務端處理網絡請求,存儲角色數據。

圖1-2 服務端像個黑盒子
說明:為了統一術語,本書中“玩家”代表玩游戲的人,“客戶端”代表玩家接觸的游戲程序,“角色”代表玩家控制的游戲角色。
客戶端和客戶端之間通過服務端間接通信。例如在MMORPG中,角色A移動一步,玩家B會在自己屏幕中看到角色A的位置變化,“走路”的背后至少發生了表1-1所示的5件事情。
表1-1 “走路”背后發生的事情

這5件事情如圖1-3所示,其中標注的①到⑤分別對應表1-1中的各個步驟。

圖1-3 位置同步的5個步驟
1.1.2 服務端視角的游戲流程
在服務端的“眼里”,“走路”只是它生命里的一小部分。游戲啟動,每個客戶端都會有連接、登錄中、游戲中、登出中和退出五個階段。如圖1-4所示,圖中縱軸代表客戶端的狀態,方框表示該狀態下執行的操作。
連接階段:客戶端發起網絡連接,雙端可以通信,但服務端還不知道玩家控制的是哪個角色。

圖1-4 服務端視角下的游戲流程
·登錄中:客戶端發送登錄協議,協議中包含賬號、密碼等信息,待檢驗通過后服務端會將網絡連接與游戲角色對應起來,并從數據庫中獲取該角色的數據(比如金幣數量),此后才算登錄成功。
·游戲中:雙端互通協議,玩家可以移動、打怪、購買道具。1.1.1節介紹的位置同步就是發生在這個階段。
·登出階段:玩家下線,服務端把角色的數據保存到數據庫中。對于保存角色數據的時機,不同的游戲會有不同的處理方式。比如,有些游戲采用定時存儲的方式,每隔幾分鐘把在線玩家的數據寫回數據庫;有些游戲采用下線時存儲的方式,即只有在玩家下線時才保存數據。
了解了這些知識后,如果想開發一個游戲服務端,該從哪里著手呢?
- 區塊鏈架構與實現:Cosmos詳解
- Web開發的貴族:ASP.NET 3.5+SQL Server 2008
- Magento 1.8 Development Cookbook
- Python機器學習算法與實戰
- UVM實戰
- Babylon.js Essentials
- INSTANT Silverlight 5 Animation
- 現代C:概念剖析和編程實踐
- Mastering Android Studio 3
- WordPress Search Engine Optimization(Second Edition)
- Java Script從入門到精通(第5版)
- Kotlin入門與實戰
- Web前端開發全程實戰:HTML5+CSS3+JavaScript+jQuery+Bootstrap
- JavaWeb入門經典
- C++游戲設計案例教程