-
Notifications
You must be signed in to change notification settings - Fork 0
Multiplayer Overview
Halaman ini berisi dokumentasi lengkap tentang sistem multiplayer pada Rapid Texter GUI, termasuk arsitektur jaringan, komponen sistem, dan alur kerja.
Sistem multiplayer Rapid Texter menggunakan arsitektur Peer-to-Peer (P2P) Full Mesh. Dalam arsitektur ini, setiap klien (pemain) terhubung langsung ke semua klien lainnya, membentuk jaringan mesh penuh.
Player A
/ \
/ \
Player B ---- Player C
\ /
\ /
Player D
| Aspek | Keterangan |
|---|---|
| Latensi Rendah | Data dikirim langsung antar peer tanpa melalui server pusat |
| Tidak Ada Single Point of Failure | Jika satu peer disconnect, koneksi lain tetap berjalan |
| Skalabilitas Lokal | Cocok untuk multiplayer LAN dengan jumlah pemain terbatas |
| Komponen | Port | Protokol | Fungsi |
|---|---|---|---|
| UDP Discovery | 52766 | UDP | Penemuan room di jaringan LAN |
| TCP Mesh | 52765 | TCP | Koneksi data antar peer |
| Authority | - | - | Floating Authority dengan aturan UUID terendah |
UDP Discovery digunakan untuk:
- Host: Broadcast informasi room setiap 1 detik
- Guest: Menerima broadcast dan menampilkan daftar room yang tersedia
TCP Mesh digunakan untuk:
- Koneksi data antar peer
- Handshake awal (HELLO packet)
- Sinkronisasi game (progress, finish, results)
Authority dalam sistem ini bersifat "floating" (berpindah):
- Awalnya host adalah authority
- Jika host disconnect, authority berpindah ke peer dengan UUID terendah
- Authority bertanggung jawab untuk:
- Memulai game
- Mengirim countdown
- Menghitung dan broadcast hasil akhir
| Paket | Deskripsi | Arah Komunikasi |
|---|---|---|
HELLO |
Handshake awal dengan info pemain | Bi-directional |
PEER_LIST |
Daftar peer untuk pembentukan mesh | Host β Guest |
READY_CHECK |
Permintaan konfirmasi ready | Host β All |
READY_RESPONSE |
Respons konfirmasi ready | Guest β Host |
COUNTDOWN |
Sinyal countdown sebelum race | Host β All |
GAME_START |
Sinyal mulai race | Host β All |
GAME_TEXT |
Distribusi teks game | Host β All |
PROGRESS_UPDATE |
Update progress mengetik real-time | All β All |
FINISH |
Notifikasi pemain selesai | All β All |
PLAYER_LEFT |
Notifikasi pemain keluar | All β All |
RACE_RESULTS |
Hasil akhir dengan ranking | Host β All |
PLAY_AGAIN_INVITE |
Undangan bermain lagi | Host β All |
PLAY_AGAIN_RESPONSE |
Respons undangan | Guest β Host |
KICK |
Mengeluarkan pemain | Host β Target |
| Konstanta | Nilai | Keterangan |
|---|---|---|
DISCOVERY_PORT |
52766 | Port UDP untuk discovery |
TCP_PORT |
52765 | Port TCP untuk koneksi mesh |
ANNOUNCE_INTERVAL_MS |
1000 | Interval broadcast (1 detik) |
PROGRESS_UPDATE_MS |
50 | Interval update progress (50ms) |
ROOM_TIMEOUT_MS |
5000 | Timeout room stale (5 detik) |
SCAN_TIMEOUT_MS |
30000 | Timeout scanning (30 detik) |
MAX_PLAYERS |
8 | Maksimum pemain per room |
Untuk memahami sistem multiplayer secara menyeluruh, ikuti alur dokumentasi berikut:
1οΈβ£ Create-Room-Flow
Pelajari bagaimana host membuat room baru, termasuk:
- Inisialisasi TCP Server
- Setup UDP Broadcasting
- Penentuan status authority
2οΈβ£ Join-Room-Flow
Pelajari bagaimana guest bergabung ke room, termasuk:
- Scanning UDP untuk menemukan room
- Koneksi TCP ke host
- Handshake dan pembentukan koneksi
3οΈβ£ Full-Mesh-Flow
Pelajari pembentukan jaringan Full Mesh, termasuk:
- Proses handshake antar peer
- Distribusi peer list
- Koneksi ke peer lain dalam mesh
4οΈβ£ Complete-Multiplayer-Flow
Lihat alur lengkap dari awal sampai akhir, termasuk:
- Entry point menu multiplayer
- Game flow dan sinkronisasi
- Race results dan play again
Tip
Dokumentasi Lebih Lengkap
Untuk dokumentasi lebih lengkap tentang Rapid Texter termasuk mode single player, cara bermain, dan fitur lainnya, silakan kunjungi: