本帖最后由 废喵 于 2025-6-22 18:04 编辑
1. 准备工作
1.1 安装Bannerlord Mod开发工具
进入steam库,①勾选工具,②点击搜索栏搜索Bannerlord。安装带有 `- Modding Kit`后缀的开发者工具。
1.2 下载并解压工具包
打开Bannerlord游戏根目录,将工具包解压到根目录中。
1.3 选择字体
选择你想要使用的字体,字体必须是.ttf格式的,注意字体的字符覆盖范围,如果只包含几千个常用汉字可能会导致使用mod时出现缺字现象。
选择好后注意一下字体的命名,最好只包含英文字母,你也可以自己重命名一下。例如:`LXGWWenKaiRegular.ttf`
将准备好的字体文件放到工具包目录中。
1.4 准备字体mod文件
将工具包中的空白字体mod模板(FontTest文件夹)复制粘贴到Modules文件夹中。
修改粘贴的文件夹的名字,只能包含英文字母,复制修改好的名字
进入文件夹,修改Submodule.xml中的Name和Id的值,Name是启动器中的名字,可以随便改,Id使用之前复制好的名字。
进入`..\GUI\Fonts`文件夹中,修改`FontTestLanguages.xml`的文件名为你设置的Id+Languages,例如你的Id设置为LXGWWenKai,则文件名为LXGWWenKaiLanguages。
1.5 Powershell运行环境
工具包附带了一个powershell脚本用来调用官方字体生成工具,使用脚本前要确保你的执行策略允许运行本地脚本。
现在你应该位于工具包目录,在目录空白位置右键能看到在powershell中打开或者在终端中打开,点击以在当前目录中打开powershell。
复制粘贴到powershell中`Set-ExecutionPolicy RemoteSigned -Scope CurrentUser`并回车运行,这条指令使得当前用户允许本地脚本执行。 在powershell复制粘贴`.\PowershellTest.ps1`。回车运行测试脚本,检测是否允许脚本运行。
2. 生成字体资源
2.1 生成字体图集相关文件
工具包内的`GenerateFontAtlas.ps1`脚本文件用于调用官方的工具生成字体图集相关文件,如果你想修改生成参数,需要打开脚本文件修改其中的变量。里面有足够的注释告诉你哪些参数是你应该关注的。
在powershell中复制粘贴`.\GenerateFontAtlas.ps1`,再按一个空格,然后输入你的字体文件名,回车运行。完整指令例子:`.\GenerateFontAtlas.ps1 LXGWWenKaiRegular.ttf`。
如果没有出问题,会弹出一个新的powershell窗口生成字体图集相关文件,如果你有多个字体要生成可以用之前的powershell窗口继续输入指令生成其他字体图集的文件。
新窗口在生成时会将使用的参数列出,在没有生成完之前关闭powershell窗口即可终止生成。生成时间与选择的字符范围相关,在生成完毕前耐心等待。
2.2 转移文件至mod中
生成完毕后应该包含三个文件,文件名与你的字体名称是一样的:
打开一个新的资源管理器窗口/文件夹窗口,进入 1.4 准备的mod文件夹,将.png文件放入`..\GUI\SpriteParts\ui_Mod_fonts`文件夹中,在`..\GUI\Fonts`文件夹中创建一个新的文件夹,然后将.fnt和.bfnt文件放入新建的文件夹中,再将文件夹重命名为你的字体文件名。 在 1.4 提及的`..\GUI\Fonts`文件夹中,在Language.xml文件名前添加一个占位英文字母,因为这个文件是用来指定要替换的游戏语言选项的字体,现在还没有完成字体的导入添加占位符让游戏维持原版字体。例子:`LXGWWenKaiLanguagesA.xml`或`ALXGWWenKaiLanguages.xml`。
在powershell复制粘贴`.\SpriteSheetGenerator.ps1`,回车运行并生成相关的配置文件。 看到之前设置的mod里的字体生成完毕就可以退出powershell了。
2.3 导入字体现在通过steam打开安装的官方mod工具,只选择配置好的字体mod,然后启动。如果在启动过程中遇到报错直接忽略无视跳过即可,T社做的烂工具是这样的。
- 进入到主页面后,按下`alt + ~`打开控制台,输入`resource.show_resource_browser`打开资源管理器。在资源管理器左边的侧边栏中选择mod文件夹里的`GauntletUI`文件夹.
- 选好文件夹,在中间的路径那一栏右边有三个按钮,点中间的按钮导入资源。
- 等待字体导入完毕后,点击字体资源,在右边的属性中选择`Do Not Compress`,不选这项会压缩资源导致字体变得模糊。点击右下角的`save`保存修改,等待结束后退出工具即可进行下一步了。
2.4 修改语言模式使用的字体
进入字体mod里的`..\GUI\Fonts`文件夹中,将之前添加的占位符删除。打开xml文件,将字体名字填入空白的双引号中,默认只修改简体中文字体,如果需要修改更多其他语言选项的字体,参考`Modules\Native\GUI\Fonts\NativeLanguages.xml`中的内容。
3. 优化游戏内字体表现(可选)
完成上述步骤以后字体mod已经可以正常使用了,但是还有一些细节可以手动调整进行优化。
3.1 字重区分
打开Language.xml你可能会注意到有三种字重可以分开设置,一般来说只有Regular和Medium是经常能见到的,Light我还没注意到哪里使用过。
以下列设置为例
<Language id="简体中文" DefaultFont="LXGWWenKaiRegular" LineSeperatorChar="-">
<Map From="FiraSansExtraCondensed-Light" To="LXGWWenKaiLight"/>
<Map From="FiraSansExtraCondensed-Medium" To="LXGWWenKaiMedium"/>
<Map From="FiraSansExtraCondensed-Regular" To="LXGWWenKaiRegular"/>
<Map From="Galahad" To="LXGWWenKaiRegular"/>
<Map From="Galahad_Numbers_Bold" To="LXGWWenKaiMedium"/>
Regular字体可以设置为默认字体,大部分字体都会使用Regular字体。
而Medium字体则会用于城市名,以及鼠标悬停tips的数值字体,例如装备tips显示的护甲值、类型等都是使用Medium字体。这里对应的是`rom="Galahad_Numbers`
用多个字体的好处在于可以调整不同字体在游戏内的显示大小,以及Regular字体需要做的提高字体间隔不影响Medium字体,这样整体的视觉观感会更好。
3.2 调整字体表现
虽然生成完的字体可以直接使用,但是在游戏内可能会显得太大或者太小,也可能太暗淡或者太亮。这时候可以打开游戏结合之前生成的字体对应的fnt文件,修改其中的变量即可实时查看字体调整的效果。
在加载了字体mod之后,在游戏中使用`alt + ~`打开控制台,输入`ui.set_debug_mode 1`即可打开ui的调试模式,让文件的修改实时显示在游戏内。 这里简单说明一下这四个数值的作用,具体用处查看后续小节。
| | | | | | | 调整字体的平滑度,实际使用大于0.5字体变暗变细,小于0.5变粗变亮,修改幅度建议不要超过0.05 | | |
3.2.1 调整字体上下间隔我在使用未调整的字体前,注意到战斗日志的最下面一行字会被截断一部分,选项菜单里的标题也略微偏下,超过了UI小部件的边界,所以需要通过增加字体的上下间隔将字体在这些地方抬高一些。 在竞技场观察战斗日志比较适合调整字体的间隔,调整base直到正好让最下面一行不被截断就行了。 之前说过鼠标悬浮的tips里的数值使用的是Medium字体,因为要和Regular字体的base进行隔离,因为调大了Regular字体并且值的字体也使用Regular的字体会导致tips里的词条间隔过大,看着不太美观,这里使用Meduim字体就可以规避这一点,让tips里的词条保持紧凑。
3.2.2 调整字体大小我使用的霞鹜文楷字体默认的大小我觉得有点太大了,所以我略微缩小了一些Regular的字体大小,整体看着更和谐,这里用的是customScale这个参数,0.01的修改可能看不到什么效果,一般是0.02左右会有明显变化。 同样的,因为修改了Regular字体的大小,在tips中,Meduim的字体就会显得略大,可以同步修改Medium的大小让两种字体差不多大。
3.2.3 调整字体平滑度我主要用这个来调整字体的粗细。这个要调多少就看个人喜好了,我建议让Medium的值比Regular更低一些,显示出字体的区分度,同时因为Meduim用在了各种数值的字体上,粗一些也更容易阅读。
3.2.4 调整字体间距和阴影大小就我目前的经验来看,调整两个字之间的间距和阴影只能在生成字体资源时增加size大小,并同步增加range和padding达成。我之前只生成中文字符测试时,使用64size测试,对比32size,阴影明显要更贴近字体边缘而不会显著发散,两字间隔看着也更舒服。 可惜傻逼T社只给中文字体常用字符,导致玩mod缺字不得不弄成全包含字体。
4. 教程相关资源
|