Unity游戏开发客户端面经——网络(初级)

Unity面试题总结 Unity面试题 阅读详情

前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习。由于文本太多,按类型分开。这一篇是 网络 常问问题总结,有帮助的可以收藏。


 1. TCP与UDP的区别

区别

UDP

TCP

是否连接

不连接

面向连接

是否可靠

不可靠

可靠传输(传输过程中会丢失,但会重发)使用流量控制和拥塞控制

连接对象个数

支持一对一,一对多,多对一,多对多交互通信。

仅支持一对一通信。

传输方式

面向报文

面向字节流

数据边界

保存数据边界

不保存数据边界

速度

速度快

速度慢

发送消耗

轻量级(因为 UDP 传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反应在包头大小。)

重量级

首部开销

首部开销小,仅8个字节

首部开销大,最小20字节,最大60字节。

有序性

不提供有序性的保证

TCP 保证了消息的有序性,即使到达客户端顺序不同,TCP 也会排序。

应用场景

IP电话,视频会议,直播,以及FPS竞技类的使用UDP帧同步。

要求可靠传输的应用例如文件传输,以及MMO类的TCP状态同步。

2. 帧同步与状态同步

2.1 帧同步

        让每个客户端在相同的时刻发送游戏数据到服务端,服务器广播分发所有客户端的数据,然后客户端根据服务端发来的数据做出相应的逻辑处理,保证每个客户端在同一时刻所有的数据都是一致同步的。客户端做游戏逻辑处理。

核心思想: 相同的输入+相同的时机=相同的表现

同步的实现:

  1. 同步随机种子
  2. 客户端上传当前逻辑帧的操作(帧索引+游戏操作)
  3. 服务器广播客户端操作

        帧同步可以说同步的是操作(输入)-服务器收到每个客户端当前的输入,将数据广播到所有客户端,客户端针对其他客户端的操作,做出逻辑处理,使得所有客户端在每一时刻的数据都是一致的。

优点:

  1. 单次同步数据很小,传输速率快,因为数据的逻辑处理主要是在客户端,服务器只起到分发同步的作用。
  2. 服务端压力小。
  3. 更容易实现录像功能,因为是帧同步,每一个时刻的帧序列都有记录,可以很好的还原游戏过程。
  4. 开发效率高,可以部分当作单机游戏来开发。
  5. 游戏精准度更高,能呈现更好的打击感、音效、特效等反馈、以及动作的反馈、动作的频率也可以更高。
  6. 流量消耗小,因为传输的数据量更少。大部分逻辑处理都在客户端处理好了。

缺点:

        1.反外挂能力弱。因为主要的数据处理是在客户端。

        2.网络要求更高,因为是是实时同步,一旦客户端网络延迟过高,很容易影响用户体验,产生网络抖动。

        3.断线重连难度很大,因为一旦掉线,本地数据丢失了,需要从服务器逐帧来读取游戏进度,直到与当前游戏进度一直。如果直接从当前游戏进度开始进行同步,是很容易出现数据错误的。

2.2 状态同步

        客户端将数据发送到服务端,服务端根据每个客户端发来的数据做出处理,再将处理完的数据广播发送到所有客户端,客户端根据数据进行数据表现。服务端做游戏逻辑处理。

优点:

  1. 反外挂能力强,因为大部分数据处理都是在服务端。
  2. 网络要求不高。
  3. 玩家可以随时加入到一个开始的战局,只需要同步当前战局内的所有玩家当前的状态即可。

缺点:

  1. 传输数据大,传输速度慢。因为客户端会将大量数据传输给服务端,再由服务端进行逻辑处理,再分发给所有客户端。
  2. 服务端压力大
  3. 回放较难还原

2.3 区别

<

Unity游戏开发客户端性能优化基础 Unity游戏开发客户端面经 之 性能优化 篇 阅读详情

相关推荐

Unity游戏开发客户端C#基础

初级Unity客户端开发工程师 面经 之 C#篇

Sea3752的博客 2万+

Unity中进行网络通信:三:unity客户端和Unity服务端互相发消息

一.目的 1.想知道:Unity中进行网络通信:unity客户端和Unity服务端互相发消息 二.参考 1.unity3D中使用Socket进行数据通信(三) https://blog.csdn.net/qq_38112703/article/details/82624502 三.操作:一:完成:在同一个Unity的同一个物体上面添加 服务端、客户端代码 1.版本 unity2018.4.0f1 vs2017 windows10 64位 1.运行结果...

qq_40544338的博客 1万+

Unity大型游戏开发全流程指南

【代码】Unity大型游戏开发全流程指南。

2401_82978699的博客 5155

Unity 网络 之 Networking 实现简单的网络服务器和客户端通讯功能封装(可监听多个客户端)

Unity 网络 之 Networking 实现简单的网络服务器和客户端通讯功能封装(可监听多个客户端) 目录 Unity 网络 之 Networking 实现简单的网络服务器和客户端通讯功能封装(可监听多个客户端) 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、实现步骤 六、关键代码 七、参考工程 一、简单介绍 Unity 中网络通讯知识的整理。 本节介绍,在Unity中用 NetworkServer、NetworkClient 两个封装一...

仙魁XAN 4279

Unity网络客户端Demo:多人游戏开发入门

Unity网络框架提供了几种预定义的网络消息类型,以便开发者在实现网络通信时能够使用标准化的方式。它们分别是:Command:用于从客户端向服务器发送指令。指令的执行通常只在服务器上进行,并且可以返回结果给发起指令的客户端。例如,一个玩家在客户端点击跳跃按钮时,会向服务器发送一个跳跃的指令。// 定义一个Command[Command]// 执行跳跃逻辑ClientRPC:是客户端到服务器的逆向通信,服务器执行后,结果会发送给所有客户端。

weixin_36431145的博客 1262

【AutoSar CP】SoAd模块

比如对于特定的PDU,其PduId在程序编译时就确定了,但是在代码运行中,该PduId可能需要发送到不同的远端ip,这时就需要用SoAd来设置连接远端地址信息。SoAdSocketConnectionGroup(连接参数)SoAdSocketRoute(接收数据)SoAdRoutingGroup(开关)SoAdPduRoute(发送数据)

至道无难,唯嫌拣择。 1672

CYUSB3065配置CMOS

按照OG02B10的时序电路,在通过SCCB配置CMOS之前,需要三个电源上电,Xshutdown高电平和配置时钟电路。找到手册的第6章SCCB(跟IIC很像),可以看到SCCB的地址与SID引脚有关,这个需要到硬件原理图上确认下。这是Cypress的一个支持MIPI和UVC的模块,有例程支持OV5640,现在要替换替换成OG02B10。寄存器参数需要找到厂家的FAE,由他们提供,OG02B10的资料已经上传。(2)参考得宏的电路,时钟由主控提供,目前程序未实现。这里有两个重要参数需要搞定,摄像头的。

qq_40773212的博客 2928

ros1 Noetic下运行cartographer算法进行2d建图

最近的工作重点放在机器狗的二次开发上,项目的需求是要升级机器狗的slam算法和导航避障算法,slam拟采用激光与视觉融合算法,激光slam就使用最为流行和实用的cartoghper算法。在这过程中遇到好多坑,希望看到这篇博客的人能少走弯路吧。我用的仿真机器人是wpr_simiulation。首先复制一份demo_revo_lds.launch文件和revo_lds.lua文件,修改成下面的样子。my_test.lua文件,base_link就是机器人的坐标系。下载与安装的博客有很多,我推荐。

sun5739的博客 1541

Ubuntu20.04下SRS流媒体服务器的安装与开机自启动优化指南

本文详细介绍了在Ubuntu20.04系统下安装SRS流媒体服务器并优化开机自启动的完整指南。从基础环境准备、服务管理方案对比到systemd自启动深度优化,提供了实用的配置技巧和排查方法,帮助用户快速搭建稳定的流媒体服务环境。特别推荐使用systemd方案实现高效的自启动管理。

weixin_29313239的博客 408

Fastwhisper + Pyannote 实现 ASR + 说话者识别

最近在研究ASR相关的业务,也是调研了不少模型,踩了不少坑,ASR这块,目前中文普通话效果最好的应该是阿里的modelscope上的中文模型了,英文的话,还是非whisper莫属了,而且whisper很变态,粤语效果也还不错,因此,如果实际业务中需要涉及到不同的语言,还是更推荐whisper多一点faster-whisper是使用CTranslate2对OpenAI的Whisper模型的重新实现,CTranslate2是一个用于Transformer模型的快速推理引擎。

qq_44193969的博客 1万+

Flutter SDK的删除与重装:一步步教你如何轻松搞定

在Flutter开发过程中,我们可能会遇到一些需要重新安装Flutter SDK的情况,例如升级Flutter版本、解决依赖冲突等。本文将详细介绍如何删除并重新安装Flutter SDK,让你轻松应对各种问题。

理论都是虚的,代码才是王道。 2243

数据处理和分析之数据预处理:数据离散化

在某些情况下,根据业务知识或数据特性,我们可能需要自定义离散化的区间。例如,对于年龄特征,我们可能更关心儿童、青少年、成人和老年人这几个阶段,因此可以自定义这些区间。等宽离散化:将数据范围分成等宽的区间。等频离散化:将数据分成包含相同数量观测值的区间。聚类离散化:使用聚类算法(如K-means)来确定离散化区间。自定义区间离散化:根据领域知识或数据特性手动定义区间。# 自定义区间离散化示例# 假设我们根据业务理解,将年龄分为青年、中年和老年三个阶段。

2401_87715305的博客 925

CMOS图像传感器——工作原理

CMOS图像传感器的曝光与读出

沧海一升的博客 9458

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Unity游戏开发客户端面经——热更新(初级)
下一篇: Unity游戏开发客户端面经——数学(初级)
Game_小志
博客等级 码龄6年 4565粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值