搭建FreeKill服务器#

本文介绍如何搭建公共可访问的FreeKill服务器,假设你想面向网上的广大玩家。

选择机器#

推荐租一台VPS(或者云服务器、轻量应用服务器等)或者准备专用的服务端机器来搭建服务器。 在家中自建服务器往往连接会不稳定,并且出网带宽较低,且可能无法保证24小时在线。

FreeKill主菜单中的“单机启动”选项会启动局域网服务器,适合为二三好友创建临时服务器。 但若希望运营公共服务器,建议采用专用服务器模式,这样即使客户端离线,服务器也能保持独立运行。

租借服务器机器会涉及预算的考虑,以下的数据是通过经验总结出的,仅供参考:

  • 带宽:1Mbps大约可支持300名玩家同时在线游玩,依此类推

  • 内存:考虑因素比较复杂,推荐至少选择1GB内存的机器。 作为参考,主服务器在200人在线时,进程内存占用约为230MB,但这并不能通过简单的乘算推测人数更多时的内存消耗量

  • CPU:同前。FreeKill服务端使用至少两个线程,所以推荐选择多核CPU。 CPU随游玩人数的占用量的变化同样难以估计

  • 操作系统: 必须 选择Linux。

以下假设您使用无头Linux服务器(headless,也就是没有图形环境),且发行版为Debian。

获取服务端二进制文件#

前往 Release页面 下载最新的预编译二进制文件。根据您的服务器CPU架构选择合适的版本, 绝大多数服务器应该都是amd64架构。

您也可以自己编译二进制文件并在服务端运行。但是注意,目前服务端主流选项是 freekill-asio ,和 FreeKill 相比,它的体积更小,且提供了编译好的成品, 并且拥有更加强大的功能。这是因为新的服务端是重构版本,而FreeKill是基于Qt的 服务端(仅针对单机游戏提供有限支持),双方不是同一套代码,所以功能上会有差别。

接下来介绍的是基于预编译二进制文件的开服流程。

运行服务端#

运行下面的命令即可运行服务端:(自己替换成合适的文件名)

$ tar xf freekill-asio-static-v0.1.0-amd64.tar.gz
$ cd freekill-asio-static
$ ./freekill-asio

为了让最基本的游戏运行起来,必须安装freekill-core拓展包,同时绝大部分新月杀拓展包还依赖utility包:

fk-asio> install https://gitee.com/Qsgs-Fans/freekill-core
fk-asio> install https://gitee.com/Qsgs-Fans/utility

您可以在命令行参数中指定服务端运行的端口(TCP+UDP,默认9527), 例如 ./freekill-asio -p 12345

为了让服务端崩溃时自动重启,可以用 while true do ./freekill-asio; sleep 2; done 启动服务器。为了让你退出ssh登录后服务端仍可运行,你可能会用到终端复用器,例如 screen 。 用 screen 启动screen后输入启动命令, Ctrl+A d 挂起, screen -r 恢复。

让玩家连接服务器#

你应当知道自己的Linux机器本身的防火墙配置(ufw或者iptables之类的), 同时也要注意到运营商提供的防火墙服务,去放行相应的端口。

  • TCP端口:用来处理登录、游戏对局等

  • UDP端口:仅用于服务器列表页面中服务器信息探测。

更新服务器版本#

下载新版release,解压覆盖。

从古法FreeKill开服迁移过来#

解压release后,把之前服务端文件夹以下文件都复制到相应的位置。

  • packages/* (整个packages文件夹都复制过来)

  • server/users.db

  • server/game.db

  • freekill.server.config.json