建立UT服务器

建立UT服务器,第1张

分类: 电脑/网络 >>互联网

问题描述:

谁能帮我建一个UT的服务器,或者谁有服务器,允许我进去建个频道啊

解析:

UT2003服务器架设指南

做服务器前先到:

unrealtournament2003/...atedserver.php

下载服务器版UT2003,(v2107, Windows: 265MB | Linux: 249MB)安装需要780M硬盘空间。

ut2003master.epicgames/ut...rver/cdkey.php

申请服务器专用CD-KEY

下载服务器安装文件后:

linux用户:新建一个用户帐号专门用来运行服务器,用这个用户登录,运行ut2003lnxded.sh.bin文件。跟具屏幕提示继续。

windows用户:把zip文件解压缩到硬盘中,没有安装程序,解开来就行了。

在配置服务器前先下载最新升级补丁,给服务器程序升级。

再下载evolutionpack2,它能帮你解决许多用web页面管理上面的问题,和修正了一些bug。

unreal.cpgl/UT2003/patch/evolutionpack2.zip 20KB

安装服务器:

在你下载完并解压缩所有需要的文件后:

A 如果你已经在机器上装了零售版UT2003,那么跳到第M条

B 如果你下载了免费的服务器专用程序,且不需要再申请服务器专用cdkey,那么跳到第D条

C 如果你是使用零售版UT2003来运行服务器的话,那先安装游戏,游戏会自动添加注册表中必要的信息。跳到第M条。

D 打开 ut2003master.epicgames/ut...rver/cdkey.php ,输入一些需要的信息后,服务器专用CDkey会通过email发给你。linux用户需要把收到的cdkey文件复制到你的系统文件夹中

E 如果你已经知道怎么在注册表里添加CDKEY就跳过这一步到J。

F 点击开始--->运行。在窗口中输入 regedit ,回车。

G 在注册表管理器中,双击"HKEY_LOCALMACHINE"展开它,双击"sofare"展开它,在它下面找到"Unreal Technology"文件夹.如果这个文件夹已经存在,跳到J。

H 添加一个新的键值。单击"sofare"文件夹,然后点编辑--->新建--->主键。一个新的文件夹就出现了,有一个高亮的区域让你给它命名,输入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。

默认下面,专用服务器的配置是给inter游戏配置的。这意味着它他尝试和国外的主服务器联系把它加入到主服务器的数据库里,这样你的服务器就可以出现在别人的服务器搜索列表里。目前有两个不同的主服务器在运行,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服务器的例子参见ina- munity/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 控制你的服务器是否与inter上的主服务器联系。

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-A *** estos地图上。因为现在是死亡模式,游戏结束后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-A *** estos?game=XGame.xDeathMatch

[XInterface.MapListDeathMatch]

MapNum=0

Maps=BR-Anubis?game=XGame.xBombingRun

[XInterface.MapListBombingRun]

MapNum=0

Maps=CTF-Citadel?game=XGame.xCTFGame

第三方地图和重定向

如果你使用了不是游戏自带的第三方地图,别人连上服务器就可能花很长时间下载地图同时占用别的游戏者的带宽使游戏不流畅,解决方法可以是把地图文件放到另一个网页服务器上然后告诉客户端自动从那里下载

用 UT2003press(可以在drunksnipers下载)...?的ut2003.ini 下面的部分重定向下载服务器:

IpDrv.HTTPDownload]

HTTPServer=server.domain.name/myUTmaps/

Proxyserver=

Proxyport=

UseCompression=True

记住erver=后面的地址最后一定要加上个"/" ,否则它不会工作。如果碰到问题的话,把域名改成网页服务器的IP地图试试看(比如192.168.1.10)

Mutators

Mutators要和启动命令加在同一行里。下面的例子是架设一个死亡模式的服务器地图是DM-A *** estor带大头的mutator和Instagib的mutator:

ucc.exe DM-A *** estos?Game=XGame.xDeathmatch?Mutator=UnrealGame.MutBigHead,XGame.MutInstaGib

默认mutator参数列表:

Arena - XWeapons.MutArena

Big Head - UnrealGame.MutBigHead

Float-Away Corpses - XGame.MutHeliumCorpses

InstaGib - XGame.MutInstaGib

Zoom InstaGib - XGame.ZoomInstaGib

LowGrav - UnrealGame.MutLowGrav

No Adrenaline - XGame.MutNoAdrenaline

No Super Weapons - XWeapons.MutNoSuperWeapon

Quad Jump - XGame.MutQuadJump

AutoHealing - XGame.MutRegen

Slow Motion Deaths - XGame.MutSlomoDeath

Species Specific Stats - XGame.MutSpeciesStats

Vampire - XGame.MutVampire

注意部分mutator参数的前缀的不同:XWeapons , UnrealGame 等。

给每张地图不同的Mutator

你可以通过修改user.ini为每张地图设置不同的mutator 。除非你换掉它们,这些mutator会在所有地图中生效。你可以用"mutator="后面什么也不要加来在下一张地图中去掉mutator。下面的例子是在DM-Antalus地图上的游戏带有Slow-mo death和low-grav两个mutator,然后在下一张DM-Golgotha时去掉它们。

Maps=DM-Reigncaster

Maps=DM-Antalus?game=XGame.xDeathMatch?mutator=XGame.MutSlomoDeath,unrealGame.MutLowGrav

Maps=DM-Golgatha?mutator=

Maps=DM-A *** estos

同样的方法可以加载其他的命令在后面,比如你可能想在某一张地图上有队友伤害,然后在下一张地图中去掉它:

Maps=CTF-Chrome?FF=0.75

Maps=CTF-Citadel?FF=0

页面管理员和高级页面管理

基本的页面管理员通过在runserver.bat里指定管理员名字和密码,并编辑ut2003.ini中[UWeb.WebServer]部分启用。这将允许你通过web页面完全控制服务器,只需要一个管理员帐号。注意,这些都不需要通过IIS或者Apache就可以完成。UT服务器提供了自己的web页面服务器。如果你的服务器上运行了IIS或者Apache,你要把它们的监听端口口改成80以外的。

[UWeb.WebServer]

bEnabled=True

Listenport=xxxx

高级网页管理员允许多个不同控制权限的管理员帐号。注意,那个evolutionpack目前发现在使用高级管理员下有潜在的严重安全漏洞。我强烈建议在互联网远程控制系统中不要使用它。

具体的高级管理员指南参见unrealadmin/modules.p...rticle&artid=7

你应该在你的runserver.bat里加上管理员名字和密码参数,除非你不想使用高级网页管理工具。

一台机器上架设多个服务器

你可以有两种方法在一台机器上架设多个服务器:给每个服务器不同的端口号,或者分配不同的IP地址给你的每个UT服务器,

如果你用不同的端口号架设服务器,你可能碰到他们在游戏的服务器搜索列表里显示不出来的问题。

如果你有多个IP你可以用-multihome 参数在runserver.bat里给每个服务器绑定不同IP。例如下面把IP地址192.168.0.1绑到服务器上

ucc server DM-Antalus?game=XGame.xDeathMatch -multihome 192.168.0.1

在linux下面,你需要恋情multihome=ip的参数:

ucc server DM-Antalus?game=XGame.xDeathMatch -multihome=192.168.0.1

服务器在网关,防火墙,路由器后面

如果你的服务器在网关,防火墙,路由器后面你需要打开一些端口让外面的客户端连进来。默认的端口有7777,7778,7787,7788,28900,28902。我现在还不确定他们是TCP,UDP或者两者都是。

你还要在UT2003.ini中找到[IpDrv.MasterServerUplink]部分,把ServerBehindNat设为true。

除非你改变了端口(如上面说的一台机器运行多个服务器)那么凡是你用到的端口都要打开。

硬件要求

Epic建议,两个32人的专用服务器在一台服务器主机上需要一台1.7G的CPU。你至少需要128M内寸(最小级限了)。

最近改一些客户端的项目,测试的时候需要使用windows,因为是windows的客户软件,所以不得不使用windows, 原来总是在我的debian上安装vmware, 自从升级内核到2.6.17后,发现怎么安装vmware都有问题, 就比较烦,原来看到过华华说过qemu,0.8.1的时候安装过一次,感觉不是太理想,尤其是sdl的屏幕造成鼠标拖动很慢, 去主战的forum里看了看,发现这个已经被patch掉了。

而且kqemu又到了pre9了。正好试一下。

说一下目的:

安装qemu和kqemu, 配好网络。实现virtual machine 和 host 能够互通,也就是不是使用默认的user模式。 而改使用tun/tap的模式。

这里有两个要求:

第一:内核要支持neork filter. 尤其要用到的是nat.

第二:内核要支持tun/tap模块。

我的是debian,自己编译的内核,所以在编译的时候就已经弄好了,由于我从来不用官方的内核,所以我就不知道debian的管方内核是不是已经有了。

不过可以自己看一下。

iptables的支持是不用问的,一般都是内置的。

就是tun/tap设备的支持。 这一点,可以这样看一下:

modprobe tun, l *** od 看一下有没有tun 如果成功,就是支持的, 而且是被编译成了模块,如果没有,可以看一下:/dev,看看是不是存在tun这样一个文件,如果存在就是内核内置的,没有编译成模块,另外, 如果编译成了模块,也要注意是否有这个文件存在。不在的话,得自己建了。

mknode /devtun, 一般现在的发行版都会在你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 / *** in/ifconfig $1 192.168.0.1 mask 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/sysipv4/ip_forward

/ *** in/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/sysipv4/ip_forward

/ *** in/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 - nic,vlan=0 - tap,vlan=0

如果嫌麻烦,

就干脆写一个一句话的脚本:

#!/bin/bash

qemu -hda win2k.img -boot c -localtime -m 256 - nic,vlan=0 - tap,vlan=0

存储为win2k, 加上x的权限,然后放置到/usr/bin, 或者是/usr/local/bin下

以后直接运行win2k, 就可以启动2000了。

同理也可以安装多个系统,写多个脚本启动。

这样比较的酷

虚幻引擎3是一个面向下一代游戏机和DirectX 9个人电脑的完整的游戏开发平台,提供了游戏开发者需要的大量的核心技术、数据生成工具和基础支持。

虚幻引擎3的设计目的非常明确,每一个方面都具有比较高的易用性,尤其侧重于数据生成和程序编写的方面,这样的话,美工只需要程序员的很少量的协助,就能够尽可能多地开发游戏的数据资源,并且这个过程是在完全的可视化环境中完成的,实际操作非常便利;

与此同时,虚幻引擎3还能够为程序员提供一个具有先进功能的,并且具有可扩展性的应用程序框架(Framework),这个框架可以用于建立、测试和发布各种类型的游戏。

◎ 64位色高精度动态渲染管道。

Gamma校正和线性颜色空间渲染器提供了完美的颜色精度,同时支持了各种后期特效例如光晕,镜头光环和景深等效果。

在最新的一代显示芯片发布的过程中,我们注意到了一个非常明显的特点,就是新一代的显示芯片已经不再满足于传统的32位色深,转而需要更加高精度的颜色范围,这一点在NV40和R420身上都能非常明显的看出来。在NV40上,这种技术被称为HPDR技术,而在R420身上,这种技术也有所体现。

◎ 支持当前所有的基于像素的光照和渲染技术,包括使用法线贴图技术的参数化的Phong光照;虚拟位移贴图;光线衰减函数;采用预计算的阴影遮罩技术以及使用球形harmonic贴图的预计算的凹凸自阴影

◎ 高级的动态阴影。

虚幻引擎3提供对下列3种阴影技术的完全支持:

· 采用动态模板缓冲的阴影体积技术,能够完整支持动态光源,这样就能在场景中所有物体上精确地投射阴影。

· 能够让动态的角色在场景中投射出动态的、柔和的模糊阴影,这个过程是通过使用16X超级取样的阴影缓冲实现的

· 采用了拥有极高质量和极高性能的预先计算出的阴影遮罩,从而可以将静态光源的交互现象离线处理,同时保留了完整的动态高光和反射效果。

◎ 所有支持的阴影技术都是可视化的,并且可以按照美工的意愿自由混合。另外,同时可以与有颜色的衰减函数结合,从而实现具有合适阴影的平行光、聚光灯效果,以及投射光效果

角色能够在虚幻引擎3中使用阴影技术产生动态的软阴影

◎ 强大的材质系统,使得美工可以在实时图形化界面中建立任意复杂的实时Shader,而这个界面的友好度可与Maya的非实时Shader图形编辑界面媲美

◎ 材质框架是模块化的,所以程序员不仅可以加入新的Shader程序,还可以加入能够让美工随意与其他组件连接的Shader组件,从而可以实现Shader代码的动态合成。

◎ 完全支持室内和室外环境的无缝连接,在任何地方都支持的动态每象素光照和阴影。

◎ 美工可以通过一个可动态变形的基本高度图来建立地形,并使用多层混合材质,这其中包括位移贴图,法线贴图和任意复杂的材质,动态的基于LOD的细分,以及植被。

另外,地形系统还支持美工控制的自然效果,如平地上的植被,陡坡上的岩石和山顶上的雪

◎ 体积环境效果,包括高度雾和物理上精确的距离雾

◎ 刚体物理系统,支持游戏者和游戏中的物体,布娃娃角色动画以及复杂碰撞等物体交互方式。

布娃娃(Ragdoll)系统,是目前最为流行的一种非常高级的物理引擎,能够付给物体以一定的质量,形状等特性,从而获得非常逼真的力学动态效果。Half Life 2、Pain Killer等著名游戏均采用了这个物理引擎。

◎ 所有可渲染的材质都含有物理特性,例如摩擦系数等参数。

在虚幻引擎3提供的编辑工具UnrealEd中,能够对物体的属性进行实时修改

◎ 符合物理原理的声音效果

◎ 完全整合的基于物理原理的交通工具支持,包括游戏者控制,人工智能和网络

◎ UnrealEd内建的可视化物理建模工具,支持对于模型和骨骼动画网格的用于优化碰撞检测的图元的建立;约束编辑;在编辑器内可交互的物理模拟和调整

● 动画系统

◎ 骨骼动画系统;支持每顶点可达4骨骼同时影响的效果以及复杂的骨骼结构。

◎ 动画由一棵动画物体树驱动,包括:

· 混合控制器,进行对嵌套的动画物体之间的多路混合。

· 数据驱动的控制器,封装动作捕捉或手动制作的动画数据。

· 物理控制器,连接到刚体动态引擎,用来实现布娃娃系统的游戏者和NPC动画和对力的物理响应。

· 过程动画控制器,以C++或UnrealScript实现,为了实现一些如使一个NPC的头部和眼睛跟踪一个在关卡中行走的游戏者,或使一个角色根据健康情况和疲劳度作出不同动作等特性。

◎ 为3D Studio Max和Maya制作的导出工具,用于向引擎中导出赋予蒙皮权重的网格,骨骼和动画序列。

● 游戏框架以及人工智能

◎ 提供了一个支持普通游戏对象(如游戏者,NPC,物品,武器和触发器)的面向对象的游戏框架。

◎ 丰富的多级别AI系统,支持寻路、复杂关卡游历、单独决策和组队AI

· 对如触发器,门和升降机等普通游戏对象敏感的寻路框架,允许复杂的游历设定,使得NPC可以按下开关,打开门,并绕过障碍物。

· 游历框架带有短期战术战斗、掩护和撤退的路线网。

· 基于小队的AI框架,适合第一人称射击、第三人称射击和战术战斗游戏。

◎ AI路径在UnrealEd中可见并可由关卡编辑者编辑,允许自定义和提示

◎可见的AI脚本工具,使设计者可以创建复杂的交互性游戏设定,例如游戏者目标,通用的游戏事件触发器和交互式过场动画

◎ UnrealMatinee,一个基于时间线的可视化序列、动画和曲线路径工具。设计者可以使用此工具建立游戏中的过场动画,可以是交互的或非交互的,通过动画序列化、移动包括摄像机在内的对象,控制声音和视觉特效,并触发游戏和AI事件。

UnrealEd中的“Matinee”工具,能够编辑基于时间轴的事件序列

◎ 支持各种平台的输出格式,包含5.1环绕立体声和高品质杜比数码音效。

◎ 3维声源位置设置,多普勒效应。

多普勒效应:是指当发声物体在运动时,声音的音调会随着物体移动速度而改变其高低——声音频率的变化,这个原理也被运用在声卡3D发声原理之中。

◎ 在UnrealEd中的可视化音效工具可以为声音设计者提供对音效的全面的控制,声音强度,顺序,循环,过滤,调制,变调和随机化。声音参数被从代码中分离开,使设计者可以控制所有的与游戏、过场动画和动画序列相关的声音。

◎ 支持所有平台的主要声音格式,包括PCM,ADPCM,游戏机对应的声音压缩格式和Ogg Vorbis。

◎ 支持游戏机上的声音流。

◎ Internet和局域网游戏已经成为Epic的竞赛游戏如Unreal Tournament 2004的一大特征。虚幻引擎长时间以来一直提供灵活的高级网络架构,适合于各种类型的游戏。

◎ Internet和局域网游戏在PC和所有游戏机平台上都被完全支持

Unreal Tournament 2004的游戏中带的服务器浏览器

◎ 虚幻引擎的网络游戏部分编程是高层的和数据驱动的,允许由Unreal脚本代码指定在客户端和服务器之间联系的变量和函数,来保留一个同步的对游戏状态的近似。底层游戏网络传输是基于UDP的并能够将可靠和不可靠传输方式结合,来对游戏感进行优化,即使在低带宽和高延迟的环境下。

◎ 客户端-服务器模式下最多支持64个游戏者同时游戏。同时支持非服务器模式(点对点模式)下的16游戏者同时游戏。

◎ 支持不同平台间的网络互连(例如PC服务器和游戏机客户端;Windows, MacOS和Linux客户端共同进行游戏)。

◎ 所有游戏特性在网络游戏模式下都被支持,包括基于交通工具的多人游戏,带有NPC和机器人的组队竞技,单人模式下的协同游戏等等。支持自动下载,包括跨平台的一致的Unreal脚本代码。这项特性使得从用户自己创建的地图到奖励包,到完整的游戏mod都可以随意获得。

◎ 提供了一个"主服务器"组件来跟踪世界范围内的服务器,提供给游戏者过滤的服务器列表,等等。世界范围内的游戏统计跟踪系统

◎ 请注意我们不会提供一个适合大量玩家在线网络游戏的服务器或网络框架。尽管这项工作是一个需要多人多年工作的工程,仍然有很多小队已经使用Unreal引擎做了这件事(包括NCSoft的《天堂2》和EA的《创世纪X》),这表明了使用Unreal引擎作为MMORPG游戏客户端和工具的可能性。

● UnrealEd内容创建工具

◎ Uneral编辑器(UnrealEd)是一个纯粹的"所见即所得"的数据生成工具,用来填充3D Studio Max, Maya和可发行游戏之间的空隙。

◎ 对游戏对象如游戏者,NPC,物品,AI路点和光源的可视化放置与编辑-带有完全的实时预览,包括100%的动态阴影。包含一个数据驱动的编辑框架,允许关卡设计者容易地自定义任何游戏对象,以及允许程序员通过脚本向设计者能够使用新的可自定义的属性。

可视化的材质浏览器,并能提供搜索和管理的功能

◎ 美工可以通过实时地形编辑工具来提高地面,向地面绘制Alpha层来控制各层的混合并组装各层,碰撞检测数据和位移贴图

◎ 可视化材质编辑器。通过可视化的连接颜色、alpha和贴图坐标系统和程序员定义的材质组件,美工可以建立从简单的多层混合材质到极为复杂的材质,并且这些材质可以动态地与场景中的光源交互

◎ 一个强大的浏览框架,可以用来寻找、预览和组织各种类型的游戏资源

◎ 美工可以使用动画工具来引入模型、骨骼和动画,并将它们连接到游戏中的事件如声音和脚本事件。

可视化的材质编辑器让美工能够轻易的创建能够在Shader程序中应用的素材

◎ 在编辑器中的"Play Here"按钮使得在编辑器中只要点击一下鼠标即可进行游戏。这样,你可以在编辑器中一边测试游戏,一边进行编辑。

◎ 每份Unreal引擎授权都包含了重新组合分配UnrealEd的权利,使得游戏制作组可以将他们的数据创建工具与游戏一起发布给mod制作团体。Mod提供者已经成为当今很多卓越的PC游戏成功的一个重要因素,而且我们可以预见在将来,对基于PC的mod开发的支持也可能成为游戏机游戏的重要因素。

◎ 我们提供了3D Studio Max和Maya来将模型带到虚幻引擎中,带有网格拓扑信息,贴图坐标,平滑组,材质名称,骨骼结构和骨骼动画数据。

可视化的地形编辑器能够实时体现出地形的变化

◎ 所有您所希望从一个现代数据编辑工具中得到的东西:多层撤销/重复功能,托拽,拷贝粘贴,自定义快捷键和颜色配置,视图管理。

在虚幻引擎3中我们的大多数角色都是由两个网格模型建立的:一个具有几千多边形的实时网格,和一个数百万多边形的细节网格。我们提供了一个分布式计算的程序,对细节网格进行光线跟踪,并且从高多边形几何结构生成一张法线贴图,在游戏中赋予实时网格。结果是在游戏中的网格带有高多边形网格的所有光影细节信息,但是仍然可以十分容易的实时渲染。

使用法线贴图实现的超过1亿个三角形效果,实际上只有50万个三角形

虚幻引擎3包含了例程部分和100%的源代码,包括引擎本身、编辑器、Max/Maya导出插件和所有该公司内部开发的游戏的游戏代码。

◎ 可扩展的、面向对象的C++引擎,带有用于静态和动态加载代码和资源的软件架构,可移植性,易于调试。

虚幻引擎3提供的脚本编辑器

◎ Unreal脚本语言提供了对元数据的自动支持;支持十分灵活的文件格式向下兼容性;支持让关卡编辑者使用脚本属性;基于GUI的脚本调试器;对多种重要游戏编程概念的本地语言支持,例如动态有限状态机和基于时间的代码执行。

◎ 模块化材质组件接口来扩展可视化工具,并且在可视化Shader GUI中加入新的美工可用的Shader组件。

◎ 源代码控制友好的软件架构,对大型工作组和多平台工程的可扩展性。

◎ Unreal引擎3被作为一个可以在PC和任何下一代家用游戏主机上编译的统一的代码基础。所有游戏组件和数据文件都可以在各种平台上兼容,为了PC上代码和资源的快速周转,和家用机和PC上的游戏测试。

◎ 针对家用游戏机的可自由寻址的DVD读取优化过程,能够用大于80%的DVD物理传输率上读取关卡。

虚幻引擎3还可以方便的支持多种语言

◎ 虚幻引擎3数据资源和代码是可地方化的,能够通过一个简单的框架来扩展游戏中全部的文字、声音、图像和视频。虚幻引擎3是基于Unicode字符级的,并且完全支持16位Unicode字体和文字输入,包括引入TrueType字体到可渲染的位图字体。我们的游戏已经使用9种语言发布,包括中文、日文和韩文。

注重细节,其他特殊规格一览

这里是一些我们在建立下一个基于虚幻引擎3游戏的指导方针。不同类型的游戏将会有十分不同的游戏者数目,场景大小和表现。所以这些规范只能作为对一个项目而不是对所有项目的指导。

● 角色

对于每个主要角色和静态网格资源,我们建立两个版本的网格模型:一个可选然的带有唯一UV坐标的网格模型,和一个只带有几何信息的细节网格模型我们通过虚幻引擎3来处理这两个模型,基于细节模型的所有几何信息来为可渲染模型生成一个高分辨率的法线贴图。

可渲染模型:我们在建立可渲染模型时使用3000到12000个三角形,在场景中同时可见的角色有5到20个左右。

◎ 细节网格:我们使用一百万到八百万三角形来为标准的角色建立细节网格模型。这对于为每个角色建立一到两个2048乘2048大小的法线贴图已经足够了。

◎ 骨骼:我们的每个标准角色都有100到200块骨头,包括了有关节的脸部、手部和手指。

● 法线贴图和材质贴图

我们在建立大部分角色和场景的普通贴图和法线贴图时都使用2048乘2048分辨率的贴图。我们感觉这是一个对于2006年左右的运行于中档PC上的游戏来说的一个十分合理的目标。下一代的游戏主机可能需要将贴图大小减少2倍,而低端PC则需要减少4倍,取决于贴图数量和场景复杂度。

● 环境

典型的场景环境包括1000到5000可渲染的对象,包括静态网格和具有骨骼的网格。对于当前3D加速卡的合理性能,我们打算将在任何场景中出现的可视物体数量保持在300到1000左右。我们的典型的更大的场景中最多有20万到120万的可见三角形。

● 光照

没有对光源数量的硬编码限制,但是为了性能考虑,我们试图将大范围的光源数量限制到2到5个,因为每个光源/物体的交互都是基于引擎中比较耗时的高精度每象素光照和阴影渲染管道。用于高光和细节光照的小范围的光源明显的要比影响整个场景的大范围光省时。

游戏这类非常特殊的软件在人们的实际工作中并不能够创造任何实际的价值,但是却能够让人们在使用电脑的过程中得到放松。一个游戏能否给消费者带来尽可能完美的感官上的享受就成为了一个游戏能否获得成功的最基本的因素。

而对于游戏中最为流行的3D游戏来讲,开发的难度随着游戏容量不断攀升,如何能够迅速的开发出一个个高质量的游戏就成了关键,采用游戏引擎和游戏内容分离的方式自然是目前最好的一种解决方案。

于是作为游戏中的灵魂,游戏引擎的成功与否将决定一系列游戏的最终效果。今天我们介绍了目前最为先进的游戏引擎之一虚幻引擎的最新版本,让大家对游戏引擎有了一定的概念上的理解,也知道了在一个游戏幕后的一些事情。

总的来说,虚幻引擎3的确是一个非常先进的引擎,它提供的功能非常先进,几乎融合了目前顶级显卡中提供的所有功能,在这样的技术背景下,这款引擎带来了非常绚丽的效果,其演示的画面已经足以震憾每一位观众了。

100% 是 Unreal,无以伦比的工具链。

1 首先,havok是物理引擎,不是游戏的,可以被嵌入Unreal(Unreal默认带的是PhysX物理引擎), 就不在一个层面讨论了。

2 从技术上看,Unreal和Cryengine都很领先, Gamebryo稍次,bigworld主要靠服务器套件,从游戏引擎综合讲,更次点。 然后是做小游戏的Unity3D(比如iphone,不过这引擎没源码授权), 再然后是比较垃圾的Torque. Hero engine是听过没接触过的,所以多评价。

3 脚本内嵌:

unreal : 自己的Unreal Script

CryEngine &Gamebryo: lua

Bigworld: python

Unity 3D:(只能用脚本编游戏) C#, Js.

4 价格, Unreal >Cryengine >Bigworld >Gamebryo >>Unity 3D >Torque

5 如果你英文过关,这里有10大游戏引擎, 你自己看,我就不翻译了

http://www.develop-online.net/news/32250/The-top-10-game-engines-revealed

6 中国的话,目前Gamebryo使用最多,tencent,盛大都有在用,世界范围,Unreal是主流。

希望对你有帮助 。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/396339.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存