Files
RustNotMC/rsx-protocol
sasheg dev 7cd074e13c Словарь протокола: блоки, формат чанка и игровые пакеты
Протокол до сих пор умел только рукопожатие: поздороваться, доказать
пароль, получить токен и войти. Дальше играть было нечем.

Добавлено:

- Packet, интерфейс, который умеет написать себя сам. Раньше отправитель
  разбирал тип пакета в ветке instanceof, и с каждым новым видом пакета эта
  ветка росла. Теперь отправитель знает только, что у пакета есть write().
- Блоки и ChunkFormat переехали в протокол. Идентификаторы блоков и
  геометрия чанка — это словарь провода, а не внутреннее дело сервера:
  клиент получает чанк байт на блок и обязан знать, что означает каждый
  байт. Один источник правды вместо двух, которые могут разойтись.
- Игровые пакеты: JoinWorld, WorldJoin, ChunkData, BlockChange,
  PlayerMove, EntityMove, Ping/Pong, EntitySpawn, EntityRemove.
- Чанк уходит по проводу сжатым. Чанк это 65536 байт, и почти все они это
  воздух, поэтому дефлейт тут не украшение, а разница между «сервер
  принял» и «клиент вошёл».
- Имена всем пакетам в таблице names(), чтобы забытый пакет был виден
  сразу, а не всплывал через месяц.

Проверено: 22 теста протокола, включая круг чанка через сжатие, отказ
битому сжатому блоку и отказ обрезанному.
2026-10-19 18:58:07 +03:00
..