boxmoe_header_banner_img

欢迎来到YaeMiko小站

加载中

文章导读

瞎捣鼓——将传统MapleStory整合进SpringBoot中(序)


avatar
Samele 2025-05-19 12

1>项目背景:

MapleStory是传统老牌网游了,还记得小时候天天去网吧刷上2个小时的绿蘑菇。钻到蚂蚁洞的火独眼洞穴肝一下午,那段回忆令人难忘。

小的时候看到哪些开吸怪外挂疯狂刷刷刷的人也是羡慕不已。无奈小时候技术有限,从网上下载的,买的外挂都不会用。除了嘎嘎掉线就是把自己的电脑搞崩。

言归正传:

网络上盛行各种MapleStory单机版游戏,拿回来拆一拆发现大多是eclipse软件编辑,jdk7环境,mysql5.5的数据库+客户端exe文件。

自己开机玩一玩还是挺带劲儿的。不过自己玩总感觉差点意思,还想拉几个小伙伴一起,这不需求就来了么,

我找到的服务端多半都是只能单机运行,为什么呢?

i>一个就是它监听的127.0.0.1的地址,不对外公开,所以其他客户端连接不上

ii>服务器端回传的地址有误,通常单机回传地址也是127.0.0.1,导致客户端只会去找本机的端口连接。无法连接远程端口

iii>主机没有公网ip地址,也就是说在公共网络上找不到这个机器,那么自然也无法联机。

能克服以上几个问题基本上就能联机了,现在的问题是:我们没有一个注册和管理的平台来控制服务端

所以我要把MapleStory客户端和SpringBoot整合到一起,为服务器提供可操作的api接口,甚至可视化网页。

从而能完成诸如:账户注册、密码修改和重置、角色信息查询修改删除、以及服务端的其他控制功能,同时提升数据库效率。

整合前遇到的已知问题:

1、原服务端是eclipse软件开发的,我现在想要挪到idea上,开发工具不通可能遇到意料之外的环境问题

(事实确实遇到了很多麻烦事,目前已有临时方案解决)

2、Spring框架最擅长的是ioc依赖注入管理bean,而原服务端是传统的new XXX()的方式,需要大量解决模块的依赖注入问题,使其能通过ioc容器管理。

3、SpringBoot擅长的是Controller、Service、Dao的分层设计。而原服务端的逻辑层比较混淆,想要剥离出来并不容易。

4、SpringBoot的配置文件时application.yaml注入配置,而原服务端是传统io读取配置文件。而且配置逻辑复杂。

5、SpringBoot加入Mybatis-Plus,可以通过Mapper来查询数据库,配合EHCACHE或者Redis等缓存产品可以提高效率。而传统客户端使用的jdbc工具,(好一些的使用Druid连接池)读取数据库信息,效率相比较低。且传统客户端的查询语句分布在项目的各个地方,改起来非常费力。

6、据说(据ChatGPT说),MapleStory的通讯机制是基于Netty的(我的未知领域),整合时应该尽量注意,以防止线程问题。

 

基于以上各种已知的还有各种未知的问题准备从以下步骤开始整合:

1、将eclipse客户端放到idea的普通项目上,引入lib依赖,配置文件,wz和script文件,调试运行成功。

2、将idea普通项目转为maven项目,同时引入springboot框架,将整个服务端作为其中一个组件整合进框架中,运行测试

3、将服务端的核心部件拆分为Component,注入Springboot的ioc容器中,运行测试

4、在SpringBoot中添加web启动器,结合thymleaf渲染前端网页控制台界面,整合服务端控件实现网页控制

5、将服务端传统io读取配置文件改为SpringBoot的application.yaml统一管理,并运行测试

6、将分散在各个类中的数据库CRUD操作归结到Mybatis统一管理,加入缓存产品提高查询效率。

7、打包Jar实现一键发布~

 

为达到以上目标,特别创建该项目分类,记录整合过程中遇到的各种深坑~~~敬请关注

 



评论(已关闭)

评论已关闭