从0开始移植冒险岛online,和小伙伴一起在局域网或私服怀旧吧

移植冒险岛online,和小伙伴一起在局域网或私服怀旧吧

这是一篇长期慢更的文章,以记录移植进度。

第零篇:进度表

代码先敬上:https://github.com/stallpool/maplestory

  • MapleServer: 读取图片音乐资源
  • MapleServer: 读取地图、活动、事件
  • MapleClient: 读取图片音乐资源,绘制图片,播放音乐
  • MapleClient: 绘制地图
  • MapleClient: 绘制人物怪物NPC技能,动画
  • MapleServer: player数据sync
  • MapleServer, MapleClient: 整合,完成地图切换,爆物品等事件
  • MapleClient: 登陆注册界面
  • MapleServer, MapleClient: 测试,跨平台测试
  • 后续完善

第一篇:我要冒险岛的图片音乐资源

盛大神话悄然落幕,乱世分久必合合久必分;如今有腾讯昂首一统半壁江山,外有各方虎踞龙盘。曾经那个冒险岛online,着实让人怀念。

其实,网上有很多搭建冒险岛私服的教程,试验下来,在如今的2020年几乎已经不太能使用了,最常见的问题就是过HackShield。怎的,想要我折寿三年,向看雪学院叩拜良久,然后破去冒险岛online原先的穿山甲壳,再逆向一下HackShield替换掉它原先的exe么。对于逆向,已经荒废许久,还是放下吧。何况网络上的maplestory world server都是java写的,再配合个mysql,有点重型。加上maplestory都是windows程序,放虚拟机里运行,还得想办法改虚拟机的配置,躲开它的虚机识别,这也太不便利。

不过有需要的同学请使用下面的链接自行搭建:

MapleStory server (额外:需要翻墙去Google Storage下载v083游戏资源文件,7、8GB吧)
MapleStory client (从0实现的client,没有hack shield,但是懒得去学习其配置了)

能不能开个网页就能玩呢?

在调研的时候,那个C#的 WzComparerR2 深得我心,可以随意导出任意资源。而且,下载了最新的冒险岛online客户端安装后,这个程序依旧可以dump。就是不在windows上的话,得弄个Mono…有点小失望。

于是就开始想用Golang将它移植一番。边写边开小差。偶然间,搜到了 wz 这个C写的项目。虽然编译的时候语法各种error(老代码和新编译器不兼容),但是好在编译了以后可以使用了。兴致一来,就加了个dump功能,可以把数据存出来了。但是wz是可以从官网拿到更新的,dump太费劲,弄个server读就好很多。

忽然想起 ttyd 的依赖 libwebsockets。把wz套上websocket不就可以从web端读了嘛。从libwebsockets里取出那个echo server,改成接到指令,输出数据就好了。

其实实现并不复杂,就是期间有一些小坑需要填填。最开始的版本,也不用那么考虑security,最多后面加个basic auth。而且目的是想着好友间一起玩,最好是局域网的,所以不用那么复杂,还防啥外挂… server有了,后面就是慢慢整web端了。先写了个简单的resource manager用来从server读数据。这样就可以读音乐播放,读图片拼接sprite了。要用cocos2d么?容我想想。

demo
Browser

途中:后端移植C到全JS

终于算是有了点时间回来看看冒险岛的开发,换了电脑,重新部署,发现里面的东西一个坑接着一个坑,而且在Linux竟然原来在Windows和MacOS上跑没有问题的地方也都出现了或多或少的问题,用一个C编译的东西调试起来怎么都不太方便,各种printf,因为libwz的原因还不时segmentation fault。为了更好地维护这个项目,决定干掉这些c相关代码,本来想用go,但调试起来也很麻烦,全js吧。用emscripten可以很快把c转为js,但是不可编辑,所以开始读代码,重新把libwz完全用js实现。花了一个周末的时间,2000多行的代码终于转化成js了,顺带删除了websocket,将api降解为restful的形式。也重新把web ui端的代码和新的api适配。搞定,休息一下,看看下面来整地图模型。

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值