分类目录归档:游戏开发

OpenPAL3:仙三开源版的第二个小目标 Accomplish!

去年的时候,OpenPAL3 的第一个版本发布 之后,我给 0.2 版本设定了一个小目标:让景天能跑出永安当。当时的第一个版本还只能算是概念验证的版本,没有音乐支持、输入支持,不能直接读取仙剑三的打包文件,剧情是也在程序里面硬编码的……一年之后,景天终于跑出永安当了!✌

这次为大家提供了可运行的程序:

Gitee Releases

GitHub Releases

下载解压之后,首次运行之前记得在 openpal3.toml 文件中把《仙剑奇侠传三》的安装目录填进去。请注意反斜杠需要重复写两次哟:

之后运行openpal3.exe即可。如果运行时提示 OpenAL 出错,请下载并安装 OpenAL

目前游戏只支持键盘输入,键位为:

  • 空格键:对话框下一句
  • F键:互动
  • 方向键:跑
  • 1/2/3/4:存档至第1、2、3、4号存档位

程序还是有很多 Bug,以及有很多功能还没实现,请各位不要尝试去做奇怪的事…… 景天已经可以跑到码头那里准备上船了,但由于剧情脚本还没有 100% 支持,码头这里会用到没有实现的剧情指令而崩溃。

(以及……不要在意出现两个景天 )

另外,开发工具也全新升级!之前的模型和动画浏览器合三为一,集成在了一个工具里面:

它能够自动读取打包文件的内容,支持听歌、查看各种文件数据以及预览模型。这个工具也会读取 openpal3.toml,所以游戏路径也需要填好。


由于最近 GitHub 的访问情况不容乐观,我在 Gitee 上建了一个镜像仓库,下载也可以更快一点:

所有的开发工作还是在 GitHub 的仓库里:

以及,我们有一个新的项目主页了!还没时间仔细弄,先挂一个项目说明:


按照惯例,我们还需要确定下一个小目标。现在还没实现的功能太多了,我准备还是优先把剧情跑通,所有其他的 Bug 和系统先暂时放一下。那么第三个小目标就定为景天和雪见流浪到大渡口吧。为了实现这个目标,我们至少还需要支持:

  • 更多的剧情脚本
  • 人物跳跃事件
  • 场景机关
  • 爬梯子

希望下一个版本可以很快发布( •̀ ω •́ )y

OpenPAL3:做一个开源版本的仙剑三

《仙剑奇侠传三》是我小时候最喜欢的游戏之一了(另一个是《新剑侠情缘》),沉迷神鬼妖怪世界无法自拔,只有发烧卧床不起才能阻挡我玩游戏的热情。ummm 当时发烧算是原因之一吧,另一个重要原因是玩到锁妖塔四层过不去了_(:з」∠)_

前一阵大概是因为偶然刷到 OpenDiablo2 让我突然想到,为什么不来做一个 OpenPAL3 呢?让自己喜欢的游戏重新活一次,也是很有意思的一件事。如果顺利的话,说不定还能扩展一点私货,比如做个战棋战斗模式?不过这都是后话了,得先把基本的原始游戏功能做出来才行。

所以我就踏上了收集当前前沿科技进展的旅途。首先发现的是 @zhangboyang/PAL3patch 这个仓库,虽然名字叫仙剑三分辨率补丁,其实还包含了相当多的其他功能。最关键的是,这里提供了一个便捷的脱壳工具,为我们分析程序扫除了障碍,可行度++。

另外一个值得一提地方是仙剑三高难度贴吧。贴吧不愧是互联网中文社区的扛把子,这个高难度吧里面聚集了很多做仙剑三 mod 的神犇,全都是人肉编辑二进制的资源文件,拷来改去还能不出错。贴吧里有一些分析目录结构的帖子,是入门上手的好地方。还有一些关于游戏机制和数值的分析,但对文件格式的解析比较少见。

另外还搜罗到几篇零散的文章,其中一个是看雪论坛的一篇帖子,分析了仙剑三剧情文件的格式以及压缩包的压缩格式。另一个是一个转贴,原博客已经年久失修找不到了,这个帖子简单分析了仙剑三的一种模型文件的格式,不过尚不全面。最后一个是开源的仙剑三解包工具,实际试用一下,还有一些 Bug,解压出来的文件可能会有不正确的地方。

最后的最后,是藏在仙剑三游戏资源里面的意外惊喜。解包出来的文件当中,有个别文件是游戏开发过程中误打包进来的,比如剧情脚本的源代码(一种非常简单的类似于汇编的语言),还有少许说明性的文本文件,不过提供的信息并不是很多。

这些就是目前巨人肩膀的高度了,剩下的就得靠自己了。首先是先定一个小目标,否则步子太大容易扯到蛋:目标就定为能够播放游戏开头景天跟雪见登场的那一小段剧情好了。

为了实现这个目标,我们得需要:

  • 本着自娱自乐的原则,引擎肯定是要自撸的,所以至少得有一个能凑活用的引擎
  • 模型文件格式的解析,能加载模型是最基本的要求了
  • 场景文件格式的解析,得能把景天的小屋子搭出来
  • 剧情脚本文件可以暂时不用完全读出来,毕竟那一小段剧情不长,把剧情脚本硬编码一下也是可以的

大概就需要这么多的工作吧,这样就可以实现第一个小目标了。从过年前后开始开工算起,到现在大概做了两个半月了,如果从撸引擎开始算要更早一点——现在我已经完成第一个小目标啦!虽然这篇文章发在四月一号,但这不是愚人节忽悠,不是愚人节忽悠,不是愚人节忽悠!

https://zhuanlan.zhihu.com/p/122532099

各位放心,你们的耳机没有坏,是我还没有加声音;文本框也是临时用 Imgui 默认的框框对付了一下,立绘表情也还没贴,场景的环境光也还没有设置(本来应该是烛光烁烁的夜晚😅)……目前还只是 Demo 的程度,非常多的硬编码,相当多的技术债,还有很多文件格式上的问题没有弄清楚。不过不管怎么说,小目标算是勉强达成了,就把它叫做 v0.1 吧。

在达成小目标期间,也是要做一点辅助工具的,比如模型浏览器:

永安当场景静态模型
景天 – 人物顶点动画

场景浏览器:

渝州西南

那么接下来的第二个小目标的话,就定为能够跑出永安当吧。要达成第二个小目标,需要解决的问题非常多,输入控制、声音、碰撞、事件触发机制还都没做,大概没有几个月搞不定,道阻且长 _(:з」∠)_

仓库在此,欢迎 Star 🧐 https://github.com/dontpanic92/OpenPAL3​