UN——Unity网络开发相关

前置知识:C#,线程相关知识,二进制相关(变量的本质 + 数据持久化二进制),Json

Unity网络开发

在没有学习网络相关知识之前,我们只能制作单机游戏,玩家之间不能交互,数据只能在本机上存储读取
在学习网络开发相关的知识后,我们可以通过网络制作让玩家之间进行交互的内容(信息同步,信息交换),也可通过网络将动态数据存储到服务器上

注:本笔记对应的课程主要针对的Unity客户端的前端部分的开发,而不是服务器后端,也没有涉及同步模式,但仍然是网络相关课程的基础

笔记代号UN——Unity Network的缩写 (不是联合国!)

本系列学习内容

  • 网络开发必备理论和通信前的必备知识

    • 网络基本概念

    • IP、端口、Mac地址

    • 客户端和服务端

    • 数据通信模型

    • 网络协议

      • OSI 模型
      • TCP/IP 协议
      • TCP和UDP
    • 通信前的必备知识

      • 网络游戏通信方案概述

      • IP地址和端口类

      • 域名解析

      • 序列化和反序列化2进制数据

        • 字节编码
        • 序列化
        • 反序列化
  • 网络通信

    • 套接字Socket(长连接游戏常用)

      • Socket的重要API

      • TCP通信概述

        • 同步

          • 服务端和客户端的同步通信
          • 区分消息类型
          • 分包、黏包
          • 客户端主动断开连接
          • 实现心跳消息
        • 异步

          • 异步通信常用方法
          • 服务端和客户端异步通信
      • UDP通信概述

        • 服务端和客户端同步通信
        • 异步通信常用方法
    • 文件传输FTP(文件传输)

      • FTP工作原理
      • 搭建FTP服务器
      • FTP关键类
      • 上传文件
      • 下载文件
      • 其它操作
    • 超文本传输HTTP(短连接游戏常用)

      • HTTP工作原理

      • 搭建HTTP服务器

      • C#的相关类

        • HTTP关键类
        • 下载数据
        • 上传数据
      • Unity的相关类

        • WWW类
        • WWWFrom类
        • UnityWebRequest类 —— 获取数据、上传数据
        • UnityWebRequest类高级操作 —— 获取数据、上传数据
  • 消息处理

    • 自定义协议生成工具

      • 如何制作协议(消息)生成工具
      • 协议(消息)配置
      • 协议(消息)生成
    • 第三方协议生成工具Protobuf

      • Protobuf

        • 配置规则
        • 协议生成
        • 协议使用
      • Protobuf-Net

    • 其它

      • 大小端模式
      • 消息加密解密
  • 实践项目

    • 消息池和消息处理类
    • 实现断线重连

必须达到的水平

  1. 掌握网络通信中的一些必备理论知识(OSI模型、TCP/IP协议等)
  2. 能够对自定义类对象进行序列化和反序列化
  3. 能够熟练使用Socket,进行TCP、UDP的同步异步通信
  4. 能够处理网络通信中的分包黏包和心跳消息
  5. 能够使用FTP和HTTP协议进行文件的上传和下载
  6. 熟练掌握Unity的WWW​类和UnityWebRequest​类
  7. 熟练使用Protobuf,了解自定义协议生成工具的制作原理
  8. 了解大小端模式,消息加密原理

学习这些内容的意义

在网络游戏开发中,前端程序更多的是配合后端程序来完成网络通信
我们相对后端程序来说,网络开发的压力较小,我们只需要保证消息收发的准确性和及时性通信的安全性问题
比如消息加密,更多的是配合后端来实施加密方案
服务器的承载量问题,比如一个服能容纳多少人,更多的也是后端程序的工作,我们只需要配合他们完成需求即可
因此掌握了这门课程的内容,基本能够应对大部分网络游戏开发中的前端需求

关于同步模式

在网络游戏开发中有常用的几种同步模式,比如:
状态同步模式 和 帧同步模式
这两种模式在该课程当中并没有进行讲解