可破坏对象只与我们的围城战游戏模式正确同步。在其它模式下,放置路障或围城器械这样的可破坏物体可能会使你的游戏崩溃,或造成其他问题。
通常,所有这些预制件都有一个非动画点版本。除此之外,你总是可以使用这些资产,只需要删除其动画点子对象,并从预制件上移除所有的标记和脚本。
骑马与砍杀 游戏盒子
在“SceneOptions”窗口中,你可以为你的场景设置一个标签(Label)。如果你扫描你的场景以查找问题(顶部图标栏中倒数第二个按钮),这会很有帮助。如果你把这个标签设为“mp”,它会过滤掉所有与单人游戏相关的问题。
一般来说,领军战模式和单人游戏战场地形导航网格工作模式是一样的。你将不得不覆盖一个相对较大的场景,并使用非常精确的导航网格。你无须顾及 ID,你可以像在但游戏中一样消耗导航网格三国网页版游戏回合制,来阻止 AI 使用某些导航网格的面。
一般来说,导航网格在多人游戏中不太重要,因为大多数原版游戏模式不使用 AI 士兵。不过,导航网格还可以用来给马匹定位,让它们找到逃离线(flee lines),并且也可以用来烘焙全局光照。
重生点选择系统检查周围的敌人时依赖于父实体(parent entity)的位置,玩家将在子实体(child entities)中重生。你可以利用这一点来调整重生位置的偏差。
(提示:确保点位不低于你正在使用的地形和地面资产。也要记住,马的重生需要周围更大的空间,所以不要把你的重生点太靠近其他人和其他预制件。)
大多数重生点需要设置右侧标记(tag)。这些预制件带有默认标记,要么是“attacker”,要么是“defender”。显然,你需要为对立的两队复制并调整这些预制件及其子对象上的标记。有时候如果标记还没有出现在你的场景中,就需要你手动将其添加到列表中,否则它不会显示在下拉菜单中!
在回合开始时或回合中途玩家重生的点位。旗帜管理(Flag Domination)模式(领军战、遭遇战、战场)使用了几乎相同的重生系统,场景之间只需要做一点工作就可以相互兼容。从技术上来说,是兼容的。
你还需要(再次)使用脚本定义该区域的兵种类型。为此,添加“DuelZoneLandmark”到你的预制件,并将其设置为你打算在这里生成的任何兵种类型。
对于决斗模式你会需要手动创建地标(landmarks)。有两类地标,3 种定义了部队类型,16 种较小的定义了竞技场和它们所属的类型。
攻城槌和攻城塔仍然需要一条路径前进。简单创建一条路径,记住它的名称,并且在检查器的脚本中将其设置为“PathEntityName”。
你的场景中所需的围城战器械没有最小(或最大)数量的要求,也没有部署点的要求,因为围城器械是由你的场景决定的,而不是沙盒战役游戏。此外,你不需要为攻城塔、攻城槌和攻城梯做大量的导航工作。所以你可以忽略检查器(Inspector)中的所有导航网格输入。
从技术上来讲,它们与单人游戏中的围攻的运作方式相同,但仍有一些明显的差别。首先,它们大多为多人游戏使用了不同的预制件,确保你使用的也是这些!
(提示:围城战时,你要确保城堡里也有这样的逃离线,这样城内的马就可以不经过城门跑出去。导航网格和 AI 不能分清楼梯和坡道,你可能需要调整或删除楼梯上的导航网格,以避免无人骑的马挡住他们。)
这些逃离线(flee lines)是 AI(在我们的游戏模式中只有 AI 马匹)用于逃离战场的,他们会尝试使用导航网格(navmesh)来找到这些。所以这些位置需要放置在 AI 可以通过导航网格触及到的地方。当他们到达这些逃离线,他们会在短时间内消失,你可以放置多个这样的实例。
(提示:你可以通过在可见性(Visibility)窗口中启用“边界(Borders)”来查看形成的边界,有时最好在这一步之前重新加载场景。)
定义场景周围的软边界(soft border)。如果玩家越过,他们将有几十秒时间返回。该边界用于设置场景的边界,确保边界不会穿进你的可游玩区域。你可以通过在地图周围放置边界探测点(border probes)来定义边界(最佳实践是做一个六边形的形状)。探测点总是会与离其最近的 2 个探测点相连。
初始相机位置,这是为正在加入的玩家设置的。它基本上定义了加入服务器时选择阵营的背景,它也是人们看到的你的场景的第一个画面。确保你稍微旋转了它(它默认是向下旋转的)。这玩意儿只用放置一个!
作为游戏模式在你的场景中运行所需要的预制件的游戏对象(Gameobjects),你可以在“预制件(Prefabs)”窗口中找到这些。
(提示:通过包含所有需要的预制件,可以使场景与多种游戏模式兼容。场景不能与使用不同重生(生成)系统的模式兼容,例如团队死斗场景不能与领军战场景兼容,但如果有合适的重生设置的话,领军战场景也可以用于遭遇战。)
本技术介绍将使你能够为特定的游戏模式创建自定义多人场景,它详细说明了你的多人游戏场景需要满足哪些要求才不会崩溃。这不是设计指南或最佳实践文档。
你提供给 /dedicatedcustomserverconfigfile 参数的文件也可以包含你的自定义游戏模式的名称。
在原版游戏模式中,所有客户端添加了行动典型(Mission Representative)类来处理游戏模式特定的数据和逻辑。通过这一典型类,客户端可以根据条件查询多种关于游戏的事物。服务端也可以使用客户端的行动典型来计算多种事物,包括获得的金钱、旗帜信息等等。该类的内容依赖于游戏模式自身,行动典型的基类只有客户端的金钱和受控的 AI。在示例中,它是 BountyMPMissionRepresentative。行动典型被添加到了服务端游戏模式的先前一节提到的行动行为(Mission Behavior)类中。
对于所有原版游戏模式,服务端的游戏模式逻辑类,示例中的 MissionMultiplayerBountyMP,继承自 MissionMultiplayerGameModeBase。该类定义了基本的重生和同步系统。对于所有的原版游戏模式,客户端游戏模式消息处理逻辑类,示例中的 MissionMultiplayerBountyMPClient,继承自 MissionMultiplayerGameModeBaseClient。该类有几种可用的重写,可以确保消息处理程序(message handlers)的注册和注销在正确的时间发生。
该方法也大概展示了一场行动是如何进行的。所有行动行为(mission behaviors)都是一个接一个加载的,它们分别处理游戏的不同方面。根据你的游戏模式,你可能希望在你的模式中使用全部这些行为,又或者是只使用一部分。另外请注意,其中一些行为之间存在依赖关系,这意味着如果一个行为不存在,其他行为可能无法正确工作。在本例中,如果你按照第一部分中提到的步骤创建了一个空项目,那么有两个任务行为是无法实现的。开发者创建这两个行为来添加自己的游戏逻辑,它们是 MissionMultiplayerBountyMP 和 MissionMultiplayerBountyMPClient。前者从服务端管理游戏模式,后者从客户端管理游戏模式,确保所有重要的共享数据都在你的服务器上并正确同步。
通过这段代码,你可以看见 GameNetwork 有一个变量,可以用在你的代码里,用于检查运行的游戏实例是服务端还是客户端。在该方法中,你可以看到它用来分隔客户端行为和服务器行为。这能确保正确的 MissionBehaviors 被加载到正确类型的游戏。其他方法中, GameNetwork.IsClient 和 GameNetwork.IsServer 可用于对不同事件采取不同处理。
new MissionScoreboardComponent(new BountyMPScoreboardData()),
new MultiplayerGameNotificationsComponent(),
new MissionLobbyEquipmentNetworkComponent(),
new MultiplayerMissionAgentVisualSpawnComponent(),
new MissionScoreboardComponent(new BountyMPScoreboardData()),
new MultiplayerGameNotificationsComponent(),
new MissionLobbyEquipmentNetworkComponent(),
new SpawnComponent(new BountyMPSpawnFrameBehavior(), new BountyMPSpawningBehavior()),
new MultiplayerMissionAgentVisualSpawnComponent(),
MissionState.OpenNew("BountyMP", new MissionInitializerRecord(scene),
要让服务器用你的游戏模式开始一场行动(mission),你需要新建一个类继承自 MissionBasedMultiplayerGameMode。在该类中,重写 StartMultiplayerGame 方法如下:
传递给构造函数的字符串是你游戏模式的名字。在该示例中,我们创建了一个名为 BountyMP 的游戏模式。要加载有文本信息的 XML 文件,重写 InitializeGameStarter 方法,调用其 base 方法然后添加此行:
Module.CurrentModule.AddMultiplayerGameMode(new MissionMultiplayerBountyMPMode("BountyMP"))
要在代码中定义你的游戏模式,你需要创建一个类并继承自 MBSubModuleBase 类。在这个类中,重写 OnSubModuleLoad 方法并添加此行:
SubModules 节点定义了这个模组创建和使用的 DLL 文件。确保你的 DLL 文件的名称和继承 MBSubModuleBase 类的名称与该文件中的名称一致。
从这个示例定义文件中,我们可以看到一个模组的基本需求。关于多人游戏模组的 ModuleCategory 节点,其值可以是 Multiplayer 或 Server。如果模组是一个 Multiplayer(多人游戏)模组, 这意味着它在客户端和服务端都会被加载。Server(服务器)模组就只在服务器端被加载,并且可以用于管理和分析需要。
再开始定义你的游戏模式行为(behaviors)前,你需要先填写模组定义的 SubModule.xml 文件。在该文件中,你要给你的模组一个名字、一个 ID、一个版本,并定义它的依赖和 DLL 文件。
一切准备完毕后,你可以开始对你的游戏模式进行编程。请注意,本文档中创建的游戏模式及其完整的源代码和额外的数据文件,都会以 ZIP 压缩包的形式提供给你。
要制作一个多人游戏模式,你首先需要在你游戏安装目录的 Modules 目录下创建你的模组文件夹。在你的模组目录下,你需要创建一个 bin 文件夹来放置 DLL 文件,还要创建一个 SubModule.xml 文件来存放你的模组定义和额外数据。
这取决于玩家数量。默认情况下,我们会给每个玩家发送 60 个数据包,并且每个数据包少于 1.5 kb(千字节)。对于大多数配置,任何专用服务器供应商都应该能够提供足够的网络连接。
默认情况下,独立服务器使用 UDP 端口 7210。你必须在互联网上有一个大家可以访问的(公共)IP 地址,以及上述端口也必须可以访问到。
目前,Steam 是下载服务器文件的唯一渠道。我们计划将服务器文件添加到其他游戏平台,同时也在考虑未来使用 Docker 分发服务器文件这样一个方案。
不,你只需要用 Steam 保持你的服务器文件为最新就行,你可以随意拷贝服务器文件到其它计算机上搭建。但我们强烈推荐你带一个 Steam 以保证文件是最新的。区别于《战团》,目前而言,任何旧版本的服务器文件都不兼容我们的系统。
请注意,这个功能是用于支持这一简单的使用场景。这不是一个模组管理器功能,也无法支持获取给定的模组分布在其他资产(如 ModuleData、Prefabs 等)中的地图。只有 SceneObj 目录下的内容会在服务端和客户端之间传输。
为了让玩家能够打开下载面板,他们需要在加载了 DedicatedCustomServerHelper 模组后启动游戏。现在,他们可以鼠标右击自定义服务器列表项,然后会打开一个上下文菜单,其中会有打开该服务器下载面板的选项。地图下载成功后,无需重新启动游戏,他们应该就能直接加入你的服务器。
地图文件必须置于 DedicatedCustomServerHelper 模组的 SceneObj 目录下,就像一个典型的包含场景的模组一样。如果没有该目录,你可以手动新建一个。
我们还提供了一种允许玩家通过游戏内面板下载服务器的地图文件的方式。作为服务器主机,你必须要满足一些条件才能让这个功能发挥作用:
如果你不希望除本地网络或机器以外的地方能访问网页面板,同时也不需要下面的地图下载功能,那么你只需要拦截外部对 TCP 端口 7210 的访问即可。
该网页面板受服务器所配置的 AdminPassword 选项的密码保护。默认情况下,该选项的值为空,所以一定要设置一个安全的密码。
请注意,尽管该模组对于服务器搭建来说是可选的,但如果你加载了此模组,那么玩家也必须加载此模组。否则,模组不匹配的玩家将无法加入服务器。
我们提供可选模组 DedicatedCustomServerHelper 来辅助搭建服务器,其中有几个子模组可以实现不同的功能。为了使服务端模组可以通过外部网络使用,你需要开放 TCP 端口 7210。
默认情况下三国网页游戏手机测评博主,Windows 的自定义服务器的日志文件可以在你的 ProgramData 目录(%programdata%\Mount and Blade II Bannerlord\logs)下找到。
注意,这个生成的令牌文件是绑定你的《骑砍2》账户的,如果有任何滥用令牌的行为,我们都可以追溯到创建令牌的用户。我们建议你只自己用,并且不要将它分享给其他人。
如果你计划在安装了《骑砍2》的同一台计算机上搭建独立服务器,那么针对令牌的操作到这一步就可以了。但如果你计划在另外一台不同的计算机上搭建服务器,请复制你的令牌文件到目标电脑上的 Documents\Mount & Blade II Bannerlord\Tokens 目录下。还有一种方法是通过程序启动参数来输入令牌,在下面的“启动参数”一节说明。
你的令牌生成了并保存到了 Documents\Mount & Blade II Bannerlord\Tokens 目录下:
在你的 Steam 库中选到“工具”,你会在列表里看到“Mount & Blade II: Dedicated Server”,下载并安装它。
本部分为搭建自定义服务器的教程,从安装到部署整个流程包括在内。同时,文档内还有关于服务器参数的讲解,以及一些注意事项和可能碰到的问题的说明。在文档最后,还有常见问题环节,用来回答开发者们可能会问的一些普遍的问题。
本文主要内容为骑友们所能用到的与多人游戏服务器开设有关的知识,内容分为三部分,分别是搭建一个自定义服务器、创建自定义游戏模式以及多人游戏场景的构造。
《骑马与砍杀:血与剑》是《全面战争》的一个mod,这个mod将带你去卡拉迪亚海后面的艾尔希拉大陆。游戏中有许多新阵营、物品,新场景,还有很多新的想法。游戏还有海战系统,你也可以在大城镇买船。驻军可以是你有的每个士兵。舰队可在海岸登陆,而且可以再次使用。不管怎么说三国网页游戏里面有良将,海战不怎么难,它们是挑战。总的来说这个mod非常不错,但是由于各种因素作者只完成了第二版。
《骑马与砍杀:罗马内战》是一款由国内玩家自制分享的即时战略游戏,是《骑马与砍杀》以罗马内战为题材的mod,作者旨在做出一个国人的罗马mod,争取比外国罗马mod更完善。游戏的内容大致是公元195年到屋大维去世,包括奇迹,剧情,地图,彩蛋,内战系统,内政等等,玩家们多多支持哦。
专题: 三国杀游戏盒子号 纯三国游戏盒子 离线游戏盒子上一篇游窝盒子怎样安装游戏
下一篇小米盒子3增强版游戏测评