Terraria 服务端与客户端连接请求过程记录

前几天给tr服做转发服务发现又忘记加入服务器的处理过程了, 就顺便记录一下

注: 此文档中的所有包名都按照 TS文档 内的为准

Client 2 Server Server State: ? => 1

1 Connect Request

由客户端发送给服务端的连接请求包, 包含了形如 Terraria238 这样的版本号

Server 2 Client   Client State: ? => 1

3 player slot

设置客户端的玩家的所分配数组内的位置

Client 2 Server Stert: Server State: 1 => 2 End: Server State: 2 => 3

4 Player Info

68 Client UUID

16 PlayerHP

42 PlayerMana

50 Update Player Buff

5 Player Slot

6 Request World Data

客户端设置自身的index后会依次发送玩家外观信息, uuid, 最大生命值当前生命值和最大魔法值当前魔法值, 还有玩家身上的buff以及背包里的物品与服务器进行同步. 发送完成后将会向服务器发送获取世界信息的请求

Server 2 Client Client State: 1 => 2

7 World Info

78 Report Invasion Progress

发送世界信息以及当前正在进行的入侵的进度. 如果是TShock服务器的话在这一步时还会发送玩家的云存档数据

Client 2 Server Server State: 3 => 4

8? Request Essential Tiles

将本地世界数据与上一步发来的数据同步

注意在接收到上一个包后 MessageBuffer 并不会主动发送下一步的包, 而是在 Terraria.Netplay.InnerClientLoop 这个接收客户端信息的地方判断连接的State, 在从3变为4的同时将会开始清理世界, 开始后将State更改为5, 作用是等待清理世界(就是加入服务器时显示的那个加载进度). 完成后会将State更改为6, 并发送Request Essential Tiles包请求下一步的连接

Server 2 Client Client State: 2 => 3

10 Tile Section

11 Section Tile Frame

21&90 Update Item Drop

22 Update Item Owner

23 NPC Update

27 Projectile Update

49 Complete Connection and Spawn

57 Update Good Evil

103 Moon Lord Countdown

101 Update Shield Strengths

136 Sync Cavern Monster Type

82 NetModules

所请求的位置周围的图块以及传送门和传送门的图块附近的数据. 之后以此发送服务器内掉落的物品,处于活动状态的npc, 激活状态的弹幕, 此世界内连接的玩家的npc击杀数量信息

上述信息发送完成后向客户端发送Complete Connection and Spawn 包允许客户端进入世界, 这也是进行下一步连接所要求的包

之后将会继续发送世界的侵蚀进度(神圣腐化血腥), 又一次世界信息, 月总击杀数, 更新护盾强度?(看起来像是埃特尼亚的东西? 云玩家不太懂), 什么同步洞穴怪物类型?, 最后是旅途模式解锁的东西

Client 2 Server Server State: 6 => 10

12 spawn player

客户端将玩家生成到世界中, 并向服务器发送生成玩家的请求. 客户端的连接过程结束

Server 2 Client Client State: 3 => 10

139 Set Counts As Host For Gameplay

74 Angler Quest

129 Finished Connecting To Server

生成玩家, 显示连接成功信息, 并向其他在线的玩家发送同样的生成命令, 同步玩家的渔夫任务, 最后向客户端报告连接已完成, 服务端连接过程结束

 

本文标题:Terraria 服务端与客户端连接请求过程记录
文章作者: Megghy
原始链接: https://suki.club/terraria_server_connection_request_process/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇