從零學習開源項目系列(二) 最後一戰概況

從零學習開源項目系列(二) 最後一戰概況

來自專欄 從零學習開源項目系列

這份代碼我也是無意中來自一個朋友,據他說也是來源於互聯網,伺服器端代碼原來是linux版本的,但被厲害的大神修改成可以在Windows上運行。(如果不小心侵犯了您的版權,請聯繫我刪除)。好在,這份代碼中使用的大多數方法和介面都是可以跨Windows和linux兩個平台的,所以linux開發下的朋友請不要感到不適,我們學習這份代碼更多的不是糾結細節而是學習思路和源碼。

遊戲主solution文件用Visual Studio打開後如下圖所示:

這裡總共有10個工程項目,模塊比較多。我們應該從何處入手呢?我們先看下源碼目錄:

我們進入Server目錄,發現如下一個文件:

我們打開看一下內容:

  1. cd Binx64Release
  2. start.bat

這個代碼進入Binx64Release目錄,執行另外一個start.bat,我們進入這個目錄去看下這個文件內容:

  1. taskkill /f /t /im redis-server.exe
  2. taskkill /f /t /im CSBattleMgr.exe
  3. taskkill /f /t /im SSBattleMgr.exe
  4. taskkill /f /t /im GSConsole.exe
  5. taskkill /f /t /im BalanceServer.exe
  6. taskkill /f /t /im LoginServer.exe
  7. taskkill /f /t /im GSKernel.exe
  8. taskkill /f /t /im RobotConsole.exe
  9. taskkill /f /t /im LogServer.exe
  10. ping -n 1 127.0>nul
  11. start /min "redis-server" "redis-server.exe" redis.conf
  12. ping -n 1 127.0>nul
  13. start /min "redis-Logicserver" "redis-server.exe" redis-logic.conf
  14. ping -n 1 127.0>nul
  15. echo "start CSBattleMgr.exe"
  16. start /min "CSBattleMgr" "CSBattleMgr.exe"
  17. ping -n 1 127.0>nul
  18. echo "start SSBattleMgr.exe"
  19. start /min "SSBattleMgr" "SSBattleMgr.exe"
  20. ping -n 1 127.0>nul
  21. echo "start GSKernel.exe"
  22. start /min "GSKernel" "GSKernel.exe"
  23. ping -n 1 127.0>nul
  24. echo "start BalanceServer.exe"
  25. start /min "BalanceServer" "BalanceServer.exe"
  26. ping -n 1 127.0>nul
  27. echo "start LoginServer.exe"
  28. start /min "LoginServer" "LoginServer.exe"
  29. ping -n 1 127.0>nul
  30. echo "start LogServer.exe"
  31. start /min "LogServer" "LogServer.exe"

通過這個腳本,我們得到了這個伺服器項目的一些信息,這個伺服器由以下一些服務組成:

redis-server(啟動兩個)

CSBattleMgr

SSBattleMgr

GSKernel

BalanceServer

LoginServer

LogServer

這些伺服器具體是做啥的,我現在也不知道,後面我們會教大家如何閱讀。

另外在Bin/x64/Release/dbsql目錄我們發下一些sql文件:

我們打開建表的createdb.sql:

  1. drop database if exists fball_gamedb;
  2. drop database if exists fball_logdb;
  3. drop database if exists fball_accountdb;
  4. create database fball_accountdb character set utf8;
  5. drop database if exists fball_chargedb;
  6. create database fball_chargedb character set utf8;
  7. drop database if exists fball_robedb;
  8. create database fball_robedb character set utf8;
  9. drop database if exists fball_gamedb_1;
  10. create database fball_gamedb_1 character set utf8;
  11. drop database if exists fball_gamedb_2;
  12. create database fball_gamedb_2 character set utf8;
  13. drop database if exists fball_gamedb_3;
  14. create database fball_gamedb_3 character set utf8;
  15. drop database if exists fball_logdb_1;
  16. create database fball_logdb_1 character set utf8;
  17. drop database if exists fball_logdb_2;
  18. create database fball_logdb_2 character set utf8;
  19. drop database if exists fball_logdb_3;
  20. create database fball_logdb_3 character set utf8;

也就是說,這套服務需要使用mysql,我們安裝一個mysql,並執行這個Rebuild.bat把這些庫創建一下,Rebuild.bat內容如下:

  1. @echo off
  2. :begin
  3. @echo ----------1, create all game database------------
  4. mysql -uroot -p123321<createdb.sql
  5. mysql -uroot -p123321<grantuser.sql
  6. mysql -uroot -p123321<fball_accountdb.sql
  7. mysql -uroot -p123321<fball_chargedb.sql
  8. mysql -uroot -p123321<fball_robedb.sql
  9. mysql -uroot -p123321 fball_accountdb < fball_accountdb.sql
  10. mysql -uroot -p123321 fball_chargedb < fball_chargedb.sql
  11. mysql -uroot -p123321 fball_robedb < fball_robedb.sql
  12. mysql -uroot -p123321 fball_gamedb_1 < fball_gamedb.sql
  13. mysql -uroot -p123321 fball_gamedb_2 < fball_gamedb.sql
  14. mysql -uroot -p123321 fball_gamedb_3 < fball_gamedb.sql
  15. mysql -uroot -p123321 fball_logdb_1 < fball_logdb.sql
  16. mysql -uroot -p123321 fball_logdb_2 < fball_logdb.sql
  17. mysql -uroot -p123321 fball_logdb_3 < fball_logdb.sql

通過這個,我們發現這裡mysql的root用戶的密碼123321。你在創建mysql時,需要建議將密碼也設置成這個。

我們下載mysql community版本(免費的),下載地址:dev.mysql.com/downloads,類型我們選Microsoft:

注意,這套服務也使用了redis,我們不用專門下載和編譯redis windows版本,我們的程序目錄下已經提供了windows版本的redis的服務程序和配置文件:

我們搞清楚基本伺服器概況後,各個服務的作用以及服務之間的關係如何,我們下一篇文章繼續分析。


推薦閱讀:

下班後,他們是這樣賺錢的
蘋果 MacPaint 和 QuickDraw 的源代碼(2010)
收入翻倍的方法,開源的那些事兒(二)
Karpathy 更新深度學習開源框架排名:TensorFlow 第一,PyTorch 第二

TAG:開源 | 伺服器開發 | 遊戲開發 |