網絡遊戲服務器

http://www.360doc.com/content/11/0511/11/110467_115916814.shtml

由中國最大的IT技術社區CSDN聯合美國權威IT技術媒體CMP集團舉辦的國內權威頂級軟件技術大會——“2007 軟件開發2.0技術大會”(SD2C)已經完美閉幕。在本次大會上,網易技術研發經理、《大話西遊》、《夢幻西遊》、《網易泡泡遊戲》主力開發者雲風爲聽衆講解了網易網絡遊戲服務器的構架。

一。引擎三大部分

基於 freebsd 的服務器
跨平臺的客戶端
二進制跨平臺
支持 Win32 MacOs Linux Freebsd
3d 部分基於 openGL
C 語言編寫底層、邏輯部分動態腳本語言
開發用相關工具
跨平臺命令行工具
Windows 下的視覺編輯工具

二。服務器的設計
底層全部由 C 語言編寫
邏輯層語言無關
類 COM 的模塊化設計
多語言混合編程
多進程單線程結構
服務器組內各進程功能有明顯的層次劃分
數據和邏輯分離

三。服務器羣
單一登陸點做進入系統的認證
全局數據庫僅保存用戶身份信息
不保持常連接
玩家可以在整個大世界中發生聯繫
物理上玩家分屬不同服務器組管理
用戶數據庫各自獨立,無須實時交互
虛擬世界中的距離即物理世界上的距離

四。服務器組間消息傳遞
避免交互性協議
遊戲設計上考慮遠程通訊的時間差
允許數據複製,並考慮多個副本相遇時的處理
每組服務器有唯一的數據輸入輸出點
海關服務
玩家的交互受遊戲設計的限制
限制是爲了更豐富的可能性
虛擬世界的戰爭、貿易以及資源分配

五。外部連接處理
多個外部接入點
國情問題:電信網通問題
特別通道:用於管理人員進入
組播
分組管理的問題
心跳控制
流水線作業
時間控制
錄象回放調試(監督數據合法性)
聊天信息分離
利用廣播服務器減低負載
廣義聊天信息

六。時間校對
校對玩家機器和服務器組的時間
防止時間作弊
估算消息發生時刻,更流暢的完成交互動作
精確保證時間的一致性
NTP 協議的問題
Client 的不合作(區分惡意和無意)
服務器組間的時間校對
心跳控制

七。數據服務
唯一的數據儲存點
使用本地文件系統
使用簡單文本結構
使用簡單的交互協議
物品發放服務
虛擬物品的控制
數據監控和備份

八。開發經驗和教訓
曾經追求大一統的設計
過分信賴 C++
設計模式濫用
數據應當文本化
應將每單個任務足夠簡化
不爲尚不存在的需求做設計

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章