|
楼主 |
发表于 2006-1-8 05:51:11
|
显示全部楼层
来自 中国–河北–廊坊
回复: 【求助】关于客户端下载服务器文件转HTTP的问题!
谢谢大家的帮助!!!我问题已解决!!!
原来是我一直不知道RES的作用...昨晚在网上到到一个介绍..希望后来可以了解一下:
A.通览
这篇指南将为您解释RES文件的目的。其中包括RES的作用,创建方法,存放位置等等。你只有在一台在线服务器(CS,HL Deathmatch,TFC等等)增加了一张自定义地图的情况下,才需要关注RES文件。你需要使用RES帮助你往客户端上“传输”那张地图中必需的文件,例如一个WAD文件、天空材质、声音等等。如果你只是制作了一张单机地图以供下载,那么,你无需考虑这些。
B.RES文件是什么
RES文件只是一个文本文档,其中包含一个文件列表。RES文件同BSP文件相对应。它用来通知HALF-LIFE服务器向客户端发送他们缺少的特定文件。除了后缀.RES,它必须和你的BSP文件名完全相同。因此,如果你的地图名为cs_mymap.bsp,那么你应该创建一个名为cs_mymap.res的文件。还有,BSP文件和BSP文件必须存放在同一目录下。也就是说,都应该放在MOD根目录下的"/maps"文件夹中。
RES文件的工作流程如下:
1.服务器更换成你自定义的地图,或者当自定义地图开启时客户端连接到你的服务器
2.服务器查找跟地图名(BSP文件)同名的RES文件
3.服务器调用RES文件,并按照其中的文件列表查找图片、声音等等需要发送往客户端的文件。
4.如果客户端没有这些指定的文件(或者存在同名文件但数据、大小不同),那么服务器将他们发送到客户端。
5.RES文件中提及的所有文件被下载完成后,客户端连接到服务器,并进入游戏。
需要特别注意的一点是:只有文件被完全下载以后,客户端才可进入游戏。这是因为其中可能包含对HL引擎来说至关重要的材质文件。因此,如果你有大量的自定义文件或者庞大的WAD文件,或许你想压缩他们的体积。如果确实如此,你可以从WAD文件中移除一些并不需要的材质文件来尽可能达到压缩的目的。另外,你可以试着找到那些你只在特定场合下才能用到的材质文件。是否必须要使用这些文件呢?也许我们可以用其他的材质文件来替代他们而达到相同的效果。客户机通常并没有足够的耐心来等待下载一大堆文件,所以他们很可能会点击取消。因此,你所做的清理工作越彻底,其他人就会越省心。
C.创建你自己的RES文件
既然RES文件只是文本文件,那么你自然可以使用任何文本编辑工具来创建并对它进行修改。我使用记事本,但是其他的工具也可以,只要它使用ASCII编码而不是自己独特的格式。
有一些专门用来编辑RES文件的工具,但是我至今还从来没有使用过,所以我无法讲述他们的用途。:)
D.RES文件的格式
RES文件的格式非常直观。只需每行输入一个文件名即可。为了让服务器能够在你的MOD(例如CS)目录下找到你所指定的文件,你必须指定文件的路径。这个路径是相对于根目录("root")而言的。无论如何,根目录都是指服务器所使用的MOD目录。对于CS服务器来说,应该是\hlserver\cstrike
;对于TFC服务器来说,应该是\hlserver\tfc.所以,在输入文件名时,应将("ROOT")目录作为绝对根目录。
看到这里,你也许会想,“这是不是意味着我将无法传送位于MOD目录以外的文件??”呵呵,问得好!答案是:不可以!实际上,如果你试着指定其他目录下的文件,服务器会崩溃。在为这篇指南测试的时候,我在一个CS PUB服务器上试着指定硬盘根目录以外的文件,结果服务器崩溃了。这可不好。教训:只能指定MOD目录或其子目录下的文件。
那么究竟应该如何指定路径--对于"root"的相对路径呢??这个很简单。将你所要指定的文件名连同它的存放目录预先准备好。比方说,你正使用一张CS的地图。这个MOD的根目录是c:\Counter-Strike\cstrike。比如说你做的这张地图特别漂亮,而且需要一些天空的材质文件来正确显示它。天空的材质文件存放在c:\Counter-Strike\cstrike\gfx\env目录下。既然c:\Counter-Strike\cstrike是根目录,那么你只需要指定gfx\env部分。下面是包含6个天空材质文件的RES文档。
gfx\env\mysky_up.tga
gfx\env\mysky_dn.tga
gfx\env\mysky_lf.tga
gfx\env\mysky_rt.tga
gfx\env\mysky_ft.tga
gfx\env\mysky_bk.tga
接下来,我们也需要几个声音文件。他们存放在c:\Counter-Strike\cstrike\sound\misc目录下。在这里,相对路径是sound\misc.下面是更新后的RES文档,添加了声音文件
gfx\env\mysky_up.tga
gfx\env\mysky_dn.tga
gfx\env\mysky_lf.tga
gfx\env\mysky_rt.tga
gfx\env\mysky_ft.tga
gfx\env\mysky_bk.tga
sound\misc\metaldoor.wav
sound\misc\heavychain.wav
E.是否可以避免使用RES文件?
对于地图中的墙壁材质文件,回答是肯定的,你可以不使用。但是对于天空材质文件、声音、模型以及其他一些你有可能需要自己创建的文件,则无法避免如此。如果你的地图需要一个WAD文件,但你又不想利用RES文档,那么你可以使用下面这条参数重新编译一下你的地图,
qcsg -nowadtextures mymap.map
这将迫使编译器将现有的材质文件直接添加到BSP文件中。这种方法利弊共存。
从好的一方面说,如果这张地图中只需要一些自定义的材质文件,那么你可以使用上面的方法将他们和BSP文件编译在一起,这样可以更方便地把地图放到服务器上以供下载。
另一方面,如果地图中也包括许多MOD里原有的HL材质,那么这些文件同样也会被编译在BSP文件中。和分开保存的方法相比,这样做将会使你你的BSP文件体积增加不少。这一点无法避免,它要么不存在,要么就是个大问题。因为客户机要下载BSP文件,所以这样无疑潜在地浪费了文件空间和下载时间。你添加的材质文件越多,BSP文件就越庞大。5,6,7M的BSP文件并不少见。对于使用小猫上网的用户来说,下载这样的文件会让他们无法忍受。而且,也许在他们下载完BSP文件之前,服务器都已经更换地图了。
使用-nowadtextures参数的另一个弊端是,即使你只改动了这张地图的一个像素点,整个BSP文件(5M的DD)也要重新下载。如果你将WAD文件分开保存,那么改动以后将只需要下载修改的那部分。
使用哪种方法由你决定,如何选择会根据你需要的材质以及你存放地图的位置而有所变化。但是如果你不介意使用RES文件的话,它确实是上上之选。 |
|