Skip to content

Join Room Flow

Alea Farrel edited this page Jan 15, 2026 · 1 revision

πŸ”— Join Room Flow

Halaman ini menjelaskan alur lengkap ketika Guest bergabung ke room multiplayer yang sudah ada di Rapid Texter GUI.


πŸ“‹ Daftar Isi


🎯 Gambaran Umum

Ketika user memilih "Join Room" di menu multiplayer, sistem akan melalui dua fase utama:

  1. Fase Discovery: Mencari room yang tersedia di jaringan LAN
  2. Fase Connect: Melakukan koneksi dan handshake dengan host

πŸ“Š Diagram Alur

Join Room Flow

Diagram Mermaid

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
Loading

πŸ” Fase Discovery

Step 1: Input Nama Pemain

User memasukkan nama yang akan ditampilkan ke pemain lain

Step 2: Mulai Scanning UDP

Sistem mulai mendengarkan UDP broadcast di port 52766
Parameter Nilai
Port 52766
Protokol UDP
Timeout 30 detik

Step 3: Menerima Paket Announce

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

Step 4: Tampilkan Daftar Room

Room yang ditemukan ditampilkan dalam daftar
Informasi Contoh
Nama Room "Player1's Room"
IP Address 192.168.1.100
Jumlah Pemain 3/8

Step 5: User Memilih Room

User memilih room yang ingin diikuti

πŸ”Œ Fase Connect

Step 6: Koneksi TCP ke Host

Sistem melakukan koneksi TCP ke host
Parameter Nilai
IP Dari paket announce
Port 52765
Timeout 5 detik

Step 7: Validasi Koneksi

Sistem memeriksa apakah koneksi berhasil dalam 5 detik
  • Berhasil: Lanjut ke handshake
  • Gagal: Tampilkan error timeout

Step 8: Update Status

Update flag status koneksi
Flag Nilai
isConnecting false
isConnected true

Step 9: Kirim Paket HELLO

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

Step 10: Terima HELLO dari Host

Menerima paket HELLO balik dari host
  • Konfirmasi handshake berhasil
  • Mendapatkan informasi host

Step 11: Terima PEER_LIST

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

Step 12: Koneksi ke Peer Lain

Membuat koneksi langsung ke setiap peer dalam mesh
  • Proses ini membangun jaringan Full Mesh
  • Lihat Full-Mesh-Flow untuk detail lebih lanjut

⚠️ Kemungkinan Error

Error: Scan Timeout (30 detik)

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

Error: Connection Timeout (5 detik)

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

Error: Handshake Failed

Penyebab Solusi
UUID duplikat Restart aplikasi untuk generate UUID baru
Versi tidak kompatibel Pastikan semua pemain menggunakan versi yang sama

πŸ”— Navigasi

πŸ“š Wiki Navigation

🏠 Beranda


🌐 Multiplayer

Dokumentasi Flowchart

Data Format


πŸ”— Link Eksternal

Clone this wiki locally