手把手教你用ren'py做一款美少女♂游戏
先看下演示,介绍一下renpy吧(略)
要做的话,还是得了解一下renpy的基础,语言和游戏结构 Renpy 教程都建议看原文
语法就不讲了,我们直接看实例,先过一遍流程:
先做些准备工作-资源和设置
关于资源
需要用到拆包工具 近月拆包经验 长话短说就是根据大神的指北,做一些处理提取转化成我们可以用的素材
有一些资源隐藏的比较深,比如UI,需要识破其文件结构才能提取出来
然后,我们就可以做 GUI定制化 了
如何还原近月对话框 主要修改下gui.rpy和option.rpy
renpy默认的样式和我们的目标效果差别还是比较大的
首先是字体,原版是新宋体/黑体+描边/ 阴影色,我们选用汉仪新人文宋W+对话框定制描边色 来实现类似效果,姓名框也是一样
> 这里用到了outlines和rest_intent 这个样式特性(property)
然后是头像,我们需要其在对话框左侧显示,需要修改对齐方式
最后对话框,我们要进行九宫格拉伸,放置到恰好的位置,并调节行间距之类的
特殊点:对白与独白的对齐方式不同
一些机制:
文字逐字播放:自带 设置
头像随角色一起变:通过设置image+side+对话属性匹配实现
立绘变化的淡入(原作没有淡出 头像则是直接切)400ms左右:
出退场淡入淡出
动作、才华特殊图像显示
接下来看实战
拆包,获取资源
主要参考这个帖:https://tieba.baidu.com/p/6011705432 近月吧精品 软件是jk5cv
Ztj https://blog.ztjal.info/ category/acg/acg-data
[121026][Navel] 月に寄りそう乙女の作法 -Limited Edition-
westside:jk5cv
[141219][Navel] 月に寄りそう乙女の作法2 -Limited Edition-
exfp3_update_v3.1.4.7z(福音战士01 改版)
[170526][Navel] 月に寄りそう乙女の作法2.1 E×S×PAR!!
GARbro
还有https://tieba.baidu.com/p/5684811326 软件是GARbro
再补点东西吧
关于Data里 到底是什么
data0 是没用的
data1 里面是BGM 和 台词配音
data2 是背景 CG之类
data3 是人物表情和立绘
之后的 除非是 升级包带上的data(10以上) 不然里面也没啥东西 ,不过具体有没有东西还是拆了才知道
关于升级包带的data 里面会有 立绘 face 配音 bgm之类
更新一个新的问题:data3 拆出的face文件夹里 部分人物会出现问题
左边是BMP,右边是PNG
BMP格式保存的好处是 所有图片都可以打开 如3号(BMP)对应的4号(PNG)就打不开
但也有缺点 如1号 BMP格式图片 人物边框显然不自然 而这类图片 却可以直接用PNG格式保存下来
所以解决建议是 提取data3 face文件夹 时候 自行提取两份 一份是BMP 一份是PNG
PS:1 忘了说了 那个工具 是可以直接浏览封装包的 估计能浏览的应该都能提取
2 所以如果遇到此类问题 请自行尝试浏览源文件格式 尝试原格式保存 或非BMP格式保存
回复关于图片格式的问题,bmp是无损位图,png是无损压缩的格式,两者区别在于位图和大小,因为png是无损压缩,所以bmp和png可以无损转换,所以只用保存一中格式即可
再说一个问题,由于用这个软件拆包提取时并没有用到游戏dll文件夹中的fkey文件解密,所以提取图片时不要选择原格式提取,否则就会打不开(可能10楼的问题就是这个?)
还有一个软件叫crass
- 之前换了电脑,近月的资料忘了转存,现在发现,这游戏已经被网络封杀,没资源了
- 很简单,淘宝买一份最全资源,可以省很多事
- 不过这个并没有拆包的资源,当然有了本体就很简单,拆包的过程中,随手写了个拆包的攻略
- 至此,准备工作已经齐全,可以开始做近月的同人作品了
对话框
解析一下近月的文件结构吧
.s 应该是配置文件
.b 是压缩文件,里面往往有隐藏的图片 dialog\message.b\messageFrame.png就是如此!
基本上只有script里面有些通用的按钮图片,但是要配九宫
GUI定制化
我们也就修改了gui中
对话框和名称框
Screen中 头像位置,对话框
名字框和对话框特性
这些就足够了
如何还原近月对话框
问了一下KFC
游戏默认是新宋体字,雨爷录视频时用的黑体字
点设定还能看到近月的 描边和阴影设置
gui配置
define gui.text_font = "汉仪新人文宋W.ttf"define gui.name_text_font = "汉仪新人文宋W.ttf"define gui.text_size = 22define gui.name_text_size = 20define gui.textbox_height = 225define gui.name_xpos = 310define gui.name_ypos = 40define gui.namebox_borders = Borders(0, 0, 0, 0)define gui.dialogue_xpos = 310define gui.dialogue_ypos = 80define gui.dialogue_width = 832
screen定制
say 对话头像
if not renpy.variant("small"):add SideImage() xalign 0.1 yalign 1.0 # 修改头像位置
对话框
style window:xalign 0.5xfill Trueyalign gui.textbox_yalignysize gui.textbox_heightbackground Frame("gui/dialog_frame.png", Borders(145, 0, 145, 0), xalign=0.5, yalign=1.0)
描边色定制
style say_dialogue: # 对话框properties gui.text_properties("dialogue")outlines [ ( 2, "#5a546c", 0, 0) ] # 描边色line_spacing 6 # 行间距pxstyle say_label: # 姓名框outlines [ ( 2, "#6c5893", 0, 0) ] # 描边色【参数分别是 轮廓线px,描边色,轮廓线右移px,轮廓线下移px】实现阴影效果define unk_f = Character('Unknown female',who_outlines=[(absolute(1),"#999",absolute(0),absolute(0))]) # 应用于特定字符