meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
manual:gameserver [2025/07/17 16:05] – ↷ 页面reference:dedicatedserver被移动并更名为manual:gameserver bibiboxsmanual:gameserver [2025/07/19 03:17] (当前版本) bibiboxs
行 1: 行 1:
 <markdown> <markdown>
-建立联机服务器+游戏服务器
  
-沙盘引擎》支持玩家**以多种方式建立服务器**+在 沙盘引擎 游戏过程中,**服务器**是一个非常关键的概念,引擎采用**全程服务器同步模式**。
  
-通常情况下,建立服务器的方分为**主机服务器****专用服务器**两种模式:+> 全程服务器同步模:即使只有主机在线(1人),底层仍然是服务器联机的模式。 
 +
 +> 简单来说,沙盘引擎 理论上不存在真正的**“单机游戏”**
  
-- **主机服务器:**以当前游戏作为主机建立服务器,玩家离开服务器则关闭服务器 +更多情况下,玩家所游玩的是不同的**本地服务器、单人服务器、多人服务器**等
-- **专用服务器**通常建立于Windows Server服务器系统上,通过CMD无头模式创建,适合24小时不断线服务器+
  
 +每次服务器启动时,模组**自动加载**被**开发者**提前设计好的**地图、脚本**,因此展示出不同的功能和内容。
  
  
-## 主机服务器 
  
-由于《沙盘引擎》的开放性,因此**并非每个模组的【立主机服务器】方式都完全相同**。+## 创建服务器
  
-通常情况下,模组开发者应该为玩家提供游戏主菜单的【立游戏】、【建立服务器】相关按钮,玩家可根据具体模组来建立主机服务器。+沙盘引擎 支持玩家以**多种方式**创建服务器。
  
-**注意:任何基于【主机服务器】建立的房间==均以玩家本身作为“房主”==,玩家断线或关闭游戏将自动关闭服务器**+通常情况下,创建服务器的方式分为**主机服务器**、**专用服务器**两种模式:
  
 +- **主机服务器:**以当前游戏作为主机创建服务器
 +  - 特点:可以正常游玩游戏,但是主机断开(关闭游戏)则自动关闭服务器
 +- **专用服务器:**通过`CMD+DOS`无头模式创建
 +  - 特点:无法正常作为游戏游玩,仅作为服务器运行,无需显卡硬件,更适合24小时不断线服务器
  
 +无论哪种方式创建的服务器,玩家理论上都可以**多开游戏**,实现自己进入自己的服务器。
  
 +==**注意:**由于 沙盘引擎 的设计开放性,不同模组的 **创建服务器** 方式可能有所不同(完全取决于**模组作者**的设计)。==
  
-## 专用服务器 
  
-如果希望建立一个托管在Window Server等云服务器上,那么更适合使用【专用服务器(Bat+Cmd)】的方式来建立。 
  
-**【专用服务器】**与游戏内常规**【主机服务器】**建立方式不同,专用服务器更适用于没有显卡的**Windows 服务器系统**,也就是会以**CMD控制台**的模式建立一个服务器,**没有游戏画面,且占用要求更低**。+### 主机服务器
  
-沙盘引擎》官方包体内置`DedicatedServer\`目录此目录并没有特殊用途,但这是专用服务器快捷方式。+通常情况下,模组作者会根据自己游戏的玩法设计,可能为玩家提供**游戏主菜单**的**创建游戏**相关按钮或功能,玩家可根据具体模组方式来尝试创建。 
 + 
 +在特殊情况下,模组作者可能**不希望**提供玩家创建服务器的功能(例如:仅允许游玩官方服务器),这可能导致模组在打包时缺乏创建主机的代码,因此部分模组可能无法创建服务器,仅允许作为玩家游玩。 
 + 
 + 
 + 
 + 
 +### 专用服务器 
 + 
 +如果希望创建一个**长期运行、更稳定**的联机服务器,多数游戏均采用**专用服务器**的方式来创建服务器,最终托管至**Windows Server (VPS)**服务器(7x24)。 
 + 
 +**专用服务器**与游戏内常规**主机服务器**的创建方式有所不同,此方法更适合没有显卡的**Windows 服务器系统**,通过**DOS控制台**的方式直接创建服务器,**没有游戏画面,且占用要求更低**。 
 + 
 +> 沙盘引擎 程序目录内置`DedicatedServer`文件夹内置了基础的**创建专用服务器**快捷工具及方式。
  
  
行 34: 行 52:
 ### DedicatedServer.bat ### DedicatedServer.bat
  
-使用任何文本编辑器打开`DedicatedServer.bat`,将会看到标准的bat命令:+在**专用服务器**目录(`DedicatedServer`)中,使用文本编辑器打开`DedicatedServer.bat`,最终得到标准的`bat`命令:
  
 ```javascript ```javascript
行 46: 行 64:
 **代码解释:**启动`SandtableEngine.exe`文件,以`@xxx.xxx.xxx`模组启动,命令`-nographics -batchmode -serverbuild`表示服务端模式启动,`-frame128`表示最高帧数限制为`128`,输出相关日志到文件`ServerLog.txt`。 **代码解释:**启动`SandtableEngine.exe`文件,以`@xxx.xxx.xxx`模组启动,命令`-nographics -batchmode -serverbuild`表示服务端模式启动,`-frame128`表示最高帧数限制为`128`,输出相关日志到文件`ServerLog.txt`。
  
-**注意:命令行参数`-frame_128`关键影响服务器性能和同步效率,如果不填写默认为`-frame_60`,数值越高服务器越流畅(占用CPU更高)。**+**注意:**命令行参数`-frame_128`关键影响**服务器性能和同步效率**省缺默认为`-frame_60`,数值越高服务器越流畅(占用CPU更高)。
  
  
  
-### 专用服务器配置+### 专用服务器模组配置
  
-由于沙盘引擎的开放性,因此**并非每个模组的服务器配置读取】都完全相同**+由于 沙盘引擎 的设计开放性,不同模组的 **创建专用服务器** 方式可能有所不同(完全取决于**模组作者**的设计)
  
-默认情况下,初始模组不能直接支持**专用服务器**的建立,因为专用服务器并没有UI画面,控制台并不知道该如何进行下一步(例如:点击建服务器)。+通常情况下,**初始模组**不能直接创建专用服务器,因为专用服务器并没有游戏画面,引擎不知道下一步该如何操作(例如:点击建服务器)。
  
-[note2]+> 由此得知,**创建专用服务器**的功能必须得到**模组作者**的适配。 
 +
 +> 如果模组希望支持**创建专用服务器**,**模组作者**应该编写关于`IsServerMode()`的相关代码,以此允许玩家创建专用服务器。
  
-因此,如果模组支持建立专用服务器,开发应该其编写关于`IsServerMode()`及`StartUp.json`相关编写([Startup.json配置文件](developer/config/startup_json))以允许玩家通过Cmd方式专用服务器。+==总结:如果**模组**没有模组实现这方面代码,玩家将无法创**此模组**的专用服务器。==
  
-[/note] 
  
-*如果模组开发者没有为模组实现配置代码,玩家将无法建立专用服务器。* 
  
 +## 加入服务器
  
 +通常情况下,玩家可以通过**多人游戏浏览器**或`[~]`打开**控制台指令**来加入想游玩的服务器。
  
-## 加入服务器+如果**游戏版本相同、未被服务器封禁**等前提正常,玩家会在与**服务器同步**完毕后进入服务器
  
-通常情况下,当服务器加载完毕后,你就可以通过【~】控制台指令或服务器浏览器来加入你的服务器了(默认地址:`127.0.0.1:8192`)。 +> 如果接的服务器是其他模组沙盘引擎 将**自动下载**最新的服务器模组并最终由玩家决定方式:
- +
-服务器地址`127.0.0.1:8192`是用户本地的IP地址,几乎所有电脑用户的本地地址都是`127.0.0.1`,如果想和朋友联机,直发送这个地址是不行。 +
-+
-> 如果是VPS云服务器需要正确开放**端口安全组**,然后将公网IP地址分享给其他人。+
 > >
-如果是家用电脑网络,需要确认网络支持公网IP通常需要向运营商申请,然后**确端口映射及防火墙配置**最后将公网IP地址分享给其他人。 +- 仅游玩默认:只进行常游玩不进行额外保存 
- +> - 下载并游正常游玩并将模组放置到**下载目录**,允许下次直接从**模组菜单**启动 
-*==如果出现本地正常,但其他人无法连接的情况,通常是因为**防火墙、端口映射**等常规问题与其他联机戏一样这里不做过多说明。==*+>   - 此方法更适合长期玩的模组或者希望对模组内容进行探索和研究
  
  
  
 ## 常见问题 ## 常见问题
 +
 +### 分享服务器?
 +
 +通常情况下,当服务器**创建\加载**完毕后,就可以将服务器的**房间代码\IP地址**分享给其他人。
 +
 +如果出现**本地玩家**进入正常,但其他人**无法连接**的情况,通常是因为**防火墙、端口映射**等常规问题,与其他联机游戏一样,这里不做过多说明。
 +
 +
  
 ### Linux服务器? ### Linux服务器?
行 93: 行 117:
 ### 多开服务器? ### 多开服务器?
  
-有些情况可能希望多服务器(或多开不同模组的服务器),沙盘引擎默认支持多个**应用程序**同时运行,因此可以直接开启。+有些时候,可能希望开设服务器(或不同模组的服务器),沙盘引擎支持多个**应用程序**同时运行,因此可以直接开启。
  
-有些时候,可能目标网络端口被占用(或模组使用同一个端口),这需要为bat命令添加`-port_8193`(`8193`是示例端口号)来强制指定网络端口。+如果出现网络**端口\服务**被占用(或模组同端口),这需要为`bat`命令添加`-port_8193`(`8193`是示例端口号)来强制指定其他网络端口。
  
  
  
-###专用服务器:配置建立的规则\存档?+###专用服务器:配置规则\存档?
  
-文件`Mod\StartUp.json`是一个模组自定义配置文件,通常模组开发者会根据此文件设计专用服务器配置。+模组目录下的文件`Mod\StartUp.json`是一个**自定义配置文件**,通常模组者会使用此文件设计**专用服务器配置**
  
-不同模组的专用服务器配置可能完全不同,这需要根据模组开发者的提示来修改,已达到期望的指定效果。+不同模组的专用服务器配置可能完全不同,这需要根据模组开发者的提示来修改和使用,已达到期望的效果。
  
-有些情况下,玩家也可以指定命令行参数`-startup_fileName`来指定选择重定向`StartUp.json`文件。+有些情况下,玩家也可以指定**命令行参数**`-startup_fileName`来选择重定向`StartUp.json`文件。
  
  
行 114: 行 138:
  
 如果运行系统(通常是Windows Server)不存在DX库并弹出相关提示,考虑安装[基础DX运行库](http://support.microsoft.com/kb/179113)。 如果运行系统(通常是Windows Server)不存在DX库并弹出相关提示,考虑安装[基础DX运行库](http://support.microsoft.com/kb/179113)。
 +
 +
 +
 +## 服务器分类
 +
 +### 收藏列表(本地保存的服务器)
 +
 +在您本地存储的,由玩家收藏的服务器列表。
 +
 +
 +
 +### 互联网服务器(公开的网络服务器)
 +
 +在此项下检索到的服务器由 沙盘引擎 服务器列表提供。
 +
 +沙盘引擎一直秉承**开放、合作、共赢**的态度。
 +
 +因此即使是普通玩家架设的联机服务器,也会被正常检索并公开到《沙盘引擎》服务器列表。
 +
 +基于以上情况,沙盘引擎 无法对所有私人架设的专用服务器予以完全监督,玩家需要自行斟酌不同服务器的玩法和保障。
 +
 +
 +
 +### 认证服务器(受信任的网络服务器)
 +
 +在此项下检索到的服务器为**受《沙盘引擎》项目组认证的服务器**。
 +
 +为了避免长期**稳定、可靠、新颖**的服务器与一些**短期开放或不稳定**的服务器产生混淆及争议。
 +
 +我们对服务器是否应该加入**认证服务器**做出如下**基础标准(满足任一条件)**:
 +
 +- 服务器开发组至少包含一名成员来自于 沙盘引擎 项目组
 +
 +- 服务器稳定运行时间超过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\`(反斜杠)包围格式的数据信息。
 +
 +
 +
 +
 +
  
  
 </markdown> </markdown>