设计网站怎么收费,门户网站建设的重要性,常德网,关于公示网站建设的计划书文章目录 前言IsOwner权威 / AuthoritativeIsHostIsServerIsClientIsLocalPlayer 前言
在联机游戏中#xff0c;常见的模式有Peer-to-Peer, Client与Server#xff0c;也就是CS架构。NetCode基于CS架构开发#xff0c;下面讲解一些概念知识。在NetCode中#xff0c;会涉及… 文章目录 前言IsOwner权威 / AuthoritativeIsHostIsServerIsClientIsLocalPlayer 前言
在联机游戏中常见的模式有Peer-to-Peer, Client与Server也就是CS架构。NetCode基于CS架构开发下面讲解一些概念知识。在NetCode中会涉及一些如
IsHostIsServerIsClientIsLocalPlayerIsOwner权威 / Authoritative
这些概念知识在实际项目开发中经常使用到所以非常有必要搞清楚这些概念知识。 IsOwner
如果运行该脚本的构建是该GameObject的所有者则该字段将为true。 例如通过在NetworkManager上的Player Prefab字段中分配玩家玩家将被生成。因此当玩家加入时NetworkManager将自动生成一个PlayerPrefab并将该对象的所有权赋予该玩家。
始终记住代码在何处运行。Player脚本将在每个构建中为每个玩家执行。因此如果连接了4个玩家那么在主机构建中将有4个Player脚本只有其中一个将IsOwner设置为true。在第二个玩家构建中仍将有4个Player脚本并且再次只有一个不同的一个将IsOwner设置为true。
通过这种方式我们确保只有本地玩家相对于该构建而言将运行Movement和Interact代码。 权威 / Authoritative
权威 / Authoritative区分为服务端权威与客户端权威还有两者混合使用。两者区分 服务端权威Server Authoritative 服务器通常具有全局权威性尤其是对于游戏世界中的关键元素如玩家的位置、物体的状态等。服务器决定游戏状态的权威性客户端只接收并显示这些状态。这有助于防止作弊和保持游戏的一致性。 客户端权威Client Authoritative 在某些情况下客户端可能具有权威性尤其是在需要快速响应的本地操作方面例如玩家的输入。但是客户端权威性很容易受到作弊和不一致性的影响因此通常需要服务器进行验证和纠正。 混合权威Hybrid Authoritative 有时可以采用混合权威性的方法即在客户端和服务器之间共享权威性。比如客户端可能对一些本地的、非关键的玩家操作具有权威性而服务器则负责处理重要的游戏状态。
哪个更好服务器权威还是客户端权威
没有全局的“最佳”选择一切都取决于你正在制作的游戏。这个问题实际上涉及到信任你是否信任你的客户端或者即使客户端不可信游戏仍然能正常运行如果是的话比如对于合作游戏那么客户端权威可能会很好地工作。
如果你有一个更具竞争性的游戏比如FPS而且有玩家之间相互竞争的情况这些玩家可能是陌生人那么你可能不应该信任客户端因此应该选择服务器权威。 IsHost IsHost 通常用于指示当前客户端是否充当游戏的主机。主机是游戏会话的创建者通常负责托管游戏的核心逻辑和数据。 在某些游戏中主机可能与Server合并但在其他游戏中主机可能只是负责处理与本地游戏实例相关的事务而Server负责全局同步和多人游戏的处理。 通常如果一个客户端是主机则该客户端可以执行一些特殊的任务如决策游戏的规则、同步状态等。
可以简单理解为Host既是Server又是Client
IsServer IsServer 通常用于指示当前客户端是否充当游戏的服务器。服务器负责处理游戏的全局状态和同步以确保多个客户端之间的一致性。 在一些架构中主机和服务器可能是相同的实体但在其他情况下它们可能是分离的。服务器通常是一个中央实体负责维护整个游戏的状态并将状态同步到所有连接的客户端。
理解这两个概念的关键在于了解游戏架构是如何设计的。在一些情况下主机和服务器可以合并为一个实体而在其他情况下它们可能是不同的实体。通常主机用于指代游戏会话的创建者和本地实例的控制者而服务器用于指代全局状态的维护者和多人游戏的协调者。 IsClient IsClient 是一个用于判断当前代码是否在客户端运行的属性。 在代码中开发者可以使用 IsClient 属性来区分处理客户端特有的逻辑。例如处理本地输入、控制本地玩家对象等。 当需要在客户端和服务器端执行不同的代码时可以帮助确保适当的逻辑仅在客户端执行。
IsLocalPlayer IsLocalPlayer 通常用于标识一个游戏对象是否属于本地玩家。 在许多多人游戏系统中每个客户端都可能有一个本地玩家这是指在该客户端上进行控制的玩家。 当一个对象的 IsLocalPlayer 标志为真时表示该对象在本地玩家的客户端上。