zoukankan      html  css  js  c++  java
  • Unity Networking API文档翻译(一):Networking概述

    写在翻译前的话:

         我使用过Photon,研究过Ulink这些Unity提供的多人在线游戏服务器组件,这些商业组件虽然很好很强大。但是对于一个独立开发者来说,4000多软妹币还是点多。总想找一个免费的。对于Unity5.2版本后提供的Unity Networking组件(简称UNet),国外已经有很多开发者在使用了,虽然稳定性还有待考验,但是unity官方是会不停更新的,主要的是免费的啊!官网没有中文翻译,所以自己准备把这块翻译下,有不好的地方敬请指出,共同完善这个中文文档。翻译的过程就当是学习的过程,其他开发者如果翻译过了,就当互相学习吧。

    Networking概述

    使用网络功能的用户按需求不同可分为下面2种情况:

    • 用户使用Unity开发一个多人在线的游戏,那么应该从学习NetworkManager或者High Level API开始。
    • 用户需要构建底层网络框架或者编写高级多人在线游戏,那么应该从NetworkTransport API开始学起。

    High level scripting API

    Unity网络模块有一个“高级”脚本API(我们通常叫HLAPI)。使用HLAPI可以不关心具体网络底层实施细节。它能提供多人在线游戏所需要的大多数常见操作命令。HLAPI提供以下功能:

    • 使用“Network Manager”组件来管理游戏的网络状态
    • 能制作“局域网联机”类游戏,这种游戏客户端可以作为一个游戏主机,其他客户端加入这个主机
    • 提供通用的序列化方法对数据进行序列化
    • 接收和发送网络消息
    • 从客户端向服务器发送网络命令
    • 服务器可以使用远程过程调用(RPCS)客户端
    • 服务器可以发送网络事件到客户端

    Unity引擎和编辑器中的网络模块整合

    Unity的网络模块已经集成到游戏引擎和Unity编辑器中了,开发者可以在可视状态下使用组件开发多人在线游戏。它提供了:

    • 一个NetworkIdentity组件提供给需要网络通信的实体
    • 一个NetworkBehaviour类提供给网络通信脚本
    • 游戏内物体坐标和方位的自动同步
    • 脚本变量的自动同步
    • 在Unity场景中提供可以拖放的网络模块
    • 各种网络组件

    互联网服务

    Unity提供了“互联网服务”用于支持开发者的整个产品开发和发布过程,包括:

    • 游戏配对服务
    • 游戏创建匹配和广告匹配
    • 提供配对列表和加入对战功能
    • 主机接替服务
    • 不需要专门的服务器而能在网络上联机
    • 给匹配的玩家们发送群发消息

    实时的网络传输层

    Unity提供了一个实时的网络传输层,包括:

    • 优化后的UDP协议层
    • 多通道设计用来避免数据堵塞问题
    • 每一个通道提供不同等级的多样化服务质量(QoS)
    • 灵活的网络拓扑结构,能提供点对点(P2P)以及客户端-服务器(CS)架构

    项目案例

    开发者可以仔细研究Unity官网提供的多人在线游戏项目,里面有多种游戏案例:

  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/wangergo/p/5021310.html
Copyright © 2011-2022 走看看