關於遊戲服務端的搭建

  前一陣,一場突如其來的疫情,將我們都困在了家中,於是有了大把的時間,來做一些自己感興趣的事情。當然,是打遊戲咯。
  不過只是打遊戲,也太low了,完全不符合我們程序員的氣質,我們作爲網絡世界中的衆多締造者之一,僅僅扮演一個渺小的角色,未免太過無趣。於是,我想到自己搭建服務器給自己玩,做自己的神~哈,開玩笑的,其實是爲了更好的瞭解那些手遊端遊的運作機制啦,就搭建了幾款不同的遊戲,也算研究研究 常用架構吧。

準備工作

準備遊戲服務架構

  這些天,我下載了很多遊戲的服務架構,頁遊、手遊、端遊都有。看到裏面的配置和架構也都五花八門。總的來說,一般頁遊大多是AMP+JAVA,手遊遇到很多, JAVA+MongoDB,頁遊AMP+Erlang+RabbitMQ的組合。端遊就更加五花八門了,很多引擎或者自制腳本,使用的數據庫種類也很多,MongoDB、mysql、SQL Server等等,不同遊戲的架構選擇都不同。
  因爲我們自己肯定沒法寫出來一個完整的遊戲服務包,所以最理想的也是最簡便的方法就是使用別人已經寫好的現成的服務包,安裝配置即可(裏面坑巨多,免費分享出來的,完整性和質量就沒法苛求了),大部分修復下或者調整下也是能夠湊活跑起來的。
  不過倒也遇到很多問題,遊戲中有很多bug,例如這個任務流程過不去,那個點了沒反應,只能邊玩邊吐槽;還有個手遊架設好後,一直沒有報錯,就一直沒管他,運行3天后,有小夥伴說登錄不上,才發現服務器數據庫崩掉連接不上了,由於搭建好後就沒有關注監控這個服務器,甚至不知道是啥時候崩掉的,也就不知道爲什麼會崩,重新搭建連接完數據庫,之前玩的遊戲數據也就清空沒有(沒有設置實時備份數據庫),小夥伴們很是掃興,還好不是實際生產中,這我也很無奈啊。
  但總體下來,大家反應都是很不錯的,畢竟道具無限,人人都是大佬,也算無聊的假期大家一起有共同消遣了。

網絡環境

  因爲要自己開服務器,如果只是在本地電腦上配置,那其他小夥伴們就沒法連接進來,自己遊戲裏再NP也沒人分享可太悲哀了。所以,我們一定要連上外網,需要公網IP,纔可以供他人訪問。
  博主有一個aws的海外雲主機,還有一個騰訊雲的國內雲主機,雖然直接在雲主機上搭建可以直接解決公網IP的問題,不過這倆雲主機配置都不高,都是1C1G,擔心無法完美支撐服務跑起來(花錢升級配置是不可能的~)。於是初步決定在本地先將服務跑起來,用 專線隧道 打通本地電腦和雲主機的網絡,配置雲主機的反向代理,實現遊戲服務器公網搭建。做出規劃步驟如下

  • 本地搭建遊戲服務端
  • 用 專線隧道 打通本地主機和雲主機的網絡
  • 配置雲主機的代理轉發
  • 修改本地主機的遊戲服務監聽端口
  • 配置客戶端

正式搭建

本地搭建遊戲服務端

  因爲我搭建了很多不同類型的遊戲,且每一種其實方法步驟都不一樣,需要的配置和環境也都不同,遇到的問題也不盡相同,在這裏就沒法一一細說了,會在文末將我搭建成功的那些服務包都貼出來,有需要的小夥伴可以自行研究。

打通網絡

  可以參考我之前博客https://hewanyue.com/blog/2c6b894f.html架設隧道 。協議可以使用UDP,之前我用TCP總是被封掉。搭建好,建立連接後,其實就已經算是打通網絡了。
  在window cmd命令行或者linux的終端裏ping 10.8.0.1 就可以ping通雲主機了的。然後也可以嘗試用雲主機驗證 訪問本地10.8.0.6上面的http服務之類的。

配置雲主機反向代理

  雖然這兩臺機子間是聯通了,但是別人訪問你的雲主機的IP,並不能連接到你本地的服務器主機,所以我們需要在防火牆上配置轉發。
  例如本地服務器開啓的端口爲 12345,而我們想讓別人訪問雲主機的 54321端口就可以登錄我們的遊戲服務,需要填寫dnat 還有地址僞裝。代碼如下:

iptables -t nat -D PREROUTING -d 0.0.0.0 -p tcp --dport 54321 -j DNAT --to-destination 10.8.0.6:12345

  如果客戶端設置的鏈接協議是UDP,那就將tcp改爲UDP,若是不知道客戶端程序寫的鏈接方式到底是什麼,可以寫兩條將這倆都轉發了。不過如果不寫協議會報錯的。

[root@ip-172-31-39-115 ~]# iptables -t nat -D PREROUTING -d 0.0.0.0 --dport 54321 -j DNAT --to-destination 10.8.0.6:12345
iptables v1.8.2 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.

  如果不想改不同的端口,倒也可以簡單粗暴的,將訪問雲主機的所有數據統統轉發到本地,但這樣的話,雲主機的其他功能就都會受到影響,不建議這樣(雲主機上沒有其他服務倒也可以這樣)。
  還有記得防火牆開啓轉發功能,否則可能服務器的內網網卡收不到數據報文。

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

  有的遊戲,本地服務器還配有網站等等例如gm簡易工具,需要我們在外網也能訪問。可以設置nginx或者apache的反向代理轉發,比較簡單,這裏就不細說了。

修改本地主機的遊戲服務監聽IP端口

  出於安全考慮,很多遊戲服務配置的時候,相互之間都是,配置了訪問權限的,我下載的大部分遊戲都是監聽在本地127.0.0.1迴環網卡的,如果我們不修改監聽地址,從我們構建來的專線的訪問數據是沒有權限訪問我們的服務的,所以我們需要將監聽地址修改爲10.8.0.6專線網卡的ip上。或者改爲0.0.0.0(不建議,有可能端口衝突,造成服務起不來或者報錯)。
  一般php或者數據庫那些地址就不用改了,因爲還是從本地讀取的。到時候捋一捋就可以確保正確連接了。

配置客戶端

  因爲一般需要連接的服務器IP端口,都是寫死在客戶端中的,我們修改了服務器的地址,所以還要在客戶端中修改爲正確的ip地址端口,纔可以鏈接(頁遊不用,頁遊沒有客戶端)。
  不同遊戲修改方式和路徑都不相同,安卓端可以用APKIDE,蘋果ipa的可以直接將後綴改爲rar,解壓後修改對應ip,這裏就不細說了。歡迎就具體遊戲來討論。

附本人搭建測試成功的遊戲及網盤分享

  • 手遊劍俠情緣
    遊戲預覽:(隨便拍的,手邊沒有安卓機,用的電腦模擬器)

劍俠情緣手遊

安裝vmware的centos虛擬機,裏面是java程序。
  下載地址
  劍俠情緣VM一鍵端
鏈接:https://pan.baidu.com/s/1D0qOO7XcK2K93BLXCsw-fA
提取碼:4371

  • 手遊藍月傳奇
    遊戲預覽:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
      這個是在windows環境下運行的,用到PHP、nodejs、mysql、Erlang+rabbitMQ
      下載地址
      【藍月傳奇】一鍵端+修改教程+全功能GM網頁後臺+外網教程
    鏈接:https://pan.baidu.com/s/1wjfmMWaTf2YxZ0rxjCtknw
    提取碼:6c8m

  • 手遊七雄爭霸
      JAVA遊戲,windows環境搭建,用到了memcached、nodejs、PHP
      下載地址
    鏈接:https://pan.baidu.com/s/1o-pZb4TWKZWf3vmGk70bfQ
    提取碼:78ws

  • 手遊 幽冥傳奇
      Windows環境運行,用的戰神引擎。
      下載地址
    鏈接:https://pan.baidu.com/s/1mLgic84xPkBhkrOiJqx4ZQ
    提取碼:ja6l
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 頁遊 傳奇世界
      H5遊戲,也還不錯。
    鏈接:https://pan.baidu.com/s/1Zv1vMoD9l1cegh3FRghaXA
    提取碼:7057

  • 頁遊 赤月傳說
    鏈接:https://pan.baidu.com/s/1S1RW6JAmR1Xx063XzoJTOA
    提取碼:i168

  • 端遊 無極聯盟傳奇
      Windows環境運行,用的GOM引擎。
      這個雖然特效還有模式都還不錯,不過是個殘端,裏面沒有提供pak密碼,不建議安裝。
    下載地址
    鏈接:https://pan.baidu.com/s/13OOZxWbESveJLXmeS-w1Bw
    提取碼:7nom

  • 端遊 三國戰紀OL(第二季)
      Windows環境運行,用的GOM引擎。這個可以完美開服,還算不錯。
    鏈接:https://pan.baidu.com/s/12x4Kvb-_Pipn6Qs73JkBPw
    提取碼:xb6r

  很多遊戲搭好之後,玩了也還不錯,不過忘記保留截圖了。還有一些還沒上傳,等日後再分享。歡迎交流討論。

發佈了43 篇原創文章 · 獲贊 52 · 訪問量 9166
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章