马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
由于我的游戏中,历史界面是直接放在主菜单的,该界面的延迟会严重影响游戏体验,因此对如何减缓历史界面卡顿的问题进行了相关研究,分享给受到同样困扰的朋友
========以下是研究过程可以跳过不看=========
1.【限制历史记录条数】
确实影响比较大,将历史记录条数压缩到50条之后,性能到了可以忍受的范围,但仍然存在卡顿
2.【去掉页面上花里胡哨的UI设计】
没得卵用jpg
3.【去掉历史记录的outline】
性能提升了50%,但没有outline,我半透明的界面可能文字识别度会降低,因此无法使用这一方法
4.【比较不同语言下的打开速度】
神奇的是,英文下几乎毫无卡顿,但中文卡顿就很明显
5.【研究python源代码】
基于3和4的研究,怀疑历史界面的渲染速度和文本的展示方式有关,因此研究了一下python源代码
[RenPy] 纯文本查看 复制代码 while len(history) > history_length:
history.pop(0)
看到这一行literally心里一沉
最后发现性能瓶颈实际上是text what这一行,而且仅限于中文字符,英文和数字都不会卡顿
========以上是研究过程可以跳过不看=========
【结论】
界面卡顿的原因很可能是中文渲染时导致的,renpy实现中文的方式可能类似于从大字报中截取文字展示,因此对于字体文件异常庞大的中文,处理速度就会显著降低
事实上也确实,我的游戏中大量使用了30M大小的中文字体。
那么,解决问题的答案只有一个了:压缩字体!
通常压缩字体的方法,其实就是将字体包中的冗余字符删掉。比如我使用的30M中文字体,内部包含了将近2w个中文字符,但那些用于界面UI的字体,其实根本用不着这么大的字体包。
下面是我尝试过的字体压缩手段:
https://www.fontspider.vip/
在线压缩字体的软件,然而我使用后压缩失败(。)
但这个网页有自带的常用3600中文和4600中文原文,如果你也使用这个网页失败的话,可以将这些原文粘贴到别的字体压缩软件中使用
*请注意!这个网站自带的原文中不包含空格键,请一定注意要自己补上,不然你的空格键就无了……
https://yy123.ink/itResDetail/21693
Toolbox,本地使用的字体压缩软件,我使用的是这个,还是本地程序用起来更加安心
压缩到3600字符后,我的字体文件从30M变成了5M,游戏程序运行速度显著提升,历史记录页面也基本上不卡了!
如果你也有同样的问题,不妨试试看XD
|