Grup online dan chat suara di game PlayDrop
Ajak teman bermain online bersama: deklarasikan ukuran grup, buka jendela grup PlayDrop, gabung ke room lewat sdk.multiplayer.join, dan atur suara ruang.
Grup PlayDrop adalah sekelompok teman yang berpindah dari satu game ke game lain bersama-sama. Saat sebuah grup memulai game Anda, PlayDrop memesan kursi untuk anggotanya di salah satu room server Anda, sehingga teman-teman tiba di pertandingan yang sama alih-alih terpisah. Chat suara berjalan di PlayDrop, bukan di game Anda.
Yang Anda butuhkan
- Server game realtime: grup bermain di room Colyseus Anda.
- Pemain yang sudah masuk: room menolak tamu.
- Deklarasi berikut di catalogue.json:
{
"types": ["solo", "online", "party"],
"party": { "online": [2, 3, 4] },
"roomVoice": true,
"server": { "entry": "server/index.mjs", "rooms": ["game"] }
}party.online mencantumkan ukuran kelompok persis, maksimal 4, yang boleh tiba bersama; [2, 4] mengecualikan 3. Ini adalah ukuran kelompok yang tiba, bukan kapasitas room: dua grup berisi empat orang bisa berbagi room dengan delapan kursi. party memerlukan tipe party dan party.online memerlukan online. roomVoice: true mengaktifkan suara ruang dan memerlukan online.
Gabung ke room yang tepat
if (!sdk.me.isLoggedIn) {
await sdk.me.promptLogin();
}
const room = await sdk.multiplayer.join("game", { mode: "versus" });join memakai kursi grup yang dipesan untuk pemain saat PlayDrop meluncurkan grup, dan jika tidak, bergabung secara mandiri. Jika gabung grup gagal, panggilan ini ditolak; panggilan ini tidak pernah diam-diam menempatkan pemain di room lain. Tamu mendapatkan authentication_required dan PlayDrop menampilkan halaman masuk; gabung lagi dari sdk.me.onAuthChange. Pertahankan room yang sama di antara ronde.
Setelah dimuat ulang, sdk.multiplayer.reconnect(roomName, token) memulihkan kursi yang dipesan dengan token sambung ulang yang Anda simpan secara privat untuk game, versi, dan pengguna ini. Buang token itu dan panggil join saat menerima multiplayer_reconnect_expired, multiplayer_reconnect_unavailable, atau party_reconnect_mismatch.
Jendela grup
Dari sebuah tombol, sdk.social.openParty({ mode: "online" }) membuka jendela grup PlayDrop, tempat pemain mengundang teman serta menyalakan atau mematikan suara. Grup yang sudah ada dipakai ulang. openParty() membuka menu grup dan openParty({ section: "voice" }) membuka pengaturan suara; jangan menggabungkan mode dan section. Promise selesai saat jendela ditutup, termasuk saat dibatalkan.
Baca grup dengan sdk.social.getParty() atau sdk.social.onPartyChange(callback), yang lebih dulu mengirimkan status saat ini: { partyId, leaderUserId, revision, members, launch }. launch.status bernilai joining atau ready saat grup sedang memainkan game ini. Keanggotaan saja tidak berarti para pemain berada di room yang sama; gunakan join.
Keanggotaan grup adalah milik PlayDrop: game tidak bisa menambahkan atau mengeluarkan anggota grup maupun mengontrol mikrofon, dan pemain mengundang teman ke grup dari jendela ini. Game tetap bisa mengirim kartu undangan atau tantangannya sendiri kepada teman dengan sdk.social.sendMessage; lihat berbagi, teman, dan undangan.
Suara ruang
Dengan roomVoice: true, semua orang di sebuah room bisa berbicara, tanpa kode server. Untuk mengubah siapa yang mendengar siapa, ikat room di server Anda dan tetapkan kebijakan:
import { playdrop } from "@playdrop/server";
const platform = playdrop.multiplayer.forRoom(this);
platform.voice.setPolicy("team");
platform.voice.setTeam(client.auth, "red");Kebijakannya adalah all, team, proximity (dengan { range }), dan off. setAudience(player, audience) mengganti pengaturan untuk satu pemain dan updatePositions([{ player, position: { x, y, z } }]) memberikan data untuk kedekatan; berikan null untuk menghapus tim atau penggantian. PlayDrop yang menegakkan siapa yang boleh mendengar siapa. Di browser, sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) hanya menyesuaikan volume dan posisi stereo.
Suara bergantung pada persetujuan, pembisuan, dan pemblokiran pemain, serta pada build host dan peluncuran fitur.
Menjeda
Kapsul grup tidak menjeda gameplay. Jeda PlayDrop menghentikan klien Anda, tetapi room tetap terhubung dan server Anda tetap berjalan. Jeda satu pemain tidak boleh menghentikan pertandingan bagi pemain lain; terapkan jeda pertandingan apa pun di server.
Uji
Unggah versi privat, lalu buka tautan uji di dua jendela dengan player=1 dan player=2, seperti yang dijelaskan di server game realtime. Grup lokal dengan pengontrol adalah mode terpisah: lihat grup lokal dan pengontrol.