[轉貼] D2 Realm 中文架設文件(1) from baha

看板DIABLO (暗黑破壞神 - D3,D2,D1)作者 (你還是說國語吧....)時間19年前 (2005/03/25 19:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
以下的文章,使用 bnetd 和 d2gs 架構, 實做一個 Closed BattleNet, 這是目前最流行的方式。 首先,講一下 D2 Realm 的整個架構, 整個 Service 分為以下四個部分: bnetd => bnetd d2cs => chat server d2dbs => database server d2gs => game server 講白一點, bnetd 負責總管,以及接入 check 的動作,和其他雜務。 d2cs 負責 chat 聊天室以及遊戲 Server(Realm) 等部分的動作設定 d2dbs 當然就是人物的資料庫 d2gs 是人物實際開 game 之後的導向 Server 底下舉出一個類似大型架構的 BNetD Server: --gs-- --gs-- / \ / \ dbs1---- realm1 ----- bnetd ----- realm2 ----dbs2 \ /(d2cs) | (d2cs)\ / --gs-- ...... --gs-- 所以說,玩家藉由 bnetd 被接入,經由 d2cs 導入以及初始化一些遊戲設定, 建立或參加遊戲的時候,跑到 d2gs server 上~ 而玩家的資料在 protocol 解析後,都轉存到 d2dbs 上 而 d2gs 的原理,由於 d2gs 並沒有公開他的 Source Code, 所以並不清楚, 但是可以隱約猜出,d2gs 是利用 D II 自己本身的遊戲檔案(dll and mpq), 去實做出玩家丟過來的 request,成立一個 game, 換句話說, d2gs 這台 Server 等於是在開 game, 也就是說你想開出什麼樣 Mod 的 Game, 只要更換 d2gs Server 本身的 MPQ 檔,就可以達到你的要求, 只要客戶端的 Patch_D2.MPQ 也沒有問題的話。 bnetd,d2cs,d2dbs;是一套 OpenSource 的系統,由: http://www.bnetd.org/ 組織所釋出管理, 理論上是針對 Linux 系統所實做的。 d2gs,據我所知最早由大陸人發掘, 最後還成立了中國教育遊戲網路計畫,(現在還在持續) 後來被誰接手發展不清楚, 這是網址: http://d2dev.dhs.org/ 他是發展在 Windows 平台上的, 當然你如果想要在 Linux 下跑它,可以使用 wine。 通常針對一個小型的 Realm (300 人以下), 比較好的作法是兩台機器,一台 Linux ,一台 Windows, Linux -> 跑 bnetd,d2cs,d2dbs Windows -> 跑 d2gs 我假設現在架一個實際 Server ,懶人作法如下: 1.下載 BNetD 系統:(目前最新為 0.4.30,不過檔案有 0.4.25) (1) 0.4.25 檔案: http://majesty.hn.org/modules.php?name=Downloads&d_op=getit&lid=6 (2) CVS 最新版取得法: 在一台有 CVS 系統的 Linux Server 上,直接下以下兩行指令: cvs -d:pserver:anonymous@cvs.bnetd.sourceforge.net:/cvsroot/bnetd login 遇到密碼,直接按 Enter cvs -z3 -d:pserver:anonymous@cvs.bnetd.sourceforge.net:/cvsroot/bnetd co bnetd Server 即會直接過去 CVS Server 隨時更新下載檔案。 DNS 有問題的可以改下: cvs -d:pserver:anonymous@216.136.171.202:/cvsroot/bnetd login cvs -z3 -d:pserver:anonymous@216.136.171.202:/cvsroot/bnetd co bnetd 2.解壓縮, tar zxvf 檔名 解壓縮完切過去 src 目錄 (cd bnetd/src/) 3.下./configure 命令 (懂 Linux 的人若想要更動設定,趁此機會,懶人就免了) 4.下 make 命令 5.正確 make 後,下 make install, Compile 完後的 binary 可執行檔,會全部安裝到 /usr/local/sbin 目錄下。 相關的系統設定檔等東西也都到 /usr/local/ 下。 6.到另外一台 Windows 上,下載 d2gs, 最新下載版本 (1.07d): http://d2dev.dhs.org/download/d2gs-109d-beta7.zip 7.解開到任一目錄, 並取得 Diablo II 的一些檔案放置到同一個目錄: (我的建議是乾脆放一套完整的 DII 過去也沒差,自己想玩也可以玩) d2data.mpq d2exp.mpq d2sfx.mpq d2speech.mpq Patch_D2.mpq D2GS.exe D2GSSVC.exe D2Client.dll D2CMP.dll D2Common.dll D2Game.dll D2gfx.dll D2Lang.dll D2MCPClient.dll D2Net.dll d2server.dll D2sound.dll D2Win.dll Fog.dll ijl11.dll Storm.dll 8.執行 install.bat,遇到匯入登陸檔的時候,選 yes 9.換回來 Linux 主機上,用文字編輯器修改 /usr/local/etc 目錄下的四個檔: bnetd.conf d2cs.conf d2dbs.conf realm.list (幾乎整個系統的重要設定都在這了,英文不難, 以後要改設定可以自己看..) 尋找這些段落並修改: bnetd.conf 修改部分: udptest_port = 6112 d2dbs.conf 修改部分: servaddrs = D2DBSIP:6114 (以本例子來說,D2DBSIP 的位置填上 Linux 主機的 IP 位置,注意後面的 port 要填) gameservlist = D2GSIP (以本例子來說,D2GSIP 的位置填上 Windows 主機的 IP 位置) d2cs.conf 修改部分: realmname = D2CS servaddrs = D2CSIP:6113 (以本例子來說,D2CSIP 的位置填上 Linux 主機的 IP 位置,注意後面的 port 要填) gameservlist = 202.210.247.178 (以本例子來說,D2GSIP 的位置填上 Windows 主機的 IP 位置) bnetdaddr = BNETDIP:6112 (以本例子來說,BNETDIP 的位置填上 Linux 主機的 IP 位置,注意後面的 port 要填) realm.list "D2CS" "Diablo2" D2CSIP:6113 (以本例子來說,D2CSIP 的位置填上 Linux 主機的 IP 位置,注意後面的 port 要填) d2cs.conf 和 relam.list 中的 "D2CS" 字串,是你的 relam 名稱, 要改的話,請注意兩邊都要一樣。 10.切過來 Windows 主機,執行 regedit, \\HKEY_LOCAL_MACHINE\Software\D2Server\D2GS\ 下 修改 D2CSIP 和 D2DBSIP 的位置為正確位置(以本例來說,就是 Linux 主機 IP) 登錄其他的內容,分別是遊戲的人數限制等。 11.到 Linux 主機,啟動 Bnetd 系統, cd /usr/local/sbin/ ./bnetd ./d2cs ./d2dbs 12.到 Windows 主機,啟動 d2gs, (開命令提示字元,輸入:net start d2gs) 由於安裝設定是機器一開機就會啟動, 所以下次重開不需要下命令啟動了.. 13.telnet 進 Windows 主機IP 的 8888 Port 例如: telnet d2gsIP:8888 密碼輸入預先設定的 abcd123 先 passwd 命令更換密碼, 然後 maxgame 設定最大遊戲量,接著 maxuser 設定最大人數, 接著 maxlife 設定遊戲最長時間, 打 help 可以察看相關設定命令。 (以上這些設定單純是屬於 d2gs 的) 14.打 status 察看 d2cs 和 d2dbs 有否和 d2gs connect,有的話連線成功。 15.撰寫 reg 檔讓人連進來囉~ reg 檔撰寫格式如下: REGEDIT4 [HKEY_CURRENT_USER\Software\Battle.net\Configuration] "Server List"="192.168.56.69" "Registration Version"=dword:00000000 "Registration Authority"=dword:00000000 "Client ID"=dword:00000000 "Client Token"=dword:00000000 "Server Version"=dword:00000001 "Diablo II Battle.net gateways"=hex(7):31,30,30,31,00,30,33,00,75,73,77,65,73,\ 74,2e,62,61,74,74,6c,65,2e,6e,65,74,00,38,00,55,2e,53,2e,20,57,65,73,74,00,\ 75,73,65,61,73,74,2e,62,61,74,74,6c,65,2e,6e,65,74,00,36,00,55,2e,53,2e,20,\ 45,61,73,74,00,61,73,69,61,2e,62,61,74,74,6c,65,2e,6e,65,74,00,2d,39,00,41,\ 73,69,61,00,31,39,32,2e,31,36,38,2e,35,36,2e,36,39,00,2d,38,00,44,65,61,74,\ 68,47,6f,64,00,65,75,72,6f,6f,70,65,2e,62,61,74,74,6c,65,2e,6e,\ 65,74,00,2d,31,00,45,75,72,6f,70,65,00,00 "Battle.net gateways"=- [HKEY_CURRENT_USER\Software\Blizzard Entertainment\Diablo II] "Aux Battle.net"="192.168.56.69" "BNETIP"="192.168.56.69" IP 的部分以本例來說,都改成 Linux 主機的 IP 位置, Diablo II Battle.net gateways 的內容是 16 進位的, 我建議可以實際開 regedit 去改位置,然後實際把那一串位置丟到 UltraEdit 上, 轉 Hex 16 進位去看..然後照抄過來即可。 注意 UltraEdit 上的 0D 0A ,抄過來要改成 00。 16.理論上,這樣就可以跑囉~ 要玩不同 Mod 版本的 Realm DII, 只要更換 d2gs (以本例來說,是Windows主機)主機上的 Patch_D2.mpq, 就可以了。 17.更進階的設定, 或者更能應付更多人的分散式架構,或者類似 cluster 的架構, 以及 Bnetd 系統的詳細結構以及其餘工具,設定;d2gs 的更詳細設定, 大家就自己看文檔,說明,自己琢磨吧.. 甚至 BNetd 也有人以 BNetd 為藍本,用 VC 寫出了 Windows 版本: http://pages.infinit.net/phil/index.htm 如果用這個代替 BNetD 整個系統(包括 d2cs,d2dbs) 是也可以做到一台 Windows 通吃的地步, 不過效能很差就是了;好處是有一個漂亮的 GUI 介面可以管。 另外,d2gs 在 Linux 下以 wine 跑也不錯,這也是一個作法。 底下列出大量的參考網址,供大家查閱: http://d2dev.dhs.org/doc/bnetd-inst-howto.htm http://d2dev.dhs.org/doc/bnetd-conf-howto-1.htm http://majesty.hn.org/modules.php?name=Content&pa=showpage&pid=1 http://www.bnetd.org/ http://sourceforge.net/cvs/?group_id=6933 http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/bnetd/bnetd/ -- ※ Origin: 巴哈姆特<bbs.gamer.com.tw> ◆ From: 163.25.117.172 ※ 修改: 2002/4/14 3:41:48 [163.25.117.172] ※ 修改: 2002/4/14 3:55:51 [163.25.117.172] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.112.28
文章代碼(AID): #12G_qwB7 (DIABLO)
文章代碼(AID): #12G_qwB7 (DIABLO)