背景
之前接触了"mk48.io"这款小游戏,最近发现官网因未知原因被封锁了,去Github上找了下发现是开源的(Github链接:https://github.com/SoftbearStudios/mk48)
刚好手头有一两台闲置的服务器,就计划用该仓库里的代码搭一个私服,套上Cloudflare CDN,便于国内访问
准备工作
1、一台x86/amd64架构的Linux服务器(Trunk v0.16.0无编译好的arm版,如果为arm服务器,Trunk需自行下载源代码编译),硬盘需5-10G,编译速度由CPU性能决定
※:注意Rust在编译过程中CPU占用始终为100%,可能被服务商认定挖矿暂停服务器,请事先确认VPS服务商的TOS与CPU性能
2、安装Git+Rustc+Cargo+Trunk,并将仓库clone至本地
※:注意Trunk不能安装最新版,否则会在Trunk编译过程中由于Rust版本过旧报错,而使用新版本Rust+新版本Trunk则无法编译Game Server,而cargo包管理疑似无法直接安装旧版安装包,所以在这里采取使用新版Rust编译并安装完Trunk后直接替换可执行文件(直接放入可执行文件由于依赖未安装会报错)
3、版本:
Git最新版(版本无影响,只要能将仓库clone下来就可以)
Rust nightly-2022-08-14(作者在Readme中说这个版本可运行,其他版本可自行测试)
Cargo 与Rust配套,安装Rust时自动安装即可
Trunk v0.16.0(Github上本版本发布时间为2022-7-1,与Rust版本配套,其他版本可自行测试)
※:有时编译报错"miss cc"需执行apt install gcc安装GCC编译器
搭建过程
首先进入仓库目录下的client文件夹,运行make命令(或trunk build --release)编译client(未完成此步骤在接下来会缺失文件而无法编译server)
接下来进入仓库目录下的server文件夹,运行cargo run(后可自行添加参数,参数表见文末)
编译完成便可使用Cloudflare解析至服务器IP,设置Origin Rule回源至HTTP端口(若使用Release模式运行需配置参数使用TLS)
在浏览器中打开解析至Cloudflare的域名,便可开始愉快地玩耍了
参数表
参数 | 作用 |
|---|---|
--database-read-only | 使服务端不写入数据库 |
--admin-config-file <文件路径> | 指定Admin Config文件 |
--bot-percent <数字> | 指定机器人占总船数百分比 |
--certificate-path <证书路径> | 指定TLS证书 |
--chat-log <文件路径> | 存储聊天日志 |
--client-authenticate-burst <数字> | 指定客户端验证速率上限 |
--client-authenticate-rate-limit <数字> | 指定客户端验证频率 |
--debug-core <info/warn/error/debug> | 指定core日志等级 |
--debug-game <info/warn/error/debug> | 指定游戏日志等级 |
--debug-http <info/warn/error/debug> | 指定HTTP请求日志等级 |
--debug-sockets <info/warn/error/debug> | 指定Socket日志等级 |
--debug-watchdog <info/warn/error/debug> | 指定Watchdog日志等级 |
--discord-bot-token <discord-bot-token> | Discord Bot Token |
--discord-client-id <discord-client-id> | Discord客户端ID |
--discord-client-secret <discord-client-secret> | Discord客户端Secret |
--discord-guild-id <discord-guild-id> | Discord Guild ID |
--domain <domain> | 绑定域名 |
--http-bandwidth-burst <数字> | HTTP请求数上限 |
--http-bandwidth-limit <数字> | HTTP带宽上限 |
--http-port <http-port> | HTTP端口 |
--ip-address <ip-address> | 绑定IP |
--linode-personal-access-token <token> | Linode DNS配置使用 |
--max-bots <max-bots> | 机器人数目上限 |
--min-bots <min-bots> | 机器人数目下限 |
--private-key-path <private-key-path> | 私钥地址 |
--region-id <region-id> | Region ID |
--server-id <server-id> | Server ID |
--trace-log <trace-log> | 记录前端(Client)日志 |