-
Notifications
You must be signed in to change notification settings - Fork 63
BeiDou服务端搭建教程
教程视频:https://space.bilibili.com/94519640/channel/collectiondetail?sid=3556567
本教程仅针对想要参与BeiDou项目开发的同学,如果你只是想部署并使用BeiDou,只需要访问 https://github.com/BeiDouMS/BeiDou-Server/releases 下载最新的版本。先手动启动MySQL数据库,然后解压下载好的服务端,双击bat文件运行即可。无需额外操作,BeiDou首次启动会自动初始化数据库,该过程可能会花费几分钟时间,后续再次启动则不会重复初始化了。服务端启动后,可以根据提示访问 http://127.0.0.1:8686/ 进入BeiDou管理后台,默认用户名和密码都是admin。
我们之前的GMS服务端项目源于HeavenMS,并且共经历了3个版本:1.x 2.x 2.5.x,但是并没有对项目的框架做很大的升级。项目地址:[HeavenMS-Nap](https://gitee.com/sleepnap/heaven-ms-nap)
随着GMS的迭代,老框架越来越多的弊端展现,对于大家提出的很多新的想法渐渐无法支持。比如:不支持es6语法,JDK版本过低,不支持maven等等。其实这些在Cosmic已经支持了,考虑到如果3.x版本自己升级框架,等于重复造车,不如直接基于Cosmic,这样也省了很多重复的过程。
和2.x相比,BeiDou具有以下优势:
- 支持ES6语法,编写脚本更加方便
- 支持Maven,自动拉取依赖和一键打包
- 支持JDK21,最新的JDK版本,支持虚拟线程等最新特性
- 支持SpringBoot3,最新的SpringBoot框架
- 支持SpringSecurity,基于SpringSecurity的Jwt授权
- 支持全平台部署,包括Windows、Linux、Docker、MacOS。2.x理论只支持Windows,如果在Linux上运行,则不能包含ui
- 更好的体验,Web控制台界面,PC端和移动端都能通过浏览器访问。如果开放端口则支持远程访问,则无需像2.x一样远程服务器桌面来操作控制台
- 不再采用非主流的GBK编码,整个项目编码格式都是主流的UTF-8
- 享受Cosmic已修复的所有bug,同时也包含2.x中修复过的bug
在整个项目开始之前,第一个要解决的问题就是怎么访问GitHub。目前已知有以下几种方法:
- 裸连: 这是个迷,有的人不需要借助任何第三方,就能裸连GitHub。裸连虽好,但是在国内,裸连多不稳定。如果你能裸连并且稳定,那么恭喜你,你可以直接跳过这一步。
- 修改hosts: 我们访问GitHub需要先通过DNS获取到GitHub的IP地址,然后才能访问。但GitHub的IP地址变动,且GitHub DNS被污染等问题,导致我们经常无法正常访问正确的GitHub IP。所以,需要我们主动获取到当前GitHub的IP,然后修改hosts文件,将GitHub的IP地址映射到正确的IP地址上。你可以访问 https://www.ipaddress.com/ 获取当前GitHub的IP地址,然后修改hosts文件,将GitHub的IP地址映射到正确的IP地址上。可配域名:github.global.ssl.fastly.net和github.com。
- 镜像源: GitHub有很多镜像源,你可以通过这些镜像源来clone代码。但是首先镜像源也不能保证一定稳定;第二镜像源的代码更新并不及时;第三镜像源可以clone代码,但千万不要用镜像源来推送代码,或者在镜像源上登录你的GitHub账号,这可能导致你的GitHub账号被泄漏;最后镜像源仍无法解决你推送代码的问题,所以这个我不推荐。
- 工具: 你可以借助一些工具来访问GitHub,比如[FastGithub](https://gitee.com/XingYuan55/FastGithub) 或 [Watt Toolkit](https://steampp.net) 或 UU加速器选择学术资源加速 等等。这些工具是否有效因人而异,可能这些你都尝试了,还是无法访问GitHub。
- VPN: 如果以上方法都不行,那么你只能找一个VPN了。一般来说,VPN是最稳定的,但是VPN需要付费。且在国内,使用VPN可能会涉及违法。如果你用VPN,请不要进行宣扬和传播,也不能访问违法网站,如果你单单用来访问GitHub,应该是没什么问题的。
如果你已经完成了第一步,能访问到BeiDou项目主页:https://github.com/BeiDouMS/BeiDou-Server 在项目主页下的ReadMe中介绍了开发环境需要安装的工具,请按照ReadMe中的指示先行安装。
访问BeiDou项目主页:https://github.com/SleepNap/BeiDou 在项目主页右上角有一个Fork按钮,点击Fork按钮,将项目Fork到自己的GitHub账号下。访问到你自己Fork的项目主页,而不是BeiDou项目的主页,查看需要Clone的地址,然后使用git命令将你Fork的项目Clone到本地。
项目拉好后,idea会自动为你的项目创建索引,这一步不需要你做什么,看着就好。如果期间idea提示:Maven 'BeiDou' build scripts found,点击 Load Maven Projects 即可。启动如果idea提示:Lombok requires enabled annotation processing,点击 Enable annotation processing 即可。
点击Edit Confirations创建一个启动配置,在左上角点击+号,选择Spring Boot创建了一个Spring Boot的启动配置。Name自取,module选择gms-server,Main class选择org.gms.ServerApplication。点击Modify options,选择Working directory为gms-server目录。自此配置完毕,通过点击运行按钮即可启动服务端开发环境。 由于本项目是前后端分离的,配置好gms-server后,还需要配置gms-ui。在gms-ui目录下,执行 yarn install 安装依赖。依赖安装完成后,执行 yarn dev 启动前端开发环境。
如果用我的mysql启停工具,一定要修改配置为mysql-8.0.37-winx64,因为默认是mysql-5.7.44-winx64
当你完成了代码更改并提交后,你的代码会上传到你自己Fork的项目仓库中。访问到你的项目仓库,在上方会有一个Pull Request的tab页,点击New Pull Request。选择好要合入的分支(按默认的即可),点击Create Pull Request,就提交了PR。PR提交后,项目维护者会收到你的PR,并进行代码审查,如果代码审查通过,那么你的代码就会被合并到主分支中。
一切数据以我个人的笔记本电脑为基准,CPU:i7-14650HX 内存:32GB 硬盘:1TB SSD,统计时间:2024-7-19
Cosmic空载启动占用约 873.7MB,BeiDou空载占用约 840.3MB。说实话对于这个数据我很惊讶,按理说BeiDou引入了SpringBoot框架,理论应该有更高的占用,但事实上,SpringBoot框架的引入并没有带来太大的内存开销。
Cosmic源码大小约 730MB,BeiDou源码大小约 774MB。Cosmic打包后大小约 44.2MB,BeiDou打包后大小约 112MB。这是因为BeiDou项目为SpringBoot项目,引入了更多的依赖。其次BeiDou的jar包还包含了多语言,web前端资源,自动初始化脚本等文件。
二者都是统计了脚本加载完成后的耗时,其中BeiDou的2个时间分别为SpringBoot启动耗时和服务启动耗时。
Cosmic启动5次耗时:4.553s、4.699s、4.728s、4.765s、4.541s,平均耗时4.657s。
BeiDou启动5次耗时:2.095s + 4.251s、2.02s + 4.249s、2.03s + 4.28s、2.1s + 4.355s、2.018s + 4.221s,平均耗时2.052s + 4.271s = 6.323s。
暂无数据
从理论分析,BeiDou相比于Cosmic会要求有更大的占用,和更多的资源。但从实际数据来看,BeiDou除了在硬盘空间方面外,其他方面相比Cosmic并没有太大的差距。
- 多语言支持,BeiDou的服务端,Web端,客户端都支持多语言,目前已支持中文和英文
- 友好的控制台,BeiDou拥有Web控制台,可以更方便的远程进行服务端管理
- 简易部署,只需启动mysql,BeiDou会自动建库,自动建表,自动升级数据库,无需手动操作
- 拥抱主流框架,网络架构基于SpringBoot + Netty,ORM层有Mybatis-flex,支持数据库自动升级的FlyWay,以及Lombok
- 更多问题修复,因为BeiDou是基于Cosmic,除了Cosmic已包含的问题修复外,BeiDou还额外修复了一些游戏内的其他问题,具体可查看git提交记录
- 更个性化,目前Cosmic的态度是与官方靠齐,并且删除了很多HeavenMS中个性化的功能,而BeiDou更倾向于保留一些个性化
- 拍卖行脚本,拍卖行参数关闭时展示拍卖行脚本,开启时正常进入拍卖行
- 参数管理计划,未来将要支持,可以修改服务参数实时生效,而无需重启服务
- GM指令重构计划,未来将要支持,将GM指令进行重构,支持修改GM指令的等级,开关
- 定时任务重构计划,未来将要支持,包含野外BOSS、旅行等,支持查询和设置野外BOSS刷新,以及地铁、飞机、船的航班
- 掉落管理,未来将要支持,能够修改怪物掉落和全局掉落,并实时生效
- 商店管理,未来将要支持,能够修改NPC商店和玩家NPC商店,并实时生效
- 自动封禁优化计划,未来将要支持,目前的自动封禁很容易就误封、误判,需要对自动封禁有问题的部分作出优化,同时增加一些原来没有预判的内容