Jaringan dan kepadatan hub

Pahami cache paket, batching, serta konsekuensi pembaruan player dekat dan jauh.

Di halaman ini

Mengapa hub berbeda

Player yang saling terlihat membutuhkan fan-out paket ke banyak penerima. Menambah pemain pada ruang yang sama dapat menambah hubungan visibilitas jauh lebih cepat daripada jumlah pemain saja. Survival tersebar memiliki pola chunk dan simulasi yang berbeda; satu preset tidak membuktikan kapasitas kedua beban.

Transport, flush, dan chunk batch

Native transport mencoba epoll di Linux atau kqueue di macOS jika tersedia dan diizinkan Paper; TCP memakai NIO ketika tidak didukung. Windows tidak memperoleh epoll hanya karena flagnya true. ip-tos dan TCP Fast Open adalah hint/fitur platform, bukan jaminan latensi.

Chunk batching mengelompokkan byte yang sudah serialized pada event loop. Setiap paket tetap memiliki envelope dan frame zlib sendiri; tidak ada gabungan seluruh chunk menjadi satu stream atau pool kompresi Nusa baru. Batas paket/byte dan timer membatasi cohort. Timer default 1 ms adalah target penjadwalan yang dapat meleset saat event loop sibuk.

Jika chunk terasa tertunda atau plugin mengubah pipeline packet, bandingkan batching OFF pada staging dan restart. Gunakan opsi jaringan untuk batas yang tepat.

Shared encoding dan pooling

Cache encode hanya berlaku pada paket native numerik immutable yang eligible, misalnya gerak, head rotation, animasi, dan velocity. Chat bertanda tangan/lokal, metadata, inventory, subclass, serta codec plugin memakai jalur biasa. Handler asing dapat menonaktifkan reuse.

Framing, kompresi, dan enkripsi tetap per koneksi. Pooling buffer adalah flag terpisah; Paper juga dapat menggunakan pooling. Jangan menyimpulkan penghematan CPU dari status flag saja.

Tier posisi, locator, dan tab

Secara default, perubahan posisi/head player dekat dalam 8 blok dapat dikirim setiap tick. Player terlihat yang jauh memakai interval 4 tick. Pergantian tier mendapat koreksi posisi absolut. Simulasi player tidak diturunkan, tetapi gerak jauh dapat terlihat kurang halus.

Pasangan yang baru saling memberi damage dapat melewati throttle jauh selama jendela prioritas combat, default 80 tick. Locator movement digabung sampai tick networking; waypoint-far-interval: 1 mempertahankan cadence native jauh. Update API waypoint langsung tetap segera.

Saat koneksi macet, state gerak/locator yang dapat diganti ditahan agar versi terakhir tetap dikirim. Ini dapat menurunkan kelancaran bahkan untuk player dekat. Bukan batas global semua antrean jaringan.

Tab batching menggabungkan update numerik berurutan yang cocok, default sampai jendela 200 ms. Join, chat initialization, removal, display name, dan trafik lain menjadi barrier. Plugin tab/packet harus diuji. Jangan menaikkan interval untuk combat tanpa melihat pengalaman client.

Memuat indeks…