本篇文章主要讲搭建过程,以及出现问题的解决方法。难度较高,我已经搭建好了服务器供玩耍,如何连接服务器看这篇文章 或者 简书
更新:
- 删除 nfsw-server,使用soapboxRaceWorld,由于nfsw-server.jar 只提供了登录,购买等基本功能,其他功能基本没有。:joy: (我看源码发现只是返回一个 xml 文本,游戏上的社交,比赛基本单机)
- soapbox-race-core 找不表的情况,删除数据库
SOAPBOX
重新安装导入github上作者给的sql文件即可,程序会自动建表。 - 更新soapbox-race-mp,soapbox-race-freenom
正文
wiki 给出需要用到服务 openfire 、mysql 、wildfly(后面我找到了 nfsw-server.jar替换掉)都需要用到数据库,所以先从数据库开始吧。
搭建前提
有 1G 以上的内存,公网IP(如果只是要本地,直接下一个模拟器就好了,不用这么麻烦。),最好 Linux 主机,windows 没试过,不过应该也行。
1. MySQL 数据库
- 导入full-script.sql
默认openfire用户名:openfire 密码 openfire
默认soapbox用户名:soapbox 密码soapbox
PS:不用来试我数据库了,没开放3306端口,我是用SSH通道用密钥连接的。 - 保持数据运行就好了
2.openfire 配置
如 wiki 写的一样OpenFire从 google drive下载。
登录后台,admin 密码 admin
访问 localhost:9090/plugins/restapi/rest-api.jsp 启用 restful api 把 openfire token 保存下来配置soapbox-race-core需要用到
登录后台 localhost:9090/server-properties.jsp
Xmpp.domain 改为与后面的system-properties中xmppIp一样的地址
运行
openfire/bin/openfire start
让其在后台运行即可。日志文件在
openfire/logs/
目录下,有问题时可以使用tailf openfire/logs/all.log
持续查看输出,方便找配置错误,当没有报数据库连不上,没有打印出一些堆栈时就可配置nfsw-server了,否则检查配置是否有误。
3.soapbox-race-core(基本登录、购车功能)
打开# SoapboxRaceWorld/soapbox-race-core项目
打包出来的是 war ,需要 wildfly 才能部署,需要做的事情如下:
- 下载 releases 打包好的 war,以及 wiki 里提供的 wildfly (google drive 要梯子)
-
放入 war 到 wildfly 目录下的 standalone/deployments
- 配置 openfire 服务 (配置文件 wildfly/standalone/configuration/standalone.xml)
配置 xmppIp 为公网地址(必须检查)
udp freeroam、race 作者已经完成,分别是自由漫游服务,比赛服务。(这个填公网ip即可,端口不要改)
配置 openfire restful api 地址(改一下ip即可)
配置 openfire token(要跟openfire上面restful api token的一样。)
也可以登录wildfly 后台修改http://localhost:9990/console/App.html#profile/properties(需要创建账户,运行 add-user.sh 按提示即可)。
-
配置数据库,同样可以编辑 xml 也可以登录后台数据源配置
5.(可选)配置绑定的后台管理地址
-
可在后台重启服务
4.soapbox-race-freenom(提供自由漫游功能)
打开# SoapboxRaceWorld/soapbox-race-freeroam下载代码,并且下载gradle
执行命令gradle shadowJar
编译出jar文件,扔上服务器运行即可。
5.soapbox-race-mp(提供多人比赛服务)
打开# SoapboxRaceWorld/soapbox-race-mp下载代码,并且下载maven
执行命令mvn clean compile assembly:single
编译出jar文件,同样扔上服务器运行即可。
enjoy!
nfsw 服务搭建已经完成,在开头的文章下载 nfsw 以及启动器就可以登录了!等会再写一篇客户端登录的教程
PS:我准备把这个服务做成 docker 镜像,这样部署的时候就不用这么配来配去(自己捣鼓了差不多一个星期才搞定,先是 wildfly 搭建的数据库缺数据,无法购买车辆,后是 openfire 中 xmpp.domain 配置错误,进入游戏就提示与服务器断开连接,其实是跨域的问题,nfsw-server的xmppIp要与其相同。)
上面项目都是基本已经停止维护的,使用的 openfire 是4.0.2 的,我fork的老哥michelinus/nfsw-server也停止更新一年了。
有问题可以在下面留言哦,欢迎一起交流(虽然极大可能零回复)