UE4/5多人游戏详解(一、基础理论与局域网内部的连接)

news2024/11/15 7:46:24

目录

多人游戏理论简单讲解

点对点:

于是,服务端和客户端的概念出现了:

局域网连接:

从第三人称c++项目开始

创建项目:

以一个客户端作为监听服务器

3个客户端,在场景后方使用服务器:

局域网连接:

蓝图

C++


多人游戏理论简单讲解

点对点:

什么是点对点?

比如两个玩家,其移动和攻击,将数据互相传输,如图:

但一旦多了一个玩家,比如玩家C的出现,这样就会导致大量的数据进行传输:

网络上面的数据大量传输只是一个原因。

更大的原因是3个玩家之间的游戏实例也是时时刻刻发生变化的,那么问题来了,ABC应该要遵循谁的游戏实例呢?

也就是说他们3个谁也无法说服谁,没有人知道谁是真正的权威【作为主要的游戏实例】

于是,服务端和客户端的概念出现了:

通过获取的【假设是移动】,复制给其他客户端,从而刷新。

除此之外,是服务器的机器是专门用来处理数据,而没有进行图片渲染,之后将处理的数据给各个客户端的。

局域网连接:

连接本地的同一个局域网的几个玩家:

 

从第三人称c++项目开始

创建项目:

进入之后:

以一个客户端作为监听服务器

将玩家数量改为2,然后以监听服务器运行

所以如果将玩家数量改为3,就会看见3代同框:

3个客户端,在场景后方使用服务器:

局域网连接:

蓝图

创建一个地图,作为等待房间:

 

就基础的basic地图,这个地图将是玩家通过连接之后前往的地图

然后我们对第三人称的蓝图进行更改:

第一个的意思是你打开了waitmap,然后作为listen监听服务端【就是说你即是服务端又是客户端】

第二个的意思是你通过控制台进入第一个的ip地址的关卡。【Open+空格+你的ip地址

假如你拥有两个电脑【真的有将游戏打包给另一台电脑即可】,那么,作为服务器的电脑按下1,进入等待房间,客户端的电脑这个时候按下2即可进入1所在的等待房间。

这里两者就可以在一起行动了。

Ip地址的查看

查看自己的ip地址,打开cmd,然后输入ipconfig

然后在这里看你的ip地址:

 

C++

首先我们制作函数,如果不知道怎么做的看这个:

ue4/5蓝图与c++混用基础入门的基础操作(适合有蓝图基础和c++基础的新手,创建自己的蓝图)_ue4蓝图和c++混合开发_多方通行8的博客-CSDN博客

然后在角色的头文件里面:

添加这几个函数:

代码:

//打开等待关卡
	UFUNCTION(BlueprintCallable)
	void openWaitMap();
	
	//进入等待关卡
	UFUNCTION(BlueprintCallable)
	void intoWaitMap(const FString& Address);


	UFUNCTION(BlueprintCallable)
	void CallClientToMap(const FString& Address);

之后在cpp中实现:

代码:

void AMorePersonTestCharacter::openWaitMap()
{
	//创建并获取世界
	UWorld* world = GetWorld();
	//判断世界是否有效
	if (world)
	{
		//打开等待关卡,变成监听
		world->ServerTravel("/Game/Map/WaitMap?listen");
	}
}

void AMorePersonTestCharacter::intoWaitMap(const FString& Address)
{
	//需要这个#include "Kismet/GameplayStatics.h"头文件
	//这里的*Address是c风格字符串
	UGameplayStatics::OpenLevel(this, *Address);
}

void AMorePersonTestCharacter::CallClientToMap(const FString& Address)
{
	//创建控制器并找到赋予
	APlayerController* playerControlRef= GetGameInstance()->GetFirstLocalPlayerController();
	//判断是否有效
	if (playerControlRef)
	{
		playerControlRef->ClientTravel(Address,ETravelType::TRAVEL_Absolute);
	}
}

 之后来到蓝图中调用就是:

这里的地址只需要输入ip即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode:同构字符串(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读 题目: 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构…

数字营销(三)如何确定合适的流量渠道?

一、为什么要确定付费客户特征? 首先营销策略是什么?营销策略,即战略,就是为实现主要流量侧的长期目标,所采取的具体打法和步骤。 比如一个网站的成功离不开获取网站流量和用户信任的建立。除了谷歌 SEO 获取流量&am…

【JavaEE初阶】多线程(一)

摄影分享! 文章目录 认识线程(Thread)概念执行多线程编程创建线程的写法1.继承Thread,重写run2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runable5.使用Lambda表达式 Thread用法…

【ARMv8/v9 MMU 页表配置 01 】

文章目录 1.1 MMU1.1.1 虚拟地址位宽配置1.1.2 页面大小(grandule size)配置1.1.3 AArch64 页表项描述符格式1.1.4 内存属性配置 1.1 MMU 1.1.1 虚拟地址位宽配置 64 位虚拟地址中,并不是所有位都用上,除了高 16 位用于区分内核空间和用户空间的虚拟地…

SpringCloud:ElasticSearch之数据聚合

聚合(aggregations) 可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何? 实现这些统计功能的比数据…

数组题目总结 -- 双指针

目录① 快慢指针:一. 删除有序数组中的重复项1. 思路和代码I. 博主的做法:II. 东哥的做法:2. 总结二. 删除排序链表中的重复元素(扩展)1. 思路和代码I. 博主的做法:II. 东哥的做法:2. 总结三. 移…

硬件语言Verilog HDL牛客刷题day08 综合部分

1. Johnson Counter 1.题目: 请用Verilog实现4位约翰逊计数器(扭环形计数器),计数器的循环状态如下。 电路的接口如下图所示 2.解题思路 2.1 一个简单的状态机的配置。 2.2 注意 起始状态 是 0000 就行 3.解题代码 timescale …

动态内存管理——C语言【进阶】(下)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:进阶C语言,本专栏主要讲解数据存储,进阶指针,动态内存管理&a…

前端面试题 - 计算机网络与浏览器相关

系列文章目录 vue常见面试题总结 htmlcss 面试题总结附答案 初级前端面试题总结(html, css, js, ajax,http) js基础面试题整理(包含ES5,ES6) 文章目录 系列文章目录一、网络协议相关1. 从浏览器地址栏输入url到显示页面的步骤…

蓝桥杯欲伸手CTF?有多远爬多远

注意:网络安全类比赛 或者说 CTF 参赛不会需要任何费用 只有国赛/省赛有可能会收取一定运维费用 其他比赛都不会收费 望周知。 先来看个特离谱的事情 早上起床看到几位师傅的朋友圈一脸懵,再仔细一看,好嘛。。。。。。 先看看探姬的回复 接下…

人工智能大模型多场景应用原理解析

前言 在上篇文章《人工智能大模型之ChatGPT原理解析》中分享了一些大模型之ChatGPT的核心原理后,收到大量读者的反馈,诸如:在了解了核心原理后想进一步了解未来的发展趋势(比如生成式人工智能和元宇宙能擦出什么样的火花?),大模型…

伪命题之MYSQL分库分表

看到使用分库分表来解决性能问题的时候心里总是不能太理解。 如果同事发生大量请求的时候,损害性能的是硬盘的随机读。那么分库分表也没有对性能的瓶颈进行“分治”啊。 应该的做法是使用一块新的硬盘来创建分库。但是基本的文章都没有提到这点。而且基本上也不会有…

价值导向型研发管理数字化建设方案——易趋亮相CCTI中国研发管理峰会

4月15日-16日,由光环国际举办的2023 CCTI中国研发管理峰会在北京中关村国家自主创新示范区会议中心成功举办。 (现场签到处) 此次峰会邀请了20余位来自腾讯、华为、网易、阿里云等知名企业的研发管理领域专家,带来最新前沿知识和内…

【网络安全知识体系】外网渗透测试 | 14个小实验

写在前面:视频地址 成功上岸360!0基础网络安全 入行 到 入yu、漏洞挖掘-外网渗透测试流程目录 一、导读: 二、汇总: 三、知识导图 四、面试常见问题 五、渗透测试流程 1、简述: 2、寻找测试目标 3、信息收集 …

webgl-简单动画

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

程序员必用的6个代码对比神器附下载地址

一、WinMerge WinMerge是一款基于Windows系统下的文件比较和合并工具&#xff0c;使用它可以非常方便地比较多个文档内容&#xff0c;适合程序员或经常需要撰写文稿的朋友使用。WinMerge会将两个文件内容做对比&#xff0c;并在相异之处以高亮度的方式显示&#xff0c;让使用者…

认识网络随机丢包

考虑一根漏水的管子&#xff0c;希望出水口接到和不漏的管子等量的水&#xff0c;要么靠时间&#xff0c;反复将漏掉的水重新注入&#xff0c;直到漏掉的水可忽略&#xff1a; ​ 要么靠空间&#xff0c;在漏的地方将管子加粗&#xff0c;一次性注入更多的水&#xff1a; 不…

什么是HTTP? HTTP和HTTPS的区别?

目录 1、什么是HTTP? 2、HTTP的特点 ① 支持客户/服务器模式 ② 简单快速 ③ 灵活 ④ 无连接 ⑤ 无状态 3、HTTPS 4、HTTP和HTTPS的区别 ① 安全性不同 ② 默认端口不同 ③ 响应速度和资源消耗不同 ④ 网站申请流程不同 ⑤ 对搜索排名的提升不同 1、什么是…

基于OpenCV的硬币面值识别

本项目通过Python与Opencv结合数字图像处理技术对&#xff11;元、&#xff15;角、&#xff11;角三种硬币进行识别。首先通过Canny算子对图像进行边缘检测&#xff0c;然后进一步调用定义的函数去除边缘检测后图像中的孤立点&#xff0c;对处理后的图像进行Hough变换检测圆曲…

涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov5/Yolov7,内存更小、效率更高,秒杀Adam(W)

1.Lion优化器介绍 论文:https://arxiv.org/abs/2302.06675 代码:automl/lion at master google/automl GitHub 1.1 简单、内存高效、运行速度更快 1)与 AdamW 和各种自适应优化器需要同时保存一阶和二阶矩相比,Lion 只需要动量,将额外的内存占用减半; 2)由于 Lion…