标题: R半身像对话技术
性别:女-离线 普罗_puluo

Rank: 4
组别 女官
级别 破贼校尉
好贴 2
功绩 31
帖子 69
编号 545415
注册 2023-9-23


发表于 2023-12-11 01:19 资料 文集 短消息 只看该作者
R半身像对话技术

估计大部分人都玩过galgame,对半身像对话的剧情模式应该不陌生。对于作者懒得摆R形象 或者R剧情出场人数很少的作品,可以考虑使用半身像对话来代替R剧情。


图片附件: 8.png (2023-12-11 01:25, 381.42 K)



要注意的是,这次我准备开辟一条新的技术路线:DLL静态注入技术。听名字好像很高大上,其实就是 我把功能写到了dll中,大家直接把dll接入exe即可,不需要大段大段抄代码了。
DLL注入是日后引擎发展的一个趋势,可以对引擎架构进行解耦(即把不同的功能分散到不同的DLL模块中,彼此之间互不干扰的设计)。因此本帖会对“dll注入”的具体方法做一个简单的介绍。


实装方法

首先发布一下dll文件:


附件: [半身像dll] DanTiao.rar (2023-12-11 01:19, 25.38 K)
该附件被下载次数 82


将该文件放置到游戏目录中,然后打开Stud_PE,用该软件打开ekd5.exe,来到【函数】一栏:


图片附件: 1.png (2023-12-11 01:25, 76.19 K)



如上图 在空白区域右键,选择【输入新的输入表】,dll选择DanTiao.dll,函数选择Chat,然后点【加入】:


图片附件: 2.png (2023-12-11 01:25, 87.81 K)



加入成功后,在左侧可以看到DanTiao.dll,我们展开这一项,可以看到下图中箭头处有个数字,该数字+400000H称作外部函数指针,大家记住这个数字就好,后面有用。


图片附件: 3.png (2023-12-11 01:25, 41.82 K)



接下来改一点汇编,改的内容非常少,6.2~6.4都是这样改(6.1及以下未测试):
004139A0   > \8B45 F4            mov eax,dword ptr ss:[ebp-C]
004139A3   .  8038 30            cmp byte ptr ds:[eax],30
004139A6   .  75 04              jnz short Ekd5.004139AC
004139A8   .  6A 01              push 1
004139AA   .  EB 02              jmp short Ekd5.004139AE
004139AC   >  6A 00              push 0
004139AE   >  FF75 FC            push dword ptr ss:[ebp-4]
004139B1   .  FF75 F8            push dword ptr ss:[ebp-8]
004139B4   .  FF75 F4            push dword ptr ss:[ebp-C]
004139B7   .  FF15 14315400      call dword ptr ds:[543110]      ;  这里的这个543110 就是上面说的外部函数指针,大家按照自己的情况填入该数值


图片附件: 4.png (2023-12-11 01:25, 122.33 K)



现在引擎已经具备半身像对话的功能了。接下来讲一下剧本的写法,也非常简单:


图片附件: 5.png (2023-12-11 01:25, 28.08 K)



第一行是说话人,取值1~2;
第二行开始是对话内容,目前对话框的尺寸最多支持两行。

然后说一下图片的要求,
首先需要建立一个BMP文件夹,每一个角色的头像名称为 data编号+“.bmp”,尺寸为192×272;每一个角色还需要一个暗掉的头像 名称为 data编号+"_.bmp";
然后需要往BMP文件夹放一个对话框图像,名称为border.bmp,尺寸为600×120。
示例:


图片附件: 6.png (2023-12-11 01:25, 214.87 K)



(对话框图片取自【国风轶事】,因为没有获得公开授权,所以这里不会公开对话框的原图)


字体参数

本节为非必需项,如果想自定义文字风格的可以看一下。
用od打开dll,查找到以下地址:(如果找不到的话可以直接搜索二进制:6A 00 6A 00 6A 01 6A 02 6A 01 6A 00 6A 00 6A 00 68 90 01 00 00 6A 00 6A 00 6A F9 6A F0)


图片附件: 7.png (2023-12-11 01:25, 150.11 K)



对于这些参数,可以查询https://learn.microsoft.com/zh-c ... -wingdi-createfonta,来获悉各个参数的意义并做修改,主要是字体高度和宽度可能需要修改,至于加粗、斜体、下划线个人不推荐用,影响观感。


更新前瞻

下一版本准备优化一下图片显示,尝试制作渐入渐出的效果;
尝试实现简易的gif半身像;
实现彩色文字 以及 文字显示整型变量数字的功能。

以上全是饼,现在需要测试当前版本是否稳定 以及是否有恶性bug,待初版完善后会继续更新上述的功能。



因为本人精力有限,测试不多,欢迎大家测试反馈bug

[ 本帖最后由 普罗_puluo 于 2023-12-22 02:33 编辑 ]


顶部
性别:男-离线 斑鸠凉

Rank: 5Rank: 5
组别 士兵
级别 军师将军
功绩 9
帖子 926
编号 545495
注册 2023-10-10
来自 雒城


发表于 2023-12-11 09:46 资料 短消息 只看该作者
普罗大大回来了呢~


顶部
性别:未知-离线 ささきこじろう
(屠龙剑圣)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1150
编号 538932
注册 2019-9-23
来自 柳洞寺


发表于 2023-12-11 11:27 资料 文集 短消息 只看该作者
有点意思。
顶部
性别:未知-离线 鲍三郎

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 12
编号 545350
注册 2023-8-27


发表于 2023-12-11 12:39 资料 短消息 只看该作者
顶部
性别:未知-离线 59054695
(筱尐小白)

Rank: 4
组别 士兵
级别 裨将军
功绩 3
帖子 310
编号 310804
注册 2009-2-13


发表于 2023-12-11 14:20 资料 短消息 只看该作者

我的天,你真是小天使啊!!!!
2020202020202020
顶部
性别:未知-离线 star175

★★

Rank: 9Rank: 9Rank: 9
轩辕春秋年度最佳(轩辕工作室)
组别 白衣卿相
级别 讨逆将军
好贴 3
功绩 153
帖子 686
编号 91725
注册 2006-11-16


发表于 2023-12-11 15:16 资料 文集 短消息 只看该作者
回复 #1 普罗_puluo 的帖子

这种修改方法很有意思,以后换引擎就方便了
顶部
性别:男-离线 norton

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 109
编号 60929
注册 2006-2-25
来自 湖北荆州
家族 肉肉门


发表于 2023-12-12 09:21 资料 短消息 只看该作者
大佬们都回来了。看到希望了!
顶部
性别:未知-离线 鲍三郎

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 12
编号 545350
注册 2023-8-27


发表于 2023-12-12 11:57 资料 短消息 只看该作者
顶部
性别:未知-离线 十里风波恶

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 6
编号 545459
注册 2023-10-3


发表于 2023-12-12 13:43 资料 短消息 只看该作者
好哎
顶部
性别:未知-离线 一流也

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 274
编号 300662
注册 2008-11-29


发表于 2023-12-12 20:18 资料 短消息 只看该作者


QUOTE:
原帖由 star175 于 2023-12-11 15:16 发表
这种修改方法很有意思,以后换引擎就方便了

6.3exe 和6.4exe可以再重发帖子吗?谢谢。
顶部
性别:未知-离线 狂笑四海


Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 前将军
功绩 28
帖子 1714
编号 273316
注册 2008-4-2


发表于 2023-12-14 13:57 资料 个人空间 短消息 只看该作者
前些日子有想过类似橙光游戏剧情模式,写起来比较轻松。

请问为啥要多准备一张暗色的头像?
顶部
性别:女-离线 普罗_puluo

Rank: 4
组别 女官
级别 破贼校尉
好贴 2
功绩 31
帖子 69
编号 545415
注册 2023-9-23


发表于 2023-12-14 23:45 资料 文集 短消息 只看该作者
回复 #11 狂笑四海 的帖子

两个人说话的时候,说话的人是亮的,没说话的人是暗的,这样可以很快速地区分出谁在说话。
顶部
性别:未知-离线 狂笑四海


Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 前将军
功绩 28
帖子 1714
编号 273316
注册 2008-4-2


发表于 2023-12-16 00:45 资料 个人空间 短消息 只看该作者
回复 #12 普罗_puluo 的帖子

可是……如果当前场景人物超过2个呢?
顶部
性别:女-离线 普罗_puluo

Rank: 4
组别 女官
级别 破贼校尉
好贴 2
功绩 31
帖子 69
编号 545415
注册 2023-9-23


发表于 2023-12-16 01:45 资料 文集 短消息 只看该作者
回复 #13 狂笑四海 的帖子

目前最多支持2人同屏,可以用对话2切换当前显示的角色。

当然增加到3人也完全可以,不过感觉容易扰乱视线,让人摸不清谁在发言
顶部
性别:未知-离线 狂笑四海


Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 前将军
功绩 28
帖子 1714
编号 273316
注册 2008-4-2


发表于 2023-12-16 08:47 资料 个人空间 短消息 只看该作者
回复 #14 普罗_puluo 的帖子

我想问的是:同屏A和B两个人,如果A(或者B)不说话也有必要显示头像吗?

按之前引擎设定,谁说话就显示谁,是不是更好一点。
顶部
性别:女-离线 普罗_puluo

Rank: 4
组别 女官
级别 破贼校尉
好贴 2
功绩 31
帖子 69
编号 545415
注册 2023-9-23


发表于 2023-12-16 15:37 资料 文集 短消息 只看该作者
回复 #15 狂笑四海 的帖子

可以,只要你使用【对话2】的时候,把另一个人设置成无就好了。

不过对话2的第一行依旧要标注说话人是1还是2
顶部
性别:未知-离线 狂笑四海


Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 前将军
功绩 28
帖子 1714
编号 273316
注册 2008-4-2


发表于 2023-12-18 01:53 资料 个人空间 短消息 只看该作者
回复 #16 普罗_puluo 的帖子

谢谢解答,基本明白了。在指令15中1和2两个位置不指定人物,则不会显示头像。

其实用这个办法也不用准备暗色头像图片了吧?
顶部
性别:女-离线 普罗_puluo

Rank: 4
组别 女官
级别 破贼校尉
好贴 2
功绩 31
帖子 69
编号 545415
注册 2023-9-23


发表于 2023-12-18 12:26 资料 文集 短消息 只看该作者
回复 #17 狂笑四海 的帖子

如果全程都是单头像对话的话 就不需要暗色头像了。


图片附件: tx.jpg (2023-12-22 02:36, 55.24 K)



占楼传个头像(逃

[ 本帖最后由 普罗_puluo 于 2023-12-22 02:37 编辑 ]
顶部

正在浏览此帖的会员 - 共 8 人在线




当前时区 GMT+8, 现在时间是 2024-11-15 18:04
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.014062 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP