9 Star 28 Fork 14

Zgames/jy-remake

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CHANGELOG 14.66 KB
一键复制 编辑 原始数据 按行查看 历史
Zgames 提交于 2015-01-03 15:25 . 初始版本。
《金庸群侠传》windows SDL Lua 复刻版版本变动历史
从V0.7开始,代码由Zheng Guo维护。
================================================================================
V0.9
我比较了三个MIDI软波表库,Wildmidi, Timidity++和FluidSynth。
Wildmidi不支持MIDI的GS, XG扩展,而且效果与期望相差太远。
Timidity++好一些,但是SDL_Mixer中使用的版本太老,不支持 SoundFont2,而且使用
GPL协议,只能放弃。
- 基于FluidSynth 1.0.9的代码制作了一个FluidSynth的特殊版本,可以集成到 SDL_Mixer 中。
这个版本还有很多需要改进的地方,但是不管怎样,现在可以将就着用了。之所以用
FluidSynth 1.0.9的代码,是因为这个版本不需要Glib库。Glib现在还没有官方的
Android移植,而且体积不小,编译麻烦!
================================================================================
V0.8
重构及优化代码。BASS库很不错,但是发布商业游戏需要购买许可协议,而且价格不菲。所
以从本版本开始,代码将朝着商业许可协议免费的方向演化。
- 代码移植到 SDL 2.0
- 增加了16x16点阵的字库,支持ASCII及GB2312编码的字符。删除了SDL_ttf相关的代码。
将对话文件中的GBK编码的字符转换成GB2312字符。
- 实现了一个定制版本的SDL_mixer库,基于SDL_mixer 2.0,仅支持WAV和MIDI文件。
该版本使用FluidSynth播放MIDI文件。FluidSynth支持SoundFont技术,且效果优秀。
- 为了尽可能达到 DOS 版的声音效果,添加了一个 Creative SoundBlaster的SoundFont文件。
现在 MIDI 音效与 DOS 版完全相同了。
================================================================================
V0.7
本版本是在游泳的鱼Lua复刻版0.66版的基础上修改而来的,改动较多,可以说面目全非。
- 对程序进行优化。
- 调整数据文件的位置,统一放置在data目录下。
- 删除了旋转屏幕显示方向的代码。(此功能可以通过OpenGL ES方便地实现。)
- 添加了用MinGW的Makefile,并增加了相关的开发库。
- 本着让玩家体验原汁原味的《金庸群侠传》的原则,将游戏的分辨率改为320x200,并在显示
时将画面放大至640x480。
- ranger.grp是用来初始化的进度数据,内含各场景、物品、人物、武功的名称,编码是BIG5。
ranger.grp只在创建新游戏时读取一次,作为初始数据,存盘时数据保存为r*.grp。鱼版在
读入数据时先将字符串由BIG5转为GBK。我已将ranger.grp里的字符串转为了GB2312编码,
读入时不用转换了,相关代码已修改。
- 增加程序图标。并写了设置图标的相关代码。
- 增加功能:在游戏中按窗口的关闭按钮直接退出游戏。
- 为了使MIDI音乐在各个不同硬件上达到相同的效果,音频库改为支持SoundFont2 技术的
BASS库,但仍然保留对SDL_mixer的支持。
- 内置了PNG文件读取功能,不再需要SDL_image库。
- Build工具改为Waf,我很喜欢这个Build工具。参见https://code.google.com/p/waf
================================================================================
V0.66 测试版
2009-8-5 更新
使用方法:
下载解压后覆盖到0.6版的目录即可。
修改说明:
1. 和苍龙逐日1.2版兼容性修正
a. 事件贴图为0时不绘制,三个触发事件为0时不触发。
b. 指令3修改坐标为0时,不修改坐标值
c. 武功杀内力只有点、面攻击有效。其他仍然为杀生命
d. 主角移动后视角以主角为中心。清除以前由场景移动引起的视角变化。
e. 新游戏开始时可以指定先执行的事件。
f. 战斗没有选人则不能开始战斗
g. 战斗输后不管有没有经验可拿,我方人物状态都有一定恢复。
2. 自动战斗增加自动解毒选项。
3. 修正场景移动和主角移动指令的bug
4. 修改使用化功大法退出的bug
================================================================================
V0.65 测试版
2009-7-28 更新
使用方法:
下载解压后覆盖到0.6版的目录即可。
修改说明:
1. 可以显示繁体字。
在config.lua中,设置OSCharSet即可选择显示繁体还是简体
2. 针对s60手机,做了一些优化工作,同时也可适用于其他移动设备,当然,PC上一样适用,只不过没有太大效果就是了。
a. 主地图数据(5个*.002文件)也可以不全部载入内存,进一步减少内存占用。
设置config.lua的LoadMMapType参数即可:
0 全部载入内存
1 只载入主角坐标附近的行
2 只载入主角坐标附近的行和列
类型2占用内存最少,但是在手机上载入时间较长,在主角走动时会卡一下。
类型1占用内存比2多一些,在手机上载入时间比2要少,一般不会有卡的感觉。因此建议设为1。
b. 采用脏矩形技术,只刷新屏幕改变部分,加快显示速度,减少CPU占用。在config.lua中设置
FastShowScreen参数即可。
可以加速以下情况的显示速度:
1. 主地图主角不动时。只刷新主角位置,如果主角完全不动,则停止刷新屏幕
2. 场景视角不动时。此时只刷新更新的事件动画位置和主角位置。
3. 战斗出招时。只刷新出招人贴图位置,武功效果以及显示的点数。
c. 屏幕可以右转90度。在config.lua中设置Rotate参数。
设置这个参数的原因是在手机S60版的SDL中,旋转屏幕是用软件实现的,速度比较慢。因此
有必要在游戏中直接生成旋转后的屏幕数据,这样可以加快S60手机上的显示速度。
注意目前旋转不支持播放mpeg,播放mpeg时不旋转。
3. 游戏中屏蔽了ESC,SPACE和RETURN的键盘重复。
不会出现一直按下这几个键游戏不停地相应了,比如以前一直按ESC不停地显示和关闭主菜单。
这样做的缺点是以前设置对话重复响应键盘无效了。按下RETURN不能不停刷新对话了。但是可以按方向键
来刷新。
4. 改进了显示阴影字符串的算法,改在C中实现。加快了字符串显示速度。
5. 修正了以前战斗练出物品时,如果能练出的物品种类不足5个则退出的bug。
6. 修正了有些游戏存档中的BIG5字符不能显示的bug。
7. 修正了天龙线加王语嫣不加段誉以后,和乔峰、慕容复打以后黑屏的bug。
================================================================================
V0.61 测试版
2009-6-27 0.61 更新
使用方法:
下载解压后覆盖到0.6版的目录即可。
修改说明:
1. 优化lua读写游戏进度算法,大幅提高速度。
2. lua读取oldtalk改用数据文件方式读取,不再用加载lua代码的方式。
提高了启动速度,减少内存使用。
新的oldtalk数据文件名为oldtalk.grp。oldtalk.idx在程序运行时自动生成。
得到oldtalk.grp的方法参见ConvertKdef&talk.txt的说明。
3. config.lua 增加了PreLoadPicGrp参数,控制C程序是否预加载贴图的grp文件。
以前版本是直接加载的。内存占用较大。如果不加载可以减少内存使用。但是可能出现
走路偶尔停顿,战斗出招停顿的情况。现在考虑到有移植到手机等版本的需求。增加此设置项。
4. 修改了C的JY_DrawStr函数的一个bug。
================================================================================
V0.6 测试版
运行方法:
1. 设置truetype字体文件。由于字体文件太大,没有包含在发布文件中。必须自己设置:
修改bin目录下config.lua中的参数CONFIG.FontName,指向正确的中文字体文件。
可以直接使用windows下的中文字体,也可以找个合适的字体。放在bin目录下
2. 如果想要看开场动画,可以下载开场动画文件到bin\data目录下。
运行时按Esc可以跳过开场动画。
3. 运行bin目录下的jysdllua.exe即可运行游戏。注意要从新游戏开始。
修改说明:
1. 本版本C语言部分使用SDL库,实现了与平台无关,并在fedora 10 下成功编译运行。对其他平台熟悉
的可以尝试在其他平台编译。使用的库有SDL, SDL_image, SDL_mixer, SDL_ttf, smpeg。
2. 显示窗口分辨率大小可以自定义。但是最低不能低于320*240。目前对两种模式320*240和640*480进行
显示调整美化。其他分辨率至少可以正常显示,但是不一定很美观。
3. 显示速度进行了优化,显示场景和战斗地图在C中完成。目前在P4 2.0G机器上640*480*32位分
辨率下CPU占用不超过30%,16位分辨率下不超过20%。
4. 自动战斗的lua代码也进行优化。速度大幅提高。
5. 为适应可能的小内存设备,对内存占用进行了优化,640*480*32位分辨率可以控制在20M以内
6. 根目录下增加了config.lua文件作为配置文件,绝大部分配置项可以在这里修改。文件中每项都有
注释。可以根据需要修改。
7. 为减少内存占用,把原来的old_kdef.lua拆分为每个事件一个文件。共1017个文件。这样每次运
行事件只加载当前的事件文件。
8. 增加了播放mpeg1的功能。可以用来播放开场动画。不过效果,凑合看就行了。
主要是SDL没有好的缩放算法。屏幕大了很不好看。
9. 当前目录运行时产生error.txt, 保存C程序的错误信息输出。如果程序出错或退出,可以查看
error.txt和debug.txt获得可能的错误信息。
10. 字符显示由于采用了SDL_ttf,以unicode方式显示truetype文件中的字符。为了进行与os无关的
汉字字符转换,预先产生了hzmb.dat文件,放在bin目录下,保存gbk-big5-unicode的转换表。
11. 系统菜单增加了全屏切换的选项,可以实现全屏运行。
12. 回答是否的地方都改用菜单实现。为避免误按键,菜单缺省选项为否。
系统需求
1. 硬件 P4 2.0G以上,16M以上显卡。
实际上比这个硬件低的多的配置仍然可以运行。但是需要减小分辨率。在一台Pentium 133
32M内存,win98,也可以以320*240*16位的分辨率流畅运行。
2. 软件:win98以上。linux下安装相应的SDL库后也可以编译运行。
3. 运行时占用内存在20-30M左右,在config.lua中设置LargeMemory=0时,内存占用不超过20M。
目录结构
bin ---游戏执行目录
doc ---说明文档
Lua ---lua5.1.2的include和lib文件
SDL ---SDL库的include和lib文件
src ---C源代码
vc6 ---vc6的工程文件
游泳的鱼
2009-6-14
================================================================================
V0.5 测试版
说明:
本版本主要是给制作新MOD的人员使用的。而且需要MOD制作者有一定的计算机水平,最好
学过一种编程语言,因为这不是点击修改器就可以修改事件了,而是要进行编程。虽然lua
语言比较简单,但也是一门语言。
本版本不兼容众多的修改版。只保证兼容原版。对于修改版来说:
如果修改版没有使用50指令的话,可以自动把原来的事件和对话转换为lua代码(游戏的script
目录下有转换说明)。然后再进行少量修改工作(主要是以前对z的修改)也可能实现兼容。
而对于使用50指令的修改版,需要把所有50指令重新写为Lua代码。这个工作很难自动完成,因此
放弃了自动处理50指令。因此使用50指令的修改版需要进行比较大量的手工修改才可能兼容。如果原作
者或者别人对此感兴趣,可以自行修改。
另外本版本由于推出时间比较仓促,主要是希望春节前推出,供大家做新的修改版。因此
能会有不少bug,希望大家踊跃测试,发现bug和建议,以及有什么问题都可以在铁血丹心论坛
发贴或者直接email:jywindows@163.com给我。
主要特点:
1. 直接在windows下运行。640*480窗口模式,自动适应16/32位色。
目前暂不支持全屏幕,如果屏幕比较大,嫌窗口小的话,只能先临时把分辨率调低凑合了。
2. 程序采用VC+Lua脚本语言实现。方便MOD制作人员进行修改和扩充。放弃了以前的事件指令系统。
3. 扩充了原有的贴图idx/grp文件结构。支持png格式的24位真彩贴图文件,不局限于原来的
256色,方便扩充贴图素材。同时保证向下兼容。
系统需求
1. 硬件 P4 2.0G以上,16M以上显卡。
2. 软件:Win2000以上,DirectX8.1以上。
3. 运行时占用内存一般在20-35M左右。在P4 2.0上32位色显示CPU占用率一般在40-70%之间。
16位色能稍微低一点,但是没有明显差别。
目录结构:
bin ---游戏执行目录
doc ---说明文档
fishedit_lua ---支持png的修改器
src_fishedit_lua ---fishedit_lua的源代码
运行方法:
运行bin目录下的jylua.exe即可运行游戏。注意要从新游戏开始。
改进和与原版不同之处:
1. 事件处理完全抛弃了以前的指令系统和扩充的50指令。采用lua语言编写,更加灵活,方便了
事件的编写,而且可以实现更多的功能。
2. 考虑到现在的机器速度都很快。游戏主要逻辑都采用lua编写。VC只提供了处理显示、音频和
键盘等的函数。这样给修改人员带来很大方便。可以对原来的游戏逻辑进行任意的修改。只要
想得到的功能,都可以很方便地实现。(只有主地图的显示,由于有遮挡处理排序问题,lua
效率太低。这部分代码是用c实现的。)。
这样也不需要MOD制作者会用C语言,安装许多开发工具了。只需要有一个文本编辑器,加
上本游戏即可开发MOD。当然,修改器是必须的。
3. 对于原来贴图文件的256色限制,引入对png格式的支持。突破了原来256色的限制,使视觉效果
更佳。可以单独加载png文件。也可以把png文件导入idx/grp贴图文件,实现对地图或武功效
果等的修改(同时发布支持png的修改器,支持导入并显示png文件)。
对于原来贴图格式中的偏移x和y。为方便处理,直接在png文件中表示偏移量。方法是:
扩大png文件的宽和高,保证偏移位置位于图形的中心点。比如对于常见的菱形贴图。偏移
位置一般位于菱形最下角。这时就应该把贴图的高度扩大一倍,而宽度不变。这样就保证图像
中心位置在菱形的最下角。由于png是压缩格式,因此图片扩大基本不会浪费空间。
而对于头像和物品图片等贴图,在lua代码中显示时进行专门处理,就不用扩大贴图了。
png文件支持alpha通道。而目前对alpha通道的处理暂时只考虑全透明和全不透明模式。以后
再考虑不同像素的不同alpha值。
4. 为处理在idx/grp文件中导入png文件。随本软件带有更新的修改器。本修改器在0.72版基础上
去掉了处理事件和z.dat的所有模块(因为已经没用了),并增加了导入png贴图的菜单项。
位置在“贴图查看/编辑”的右键菜单中。
5. 200个物品贴图专门做了一个贴图文件thing.idx/grp,这样修改物品贴图时只需要修改
这一个即可,不用像以前那样同时修改三个文件了。而且可以任意增加物品贴图了。
6. 对人物个数/物品个数等程序不做任何限制,R*数据文件中有多少就读取多少。
7. 小宝不再随机出现,而是按照顺序在各个客栈出现。
8. 为了演示如何修改的过程。比原版增加了一些功能,河洛客栈多了一个韦大宝,有一些特殊功能。
可以买东西,当东西等。(这个可以间接实现银行功能,钱多了可以买成东西,以免变成负数)。
而随身携带的物品也有了新的功能,可以忘记武功,也可以在战斗时复活队友。
9. 头像贴图最大可以到100*100。已经预留了显示控件。目前做了两个真人版的头像贴图
(韦小宝/星爷,小龙女/刘亦菲)作为PNG的例子。由于本人对图像一点都不熟,没有做战斗
动作或者武功效果的示例。因此这里不能保证没有问题。大家多多测试。
10. 自动战斗逻辑和原始游戏有所不同,做了一些简化和加强,目前不能自动用毒/解毒/暗器,也不能
使用吸取内力的武功。选择武功的方式也倾向于选择更强的武功,战斗时倾向于同时打更多的人。
实际上自动战斗的水平有所提高,不会出现使用莫名其妙的武功的情况,比较适合练级。
但是也同时增加了敌人的难度。因为敌人也会一次打多个人。
11. 合并场景和战斗贴图文件改为smap.idx/grp和wmap.idx/grp。这主要是为了用统一的方式加载。
不用输入文件扩展名,只输入一个名字即可。修改器也同时做了改动。
12. 由于是windows版,因此声音方面支持midi文件和wav文件。可以导入更加丰富的音乐和音效资源。
13. 暂不支持新游戏时输入主角名字。可以在jyconst.lua中修改新游戏的主角名。
14. 对于繁体中文(BIG5)的处理。如果只是运行游戏的话。应该能自动识别操作系统。如果不能正确
显示,请尝试修改jyconst.lua中的以下语句:
CC.SrcCharSet=0; --源代码的字符集 0 gb 1 big5,用于转换R*。 如果源码被转换为big5,则应设为1
CC.OSCharSet=-1; --OS 字符集,-1 系统判断,0 GB, 1 Big5
CC.FontName="SimSun"; --显示字体
可以把CC.OSCharSet设成1,并设置CC.FontName为合适的字体名。应该就可以显示。
如果想在繁体系统下修改源代码做修改工作。可以把源代码都转码成BIG5,这时应该设置
CC.SrcCharSet为1。
另:由于我没有真正的繁体系统,只是调整windows的区域设置测试了一下,这里可能会有问题。
目前版本还没有稳定,因此vc代码以后再提供。以后可能会改用sdl来实现,不知道以后能不能跨
平台,在linux或者在psp,S60上运行?
游泳的鱼 2009-1-12
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/zgames/jy-remake.git
git@gitee.com:zgames/jy-remake.git
zgames
jy-remake
jy-remake
master

搜索帮助