這份代碼是我偶然從朋友那里得來的,他說也是從網(wǎng)絡(luò)上獲取的。最初的服務(wù)器端代碼是linux版本的,但被一位技術(shù)高超的大神修改為可以在windows上運行。如果無意中侵犯了您的版權(quán),請聯(lián)系我刪除。值得慶幸的是,這份代碼中的大部分方法和接口都是跨Windows和linux平臺的,因此Linux開發(fā)者們無需感到不適。我們學(xué)習(xí)這份代碼,更多的是要掌握其思路和原理,而非糾結(jié)于細(xì)節(jié)。
使用visual studio打開游戲主solution文件后,界面如下圖所示:
這里總共有10個工程項目,模塊較多。我們該從哪里開始呢?我們先來看一下源碼目錄:
我們進入Server目錄,發(fā)現(xiàn)如下一個文件:
我們打開看看內(nèi)容:
cd Binx64Release start.bat
這段代碼會進入Binx64Release目錄,并執(zhí)行另一個start.bat。我們進入該目錄查看start.bat文件內(nèi)容:
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"
通過這個腳本,我們可以了解到這個服務(wù)器項目由以下服務(wù)組成:
- redis-server(啟動兩個)
- CSBattleMgr
- SSBattleMgr
- GSKernel
- BalanceServer
- LoginServer
- LogServer
這些服務(wù)器具體做什么,目前我還不清楚,之后我們會教大家如何閱讀代碼。
另外,在Bin/x64/Release/dbsql目錄下,我們發(fā)現(xiàn)了一些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;
也就是說,這套服務(wù)需要使用mysql。我們需要安裝一個MySQL,并執(zhí)行Rebuild.bat來創(chuàng)建這些數(shù)據(jù)庫。Rebuild.bat內(nèi)容如下:
@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
通過這個腳本,我們發(fā)現(xiàn)MySQL的root用戶密碼是123321。在創(chuàng)建MySQL時,建議將密碼也設(shè)置為這個。
我們可以下載MySQL社區(qū)版(免費),下載地址為:
https://www.php.cn/link/06d86297d6e28d4637d60c86c2a2f5b6
選擇microsoft版本:
注意,這套服務(wù)也使用了Redis。我們無需專門下載和編譯Redis的Windows版本,因為程序目錄下已經(jīng)提供了Windows版本的Redis服務(wù)程序和配置文件: