Tambahkan FlexMatch ke klien game - Amazon GameLift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tambahkan FlexMatch ke klien game

Topik ini menjelaskan cara menambahkan dukungan FlexMatch perjodohan ke layanan game sisi klien Anda. Prosesnya pada dasarnya sama apakah Anda menggunakan FlexMatch dengan hosting GameLift terkelola Amazon atau dengan solusi hosting lain. Untuk mempelajari lebih lanjut FlexMatch dan cara menyiapkan mak comblang khusus untuk game Anda, lihat topik berikut:

Untuk mengaktifkan FlexMatch perjodohan di game Anda, tambahkan fungsionalitas berikut:

  • Bersiaplah untuk meminta pencocokan untuk satu atau beberapa pemain (wajib).

  • Melacak status permintaan pencocokan (wajib).

  • Minta persetujuan pemain untuk pertandingan yang diusulkan (opsional).

  • Setelah sesi game dibuat untuk pertandingan baru, dapatkan informasi koneksi pemain dan bergabunglah dalam game.

Bersiaplah untuk meminta pencocokan untuk pemain

Kami sangat menyarankan agar klien game Anda membuat permintaan pencocokan melalui layanan game sisi klien. Dengan menggunakan sumber tepercaya, Anda dapat lebih mudah melindungi dari upaya peretasan dan data pemain palsu. Jika game Anda memiliki directory service sesi, ini adalah opsi yang baik untuk menangani permintaan pencocokan.

Untuk mempersiapkan layanan klien Anda, lakukan tugas berikut:

  • Tambahkan Amazon GameLift API. Layanan klien Anda menggunakan fungsionalitas di Amazon GameLift API, yang merupakan bagian dari AWS SDK. Lihat Amazon GameLift SDK untuk layanan klien untuk mempelajari lebih lanjut tentang AWS SDK dan mengunduh versi terbaru. Menambahkan SDK ini ke proyek layanan klien game Anda.

  • Siapkan sistem tiket perjodohan. Semua permintaan pencocokan harus diberikan ID tiket unik. Anda memerlukan mekanisme untuk membuat ID unik dan menetapkannya ke permintaan pencocokan baru. ID tiket dapat menggunakan format string apa pun, hingga maksimum 128 karakter.

  • Dapatkan informasi mak comblang. Dapatkan nama konfigurasi pencocokan yang ingin Anda gunakan. Anda juga memerlukan daftar atribut pemain yang diperlukan pembuat kecocokan, yang didefinisikan dalam rangkaian aturan pembuat kecocokan.

  • Dapatkan data pemain. Sediakan cara untuk mendapatkan data yang relevan untuk setiap pemain. Ini termasuk ID pemain, nilai atribut pemain, dan data latensi yang diperbarui untuk setiap wilayah tempat pemain kemungkinan ditempatkan ke dalam game.

  • (opsional) Aktifkan isi ulang pertandingan. Tentukan cara Anda ingin melakukan backfill pada game yang cocok yang ada. Jika pembuat kecocokan Anda memiliki mode backfill yang disetel ke "manual", Anda mungkin ingin menambahkan dukungan backfill ke game Anda. Jika mode backfill disetel ke “otomatis”, Anda mungkin perlu cara untuk mematikannya untuk setiap sesi game. Pelajari selengkapnya tentang mengelola backfill kecocokan di Isi ulang game yang ada dengan FlexMatch.

Permintaan pencocokan untuk pemain

Tambahkan kode ke layanan klien Anda untuk membuat dan mengelola permintaan perjodohan ke mak comblang. FlexMatch Proses meminta FlexMatch perjodohan identik untuk game yang digunakan FlexMatch dengan GameLiftmanaged hosting Amazon dan untuk game yang digunakan FlexMatch sebagai solusi mandiri.

Buat permintaan pencocokan:
  • Panggil GameLift API Amazon StartMatchmaking. Setiap permintaan harus berisi informasi berikut.

    Pembuat kecocokan

    Nama konfigurasi pencocokan yang akan digunakan untuk permintaan. FlexMatchmenempatkan setiap permintaan ke dalam pool untuk mak comblang yang ditentukan, dan permintaan diproses berdasarkan bagaimana mak comblang dikonfigurasi. Ini termasuk menegakkan batas waktu, apakah akan meminta pemain menerima pertandingan, antrean mana yang akan digunakan saat menempatkan sesi game yang dihasilkan, dll. Pelajari selengkapnya tentang pembuat kecocokan dan set aturan di Desain FlexMatch mak comblang.

    ID Tiket

    ID tiket unik yang ditetapkan untuk permintaan. Segala sesuatu yang terkait dengan permintaan, termasuk peristiwa dan pemberitahuan, akan merujuk pada ID tiket.

    Data pemain

    Daftar pemain yang ingin Anda buatkan kecocokan. Jika salah satu pemain dalam permintaan tidak memenuhi persyaratan pertandingan, berdasarkan aturan pertandingan dan minimum latensi, permintaan pencocokan tidak akan menghasilkan pertandingan yang sukses. Anda dapat menyertakan hingga sepuluh pemain dalam permintaan kecocokan. Ketika ada beberapa pemain dalam permintaan, FlexMatch mencoba untuk membuat pertandingan tunggal dan menetapkan semua pemain ke tim yang sama (dipilih secara acak). Jika permintaan berisi terlalu banyak pemain untuk ditampung di salah satu tim pertandingan, permintaan akan gagal dicocokkan. Misalnya, jika Anda telah menyiapkan pembuat kecocokan untuk membuat pertandingan 2v2 (dua tim yang terdiri dari dua pemain), Anda tidak dapat mengirim permintaan pencocokan yang berisi lebih dari dua pemain.

    catatan

    Seorang pemain (diidentifikasi dengan ID pemainnya) hanya dapat disertakan dalam satu permintaan pencocokan aktif dalam satu waktu. Saat Anda membuat permintaan baru untuk seorang pemain, setiap tiket pencocokan aktif dengan ID pemain yang sama akan dibatalkan secara otomatis.

    Untuk setiap pemain yang terdaftar, sertakan data berikut:

    • ID Pemain –Setiap pemain harus memiliki ID pemain unik yang Anda buatkan. Lihat Membuat ID pemain.

    • Atribut pemain – Jika pembuat kecocokan yang digunakan memanggil atribut pemain, permintaan harus menyediakan atribut tersebut untuk setiap pemain. Atribut pemain yang diperlukan ditentukan dalam set aturan pembuat kecocokan, yang juga menentukan tipe data untuk atribut tersebut. Sebuah atribut pemain bersifat opsional hanya ketika aturan set menentukan nilai default untuk atribut. Jika permintaan pertandingan tidak memberikan atribut pemain yang diperlukan untuk semua pemain, permintaan pencocokan tidak akan pernah berhasil. Pelajari selengkapnya tentang set aturan pembuat kecocokan dan atribut pemain di Membangun set FlexMatch aturan dan FlexMatch contoh set aturan.

    • Latensi pemain – Jika pembuat kecocokan yang digunakan memiliki aturan latensi pemain, permintaan harus melaporkan latensi untuk setiap pemain. Data latensi pemain adalah daftar satu atau lebih nilai per pemain. Ini mewakili latensi yang dialami pemain untuk wilayah dalam antrean pembuat kecocokan. Jika tidak ada nilai latensi untuk pemain yang disertakan dalam permintaan, pemain tidak dapat dicocokkan, dan permintaan gagal.

Mengambil detail permintaan kecocokan:
  • Setelah permintaan kecocokan dikirim, Anda dapat melihat detail permintaan dengan menelepon DescribeMatchmakingdengan ID tiket permintaan. Panggilan ini mengembalikan informasi permintaan, termasuk status saat ini. Setelah permintaan berhasil diselesaikan, tiket juga berisi informasi yang dibutuhkan klien game untuk terhubung ke kecocokan.

Membatalkan permintaan kecocokan:
  • Anda dapat membatalkan permintaan perjodohan kapan saja dengan menelepon StopMatchmakingdengan ID tiket permintaan.

Melacak peristiwa pencocokan

Siapkan notifikasi untuk melacak peristiwa yang GameLift dipancarkan Amazon untuk proses perjodohan. Anda dapat mengatur notifikasi baik secara langsung, dengan membuat topik SNS, atau dengan menggunakan AmazonEventBridge. Untuk informasi lebih lanjut tentang mengatur notifikasi, lihat Menyiapkan pemberitahuan FlexMatch acara. Setelah Anda mengatur notifikasi, tambahkan listener di layanan klien Anda untuk mendeteksi peristiwa dan merespons sesuai kebutuhan.

Sebaiknya Anda mencadangkan notifikasi dengan melakukan polling secara berkala untuk pembaruan status ketika periode waktu yang signifikan berlalu tanpa notifikasi. Untuk meminimalkan dampak pada performa pencocokan, pastikan untuk melakukan polling setelah menunggu setidaknya 30 detik setelah tiket pencocokan dikirimkan atau setelah notifikasi terakhir diterima.

Ambil tiket permintaan perjodohan, termasuk status saat ini, dengan menelepon DescribeMatchmakingdengan ID tiket permintaan. Sebaiknya polling dilakukan maksimal sekali setiap 10 detik. Pendekatan ini hanya untuk digunakan selama skenario pengembangan volume rendah.

catatan

Anda harus menyiapkan game Anda dengan pemberitahuan peristiwa sebelum Anda memiliki penggunaan pencocokan bervolume tinggi, seperti dengan pengujian beban pra-produksi. Semua game dalam rilis publik harus menggunakan pemberitahuan terlepas dari volumenya. Pendekatan polling berkelanjutan hanya cocok untuk game yang sedang dikembangkan dengan penggunaan pencocokan yang rendah.

Minta persetujuan pemain

Jika Anda menggunakan pembuat kecocokan yang mengaktifkan persetujuan pemain, tambahkan kode ke layanan klien Anda untuk mengelola proses persetujuan pemain. Proses mengelola akseptansi pemain identik untuk game yang digunakan FlexMatch dengan hosting yang GameLift dikelola Amazon dan untuk game yang digunakan FlexMatch sebagai solusi mandiri.

Meminta persetujuan pemain untuk kecocokan yang diusulkan:
  1. Mendeteksi ketika pertandingan yang diusulkan membutuhkan penerimaan pemain. Memantau tiket pencocokan untuk mendeteksi ketika status berubah ke REQUIRES_ACCEPTANCE. Perubahan status ini memicu acara. FlexMatch MatchmakingRequiresAcceptance

  2. Dapatkan akseptansi dari semua pemain. Buat mekanisme untuk menyajikan detail kecocokan yang diusulkan kepada setiap pemain di tiket pencocokan. Pemain harus dapat menunjukkan bahwa mereka menyetujui atau menolak kecocokan yang diajukan. Anda dapat mengambil detail kecocokan dengan menelepon DescribeMatchmaking. Pemain memiliki waktu terbatas untuk merespons sebelum mak comblang menarik pertandingan yang diusulkan dan melanjutkan.

  3. Laporkan tanggapan pemain keFlexMatch. Laporkan tanggapan pemain dengan menelepon AcceptMatchdengan menerima atau menolak. Semua pemain dalam permintaan pencocokan harus menyetujui kecocokan agar dapat dilanjutkan.

  4. Tangani tiket dengan akseptasi yang gagal. Permintaan gagal ketika pemain mana pun dalam kecocokan yang diusulkan menolak kecocokan atau gagal merespons dalam batas waktu persetujuan. Tiket untuk pemain yang menerima kecocokan secara otomatis dikembalikan ke kolam tiket. Tiket untuk pemain yang tidak menyetujui kecocokan dipindahkan ke status GAGAL dan tidak diproses lagi. Untuk tiket dengan banyak pemain, jika ada pemain di tiket yang tidak menyetujui kecocokan, seluruh tiket gagal.

Connect ke pertandingan

Tambahkan kode ke layanan klien Anda untuk menangani kecocokan yang berhasil dibentuk (status COMPLETED atau peristiwa MatchmakingSucceeded). Ini termasuk memberi tahu pemain yang cocok dan menyerahkan informasi koneksi ke klien game mereka.

Untuk game yang menggunakan hosting GameLift terkelola Amazon, ketika permintaan perjodohan berhasil dipenuhi, informasi koneksi sesi game ditambahkan ke tiket perjodohan. Ambil tiket perjodohan selesai dengan menelepon. DescribeMatchmaking Informasi koneksi mencakup alamat IP dan port sesi game, serta ID sesi pemain untuk setiap ID pemain. Pelajari selengkapnya di GameSessionConnectionInfo. Klien game Anda dapat menggunakan informasi ini untuk terhubung langsung ke sesi game untuk kecocokan. Permintaan koneksi harus mencakup ID sesi pemain dan ID pemain. Data ini mengaitkan pemain yang terhubung ke data pertandingan sesi game, yang mencakup tugas tim (lihat). GameSession

Untuk game yang menggunakan solusi hosting lain, termasuk Amazon GameLift FleetiQ, Anda harus membangun mekanisme untuk memungkinkan pemain pertandingan terhubung ke sesi permainan yang sesuai.

Permintaan pencocokan sampel

Potongan kode berikut membangun permintaan pencocokan untuk beberapa pembuat kecocokan yang berbeda. Seperti yang dijelaskan, permintaan harus menyediakan atribut pemain yang diperlukan oleh pembuat kecocokan yang digunakan, seperti yang didefinisikan dalam set aturan pembuat kecocokan. Atribut yang diberikan harus menggunakan tipe data yang sama, angka (N) atau string (S) yang didefinisikan dalam set aturan.

# Uses matchmaker for two-team game mode based on player skill level def start_matchmaking_for_cowboys_vs_aliens(config_name, ticket_id, player_id, skill, team): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill} }, "PlayerId": player_id, "Team": team }], TicketId=ticket_id) # Uses matchmaker for monster hunter game mode based on player skill level def start_matchmaking_for_players_vs_monster(config_name, ticket_id, player_id, skill, is_monster): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "desiredSkillOfMonster": {"N": skill}, "wantsToBeMonster": {"N": int(is_monster)} }, "PlayerId": player_id }], TicketId=ticket_id) # Uses matchmaker for brawler game mode with latency def start_matchmaking_for_three_team_brawler(config_name, ticket_id, player_id, skill, role): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "character": {"S": [role]}, }, "PlayerId": player_id, "LatencyInMs": { "us-west-2": 20} }], TicketId=ticket_id) # Uses matchmaker for multiple game modes and maps based on player experience def start_matchmaking_for_multi_map(config_name, ticket_id, player_id, skill, maps, modes): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "experience": {"N": skill}, "gameMode": {"SL": modes}, "mapPreference": {"SL": maps} }, "PlayerId": player_id }], TicketId=ticket_id)