看了下 bitbucket repo 记录,第一次使用 python 来写脚本处理文件是在 2017 年左右。当时是为了将翻译后的英文 txt 经过一些处理,导出为 csv 格式,以便校对后导出多语言演出脚本,也不是什么复杂的处理,就用 python 写了个脚本,应该是第一次实际使用 python 的样子。
之后,由于在开发游戏的过程中,会遇到一些比较繁琐,具有重复性,又有一定规律的需求的问题需要被解决,我也化身成为捕蟒人(python hunter)写了不少脚本。这里记录分享一些比较有意思的需求和解决思路仅供参考。
制作体验版时剔除未使用的素材资源
在制作游戏体验版时,往往需要把正在开发的项目中未使用过的资源给删除掉,再打包制作出来一个试玩版发布给玩家体验游玩。这个时候有 2 种思路
- 将使用过的资源导出一份作为体验版项目的资源。
- 删除未使用的资源。
解析演出脚本,将演出中使用过的图片,音乐素材给提取出来相对来说更不容易出错。
这边写的脚本也是这样子去做的。
- 核心代码在于使用
shutil
标准库里的copy
方法来复制文件。 - csv 操作可以使用标准库里的 csv module
操作 Photoshop 导出立绘表情差分图片
可以使用 win32com
接口来操作 PS 来隐藏,显示图层后导出图片,示例可参考 Photoshop scripting with Python 这篇文章
创建 CG 鉴赏配置 cglist.csv
krkr2 的 kagex cg 鉴赏配置是一个 csv 文件,里面需要填写每个 cg 文件名。
由于 cg 鉴赏里配置的文件分辨率都是和游戏分辨率大小一致的,并且文件名大多数都是类似 EV01_1 这种,那么按思路来说可以将 data 文件夹里的所有 jpg png 文件都遍历一遍,将需要写入到 cglist 的文件名分组后,就可以导出为 cglist.csv 了。当然最后还是需要人工调整差分显示顺序,删除不需要的)
- 判断图片分辨率大小,需要使用
Pillow
库 里的Image
类
转换 KAG 脚本到 UTAGE3 脚本
三色绘恋在做手机版移植的时候,最后选择了使用 UTAGE3 这个 Unity Visual Novel Tool 作为系统框架,于是就需要先将 krkr 的 kag 演出脚本转换成 utage3 可以运行的演出脚本。
处理思路很简单:
- 解析 kag 脚本的指令
- 转换到 utage 对应的指令(这个过程可简单,可复杂)
- 生成 utage 用的 excel 演出脚本文件
但写起来挺难受的。
因为 utage3 的指令和 kag 指令的设计差别实在是太大了,再加上 kagex 的 world 功能提供的简单语法,又需要转换为新的指令。
移植这工作,做起来是一堆问题需要处理。
- python 操作 excel 的库,可以使用
openpyxl
- 遇到 excel 文件特别大,在
load_workbook
时设置read_only=True
来处理。参考 Read-only mode - 新建 excel 时,写入数据量大时可以在新建
Workbook
时,设置write_only=True
。参考 Write-only mode
转换剧本到 cv 台本文件
解析剧本人名和台词后
- 将非当前角色的台词设置为淡灰色,字号变小。
- 将当前角色的台词设置为黑色,加粗,加大。
- 人名 和 台词 使用边框进行区分。
样式设置参考 openpyxl
的 styles