前言
想體驗經典Q版西游霸服快樂嗎?想體驗滿級VIP的尊貴嗎?想體驗一招秒殺的爽快嗎?各種極品裝備、翅膀、寵物通通給你,就在夢幻西游!
本文講解夢幻西游H5游戲的架設教程,想研究H5游戲如何實現,體驗游戲中秒天秒地秒空氣的一定不要錯過。
我架設的夢幻西游 H5 鏈接和源碼請關注我的公眾號 echeverra 發送“夢幻西游”獲取。后台 GM 發送“夢幻西游GM”獲取,游戲長期維護,快來體驗一下吧。
如果你對H5游戲感興趣,推薦另外幾款我架設的H5游戲:H5游戲整理匯總,歡迎來玩耍~
夢幻西游游戲截圖:
架設
1.架設條件
夢幻西游架設需要准備:
- linux服務器,推薦centos7/8版本,可以考慮阿里雲騰訊雲等。
- 游戲源碼,關注我的公眾號 echeverra,發送“夢幻西游”獲取。
游戲源碼中已去除廣告,並修復部分功能。
2.安裝寶塔及環境
寶塔是一個服務器運維管理軟件,安裝命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安裝完后,按照提示信息登錄寶塔(如果無法訪問可能是由於服務器沒有開放8888端口,參考第5條開放端口),並在寶塔軟件商店中搜索以下軟件安裝:
- web服務器:nginx 1.20
- 數據庫:mysql 5.6
- 編程語言:PHP 5.6、PHP 7.4
- 數據庫管理工具:phpMyAdmin 4.9
3.上傳源碼
拿到源碼后解壓會得到sql和xyh5兩個文件,將xyh5壓縮文件通過寶塔上傳到根目錄(如果寶塔禁止上傳到根目錄,可上傳其他路徑后剪切粘貼到根目錄)。
上傳成功后解壓到根目錄
解壓完成后,通過命令授予777權限
chmod -R 777 /home/server
chmod -R 777 /www/wwwroot/xy
安裝lua腳本
cd /home/soft
tar -zxvf lua-5.1.5.tar.gz
cd lua-5.1.5
make linux test && make install
安裝lua相關依賴
yum install readline-dev readline-devel unzip
安裝模塊管理工具luarocks
cd /home/soft
tar -zxvf luarocks-3.0.4.tar.gz
cd luarocks-3.0.4/
./configure --with-lua=/usr/local --with-lua-include=/usr/local/include
make && make install && make bootstrap
luarocks install luasocket
4.導入數據庫
通過寶塔修改數據庫root密碼:echeverra(涉及到安全問題,建議修改成自己的密碼,對應源碼中的echeverra
也需替換成自己的密碼,推薦使用webstorm或vscode IDE全局搜索並替換)。
開放數據庫遠程權限:
mysql -u root -pecheverra
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'echeverra' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
創建以下數據庫:
- account
- chargeserver
- gameserver(字符集UTF-8,排序規則utf8_unicode_ci)
- gmserver
- oaglobal
- operationanalysisserver
- worldserver
其中operationanalysisserver
名稱過長,在寶塔界面會創建數據庫失敗,可以在phpMyadmin中創建。
建議所有數據庫都按照字符集UTF-8,排序規則utf8_unicode_ci創建,否則會出現游戲創建角色失敗的錯誤。
上傳sql文件夾下的數據庫文件並導入,以account為例(用戶名密碼默認即可,代碼中使用root賬戶)。
5.開放端口
需要開放的端口:
- 寶塔:8888
- phpmyadmin:888
- mysql:3306
- 游戲相關端口:80、10001、11001、12001 、8001、8004
服務器開放端口,以阿里雲開放10001端口為例,其他端口按照同樣方式添加,其他服務器也在安全里設置。
寶塔開放端口,同樣以10001端口為例:
如果不開放端口,服務會無法訪問,如果對安全沒什么要求,可以直接開放1-65535端口。
6.修改IP
源碼中的IP是我自己虛擬機的,需要替換成你自己的服務器IP。
需要修改IP的文件:
/www/wwwroot/xy/cdn/preload.js
/www/wwwroot/xy/cdn/index.min.html
/www/wwwroot/xy/cdn/serverlist.php
/www/wwwroot/xy/cdn/serverlist.json
舉例修改preload.js
文件,其他文件修改方式相同。
找到preload.js
雙擊打開編輯模式,按Ctrl+F搜索39.105.134.68,找到后替換成你的服務器IP並保存。
7.創建游戲網站
添加游戲網站才能訪問游戲,網站域名寫你的IP,根目錄為/www/wwwroot/xy/
,PHP選擇5.6版本。
8.開啟游戲
以上都執行完畢,那么就到了激動人心的啟動游戲啦,啟動命令:
cd /home/server
sh start.sh
啟動成功后查看下端口10001、11001、12001 、8001、8004是否監聽中,少任何一個都無法成功啟動游戲。
netstat -lntp
訪問游戲鏈接:http://IP/cdn/
,使用你服務器的IP。
輸入用戶名密碼,點擊一鍵注冊或登錄,等待資源加載完成,選擇分區(只有一個區),進入游戲,Nice~
如果加載到95%一段時間不動,說明10001端口沒有在監聽中。
9.GM工具
游戲GM工具訪問鏈接:http://IP/gm/gm.php
,賬號admin,密碼123456,可以給游戲玩家授權GM功能,同樣也可以給玩家充值發送物品。
刷新游戲后郵件查收。
10.關閉游戲
關閉游戲執行命令:
cd /home/server
sh stop.sh
后續
1.修改GM賬號
修改GM用戶名密碼需要修改文件/www/wwwroot/xy/gm/config.php
。
修改$admin
和$gmcode
即可修改GM的賬號和密碼,需要注意的是$key
不可隨意修改,如果修改需對應調整gmkey
的值才能通過驗證,而gmkey
的值則是通過md5($key)
得到。
2.授權源碼分析
GM工具可以對游戲玩家進行GM授權,授權有兩種,vip1充值只能進行元寶充值,vip2充值郵件可進行元寶充值和物品發送。那么在代碼中它是如何實現的呢?我們打開/gm/adminquery.php
文件。
首先會通過$uid.$pwd.$key
三個字段拼接后用md5加密,然后將用戶$uid
作用key,$pwd
、$vip
、$qu
作value以數組形式保存到文件中來儲存vip用戶的信息。
打開vip1.json可以看到保存的數據:
同樣,被授權玩家通過http://IP/gm/
打開玩家GM登錄同樣會讀取vip1.json
文件進行校驗該用戶是否為vip用戶,所以玩家登錄GM的密碼和GM賬號的密碼一致為123456,並非玩家賬號的密碼。
3.使用域名訪問
有好奇的小伙伴會發現我架設的游戲鏈接是http://game.echeverra.cn,並不是IP,這是因為之前的搭建的大天使之劍使用的就是IP形式,寶塔提示重復,所以使用的域名形式,而且域名看起來更加專業嘛~
改成域名訪問也很簡單,需要修改以下幾處:
修改文件:
/www/wwwroot/xy/cdn/preload.js
/www/wwwroot/xy/cdn/index.min.html
需要注意的是,使用域名路徑后的/cdn/
也省略掉。
接下來修改游戲網站,填寫域名,根目錄為/www/wwwroot/xy/cdn/
。
因為游戲路徑到/cdn/
無法通過該域名訪問上一級目錄/gm/
,所以我們還需要建一個GM的域名gm.echeverra.cn
創建GM網站,目錄為/www/wwwroot/xy/gm/
,訪問鏈接:http://gm.echeverra.cn。
4.清空角色背包
游戲中難免會出現GM工具發送物品過多甚至爆號的情況,這時候可以通過數據庫清空角色背包物品來解決。
-
首先要清空背包的角色,退出游戲。
-
通過寶塔,打開菜單數據庫中的phpMyAdmin工具,並登陸。
-
找到庫
gameserver
,點擊上方SQL菜單,輸入sql語句,其中賬號替換為你的即可。` SELECT characterid,account FROM `character` WHERE `account` = '賬號' `
點擊執行后,記下查詢到的characterid
字段值。 -
再輸入sql語句,其中
characterid
替換為你上一步查詢到的即可。DELETE FROM `item` WHERE `characterid` = characterid
點擊執行,就成功刪除了該角色的背包物品。
再次登陸游戲,你就會發現,角色的背包就空空如也啦~
5.關於游戲BUG
夢幻西游H5游戲已經試玩一段時間,發現存在戰力溢出重大BUG,總戰力超過42.9億就會溢出,戰力又會重置變為很小的值,我首先想到的就是數據庫戰力字段設置的是int類型,因為int類型的上限正好是4294967295,超過42.9億多就無法正常存儲,查看數據表果然是int類型。所以我將所有int(10)類型的字段都改為了bigint(19),但經過測試,bug還在,應該不只是數據庫的問題。
於是我開始研究源碼,因為后台核心部分的代碼進行了加密,所以我只能修改配置xml文件,首先我想修改各屬性對應的戰力系數,對應文件zhandouli.xml ,將各屬性對應戰力系數減少5倍,測試發現,激活神兵神甲寵物的戰力依然提升之前的總戰力,只是自身戰力值變低,存在bug。
既然不能修改戰力系數,那索性就修改各模塊的級數上限,通過研究游戲中戰力的分布,我發現寵物和星圖的戰力占比最大,其他戰力比較高的部分也一同調整:
- 修復等級上限 role.xml
- 修改屬性丹數量上限 eduitem.xml
- 修改寵物階級等級、寵物升級等級上限 pet.xml
- 修改星盤等級上限 chart.xml
- 修改圖鑒等級上限 picture.xml
- 修改神兵神甲屬性值,階級上限 equip.xml
- 修改注靈等級上限 eduNote.xml
- 修改丹葯使用數量上限 danyao.xml
修改完測試以上模塊的戰力確實小了,戰力總和應該能控制在20億多,但是又出現另一個bug,連續快速點擊升級會超出修改的等級上限,游戲crash掉...就,很崩潰...
求助各大論壇,還有某寶上該游戲架設的商家,同樣存在該bug,並未修復。
后來也想過,西游類H5游戲那么多換一個就好了,架設了好幾個都沒有啟動端口服務失敗了,后來發現原來centOs 8不行,只能centOs 7版本服務器,這里還是要吐槽下游戲架設,環境真的很重要,php版本、Linux版本不一致就很有可能是架設失敗的元凶,自己吃虧了很多回。再說回架設的其他西游類H5游戲,明顯自己的服務器很吃力,負載CPU都是滿的,游戲體驗很差,所以只能放棄了。
很遺憾花了很長時間也沒能修復好這個游戲,奈何工作生活精力有限,我不能再這上消耗太多的精力,如果身為大佬的你修復了這個bug,請一定一定聯系我...
6.游戲BUG修復
喜大普奔,不知道奮戰了多少個日日夜夜,我終於把BUG修復了,當然,其實就是換了個思路,游戲做了閹割版,但是並不影響游戲體驗,Nice~
修改內容:
- 調整星盤等級;
- 調整圖鑒等級;
- 調整寵物進階等級;
- 調整神兵神甲等級;
- 調整結婚姻緣等級;
- 調整屬性丹數量上限;
- 調整妖王副本等級限制;
- 調整西游之路等級限制;
- 其他游戲相關數據優化;
雖然還在測試中,但是就目前的階段來看,戰力上限大概控制在20億左右,歡迎來我搭建的游戲中體驗。由於修復該BUG花費了很大的心血,修復版我暫時不公開,先在手里捂一會,哈哈,有需要請單獨聯系我。
7.游戲再次優化
我又又又又對游戲進行了優化和修復,對這個游戲情有獨鍾吧。本次優化了人物等級(180->300)、裝備等級(180->250)、鍛造等級(180->200)以及寵物等級(180->200),優化了物品數量上限,修復了一些概率性的報錯,游戲基本已經很穩定了,歡迎大家來玩哦~
這個游戲我會一直一直維護下去的~
以上就是夢幻西游所有的圖文架設教程,希望對你有所幫助,如有問題可通過我的博客https://echeverra.cn或微信公眾號echeverra聯系我。
你學“廢”了么?
(完)
文章首發於我的博客 https://echeverra.cn/xyh5,原創文章,轉載請注明出處。
歡迎關注我的微信公眾號 echeverra,一起學習進步!不定時會有資源和福利相送哦!