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

news/2025/2/12 21:43:11/

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

  • 第零篇:进度表
  • 第一篇:我要冒险岛的图片音乐资源
    • 途中:后端移植C到全JS

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

第零篇:进度表

代码先敬上: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适配。搞定,休息一下,看看下面来整地图模型。

在这里插入图片描述


http://www.ppmy.cn/news/527493.html

相关文章

传奇SF上传列表格式

[Server] ; 标题|服务器标题|服务器名称|服务器IP|服务器端口|是否自动展开(0不展开,1自动展开)|微端IP|微端端口(0表示不使用微端)|安全盾防火墙端口(0表示不使用防火墙)|防火墙类型,0安全盾防火墙 1风盾 2恶魔盾 0电信服务器|热血传奇7008|传奇归来700…

方舟服务器傻瓜开服教程(含教程以及所有开服常见问题解决办法)

由于受朋友的鼓动,加上Steam的80%减价,入手了Ark:Survival Evolved,方舟:生存进化,成功成为Ark废人之一。为了和老铁们一起打游戏,用Ark server manager傻瓜式搭建了ark服务器。又因为没有公网IP&#xff0…

我的世界(Java版)原版服开服教程

原文链接 我的世界(Java版)原版服开服教程 前言 最早的时候,我玩MC都是玩的本地世界,后来学会了和同学一起联机,每次联机都要在同一局域网下进行。 后来接触了一个叫“我的世界联机盒子”这样一个应用,才第一次加入服务器进行…

Minecraft开服教程

Minecraft开服教程 如果你要和朋友联机时,可以选择的方法有这样几种: 局域网联机:优点:简单方便,在MC客户端里自带。缺点:必须在同一局域网内。有些工具会带有联机功能:优点:一般是…

冒险岛开服服务端教程自己搭建服务器需要那些东西

冒险岛开服服务端教程自己搭建服务器需要那些东西 《冒险岛Online》是由韩国WIZET和NEXON制作开发的一款2D横版卷轴网络游戏,故事以被“黑暗力量”不断入侵,因而进入了“浑沌期”的世界为背景,勇士们组成了联盟,再次与“黑暗力量”…

彩虹岛服务器维护,彩虹岛官方网站欢迎您

各位亲爱的岛民: 彩虹岛6月5日10:00~12:00全区全服进行例行维护(已完成),请各位岛民调整好游戏时间,及时下线。给您带来的不便敬请谅解。 本次维护后更新以下内容: 1、调整魔射手【危机】触发方式,现在改为自己脚下生成…

pip install安装CPM-Bee出现ModuleNotFoundError: No module named ‘torch‘的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…