1. 程式人生 > >記一次Minecraft遊戲伺服器搭建實踐經歷

記一次Minecraft遊戲伺服器搭建實踐經歷

Minecraft簡介

Minecraft是一款沙盒遊戲,整個遊戲沒有劇情,玩家在遊戲中自由建設和破壞,透過像積木一樣來對元素進行組合與拼湊,輕而易舉的就能製作出小木屋、城堡甚至城市,玩家可以通過自己創造的作品來體驗上帝一般的感覺。在這款遊戲裡,不僅可以單人娛樂,還可以多人聯機,玩家也可以安裝一些模組來增加遊戲趣味性。
Minecraft幾乎不包含任何目前流行的遊戲元素。Minecraft使用Java編寫,具有極強的適應性,而且功能強大,整個遊戲畫面就像回到了上個世紀,看上去各種模糊和馬賽克,就連人物也是一個方塊盒子而已,但是卻可以給玩家帶來像是玩樂高積木一樣的永久樂趣。

需求分析:為了使玩家不再孤獨地生存在我的世界裡,我們可通過伺服器搭建遊戲聯機平臺來讓我們共同在一個世界裡玩耍。

配置

下面開始具體的伺服器端搭建。

伺服器選配

本文章採用阿里云云伺服器 1 vCPU 1 GB (I/O優化);ecs.t5-lc1m1.small 5Mbps (峰值)進行實驗配置。若應用於實際的遊戲聯機場景中,推薦採用“計算網路增強型例項規格族 sn1ne”(更多例項可參考:雲伺服器ECS例項規格族)。
_
有關伺服器選配可參考:雲伺服器ECS,本文不再贅述。
此伺服器可承載約2-5人同時線上。

新增安全組規則:埠範圍全部開放。(可參考文件:新增安全組規則

安裝JAVA環境

MC是用Java寫的就不再贅述了,由於伺服器端的MC是一個jar包,我們在配置之後通過執行jar包來開啟伺服器端,同時我們在PC上開啟後通過IP地址即可搜尋並進入伺服器。所以我們首先要先安裝Java。一般來說預設安裝的是有Java 8的,如果沒有可以按照下面的方法來安裝:
1.驗證是否安裝Java

,如果安裝就檢視版本

java -version

下面是博主的Java版本:

[[email protected] ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

如果不是Java 8或者沒有安裝,就用下面的方法安裝:

sudo yum install java-1.8.0-openjdk

下載Minecraf伺服器端

本文章採用Mineraft 1.13 的伺服器端版本,伺服器端版本需與客戶端版本匹配,否則將會無法連線

所以不同的版本對應著不同的伺服器端,所以我們要下載正確的版本。如何看MC版本呢,一般來說MC遊戲左上角就寫的有了,例如:Mineeraft 1.13。如果沒有的同學可以啟動MC遊戲進入到開始介面即可。

_
輸入命令安裝1.13版本Minecraft伺服器端:

sudo wget https://launcher.mojang.com/mc/game/1.13/server/d0caafb8438ebd206f99930cfaecfa6c9a13dca0/server.jar

其他伺服器端版本可參考:

sudo wget https://s3.amazonaws.com/Minecraft.Download/versions/版本號/minecraft_server.版本號.jar

啟動Minecraft

上面的jar包下載完成之後,我們稍作準備就可以開啟了!這裡還是提醒一下對Java不熟悉的同學。我們知道可執行檔案是.exe。雙擊直接執行,那麼Java可以生成jar包,就是.jar檔案,在Windows上也是可以雙擊執行的。而我們下載的這個MC伺服器端其實就是已經做好的jar包,所以我們在“雙擊”啟動之前還是需要一些配置,以及用Linux的方法來啟動。

首先,來看一下記憶體的使用,輸入命令:

free -h

我們可以看到當前記憶體的使用情況,下面是我輸入該命令後的顯示:
_
根據free欄的記憶體數,我們可以確定該給MC伺服器分配多大的記憶體(當然越多越好啦)。
之後,我們就可以使用命令來執行MC伺服器了:

sudo java -Xms[初始啟動分配記憶體] -Xmx[最大分配記憶體] -jar [jar包所在路徑]/minecraft_server.[版本號].jar nogui

以本實踐為例:

java -Xmx666M -Xms1024M -jar server.jar nogui

啟動成功

上面的命令輸入完成,理論上我們就能啟動了!這裡注意,我們現在如果在Windows下,等於說已經進入到這個程式中了,所以不能再使用Linux命令,等待引數由0%一直到100%就啟動完成啦!下面給出博主啟動完成的後幾行顯示:
_
這樣就啟動成功了,不要有顧慮,直接啟動PC端連線伺服器進入MC吧!(啟動失敗的情況下面有一個解決方法)

啟動完成後當前這個視窗就可以不用管了。博主使用的Xshell,直接最小化。聯機完畢之後其實直接關了Xshell就行,自動就斷開了,當然也可以輸入Ctrl+C,直接終止程序

意外狀況處理

在進行安裝的過程中,並不總是一帆風順的,往往會出現意外狀況。下面給出一些常見的意外狀況解決方法。

啟動失敗-同意協議

我們在第一次執行完jar包後,無論是否執行成功,都能發現當前目錄下多出了一堆檔案,執行失敗的時候其實就是配置除了一點問題。我們在當前目錄找一下檔案:eula.txt。
_
我們需要對這個檔案進行一下小編輯:

vi eula.txt

按“i”鍵進入編輯模式,找到這一行:

eula=false

將false改成true即可。
退出vi編輯器:
1.按 esc
2.輸入 :wq
這樣就同意了那個“終端使用者許可協議”。

PC端連線失敗

這裡是上面都啟動成功之後,PC端也搜尋到了伺服器,但是就是連線失敗,這樣我們可以修改配置,先在jar包目錄下找到檔案server.propertices 並編輯:

vi server.propertices

找到這一行:

online-mode:true

將true改為false 即可。

遊戲配置

關於MC伺服器端的配置,我們就需要修改這個檔案了,同樣在jar包所在目錄下:

vi server.propertices

可以看到,裡面是對當前你建立的這個遊戲的各種配置,像選擇模式啦、世界生成的種子啦、是否有村民啦等等,就像PC建立世界時的各種選項一樣。這裡就不再介紹了,需要修改的同學自行百度。

Shell指令碼啟動

我們如果一直使用上面那一句啟動的話是不是非常麻煩!每次都要複製貼上,那麼我們可以寫一個簡單的Shell指令碼,放在jar包所在目錄,每次啟動的時候直接啟動指令碼就能進入遊戲了,完全不需要Shell程式設計基礎,直接複製貼上即可!

vi start.sh

進入編輯模式後輸入程式碼:

#!/bin/sh
java -Xmx666M -Xms1024M -jar server.jar nogui;

這其實就是讓指令碼幫你搓啟動命令,而你僅需要執行一下指令碼即可:

bash start.sh

最後,在PC端新增Minecraft伺服器配置(Server name任意;Server Address填寫阿里雲伺服器的公網IP),並連線。開始享受Mineraft聯機的樂趣吧!
_

後期運維

可以看到(如下圖),選擇 1 vCPU 1 GB (I/O優化);ecs.t5-lc1m1.small 5Mbps (峰值)的配置,並不滿足多人實時線上的流量請求。因此,在選配雲伺服器中,應選擇2 vCPU 4 GB配備5-10Mbps頻寬或以上最為合適,可承載20-40人同時線上。
image
在後期,配備阿里雲負載均衡SLB和彈性伸縮等產品,可實現在突發大流量、高併發的場景下的服務支援,使玩家擁有更好的遊戲體驗。