游戲私人服務器搭建怎么做(編譯過程和環境部署教程詳解)

博主:yunbaotangyunbaotang 2024-02-26 457 0條評論
摘要: 現代的電子游戲,不管是端游還是手游,網絡游戲還是單機游戲,或多或少都會需要一些網絡功能。從驗證正版,到登錄注冊,再到多人交互,實時對戰,都需要服務器端的支持。游戲服務器端,是一個長...

現代的電子游戲,不管是端游還是手游,網絡游戲還是單機游戲,或多或少都會需要一些網絡功能。從驗證正版,到登錄注冊,再到多人交互,實時對戰,都需要服務器端的支持。

游戲服務器端,是一個長期運行的程序,還要服務于多個不定時,不定點的網絡請求。主機測評&技術分享來和小伙伴們講講,一個游戲服務器從游戲邏輯方面可以分為幾個模塊?

  • 注冊和登錄
  • 網絡協議
  • 數據庫
  • 玩法邏輯
  • 其他通用模塊

注冊和登錄

這點和網站后臺開發有點不同,因為游戲帳戶的注冊都是由第三方平臺提供SDK的,游戲開發過程中只要開發登錄邏輯即可。游戲開發后續決定使用哪個運營平臺的時候才會去考慮接收平臺提供的SDK。登錄流程可以參考以下這個時序圖:

網絡協議

網絡協議在這里不是指TCP或HTTP這些,或者在這之上的應用層協議。這里的網絡協議是用于游戲中的客戶端和服務器交流的。其中用的最多的就是Google的協議緩沖區了,也有直接用 JSON 或者 MessagePack 的。

數據庫

早期的游戲服務器是沒有使用數據庫的,玩家的數據直接存文件的,一個玩家一個數據文件。

現代的游戲服務器都配備了數據庫,是因為游戲越來越復雜,數據量也越來越多,而且采用數據庫也方便對數據的管理和備份。

數據庫的選取一般跟游戲項目無關,跟開發者的習慣和經驗有關。市面用的游戲用到的數據庫大多是下面這幾種:

  • MySQL
  • Mongo
  • DBRedis

數據庫在游戲服務器中的作用主要是落地玩家和玩法相關的數據,游戲開發中并不會依賴于數據庫是關系型數據庫還是非關系型的數據。一般建議采用MongoDB作為游戲數據庫,因為在游戲開發過程中用到的數據結構用的最多的就是dict類型,跟MongoDB的數據結構(采用的是BSON )類似。而且版本交替的過程中,不像SQL一樣需要去修改表結構。用作為內存數據庫,實際開發過程中都是結合MySQL來使用的比較多。

除了上面介紹的這些數據庫,還需要了解下內存緩存(也有稱為內存數據庫的)這個概念。這樣的玩家登錄成功后,玩家的數據是要緩存到內存中的,方便快速對數據的修改。線后也不會立即清除緩存,方便短時間內重登可以快速讀取到玩家的數據。

玩法邏輯模塊

下面是游戲開發中常見的玩法模塊,一般的游戲都會包含這些玩法。可能不同的游戲,玩法名字會有所不同。

背包系統裝備系統英雄系統任務系統推圖副本戰斗系統活動管理內***商店充值(外***商店)單人競技場多人競技場公會系統好友系統聊天系統郵件系統新手指引紅點管理

其他通用模塊

下面這些模塊是輔助開發上面介紹的玩法邏輯模塊用的,例如聊天需要用到敏感詞檢測,好友或者公會搜索會使用到模糊搜索。

定時器事件分發離線消息本身批處理數量敏感詞檢測模糊搜索游戲日志系統運營日志系統

工具類模塊

工具類模塊在游戲開發中也是必不可少的,下面列出了常用的一些工具:

  • Excel配置導表工具
  • 通用指令
  • 測試機器人
  • 服務器打包部署工具

最常見的就是Excel配置導表工具了,是用作將配置配置的Excel表格轉換成代碼中能方便使用的數據結構。諸如Python的字典結構,Lua的表結構等等。

GM指令主要是用來做玩法測試的,或者新建一個了一個賬號,不用從頭開始練級,可以直接用指令修改等級和分發道具。

測試機器人主要是在服務器開發過程中使用的,因為在開發的過程中,客戶端和服務端只是先商定了交互協議。在客戶端還沒有制作完需求功能的時候需要使用測試機器人來測試自己的代碼邏輯,例如 Postman 這種測試接口的工具。測試機器人還有另外一個用途就是模擬正常玩家來壓測服務器。

服務器打包部署工具也是必要的,一般就是打包和加密游戲服務器代碼的腳本。插入一鍵部署的腳本可以更方便運維他們更換的部署服務器。

游戲后臺相關模塊

后臺一般是運營團隊開發的。下面添加了幾個跟游戲服務器有關聯的后臺模塊:

公告系統郵件系統活動系統禮包系統運營日志

公告一般有兩種,一種是用于停服維護的時候在登錄界面顯示的公告,一種是用于游戲中滾動顯示的公告。根據游戲類型決定需求的,有些游戲沒有滾屏公告的。

郵件系統是用于客服的全服郵件或者單人郵件給玩家用的,游戲服務器提供對應的接口給后臺發郵件就行。

活動系統是用于運營商配置服務器活動開放時間用的。禮包系統是用于配置禮包兌換碼的。運營日志是用于查看游戲中輸出的打點日志的,做數據統計和分析用的。

游戲服務器引擎skynet介紹

skynet是一個輕量級的為在線游戲服務器打造的框架。如何使用可以參考官方的wiki ,后續課程的示例都是基于這套框架上實現的,可以把它比作于web開發框架里的 Openresty 或者燒瓶等等。

天網服務器引擎的特點:

  • 開源且作者持續維護
  • Actor模式
  • 多線程
  • 多進程,內置cluster最大化

skynet 開發環境搭建

下載引擎

打開桌面上的Xfce終端,先創建好工程目錄:

cd Code
mkdir server
cd server

下載引擎需要用到git,把skynet代碼克隆下來。

git clone https://github.com/cloudwu/skynet.git

完成后的工程目錄結構是這樣的:

編譯

進入到skynet目錄,執行make linux進行編譯操作:

運行演示

編譯成功之后,執行./skynet examples/config啟動服務器:

運行效果如下:

大功告成!一個開發環境就部署好了,關于游戲服務器的配置和環境有任何的問題,都可以私信同時再為大家分享一家服務器供應商致臻數據(zhizhenyun.com.cn),他家的服務器挺不錯的,不管是性能還是服務都很好,推薦嘗試,有月付測試,服務器也有獨立的控制面板,很方便,有任何需要指導和測評也歡迎給主機測評&技術分享留言哦!