meta data for this page
📚 游戏服务器
在 沙盘引擎 游戏过程中,服务器是一个非常关键的概念,引擎采用全程服务器同步模式。
全程服务器同步模式:即使只有主机在线(1人),底层仍然是服务器联机的模式。
简单来说,沙盘引擎 理论上不存在真正的“单机游戏”。
更多情况下,玩家所游玩的是不同的本地服务器、单人服务器、多人服务器等。
每次服务器启动时,模组自动加载被开发者提前设计好的地图、脚本,因此展示出不同的功能和内容。
📒 创建服务器
沙盘引擎 支持玩家以多种方式创建服务器。
通常情况下,创建服务器的方式分为主机服务器、专用服务器两种模式:
- 主机服务器:以当前游戏作为主机创建服务器
- 特点:可以正常游玩游戏,但是主机断开(关闭游戏)则自动关闭服务器
- 专用服务器:通过
CMD+DOS
无头模式创建- 特点:无法正常作为游戏游玩,仅作为服务器运行,无需显卡硬件,更适合24小时不断线服务器
无论哪种方式创建的服务器,玩家理论上都可以多开游戏,实现自己进入自己的服务器。
注意:由于 沙盘引擎 的设计开放性,不同模组的 创建服务器 方式可能有所不同(完全取决于模组作者的设计)。
📘 主机服务器
通常情况下,模组作者会根据自己游戏的玩法设计,可能为玩家提供游戏主菜单的创建游戏相关按钮或功能,玩家可根据具体模组方式来尝试创建。
在特殊情况下,模组作者可能不希望提供玩家创建服务器的功能(例如:仅允许游玩官方服务器),这可能导致模组在打包时缺乏创建主机的代码,因此部分模组可能无法创建服务器,仅允许作为玩家游玩。
📘 专用服务器
如果希望创建一个长期运行、更稳定的联机服务器,多数游戏均采用专用服务器的方式来创建服务器,最终托管至Windows Server (VPS)服务器(7x24)。
专用服务器与游戏内常规主机服务器的创建方式有所不同,此方法更适合没有显卡的Windows 服务器系统,通过DOS控制台的方式直接创建服务器,没有游戏画面,且占用要求更低。
沙盘引擎 程序目录内置DedicatedServer
文件夹,内置了基础的创建专用服务器快捷工具及方式。
📘 DedicatedServer.bat
在专用服务器目录(DedicatedServer
)中,使用文本编辑器打开DedicatedServer.bat
,最终得到标准的bat
命令:
start ..\SandtableEngine.exe @modPackage -nographics -batchmode -serverbuild -frame_128 -logfile .\ServerLog.txt
start ..\SandtableEngine.exe @%param% -nographics -batchmode -serverbuild -frame_128 -logfile .\ServerLog.txt
代码解释:启动SandtableEngine.exe
文件,以@xxx.xxx.xxx
模组启动,命令-nographics -batchmode -serverbuild
表示服务端模式启动,-frame128
表示最高帧数限制为128
,输出相关日志到文件ServerLog.txt
。
注意:命令行参数-frame_128
关键影响服务器性能和同步效率,省缺默认为-frame_60
,数值越高服务器越流畅(占用CPU更高)。
📘 专用服务器模组配置
由于 沙盘引擎 的设计开放性,不同模组的 创建专用服务器 方式可能有所不同(完全取决于模组作者的设计)
通常情况下,初始模组不能直接创建专用服务器,因为专用服务器并没有游戏画面,引擎不知道下一步该如何操作(例如:点击创建服务器)。
由此得知,创建专用服务器的功能必须得到模组作者的适配。
如果模组希望支持创建专用服务器,模组作者应该编写关于IsServerMode()
的相关代码,以此允许玩家创建专用服务器。
总结:如果模组作者没有为模组实现这方面的代码,玩家将无法创建此模组的专用服务器。
📒 加入服务器
通常情况下,玩家可以通过多人游戏浏览器或[~]
打开控制台指令来加入想游玩的服务器。
如果游戏版本相同、未被服务器封禁等前提正常,玩家会在与服务器同步完毕后进入服务器。
如果连接的服务器是其他模组,沙盘引擎 将自动下载最新的服务器模组,并最终由玩家决定方式:
- 仅游玩(默认):只进行正常游玩,不进行额外保存
- 下载并游玩:进行正常游玩,并将模组放置到下载目录,允许下次直接从模组菜单启动
- 此方法更适合长期游玩的模组,或者希望对模组内容进行探索和研究
📒 常见问题
📘 分享服务器?
通常情况下,当服务器创建\加载完毕后,就可以将服务器的房间代码\IP地址分享给其他人。
如果出现本地玩家进入正常,但其他人无法连接的情况,通常是因为防火墙、端口映射等常规问题,与其他联机游戏一样,这里不做过多说明。
📘 Linux服务器?
《沙盘引擎》是一款Windows系统游戏,因此默认不适用于Linux系统。
根据社区的反馈,可考虑使用Linux Wine
尝试运行Windows版服务器。
📘 多开服务器?
有些时候,可能希望开设多个服务器(或不同模组的服务器),沙盘引擎支持多个应用程序同时运行,因此可以直接开启。
如果出现网络端口\服务被占用(或模组占用相同端口),这需要为bat
命令添加-port_8193
(8193
是示例端口号)来强制指定其他网络端口。
📘 专用服务器:配置规则\存档?
模组目录下的文件Mod\StartUp.json
是一个自定义配置文件,通常模组作者会使用此文件设计专用服务器配置。
不同模组的专用服务器配置可能完全不同,这需要根据模组开发者的提示来修改和使用,已达到期望的效果。
有些情况下,玩家也可以指定命令行参数-startup_fileName
来选择重定向StartUp.json
文件。
📘 专用服务器:DX支持问题?
默认情况下,专用服务器不使用GPU相关资源,但可能有概率需要调用DX相关库。
如果运行系统(通常是Windows Server)不存在DX库并弹出相关提示,考虑安装基础DX运行库。
📒 服务器分类
📘 收藏列表(本地保存的服务器)
在您本地存储的,由玩家收藏的服务器列表。
📘 互联网服务器(公开的网络服务器)
在此项下检索到的服务器由 沙盘引擎 服务器列表提供。
沙盘引擎一直秉承开放、合作、共赢的态度。
因此即使是普通玩家架设的联机服务器,也会被正常检索并公开到《沙盘引擎》服务器列表。
基于以上情况,沙盘引擎 无法对所有私人架设的专用服务器予以完全监督,玩家需要自行斟酌不同服务器的玩法和保障。
📘 认证服务器(受信任的网络服务器)
在此项下检索到的服务器为受《沙盘引擎》项目组认证的服务器。
为了避免长期稳定、可靠、新颖的服务器与一些短期开放或不稳定的服务器产生混淆及争议。
我们对服务器是否应该加入认证服务器做出如下基础标准(满足任一条件):
服务器开发组至少包含一名成员来自于 沙盘引擎 项目组
服务器稳定运行时间超过120天,且不存在任何令人不适的恶意内容及玩法
服务器具有相当新颖的玩法或创意,并受相当一部分玩家的喜爱及认可
服务器来源于某个社区、公共团体、主播,由某社区创立的公益服务器且稳定运行
如开设的服务器满足以上标准,欢迎访问 沙盘引擎 社区联系我们!
📘 SteamP2P(Steam联机服务器)
目前尚未开放,在 沙盘引擎 于Steam平台上正式开放后可检索来自Steam的联机服务器。
📘 LAN(局域网服务器)
在您本地网络下的其他设备开设的服务器,可在此处检索。
📘 通过地址连接
进入此项,您可输入对应的 沙盘引擎 服务器代码\IP地址来连接服务器。
📒 数据服务器(DataServer)
沙盘引擎 游戏服务器附带额外的数据服务器(UDP),此功能仅在每次Socket模式服务器建立时开启(Steam服务器无效),主要用于除游戏逻辑外的其他网络交互。
📘 服务器查询(Query)
当数据服务器开启后,将允许接收来自外部的UDP数据报,并自动验证是否为Gamespy
协议信息。
如果开发者希望实现外部查询服务器信息等功能,可以使用Gamespy
的简单查询机制,也就是向服务器发送特定格式的UDP数据报\querystats\
,即可接收到当前服务器的最新信息(Json
格式)。
📘 接受外部UDP数据报
当数据服务器开启后,除引擎内置的Gamespy
相关指令被内部拦截外,其他数据内容将提交至World.OnServerQueryReceive()
事件中,同时服务端也可使用World.SendSocketData()
方法进行UDP交互。
📘 注意事项
- 服务器内置指令(如
\querystats\
)将会被引擎直接处理,不会下发到事件。 - 服务器事件只会接受以
\xxx\
(反斜杠)包围格式的数据信息。