UE5——网络——几种网络模式

cpp 复制代码
/**
 * The network mode the game is currently running.
 * @see https://docs.unrealengine.com/latest/INT/Gameplay/Networking/Overview/
 */
enum ENetMode
{
	/** Standalone: a game without networking, with one or more local players. Still considered a server because it has all server functionality. */
	NM_Standalone,

	/** Dedicated server: server with no local players. */
	NM_DedicatedServer,

	/** Listen server: a server that also has a local player who is hosting the game, available to other players on the network. */
	NM_ListenServer,

	/**
	 * Network client: client connected to a remote server.
	 * Note that every mode less than this value is a kind of server, so checking NetMode < NM_Client is always some variety of server.
	 */
	NM_Client,

	NM_MAX,
};

NM_Standalone:单机游戏:一个没有网络的游戏,有一个或多个本地玩家。仍然被视为服务器,因为它具有所有服务器功能。

NM_DedicatedServer:专用服务器:没有本地玩家的服务器。只作为服务器部分,接受其他客户端的连接。

NM_ListenServer:侦听服务器:也有一个本地玩家主持游戏的服务器,可供网络上的其他玩家使用。自己作为客户端,同时也是服务器,可以接受其他客户端的连接。

NM_Client:网络客户端:连接到远程服务器的客户端。请注意,每个小于此值的模式都是一种服务器,因此检查NetMode<NM_Client总是某种服务器。已经联网的客户端,连接了其他DedicatedServer 或者 ListenServer

cpp 复制代码
/** The network role of an actor on a local/remote network context */
UENUM()
enum ENetRole
{
	/** No role at all. */
	ROLE_None,
	/** Locally simulated proxy of this actor. */
	ROLE_SimulatedProxy,
	/** Locally autonomous proxy of this actor. */
	ROLE_AutonomousProxy,
	/** Authoritative control over the actor. */
	ROLE_Authority,
	ROLE_MAX,
};

ROLE_SimulatedProxy:此参与者的本地模拟代理,模拟的NetRole,指的是已经连接DedicateServer或者ListenServer的客户端上面的,游戏玩家或者怪物。这些角色在本客户端,只有被模拟的权限。

ROLE_AutonomousProxy:此参与者的本地自治代理。有自治权的角色,指的是已经连接DedicateServer或者ListenServer的客户端上面的主角。自己是有操作和预表现(客户端先行)权限的,但是需要经过服务器的校验和纠错。

ROLE_Authority:对行动者的权威控制,有自治权的角色,指的是已经连接DedicateServer或者ListenServer的客户端上面的主角。自己是有操作和预表现(客户端先行)权限的,但是需要经过服务器的校验和纠错。

GetLocalRole()返回本地计算机对此参与者的控制程度

1.Play Standalone

2.Play As Listen Server


3.Play As Client


GetRemoteRole()返回远程计算机对此参与者的控制程度

1.Play Standalone


2.Play As Listen Server


3.Play As Client

代码部分

cpp 复制代码
oid UMainWidget::SetDisplayText(FString TextToDisplay)
{
	if (DisplayText)
	{
		DisplayText->SetText(FText::FromString(TextToDisplay));
	}
}

void UMainWidget::ShowPlayerNetRole(APawn* InPawn)
{
	//ENetRole RemoteRole = InPawn->GetLocalRole();
	ENetRole RemoteRole = InPawn->GetRemoteRole();
	
	FString Role;
	switch (RemoteRole)
	{
	case ENetRole::ROLE_Authority:
		Role = FString("Authority");
		break;
	case ENetRole::ROLE_AutonomousProxy:
		Role = FString("Autonomous Proxy");
		break;
	case ENetRole::ROLE_SimulatedProxy:
		Role = FString("Simulated Proxy");
		break;
	case ENetRole::ROLE_None:
		Role = FString("None");
		break;
	}
	FString RemoteRoleString = FString::Printf(TEXT("Role: %s"), *Role);
	SetDisplayText(RemoteRoleString);
}
相关推荐
树℡独9 小时前
ns-3仿真之应用层(五)
服务器·网络·tcp/ip·ns3
zhang1338308907510 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
zhangzhangkeji10 小时前
UE5 多线程(1):运行多线程的环境搭建。初识 FRunnable 可执行对象,线程类 FRunnableThreadWin
ue5
酣大智11 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
weixin_4624462312 小时前
Git 本地忽略 application-dev.yml 的最佳实践:不提交 .gitignore,不影响团队协作!
git
24zhgjx-lxq12 小时前
华为ensp:MSTP
网络·安全·华为·hcip·ensp
ling___xi12 小时前
《计算机网络》计网3小时期末速成课各版本教程都可用谢稀仁湖科大版都可用_哔哩哔哩_bilibili(笔记)
网络·笔记·计算机网络
REDcker12 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络
Up九五小庞13 小时前
用arpspoof实现100%批量切断192.168.110.10 - 192.168.110.100 断网(双向欺骗)--九五小庞
网络·开源
躺柒13 小时前
读数字时代的网络风险管理:策略、计划与执行04风险指引体系
大数据·网络·信息安全·数字化·网络管理·网络风险管理