這份代碼是我偶然從朋友那里得來的,他說也是從網絡上獲取的。最初的服務器端代碼是linux版本的,但被一位技術高超的大神修改為可以在windows上運行。如果無意中侵犯了您的版權,請聯系我刪除。值得慶幸的是,這份代碼中的大部分方法和接口都是跨Windows和linux平臺的,因此Linux開發者們無需感到不適。我們學習這份代碼,更多的是要掌握其思路和原理,而非糾結于細節。
使用visual studio打開游戲主solution文件后,界面如下圖所示:
這里總共有10個工程項目,模塊較多。我們該從哪里開始呢?我們先來看一下源碼目錄:
我們進入Server目錄,發現如下一個文件:
我們打開看看內容:
cd Binx64Release start.bat
這段代碼會進入Binx64Release目錄,并執行另一個start.bat。我們進入該目錄查看start.bat文件內容:
taskkill /f /t /im redis-server.exe taskkill /f /t /im CSBattleMgr.exe taskkill /f /t /im SSBattleMgr.exe taskkill /f /t /im GSConsole.exe taskkill /f /t /im BalanceServer.exe taskkill /f /t /im LoginServer.exe taskkill /f /t /im GSKernel.exe taskkill /f /t /im RobotConsole.exe taskkill /f /t /im LogServer.exe ping -n 1 127.0>nul start /min "redis-server" "redis-server.exe" redis.conf ping -n 1 127.0>nul start /min "redis-Logicserver" "redis-server.exe" redis-logic.conf ping -n 1 127.0>nul echo "start CSBattleMgr.exe" start /min "CSBattleMgr" "CSBattleMgr.exe" ping -n 1 127.0>nul echo "start SSBattleMgr.exe" start /min "SSBattleMgr" "SSBattleMgr.exe" ping -n 1 127.0>nul echo "start GSKernel.exe" start /min "GSKernel" "GSKernel.exe" ping -n 1 127.0>nul echo "start BalanceServer.exe" start /min "BalanceServer" "BalanceServer.exe" ping -n 1 127.0>nul echo "start LoginServer.exe" start /min "LoginServer" "LoginServer.exe" ping -n 1 127.0>nul echo "start LogServer.exe" start /min "LogServer" "LogServer.exe"
通過這個腳本,我們可以了解到這個服務器項目由以下服務組成:
- redis-server(啟動兩個)
- CSBattleMgr
- SSBattleMgr
- GSKernel
- BalanceServer
- LoginServer
- LogServer
這些服務器具體做什么,目前我還不清楚,之后我們會教大家如何閱讀代碼。
另外,在Bin/x64/Release/dbsql目錄下,我們發現了一些sql文件:
我們打開建表的createdb.sql文件:
drop database if exists fball_gamedb; drop database if exists fball_logdb; drop database if exists fball_accountdb; create database fball_accountdb character set utf8; drop database if exists fball_chargedb; create database fball_chargedb character set utf8; drop database if exists fball_robedb; create database fball_robedb character set utf8; drop database if exists fball_gamedb_1; create database fball_gamedb_1 character set utf8; drop database if exists fball_gamedb_2; create database fball_gamedb_2 character set utf8; drop database if exists fball_gamedb_3; create database fball_gamedb_3 character set utf8; drop database if exists fball_logdb_1; create database fball_logdb_1 character set utf8; drop database if exists fball_logdb_2; create database fball_logdb_2 character set utf8; drop database if exists fball_logdb_3; create database fball_logdb_3 character set utf8;
也就是說,這套服務需要使用mysql。我們需要安裝一個MySQL,并執行Rebuild.bat來創建這些數據庫。Rebuild.bat內容如下:
@echo off :begin @echo ----------1, create all game database------------ mysql -uroot -p123321 < createdb.sql mysql fball_accountdb < fball_accountdb.sql mysql fball_chargedb < fball_chargedb.sql mysql fball_gamedb < fball_gamedb.sql mysql fball_gamedb_1 < fball_gamedb_1.sql mysql fball_gamedb_2 < fball_gamedb_2.sql mysql fball_gamedb_3 < fball_gamedb_3.sql mysql fball_logdb < fball_logdb.sql mysql fball_logdb_1 < fball_logdb_1.sql mysql fball_logdb_2 < fball_logdb_2.sql mysql fball_logdb_3 < fball_logdb_3.sql mysql fball_robedb < fball_robedb.sql
通過這個腳本,我們發現MySQL的root用戶密碼是123321。在創建MySQL時,建議將密碼也設置為這個。
我們可以下載MySQL社區版(免費),下載地址為:
https://www.php.cn/link/06d86297d6e28d4637d60c86c2a2f5b6
選擇microsoft版本:
注意,這套服務也使用了Redis。我們無需專門下載和編譯Redis的Windows版本,因為程序目錄下已經提供了Windows版本的Redis服務程序和配置文件: