-
Notifications
You must be signed in to change notification settings - Fork 0
Join Room Flow
Alea Farrel edited this page Jan 15, 2026
·
1 revision
Halaman ini menjelaskan alur lengkap ketika Guest bergabung ke room multiplayer yang sudah ada di Rapid Texter GUI.
Ketika user memilih "Join Room" di menu multiplayer, sistem akan melalui dua fase utama:
- Fase Discovery: Mencari room yang tersedia di jaringan LAN
- Fase Connect: Melakukan koneksi dan handshake dengan host

flowchart LR
subgraph START_JOIN [" "]
A([Start: User pilih Join Room])
end
subgraph DISCOVERY [" "]
B[/Input: Player Name/]
C[Mulai scanning UDP pada port 52766]
D[Dengarkan broadcast dari host]
E{Menerima paket announce?}
F[Parse informasi room: hostName, IP, port, playerCount]
G[/Output: Tampilkan daftar room/]
H[/Input: User pilih room/]
end
subgraph CONNECT [" "]
I[Koneksi TCP ke host pada port 52765]
J{Koneksi berhasil dalam 5 detik?}
K[Set status: isConnecting = false]
L[Set status: isConnected = true]
M[Kirim paket HELLO ke host]
N[Terima paket HELLO dari host]
O[Terima PEER_LIST dari host]
P[Koneksi ke peer lain dalam mesh]
end
subgraph END_JOIN [" "]
Q([End: Berhasil bergabung ke lobby])
R[/Output: Error - Koneksi timeout/]
S([End: Gagal bergabung])
end
A --> B
B --> C
C --> D
D --> E
E -->|Ya| F
E -->|Timeout 30s| R
R --> S
F --> G
G --> H
H --> I
I --> J
J -->|Ya| K
J -->|Tidak| R
K --> L
L --> M
M --> N
N --> O
O --> P
P --> Q
User memasukkan nama yang akan ditampilkan ke pemain lain
Sistem mulai mendengarkan UDP broadcast di port 52766
| Parameter | Nilai |
|---|---|
| Port | 52766 |
| Protokol | UDP |
| Timeout | 30 detik |
Sistem menunggu paket announce dari host
Paket yang diterima berisi:
-
hostName: Nama host/pembuat room -
IP: Alamat IP host -
port: Port TCP untuk koneksi (52765) -
playerCount: Jumlah pemain saat ini dalam room
Room yang ditemukan ditampilkan dalam daftar
| Informasi | Contoh |
|---|---|
| Nama Room | "Player1's Room" |
| IP Address | 192.168.1.100 |
| Jumlah Pemain | 3/8 |
User memilih room yang ingin diikuti
Sistem melakukan koneksi TCP ke host
| Parameter | Nilai |
|---|---|
| IP | Dari paket announce |
| Port | 52765 |
| Timeout | 5 detik |
Sistem memeriksa apakah koneksi berhasil dalam 5 detik
- Berhasil: Lanjut ke handshake
- Gagal: Tampilkan error timeout
Update flag status koneksi
| Flag | Nilai |
|---|---|
isConnecting |
false |
isConnected |
true |
Kirim paket HELLO ke host dengan informasi pemain
Isi paket HELLO:
-
name: Nama pemain -
port: Port TCP yang digunakan -
isRoomCreator:false(karena ini guest) -
hostUuid: UUID host yang dituju
Menerima paket HELLO balik dari host
- Konfirmasi handshake berhasil
- Mendapatkan informasi host
Menerima daftar peer yang sudah ada dalam room
PEER_LIST berisi:
- UUID setiap peer yang sudah terhubung
- Nama masing-masing peer
- IP dan port untuk koneksi langsung
Membuat koneksi langsung ke setiap peer dalam mesh
- Proses ini membangun jaringan Full Mesh
- Lihat Full-Mesh-Flow untuk detail lebih lanjut
| Penyebab | Solusi |
|---|---|
| Tidak ada room aktif | Pastikan ada host yang sudah membuat room |
| Berbeda network/subnet | Pastikan berada di jaringan LAN yang sama |
| Firewall memblokir UDP | Izinkan port 52766 di firewall |
| Penyebab | Solusi |
|---|---|
| Host tidak merespons | Host mungkin sudah disconnect atau crash |
| Firewall memblokir TCP | Izinkan port 52765 di firewall |
| Room sudah penuh | Maksimum 8 pemain per room |
| Penyebab | Solusi |
|---|---|
| UUID duplikat | Restart aplikasi untuk generate UUID baru |
| Versi tidak kompatibel | Pastikan semua pemain menggunakan versi yang sama |