当前在修复和汉化GMS232的swordie端。在修复剧情任务过程发现有一个严重的问题是无法正常播放过场动画。对于追求完美复刻和完善剧情来说比较重要。研究了蛮久发现一个可以正常解决的方案。
概述
先说结论:GMS232无法播放本地视频。个人能力有限,debug到本地gr2d_dx9.dll里面也没找到为什么本地无法播放视频,怀疑是我自己本地电脑的问题。按照cms的传入参数为client的路径下的avi文件不能播放。
试了各种各样的方法:KMS、GMS、TMS 64位的客户端都无法播放本地视频,不知道原因。如果有大佬知道原因希望能分享一下。

换了一种思路:通过请求URL的方式进行播放。但是官方的播放地址找不到,直接写youtube链接需要登陆才能播放,各种限制。经过不断尝试发现本地部署一个服务,在脚本里面写本地服务视频资源的地址可以在游戏内正常播放。这样可以在客户端想播什么就播什么,当前还是以播放剧情为主。特别说明:多种格式测试,发现当前只能URL播放webm的格式的视频
第一步:准备视频文件
还是要自己准备视频文件,可以在官网下载,或者自己随便找一个webm的进行测试是否可以播放。这里用了官方的剧情视频

解压出来,先放着
第二步:新建一个本地Nginx服务
- 在Nginx官网下载,然后配置文件如下
代码登录后可见
- 在html文件夹下新建video文件夹,作为视频存放的目录

第一步解压出来的webm放到video文件夹下:
我放的文件是代码登录后可见 作为测试

双击Nginx.exe启动
浏览器打开:http://127.0.0.1/video/CygnusKnights_Remastered2.webm
能看到视频就算正常

第三步:修改服务端代码
更多细节可以查看我仓库的代码。
- 修改脚本,新建一个脚本调用方法
代码登录后可见
- 修改发送的包,只需要传URL即可。
包头为944
代码登录后可见
- 修改脚本调用,改为调用代码登录后可见,下面为随便写了一个脚本,输入为一个字符串,填入本地服务资源路径的URL。
代码登录后可见
第四步:客户端查看
可以正常播放

服务端要处理这个net.swordie.ms.life.npc.NpcMessageType

后记说明
- 官方下载下来的视频编码格式有问题,输出是1:1,使用ffmepg自己重新编码输出为16:9的格式才能看起来不那么突兀。
- 视频应该也可以放在swordie的服务上面,作为资源获取,这样方便单人部署使用,但是这样可能不够安全,后续看看放到免费服务器上。
- 仓库地址:https://github.com/maplestoryDwang/gms-232 感兴趣可以交流