[轉貼] D2 Realm 中文架設文件(1) from baha
看板DIABLO (暗黑破壞神 - D3,D2,D1)作者ssuny (你還是說國語吧....)時間19年前 (2005/03/25 19:59)推噓0(0推 0噓 0→)留言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
DIABLO 近期熱門文章
PTT遊戲區 即時熱門文章
12
21