unix(包括deepin,ubuntu..)热血传奇的复刻
Tofloor
poster avatar
alex_hunter
deepin
2020-12-30 20:49
Author


我是资深的传奇迷,看到deepin社区有人在求deepin上如何玩热血传奇等win才有的游戏,我也曾辗转ubuntu->elementoryOS->deepin->mac book pro;尝试过虚拟机,wine,crosover玩传奇,效果都不大理想,于是乎,我开始研究delphi源码,开始研究mir2的client和server代码。传奇的资源包里面全是bmp位图,你看到的动画其实就是1秒内快速的切换bmp模拟出的动画,包括人物跑动都是若干个动作bmp切换,然后平移动一个屏幕(通常800x600)像素(n个Tile 48x32像素)的小块,因此,我开始尝试使用gtk3+,c语言和python(原谅我全部用c写可能要持续1年+才能写完,不得不引入python来做部分小量业务逻辑计算,当然复杂的还是用c实现,或者c实现后打成so给python用),所以理论上支持centos,ubuntu,debian,deepin,mac os,其中(ubuntu20.04和deepin15 20都是实机测试的,理论上支持所有主流linux发行版)目前实现了一部分,没有封装的,封装后会给出github的地址,感兴趣的程序员可以一起参与加快这个实现,整理后会放出github地址,下面是暂时实现的部分一个演示,在我的mac上完美运行,在官方的基础上,增加了精灵图的间隙,使之看起来更加流畅,感兴趣,可以联系我一起开发,发个贴只是看有没有一起参与进来,给linux贡献一个学习交流的热血mir,不做商业用途,仅供学习交流使用哈

Reply Favorite View the author
All Replies
2 / 3
To page
a18126579337
deepin
2021-01-01 18:28
#21

我当初在论坛上求过热血传奇,想不到还真有大神在研究,可惜我们帮不上忙,只能热切地等待...

Reply View the author
lovecui198700
deepin
2021-01-01 20:11
#22

我们这些老家伙都等着你们上菜呢,辛苦了,加油

Reply View the author
司南
deepin
2021-01-02 05:12
#23

楼主用C来开发?!真是惊了。上学的时候C就没学好,只能给你欢呼了

Reply View the author
五分皮
deepin
2021-01-02 05:15
#24

真要开发出来了,换一套素材就没有版权问题了。期待楼主的更新,不过,直接用现成的引擎应该会轻松很多吧,cocos2dx4.0在v20也能用,用qt加载cmake编译就能运行,而且配置简单。

Reply View the author
早起的虫儿有鸟吃
deepin
2021-01-02 18:51
#25

你开个服务器得了,只要广告别太多,我想许多人还是愿意玩的。

Reply View the author
angelfind
deepin
2021-01-02 19:56
#26
heer2019

yizhizaizhao一直在找传奇世界  感谢楼主的付出

看他的图是传奇, 不是传奇世界. 不一样的游戏啊.

Reply View the author
字甲达宾
deepin
2021-01-03 04:31
#27

过来接个水:

1. 顺便提个建议: BMP 图片太占资源。如果技术可行,先转换成 8 位 png, 安装包尺寸、内存加载会更省资源。用 ImageMagick 的 convert 命令,批量转换图片格式,也还算快的。

 

 

Reply View the author
alex_hunter
deepin
2021-01-03 06:00
#28
字甲达宾

过来接个水:

1. 顺便提个建议: BMP 图片太占资源。如果技术可行,先转换成 8 位 png, 安装包尺寸、内存加载会更省资源。用 ImageMagick 的 convert 命令,批量转换图片格式,也还算快的。

 

 

现在是map直接按高低位计算得到行和列读53(header)+12 x index的byte计算索引到WIL取WIL的byte流然后渲染800x600 / (48x32)个Tile块对应的bytes读入到pixBuf,如果按你说的还要转png,会不会太麻烦了?现在我的做法只操作.map和.WIL文件,全是操作的byte,除了最后一步的Tile块渲染没有bmp和png这个概念的,目前这样做,一张地图的实际内存开销为最少的Tile资源开销,比如一张地图假如只有10种地砖,那么加载这个图可能只需要大约53kb的内存,48x32像素的小图10张,我看2003年的delphi源码里面好像也是这样处理的

Reply View the author
o0******00@163.com
deepin
2021-01-03 11:04
#29

看到门开,脑子里就有了,石门磨擦的声音了。给大神点赞。牛

Reply View the author
字甲达宾
deepin
2021-01-05 04:46
#30
alex_hunter

现在是map直接按高低位计算得到行和列读53(header)+12 x index的byte计算索引到WIL取WIL的byte流然后渲染800x600 / (48x32)个Tile块对应的bytes读入到pixBuf,如果按你说的还要转png,会不会太麻烦了?现在我的做法只操作.map和.WIL文件,全是操作的byte,除了最后一步的Tile块渲染没有bmp和png这个概念的,目前这样做,一张地图的实际内存开销为最少的Tile资源开销,比如一张地图假如只有10种地砖,那么加载这个图可能只需要大约53kb的内存,48x32像素的小图10张,我看2003年的delphi源码里面好像也是这样处理的

可能我没有表达清楚。我的本意是:

先把官方原始素材资源的 BMP,转成 PNG,再打包做成游戏安装包。这样安装包尺寸会小一点。

程序渲染时,直接操作 PNG。

 

话说回来,如果按 BMP 的模式操作,官方版本升级时,解码程序不用修改。

如果做了 PNG  替代素材,每次游戏版本升级,都要重新转换、生成图片资源,维护起来可能会费力一些。

 

另外,个人建议:

先按官方游戏来解码,等技术原理吃透了,再自行设计地图,场景,游戏情节,做一款自己的游戏产品,避免版权麻烦。不管是技术交流、免费玩,还是以后商业化运营,都是极好的。

 

Reply View the author
mgmpk
deepin
2021-01-05 04:55
#31

厉害,能复刻一款网游真是神人了,,,什么时候能帮我把  网易的    天下3    也搞个LINUX出来  

Reply View the author
alex_hunter
deepin
2021-01-05 20:43
#32
字甲达宾

可能我没有表达清楚。我的本意是:

先把官方原始素材资源的 BMP,转成 PNG,再打包做成游戏安装包。这样安装包尺寸会小一点。

程序渲染时,直接操作 PNG。

 

话说回来,如果按 BMP 的模式操作,官方版本升级时,解码程序不用修改。

如果做了 PNG  替代素材,每次游戏版本升级,都要重新转换、生成图片资源,维护起来可能会费力一些。

 

另外,个人建议:

先按官方游戏来解码,等技术原理吃透了,再自行设计地图,场景,游戏情节,做一款自己的游戏产品,避免版权麻烦。不管是技术交流、免费玩,还是以后商业化运营,都是极好的。

 

感谢建议哈,从版权角度来看,不错的主意,但我现在不得不面临的一个问题是:目前就我自己一个人在开发,白天要上班,晚上下班吃了饭才能写一会儿,然后还有周末的1天时间,考虑到精力问题,目前连11周年客户端后面的都不准备做兼容了,你看github c#的源码一直持续更新mir2,光是map解析,就有8条if语句,8种可能,参考【github c# mir2】 

https://github.com/cjlaaa/mir2/blob/master/Client/MirObjects/MapCode.cs#L181

https://github.com/cjlaaa/mir2/blob/master/Client/MirObjects/MapCode.cs#L230

如果按照标准流程通行做法的话,我一个人怕是要1年才能勉强写出来,所以我不得不先从无到有,后面有人参与了,别的才好展开,望理解

Reply View the author
alex_hunter
deepin
2021-01-05 21:09
#33

2021-01-05:

开发进度:

1.完成不涉及性能地方的基础处理,使用python3.9快速黏合,进入到基础主流程开发

2.一个不好的消息是:目前没做优化的情况下,在我的4核8线程mbp2019上,如果不使用macfansControl来强制散热的话,温度会干到67~70度去,后期使用c优化后应该会减少cpu运算的使用,见下图

3.继续整理通用代码(如解析wix,wil,bmp通用header,bytes起止计算提取,sprite等)

下一步计划以及说明:

考虑到开发周期,工作量,自身精力情况,做如下说明:传奇10周年后客户端一直有更新,故不额外特别对后续所有版本做兼容,第一版本一切以从无到有为目标,然后慢慢修bug,再次基础上再进行别的候选项,目前的主要任务还是整理出能让大伙儿参与的骨架,通用封装,剩下的添砖加瓦等第一个公测版本发布后再进行,希望理解哈

Reply View the author
alex_hunter
deepin
2021-01-05 23:44
#34
alex_hunter

2021-01-05:

开发进度:

1.完成不涉及性能地方的基础处理,使用python3.9快速黏合,进入到基础主流程开发

2.一个不好的消息是:目前没做优化的情况下,在我的4核8线程mbp2019上,如果不使用macfansControl来强制散热的话,温度会干到67~70度去,后期使用c优化后应该会减少cpu运算的使用,见下图

3.继续整理通用代码(如解析wix,wil,bmp通用header,bytes起止计算提取,sprite等)

下一步计划以及说明:

考虑到开发周期,工作量,自身精力情况,做如下说明:传奇10周年后客户端一直有更新,故不额外特别对后续所有版本做兼容,第一版本一切以从无到有为目标,然后慢慢修bug,再次基础上再进行别的候选项,目前的主要任务还是整理出能让大伙儿参与的骨架,通用封装,剩下的添砖加瓦等第一个公测版本发布后再进行,希望理解哈

2021-01-05:

改进:

1.通过锁定 非战斗界面(登录,角色选择等)的帧率为30,部分场景可能需要锁定帧率为15,来大幅度减少了cpu的占用,目前在我的mbp2019上温度可以保持在38度上下

Reply View the author
吕先生
deepin
2021-01-06 01:35
#35
mgmpk

厉害,能复刻一款网游真是神人了,,,什么时候能帮我把  网易的    天下3    也搞个LINUX出来  

网易的大话系列也很香啊....

Reply View the author
吕先生
deepin
2021-01-09 23:50
#36

大佬,现在进度是?????好期待啊!

Reply View the author
alex_hunter
deepin
2021-01-10 21:41
#37
吕先生

大佬,现在进度是?????好期待啊!

感谢关注哈,目前的进度是:

1.登录注册完成

2.角色选择创建删除完成(开门动画,角色创建动画对比官方流畅度增加1倍)cpu占用较之前降低5倍,(我目前将整个流程分为4个scene[1登录注册开门前的场景,2角色创建删除角色选择场景,3提示信息场景,4战斗场景])目前对比wine,crossover等方案在scene 1,2能够减少将近5倍cpu开销(我的8代i5使用wine,crossover运行传奇登录器1core占用在125%,使用python&c重写后占用在1core 17~24%),战斗场景到时候根据实际情形做测试

3.目前开发进度位于场景4:角色状态块,背包块,技能块绘制中(背包物品item解包排序等等,作为整体的拖拽坐标更新等,然后是地图绘制3个层,重叠人物怪物obj阴影透明计算等,这部分作为主要战斗场景可能会相对耗时一点,不过我会将性能作为第一考虑因素的,尽可能节约cpu(哪怕牺牲更多内存做预绘制缓存));

最后,如果大家希望第一时间得到开发进度或者参与建议:我建了个Q群,感兴趣的可以加入关注:483704906

 

Reply View the author
alcpsykeji
deepin
2021-01-10 23:22
#38
alex_hunter

感谢关注哈,目前的进度是:

1.登录注册完成

2.角色选择创建删除完成(开门动画,角色创建动画对比官方流畅度增加1倍)cpu占用较之前降低5倍,(我目前将整个流程分为4个scene[1登录注册开门前的场景,2角色创建删除角色选择场景,3提示信息场景,4战斗场景])目前对比wine,crossover等方案在scene 1,2能够减少将近5倍cpu开销(我的8代i5使用wine,crossover运行传奇登录器1core占用在125%,使用python&c重写后占用在1core 17~24%),战斗场景到时候根据实际情形做测试

3.目前开发进度位于场景4:角色状态块,背包块,技能块绘制中(背包物品item解包排序等等,作为整体的拖拽坐标更新等,然后是地图绘制3个层,重叠人物怪物obj阴影透明计算等,这部分作为主要战斗场景可能会相对耗时一点,不过我会将性能作为第一考虑因素的,尽可能节约cpu(哪怕牺牲更多内存做预绘制缓存));

最后,如果大家希望第一时间得到开发进度或者参与建议:我建了个Q群,感兴趣的可以加入关注:483704906

 

加油

Reply View the author
heer2019
deepin
2021-01-17 18:24
#39

感谢楼主   希望早点玩上传奇

Reply View the author
Cris.Q
deepin
2021-01-26 04:46
#40

楼主是神人啊

Reply View the author
2 / 3
To page