做服務器前先到:
/...atedserver.php
下載服務器版UT2003,(v2107, Windows: 265MB | Linux: 249MB)安裝需要780M硬盤空間。
/ut...rver/cdkey.php
申請服務器專用CD-KEY
下載服務器安裝文件後:
linux用戶:新建壹個用戶帳號專門用來運行服務器,用這個用戶登錄,運行ut2003lnxded.sh.bin文件。跟具屏幕提示繼續。
windows用戶:把zip文件解壓縮到硬盤中,沒有安裝程序,解開來就行了。
在配置服務器前先下載最新升級補丁,給服務器程序升級。
再下載evolutionpack2,它能幫妳解決許多用web頁面管理上面的問題,和修正了壹些bug。
/ut...rver/cdkey.php ,輸入壹些需要的信息後,服務器專用CDkey會通過email發給妳。linux用戶需要把收到的cdkey文件復制到妳的系統文件夾中
E 如果妳已經知道怎麽在註冊表裏添加CDKEY就跳過這壹步到J。
F 點擊開始--->運行。在窗口中輸入 regedit ,回車。
G 在註冊表管理器中,雙擊"HKEY_LOCALMACHINE"展開它,雙擊"software"展開它,在它下面找到"Unreal Technology"文件夾.如果這個文件夾已經存在,跳到J。
H 添加壹個新的鍵值。單擊"software"文件夾,然後點編輯--->新建--->主鍵。壹個新的文件夾就出現了,有壹個高亮的區域讓妳給它命名,輸入Unreal Technology 回車。
I 單擊剛才新建的文件夾,點編輯--->新建--->主鍵。壹個新的文件夾出現啦,又有壹個高亮的區域讓妳命名,輸入 Install Apps 回車,跳到K。
J 在Unreal Technology Installed apps文件夾下找到"UT2003"文件夾,如果它存在,跳到L
K 單擊"Installed Apps"文件夾,點編輯--->新建--->主鍵。壹個嶄新的文件夾誕生啦,有壹個高亮的區域讓我們命名,輸入UT2003 回車。
L 單擊"UT2003"文件夾,點編輯--->新建--->建值。壹個新的文件夾又出現啦,又有壹個高亮的區域可以讓我們起名字啦。輸入 "CDKEY",回車。雙擊新建立的鍵值,妳就可以編輯它的值。在裏面輸入妳的cdkey序列號。點OK。關掉註冊表編輯器。
M 如果妳知道怎麽用命令行命令進入妳的虛幻安裝文件夾裏的system文件夾,跳到步驟O
N 用命令行建立服務器。我把我的文件安裝在UT2003server,我用這個舉例子,輸入cd ut2003server\system
O 輸入ucc server DM-Antalus.ut2
如果壹切順利,壹個專用服務器就架設好了,遊戲中的地圖是DM-Antalus。
默認下面,專用服務器的配置是給internet遊戲配置的。這意味著它他嘗試和國外的主服務器聯系把它加入到主服務器的數據庫裏,這樣妳的服務器就可以出現在別人的服務器搜索列表裏。目前有兩個不同的主服務器在運行,Epic的和Gamespy的。
如果妳在機器上已經安裝了零售版的UT2003,那就不必運行Epic mail給妳的.reg文件了,否則妳註冊表裏的CDKEY會被改成服務器專用的,這樣妳自己就不能用這臺機器玩了。
如果妳是在居域網裏建立服務器,並且想禁止UT2003和主服務器聯系那就編輯UT2003.ini裏修改下面的句子(如果找不到這部分,就在最後加後這幾行):
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
配置服務器
現在妳應該知道最基本的架設服務器的方法了,妳需要把它配置成妳需要的。下面的每個部分都有詳細的常見問題解答
System 文件夾裏有最重要的三個文件:user.ini runserver.bat和ut2003.ini 。 user.ini保存了地圖循環列表。ut2003.ini保存了許多其他設置。runserver.bat 保存了啟動服務器的設置。Linux用戶沒有runserver.bat文件,妳要把每次都輸入壹長串命令啟動服務器,或者妳必須用壹個外殼腳本啟動服務器。(linux上用腳本啟動UT2003服務器的例子參見munity.com/forums/showthread.php?s=&threadid=231043)
如果妳架設多個服務器,通常妳會使用壹個***同的ut2003.ini文件,然後用不同的runserver.bat或者外殼腳本啟動不同的服務器,下面是壹個runserver.bat的例子:
ucc.exe server DM-Antalus?game=XGame.XDeathmatch?maxplayers=16?minplayers=4?timelimit=20?fraglimit=25
ucc.exe 是服務器的執行文件,"server"告訴uccc下面要架設壹個專用服務器。後面的東西是壹些參數,設置服務器的遊戲規則。第壹條是服務器初始遊戲的地圖名字,這個例子中是DM-Antalus。跟著是遊戲類型,例子中是死亡模式。不同的參數用問號分隔。不管妳輸入多少參數,整個命令都必須在壹行中,如果分開來就不管用了。
下面列出ucc後面可以使用的所有參數列表。註意下面有壹些參數在運行服務器是是感覺不出有什麽變化的,列出它們只是為了列表了完整性:
AccessControl 用來打開高級管理員系統。和UT2003.ini中[Engine.GameInfo]部分裏的AccessConrolClass壹行的參數相同。
AdminName=xxxx 網頁管理和控制臺管理員的名字--參看下面的高級網頁管理員部分。
adminpassword=xx 管理員密碼。至少5位,否則無效。
bAutoNumBots=true/false 設置成true在人數小於地圖默認設定的最小數時,會自動加入電腦bot補足。設置成false則不會。
autoadjust=true/false 設置成true,電腦bot會跟具玩家水平自動調整自己的等級。false則不會。
bPlayerMustBeReady=true/false 設置成true打開比賽模式,每局開時前所有玩家要按下鼠標確認後遊戲才開始。false則不需要。
Balanceteams=true/false 自動分配玩家平衡隊伍。
BlueTeam= 設置藍隊的名字。但是,不要以為妳可以改變隊伍的名字。However, don't get clever and decide you'll name the blue team Purple or something like that. Many classes in the game refer to this variable to perform team info logic這句話不太好翻自己看吧。總之最好不要加這個參數,加上它會有不良後果。
BlueTeamAI= 特別的參數用來控制藍隊電腦AI。給MOD制作者用來配置自己寫的AI給新的遊戲模式用的。別碰它。
BlueTeamSymbol= 設置藍隊的隊標。最好別設它。
Character=X 玩家用的人物,架服務器時無效。
Class 如果在架服務器的時候使用,在服務器玩的玩家只能用默認的人物皮膚。通常玩家都會用自己喜歡的人物皮膚。所以這個命令毫無用處。
difficulty=x 設置電腦登記,從1到7分別是novice到godlike。
FF=x 友隊傷害的百分比。0是關閉,1是100% 所以.25就是25%友隊傷害。
fraglimit=x 死亡模式最多殺人數。
game= 遊戲類型,可以用:xDeathmatch, xCTFgame,xBombingRun,或者xDoubleDom
gamepassword= 做為客戶端加入遊戲時需要的密碼。
GameRules 設置特別的GameRules類,GameRules是mutator在UT2003中增加的新類型。通常妳不需要用它。幾乎所有的mod都會自己動配置它們自己的GameRules。
Gamespeed=x 設置遊戲速度,默認是1。最大2
Gamestats=true/false 設置成true會打開統計功能(玩家的遊戲資料,如命中率等會上傳到主服務器資料庫進行統計並參加全世界排名),電腦數量必須設為0才能生效。
goalscore=x CTF,DOM和BR模式裏的隊伍分數上限。
maxlivers=x last man standing模式,死x後玩家就出局,直到只剩最後壹人遊戲結束。
maxplayers=x 最大同時遊戲人數。
maxspectators=x 最大同時觀戰者人數。
minplayers=x 最小遊戲人數,小於此數用電腦bot補足。
mutator= 在遊戲中添加mutator(具體看下面)
numbots=x 設置電腦bot數量。註意打死bot,遊戲統計功能就無效了。
Password=xxxx 別的遊戲者端加入遊戲時需要的密碼。
PlayerMustbeready=true/false 在每局開始前等待其他的玩家。
QuickStart 允許遊戲在沒有人的時候照常進行,當然有電腦bot在玩的時候有效。
RedTeam 參看BlueTeam
RedTeamAI 參看BlueTeamAI
RedTeamSymbol 參看BlueTeamSymbol
SaveGame 繼續壹個保存過的單人遊戲。架服務器時沒用。
SpectatorOnly=True/False 客戶端選項,允許客戶端用命令行指定觀察者模式,架服務器時沒用。
Team 客戶端選項,允許客戶端用命令行指定希望加入的隊伍。同樣架服務器時沒用。
translocator=true/false 設置為true允許使用移位器,false相反。
timelimit=x 每局時間限制。
Tournament=true/false 設置成競技場模式
weaponstay=true/false 武器保留。
幾個例子:
ucc server DM-Antalus?game=XGame.XDeathmatch?minplayers=4 架設死亡模式服務器,初始地圖DM-Antalus,最少4人,不足4人用電腦補足。
ucc server CTF-Citadel?game=XGame.xCTFGame?FF=0 架設奪旗模式服務器,初始地圖CTF-Citadel,無友隊傷害。
ucc server DOM-SunTemple?game=xGame.xDoubleDom?mutator=UnrealGame.MutLowGrav 雙重據點模式服務器,初始地圖DOM-SunTemple,低重力模式開啟。
ucc server BR-Anubis?game=XGame.xBombingRun?weaponstay=true 架設BR模式服務器,初始地圖BR-Anubis,武器保留開啟。
ucc server DM-Curse3?game=XGame.xTeamGame?fraglimit=100 團隊死亡模式,初始地圖DM-Curse3,殺人數上限100.
關於和主服務器的聯系
如果妳不想妳的服務器顯示在遊戲的服務器搜索列表裏,或者妳只是在居域網裏的服務器,妳可以在UT2003.ini裏把下面這些關掉
[IpDrv.MasterserverUplink]
DoUplink=true|false 控制妳的服務器是否與internet上的主服務器聯系。
UplinkToGamespy=true|false 和DoUplink相似,是決定是否和gamespy服務器建立聯系。
SendStats=true|false 是否發送統計信息到主服務器
ServerBehindNAT=true|false 服務器是否在網關後面。
DoLANBroadcast=true|false 設置服務器是否可以在居域網中查找到。壹般設true
地圖循環和個性化地圖列表
默認下遊戲會地圖會循環出現。 循環順序在user.ini文件裏面控制。 每個遊戲類型都有壹個部分列出循環的地圖。妳可以編輯它,去掉妳不喜歡的,加上妳喜歡的地圖。如
[XInterface.MapListDeathMatch]
MapNum=0
Maps=DM-Morbias-2k3
Maps=DM-Spacepir8
Maps=DM-KillingField
Maps=DM-Deck16]i[-BETA
Maps=DM-MoonTemple
Maps=DM-Reigncaster
Maps=DM-Golgatha
Maps=DM-Tooth-N-Claw
Maps=DM-Stage1
Maps=DM-Liandri2003_BETA2
如果妳想玩更多的地圖,就去網上下載吧。把他們解壓縮後把ut2文件放到map文件夾裏,utx放到texture文件夾裏,以及其他相應文件都放到相應目錄裏,妳就能使用新地圖了。
在壹個遊戲服務器上運行多個遊戲類型
妳可能會想在壹個遊戲服務器上運行多個遊戲類型,比如 CTF,DOM,BR。可以用以下方法切換地圖,舉例如下:
比如 我們先開始壹個死亡模式遊戲在DM-Asbestos地圖上。因為現在是死亡模式,遊戲結束後UT會檢查user.ini中[XInterface.MapListDeathMatch]部分索取下壹張地圖的名字。它找到了BR-Anubis地圖名字,然後就切換到BR模式讀取BR-Anubis地圖。壹但BR-Anubis的遊戲結束後,UT會檢查 [XInterface.MapListBombingRun]部分,因為已經是BR模式了。它又找到CTF-Citadel地圖,然後就換成CTF模式,繼續....
[XInterface.MapListCaptureTheFlag]
MapNum=0
Maps=DM-Asbestos?game=XGame.xDeathMatch
[XInterface.MapListDeathMatch]
MapNum=0
Maps=BR-Anubis?game=XGame.xBombingRun
[XInterface.MapListBombingRun]
MapNum=0
Maps=CTF-Citadel?game=XGame.xCTFGame
第三方地圖和重定向
如果妳使用了不是遊戲自帶的第三方地圖,別人連上服務器就可能花很長時間下載地圖同時占用別的遊戲者的帶寬使遊戲不流暢,解決方法可以是把地圖文件放到另壹個網頁服務器上然後告訴客戶端自動從那裏下載
用 UT2003compress(可以在下載)...?的ut2003.ini 下面的部分重定向下載服務器:
IpDrv.HTTPDownload]
HTTPServer=work filter. 尤其要用到的是nat.
第二:內核要支持tun/tap模塊。
我的是debian,自己編譯的內核,所以在編譯的時候就已經弄好了,由於我從來不用官方的內核,所以我就不知道debian的管方內核是不是已經有了。
不過可以自己看壹下。
iptables的支持是不用問的,壹般都是內置的。
就是tun/tap設備的支持。 這壹點,可以這樣看壹下:
modprobe tun, lsmod 看壹下有沒有tun 如果成功,就是支持的, 而且是被編譯成了模塊,如果沒有,可以看壹下:/dev/net/,看看是不是存在tun這樣壹個文件,如果存在就是內核內置的,沒有編譯成模塊,另外, 如果編譯成了模塊,也要註意是否有這個文件存在。不在的話,得自己建了。
mknode /dev/net/tun, 壹般現在的發行版都會在妳modprobe tun時自動幫妳弄好,所以不用擔心這個。
好了。我們開工了。
從主站上下載回來qemu的源碼:
tar zxvf qemu-0.8.2.tar.gz
cd qemu-0.8.2
gcc -v
這裏看壹下gcc的版本。
qemu目前只能用gcc3來編譯。如果妳的是gcc4,
就su - 壹下,到root, 然後到/usr/bin/
看壹下有沒有gcc3
有的話,看看原來的gcc是鏈接還是壹個文件。如果是壹個文件,就備份壹下,呆會恢復。 如果是鏈接就不用管它了。看它指向哪壹個gcc, 記得呆會兒要恢復過來的。 鏈接的做法簡單了: ln -s gcc-3.3 gcc
就這樣的。 備份就更簡單了。mv gcc gcc.bak
回到我們剛才的目錄裏。
運行:
./configure
make
make install
這樣就裝好了qmeu,
現在我們需要使用kqemu模塊來加速了。
下載回來kqemu-1.3.0pre9.tar.gz.
解開後。
tar zxvf kqemu-1.3.0pre9.tar.gz
然後進入到目錄裏。這個時候有兩件事要註意:
1. 需要有妳現在所用的內核的內核頭文件。
2. gcc的版本要和妳的內核編譯的gcc版本壹致。壹搬來說就是妳剛才改過的哪個了。恢復回來就好了。
好了。
./configure && make && make install
就好了。
我們已經就裝好了所有的軟件。
但是有時候我們需要壹些設置才能工作。
1. modprobe kqemu
2. 看看/dev/kqemu 字符文件是否存在。
3. /dev/kqemu 文件的權限要是0666的。
做好這些後就可以開始安裝妳的虛擬機了,
安裝好,我們再設置妳的網絡
退出妳的root, 然後
cd ~ 進入妳的home directory
mkdir qemu
cd qemu
qemu-img create win2k.img 2G
建立壹個硬盤文件。然後我們就可以在這個上面安裝win2000了。
可以使用iso文件, 也可以使用光盤。
我們這裏使用光盤來安裝。
qemu -hda win2k.img -cdrom /dev/cdrom -boot d -localtime -m 256 -win2k-hack
這樣就可以開始安裝2000了。解釋壹下這裏的選項:
-hda 指定第壹個硬盤。
-cdrom 指定妳的cdrom 後面的文件可以是壹個iso文件
-boot d 從光盤啟動,如果從妳的硬盤啟動,就-boot c, -localtime使用本機的時間。 -m 就是設定內存的大小。默認是128, 註意可以設得大壹點的內存,但是需要妳的/dev/shm足夠大。
-win2k-hack, 在安裝2000的時候會有壹個問題,它會提示妳磁盤空間不夠,加上這個參數就可以了。
好了。
安裝完成了之後,就可以啟動來看壹把了。
啟動如下:
qemu -hda win2k.img -boot c -localtime -m 256. 這樣就默認使用了kqemu
現在應該也可以上網了,但是註意虛擬機使用的是dhcp的方式來上網的。
而且不能ping通妳的本機,我想這個可能是大多數人不想要的,所以下面我們來配置網絡。 通過tun/tap, 有點象vmware裏的host-only
要配置host-only(tun/tap)這樣的網絡,我們上面已經講過了兩個要求,現在我們來做更多的事:
1、 建立壹個文件 /etc/qemu-ifup
內容很簡單:
#!/bin/sh
sudo /sbin/ifconfig $1 192.168.0.1 netmask 255.255.255.0
然後chmod a+x /etc/qemu-ifup
註意這裏的192.168.0.1是妳的tun/tap網卡的地址,壹定要註意:不能和妳的實際的網卡在同壹個網段。 也就是如果tun/tap是192.168.2.0.0/24, 那麽妳的時間網卡就不能在這個網段。
然後寫壹個小的腳本:
userinit 這個是文件名:
文件內容如下:
#!/bin/bash
case "$1" in
start)
[ ! -e /dev/kqemu ] && mknod -m 666 /dev/kqemu c 250 0
echo 1024 > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
;;
stop)
;;
esac
然後:chmod a+x userinit
再:mv userinit /etc/init.d/
再: update-rc.d userinit start 25 2 3 .
要註意的是這個操作是在debian 下面的做法。
如果是在其他發行版:比如Fedora, 妳可以直接寫這樣的script在妳的/etc/rc.local文件裏
[ ! -e /dev/kqemu ] && mknod -m 666 /dev/kqemu c 250 0
echo 1024 > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
編輯妳的/etc/modules. 加上: kqemu (如果妳的tun被編譯成了模塊,也加上tun)
最後還有壹點。大家壹定註意到了壹個問題: 就是qemu-ifup腳本哩使用了sodu, 所以如果想普通用戶能用,那麽就配壹下sudoer.
這個好配極了。 編輯:/etc/sudoers
妳的用戶名 ALL=(ALL):ALL NOPASSWD:ALL
這樣就可以不用輸入密碼了。
現在我們可以開始啟動妳的虛擬機了。
要象這樣啟動:
qemu -hda win2k.img -boot c -localtime -m 256 -net nic,vlan=0 -net tap,vlan=0
如果嫌麻煩,
就幹脆寫壹個壹句話的腳本:
#!/bin/bash
qemu -hda win2k.img -boot c -localtime -m 256 -net nic,vlan=0 -net tap,vlan=0
存儲為win2k, 加上x的權限,然後放置到/usr/bin, 或者是/usr/local/bin下
以後直接運行win2k, 就可以啟動2000了。
同理也可以安裝多個系統,寫多個腳本啟動。
這樣比較的酷