CSGO地图文件大小优化,压缩贴图文件使符合限制的方法
由于CS:GO第三方社区服务器加载150MB以上的地图文件时可能导致服务端崩溃,所以导致部分服务器要求推荐的第三方地图都需要小于150MB才可以上传。
本文提供一种方法用于解决这种问题。主要操作就是压缩贴图,同时删除一些地图内占用较大的资源(例如:音频)。虽然可能导致地图的贴图不够清晰,但是一个竞技性游戏贴图不是很重要,就算再不清晰也不会回到CS1.6那种效果的,毕竟CSGO有HDR。
先决条件
.NET Framework v3.5
包括 (VTFEdit打开的时候系统会提醒你装)已安装
Java
已安装 以下工具
VTFEdit
VTFEdit
修改.vtf格式的贴图文件VIDE
VIDE
Valve Integrated Development Environment 用于修改地图文件的资源BspZipGUI
BspZipGUI
用于修改地图文件的资源
VIDE
和 BspZipGUI
二选一, VIDE 有严重的BUG问题, 新增文件的同时不能删除文件, 但是界面易用, 反正不是V社自己开发的工具这东西就这样.
bspsrc
bspsrc
用于提取地图文件资源游戏本体和地图文件(.bsp)
操作步骤
当你下载好了以上工具并准备好了地图文件,那我们就可以开始了。
准备
创建一个工作区文件夹,里面放置这些内容。
分别是bspsrc,VIDE,输入文件夹 input,输出文件夹 output,地图文件(.bsp) 和 VTFEdit。
解包贴图
运行bspsrc目录下的bspinfo.bat或者bspinfo.sh。
运行后界面应如图所示。
将地图文件(.bsp)拖入软件窗口,正确导入后如图所示。
切换到Embedded files选项卡,点击Extract all,将文件释放到input目录下。
贴图解包完成,关闭bspinfo软件。
贴图的压缩
一般情况下我们只能压缩materials里面的材质,这里面一般情况下存放的是地图贴图和模型贴图。由于很多作者上传地图的时候使用的都是4K贴图,更有甚者使用8K贴图的,一个贴图都有几十M,地图文件能不大就有鬼了。
单次转换文件过多可能导致VTFEdit崩溃,所以可以提前将input/materials目录下一些较小的文件以及vmt文件删除掉,因为这些文件再怎么缩小也无济于事了(边际效应),减少等待时间和崩溃概率。
打开VTFEdit工具,选择Tools选项卡,再点击Convert Folder。
选择input下的materials文件夹,将vtf贴图转换为tga格式,输出文件夹选择output。
当转换完成后,进行下一步操作,更改输入的目录为output和输出的目录为vtf_output以及转换方式。
点击Options更改选项,降低Clamp选项下的Maximum width和Maximum height(推荐情况是512和1024,数值越小文件越小),然后点击OK保存。
点击Convert完成tga转换回vtf的过程。
转换完成,关闭VTFEdit,完成下一部分操作吧。
贴图的导入和替换
上述步骤中我们完成贴图的压缩,接下来该对已有的文件进行替换了。
注意一次只能导入单个子目录下的所有文件,并不能一次性导入所有贴图。要批量导入可以将刚才压缩好的贴图(vtfoutput)目录下所有文件丢进csgo的materials文件夹,然后使用Scan指定CSGO目录进行导入。
打开VIDE,点击Pakfile Lump Editor(如图)。
点击BSP Options分类下的Open按钮,选择地图文件(.bsp)。
点击Pakfile Options分类下的Add按钮,批量选择导出的贴图。
根据原本文件存放的路径填入对话框,例如vtfoutput/nippertextures/20th原本对应的是materials/nippertextures/20th,所以填入以上内容点击OK确认。
点击后提示正在处理并确认是否替换文件,选择Yes to All。
重复步骤 3-5,直至所有要修改的贴图已经导入完成。
如图,已修改的文件会用其他颜色高亮显示,然后点击Save保存地图文件(.bsp),缩图结束。
原本的bsp文件就会被替换为修改好的,并创建一份原有文件的.bak备份。
最后
本文由于CS2的发布,希望各大服务器尽快更新至新版本,本文可能已失去时效性,现进行公开。
感谢你的阅读,本文由浅爱(@ShallowAi) 原创撰写,遵循CC-BY-SA协议,全文图片详见个人博客。