TShock中文插件库TShock中文插件库
插件文档
TShock教程
TShock Wiki镜像
  • 简体中文
  • en-US
GitHub
插件文档
TShock教程
TShock Wiki镜像
  • 简体中文
  • en-US
GitHub
  • Caiの插件教程
  • Part 0.配置开发环境​
  • Part 1.编写你的第一个插件​
  • Part 2.初步了解TShock插件模板​
  • Part 3.添加新命令​
  • Part 4.挂钩钩~
  • Part 5.玩家对象​
  • Part 6.0 数据包基础
  • Part 6.1 读取数据包 (超难理解)
  • Part 6.1发送数据包​
  • Part 6.5.2 客户端与服务端的连接 (不要求学会,仅做参考)
  • Part 7.插件配置文件 (临时加更)

Part 6.0 数据包基础

本章你将学到:

  • 什么是数据包
  • 数据包的结构

同步

  • 同步指客户端、服务器通过数据包来将游戏状态发送给彼此,以达到两端游戏数据相同的过程。 举个例子:假如A玩家在游戏中生成了一个弹幕,那么A玩家就会向服务器发送一个数据包,告诉服务器他在游戏里生成了一个新的弹幕,服务器会将这个弹幕储存起来,然后发送数据包给其他玩家,告知A玩家生成了一个新的弹幕。
    这个过程就是同步。
  • 在上面的例子中,A玩家首先发送数据包和服务器同步,服务器再发送数据包和其他玩家同步,这样以来服务器、所有的客户端的对应的弹幕均相同,保证游戏里每一个玩家都能在相同的位置看见这个弹幕。

数据包

数据包是一种数据结构,就好比服主们喜欢用的JSON数据结构一样。数据包精简,体积小,适合传输;JSON体积更大,但更适合人阅读。 举个例子:TileGetSection(客户端请求获取区块) [8] 这个数据包用JSON表示如下

{
    "Type": 8 //byte
    "TileX": 114, //int
    "TileY": 514, //int
}

他的数据包形式对应[9,0,8,114,0,0,0,2,2,0,0](byte[]),这是每个数字对应的含义

偏移量(Offset)大小(Size)字段值(十进制)值(十六进制)说明
02Packet Length9 ([9,0])0x0009数据包总长度 = 9 字节
21Packet Type80x08数据包类型(8号数据包表示客户端请求获取区块)
34TileX114, 0, 0, 00x72 0x00 0x00 0x00int32大小为4字节,所以字段有4个
74TileY2, 2, 0, 00x02 0x02 0x00 0x00同上

数据包的二进制格式不像 JSON 那样通过键(如 Type、TileX)标识字段,而是通过协议约定的字节偏移量(Offset)和字段长度(Size)来定位数据。
例如,要解析 TileX:

  1. 根据协议,TileX 的偏移量是 3(从 0 开始计数)。
  2. 读取接下来的 4 个字节(因为 TileX 是 int32)。
  3. 按约定的字节序Little Endian(小端序)解析为整数值。//你只要知道是Little Endian(小端序)就好了

注

在网络传输中,字节存储顺序有Little Endian(小端序)和Big Endian(大端序)之分,泰拉瑞亚的网络协议使用的是Little Endian(小端序)

上次更新: 2026/3/14 14:30
上一篇
Part 5.玩家对象​
下一篇
Part 6.1 读取数据包 (超难理解)