Left 4 Dead 2

Left 4 Dead 2

Not enough ratings
【服务器】减小第三方战役地图文件大小
By Mono
服务器储存空间有限,如何更加有效地利用这部分空间来存放更多的三方图就很重要了
   
Award
Favorite
Favorited
Unfavorite
前置知识:VPK文件结构
平时我们安装三方图时,已经习惯了和VPK文件打交道。在给服务器安装地图时,尽管也能直接放到addons目录里就完事,但仔细想想,服务器其实并不需要“显示”这一块,所以肯定会有冗余的东西在里面。为了节省服务器空间,下面我们对VPK文件的结构进行考察,把多余的部分剔出来。

解压VPK
Windows用户
使用软件GCFScape
macOS / Linux用户
使用命令行工具 ValvePython/vpk[github.com],参考我之前的教程 Linux Dev Toolchain Collection
vpk -x OUT_LOCATION xxx.vpk
解压出来的目录结构应如图所示:(我使用的例子是 Silent Hill: Otherside of Life[www.gamemaps.com]

各部分含义及作用
  • maps/:包含地图本体文件(*.bsp)和导航网格文件(*.nav,用于AI寻路和路程计算,“bug点”就是因为导航网格没画好产生的)
  • materials/:包含人眼可见的各种材质和贴图,如墙面花纹、血迹等等
  • missions/:定义地图每个关卡的名称、游戏模式等等
  • models/:包含各种物理模型的定义
  • particles/:定义各种粒子效果
  • scripts/:包含导演脚本和其他特殊脚本,如尸潮刷新控制、剧情控制等等
  • sound/:地图用到的各种音效
  • addonimage.jpg:在“附加组件”中显示的图标,有时候可能会叫 addonimage.vtf
  • addoninfo.txt:用于游戏识别本附加组件
去除多余文件
从上面各部分的作用来看,我们可以简单地判断:
  1. 必须保留的文件maps/missions/models/scripts/addoninfo.txt
  2. 一定不需要的文件materials/particles/sound/addonimage.jpg

按照这个思路,我们将多余文件删除,然后重新打包成VPK文件:
.

可以看到,新的VPK文件对比原版有了显著的减小:
更多建议
在把附加地图上传到服务器的时候,可以把 VPK 先压缩一下再上传,在服务器端解压,以减小带宽占用和提高上传效率。
以上述文件为例,295MB 的 VPK 文件使用 7Z 压缩后只剩下了 58MB,显然大幅节省了空间。这样一来,我们相当于把 1.2G 的上传任务缩减到了 58MB,整整 20 倍的差距!
6 Comments
Mono  [author] 27 Nov, 2021 @ 4:04am 
可以,这个不影响,本来就是分开的
27 Nov, 2021 @ 4:02am 
能不能在服务器用精简版的地图,然后玩家用完整版的地图?
Mono  [author] 12 Nov, 2021 @ 1:33pm 
嗯对,甚至还可以把官方的那几个pak01_*.vpk做做手脚腾出6个G左右空间,但会造成建图速度变慢,不是很划算
11 Nov, 2021 @ 3:33am 
如果是专用三方图可以把l4d,dlc1,dlc2,dlc3下的map文件夹里的地图(如c2m1)删除来节省空间,只保留一个章节开房即可
Mono  [author] 21 Nov, 2020 @ 7:24am 
对对,我加进去,这个问题刚好之前也遇上了
CD意识. 20 Nov, 2020 @ 10:00pm 
模型删了会没碰撞,服务器需要读取模型的phy。删了会导致一些模型玩家能穿过去