铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 10526|回复: 15

[其他] 剑侠情缘2C++复刻版源码发布

[复制链接]
发表于 2018-3-21 14:36 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 真正的强强 于 2018-3-22 17:23 编辑

发布说明:

链接:

此次发布的代码包括游戏引擎、游戏启动器(Starter)和未完成的游戏编辑器,托管在github:https://github.com/Upwinded/SHF

完整游戏下载:https://pan.baidu.com/s/1WB8mQ4X6ocCgCjEpCpdkDg

目录结构说明:

(1)shf-cpp文件夹:游戏引擎代码,工程使用VS2017创建。

(2)Starter文件夹:游戏启动器代码,工程使用Delphi2010创建。

(3)Editor文件夹:游戏编辑器代码,工程使用Delphi2010创建。

引擎说明:

引擎底层:

引擎底层的实现主要封装在EngineBase类中,对外的接口则封装在Engine类中,大部分功能都已经可以使用简单的函数实现,如果没有特殊需求,此部分可以不用更改。下面对底层中一些主要的逻辑进行说明:

(1)SDL2:绘图与鼠标键盘输入检测等基本功能都是使用SDL2来实现的。初始化时默认使用硬件加速和垂直同步。引擎可以选择全屏模式和窗口模式,默认分辨率在创建时给定,为方便UI设计此分辨率一般不要更改,但画面可以进行拉抻和缩放:在全屏模式下,保持当前屏幕分辨率不变,画面直接进行拉抻铺满屏幕;在窗口模式时,根据窗口大小,画面保持长宽比例,进行缩放以适应窗口大小。这种窗体大小的自适应改变只在引擎底层中体现,而引擎对外接口是不受影响的,也就是说,在游戏上层调用时,可以认为游戏画面的分辨率始终就是不变的,鼠标的位置检测也没有任何影响。

(2)FFmpeg:用于视频解码。引擎中视频播放时间以音频为准,由于采用单线程解码,在有拖拽窗体等需等待的事件发生时,视频和音频会停止播放。视频播放还支持设置播放的位置,并且可以同时播放多个视频。另外需要注意的是,剑侠情缘2的视频格式过于古老,在解码之后还需调用sws_scale进行图像处理。

(3)FMOD:用于音频播放,需要注意的是在播放视频解码得到音频帧时,为实现效果较好的无缝衔接,需单独创建一个FMOD_SYSTEM(作者能力有限,只会这种方法)。

Element类:

学习了偶像(Weyl、Scarsty、SunTY、BT、SB500)的kys-cpp复刻版的代码,仿造其Element类,在我的引擎中也创建了Element类。此类是游戏中的基本类,基于此类创建了游戏的UI界面控件:包括菜单、按钮、滚动条、标签、图像载体、视频播放器等等控件;还创建了游戏中的NPC类,物体类,飞行技能类等等。此类可以设置一个父节点和若干子节点,子节点具有优先级属性。类的关键函数有:run、onUpdate、onEvent、onHandleEvent、onDraw,下面具体介绍一下这些函数的功能。

(1)run函数:会使节点进入运行模式,直到其running属性为false时退出运行,运行时会不断调用onUpdate、onEvent、onDraw等函数。

(2)onUpdate函数:此函数应用来做节点每帧的状态处理,会从当前执行run的节点向父节点寻找,直到没有父节点时的节点为顶端节点,此时顶端节点以下的节点都会执行此函数,执行顺序从优先级高的子节点到优先级低的子节点再到父节点。

(3)onEvent函数:此函数应用来做节点每帧的事件处理,会以当前执行run的节点为顶端,其下的节点才会执行此函数,执行顺序从优先级高的子节点到优先级低的子节点再到父节点。

(4)onHandleEvent函数:这个函数在onEvent执行后调用,必须是消息队列中有消息时才会执行,会传入一些鼠标、键盘点击等事件,节点检测事件类型,如需处理,应在函数结束后返回true,表示此事件已处理,需要从消息队列将其删除;而不需处理则返回false,表示重新压回消息队列供其它节点处理。

(5)onDraw函数:这个函数是绘制自身,会从当前执行run的节点向上寻找,直到没有父节点或者节点的drawFullScreen属性为true时,以此节点为顶端向下执行,执行顺序与其它函数不同,先执行父节点,再执行优先级低的子节点、再执行优先级高的子节点。

文件管理:

引擎有一个打包文件:game\data\data.dat文件,其中包含了游戏的大部分资源文件,根据原始文件的路径和名称计算出一个文件ID,按顺序进行存储。引擎在读取文件时,优先寻找原始文件路径和名称,如果没有找到,则在打包文件中进行寻找。

编辑器说明:

目前编辑器尚未完成,只能用来转换文件格式、打包解包和查看转换后的图片。

脚本转换:

可以将剑侠情缘2的脚本转为lua语法脚本,目前有小概率可能出现错误。

图片转换:

可以将剑侠情缘系列的mpc、shd、asf格式图片转为游戏使用的IMG格式。半透明模式只对mpc文件有效,其它格式没有影响。图片转换之后可以进行剪裁,去掉图片周边的空白区域,但游戏界面所使用的图片不建议进行剪裁。


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-21 16:14 | 显示全部楼层
好强大,好恐怖
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-21 16:17 | 显示全部楼层
厉害啊~佩服佩服
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-21 17:13 | 显示全部楼层
真的很强大,向楼主致敬
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-21 19:28 | 显示全部楼层
先赞一个,顺便问这个怎么玩?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-22 08:40 | 显示全部楼层
这么快就4个star了。。。牛逼牛逼
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-23 07:41 | 显示全部楼层
有没有强大修改数据器
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-24 19:19 | 显示全部楼层
这个是单机版还是网络版?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-3-27 21:03 | 显示全部楼层
本帖最后由 bell123 于 2018-3-28 10:03 编辑

楼主的精神可嘉!~ 向你致敬!~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-4-16 09:59 | 显示全部楼层
赞赞啊~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-5-18 11:42 | 显示全部楼层
有图片预览就好了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2019-6-11 14:25 | 显示全部楼层
游戏很好,在Windows下体验很好。这个可以移植到Android下吗?我记得有一款开源的仙剑sdlpal,全平台。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2019-11-23 20:37 | 显示全部楼层
702M那个和665M那个有什么区别?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2020-6-1 17:50 | 显示全部楼层
特地注册个号,大呼“厉害”
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2020-7-30 04:27 | 显示全部楼层
hhhhhhhhhhhhhhhhhhhhhhh
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2022-4-4 15:16 | 显示全部楼层
这也太厉害了,谢谢大大
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-23 17:29

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表