Ringkasan
Pemberitahuan Game di Steam merupakan sistem untuk mengirimkan pemberitahuan offline kepada pengguna untuk game yang menyediakan permainan multipemain asinkron, seperti Catur.
Tujuan dari API ini adalah untuk memberi tahu pengguna bahwa ada tindakan yang diperlukan agar sesi game dapat berjalan. Dalam Catur, sebagai contoh, status sesi permainan diperbarui setiap pemain menyelesaikan gilirannya. Steam kemudian akan mengirim pemberitahuan kepada pengguna berdasarkan status sesi game untuk mengingatkan mereka ketika giliran mereka sudah tiba.
Tanggung Jawab Game
Game offline pada umumnya akan mengelola sesi game, memperbarui status masing-masing pengguna dan mengirimkan pemberitahuan berdasarkan status tersebut apabila pengguna harus meluncurkan game dan melakukan suatu tindakan. Setelah meluncurkan dan melakukan tindakan yang diperlukan, maka game akan kembali memperbarui sesi game dengan status terkini untuk semua pengguna dalam sesinya.
Yang dikelola Steam
Steam akan mengelola pemberitahuan untuk pengguna yang ada dalam sesi game berdasarkan status yang disediakan oleh game dan pengaturan spesifik yang dipilih pengguna untuk game-nya. Peringatan akan ditampilkan di Steam Client dan peramban web untuk pengguna ketika ada tindakan yang diperlukan.
Persyaratan
API Pemberitahuan Game disediakan melalui metode Web API dan memerlukan key penerbit yang valid. Panggilan metode Web API harus berasal dari server yang dihosting terpisah dari client game. Key penerbit tidak boleh dikirimkan bersama kode client game apa pun.
Autentikasi dan Akun Pihak Ketiga
Untuk memanggil API Pemberitahuan Game, kamu harus terlebih dahulu menetapkan identitas pengguna Steam yang login ke game-mu. Ada dua cara untuk melakukannya: game client dapat menghasilkan tiket sesi autentikasi dan meneruskannya kembali ke servermu, sementara game web dapat memverifikasi pengguna dengan menggunakan OpenID. Petunjuk untuk melakukannya tersedia di
Menautkan akun pihak ketiga ke akun Steam. Jangan percaya identitas pengguna dalam pesan yang dikirim langsung dari client game ke server game-mu, karena pesan-pesan ini dapat diutak-atik.
Untuk game yang menggunakan akun pihak ketiga, gunakan petunjuk yang diberikan di atas, tapi simpan ID Steam pengguna di sistemmu.
API Pemberitahuan Game
Ringkasan Teknis
API Pemberitahuan Game ditulis dan diekspos melalui Web API dan memerlukan empat parameter untuk diteruskan di setiap metode.
- appid (ID aplikasi game-mu)
- format (format dari hasilnya. Kami menyarankan format json untuk nilai pengembalian)
- input_json (pengodean json dari semua parameter yang diperlukan untnuk suatu metode)
- key (key penerbitmu yang diteruskan di setiap panggilan)
API akan mengembalikan kode status HTTP 200 jika berhasil, dengan rinciannya di badan pesan (jika ada).
Nilai Konstan
UserState
Nilai string didefinisikan sebagai salah satu dari yang ada di bawah ini.
- menunggu - Pengguna sedang menunggu pemain lain dan tidak memblokir tindakan apa pun. Tidak akan ada pemberitahuan yang akan dikirim ke pengguna karena mereka sedang menunggu sesuatu terjadi.
- siap - Pengguna sudah siap. Sesi game sedang menunggu respons dari pengguna. Pemberitahuan akan dikirim ke pengguna sampai status ini disudahi.
- selesai - Permainan telah selesai untuk pengguna ini. Pengguna akan diberi tahu bahwa permainan sudah berakhir, tapi tidak ada tindakan yang diperlukan.
Struktur Data (JSON)
Semua struktur data direpresentasikan dalam format JSON.
Variable
{
"key": "key_name", // string
"value": "value_of_key" // string
}
LocalizedText
{
"token": "value", // string yang memetakan ke token pelokalan
"variables":
[
// Susunan "Variable" (di atas)
]
}
UserStatus
{
"steamid": "76561197960265729", // uint64
"state": // Salah satu konstanta "UserState" (dijelaskan di atas),
"title": // Sebuah objek "LocalizedText" (dijelaskan di atas),
"message": // Sebuah objek "LocalizedText" (dijelaskan di atas)
}
Session
{
"sessionid": "1", // uint64
"title": // Sebuah objek "LocalizedText" (di atas),
"time_created": "100000", // Waktu Unix (waktu sejak 1 Januari 1970).
"time_updated": "200000", // Waktu Unix (waktu sejak 1 Januari 1970).
// Nilai 64-bit yang disediakan oleh pengembang ketika sesi diciptakan dan akan diteruskan ke game ketika game diluncurkan.
// Ini memungkinkanmu untuk dengan mudah mengikat objek sesi ke objek backend milikmu sendiri, dan tidak digunakan secara internal oleh Steam.
"context": "31415926",
"user_status":
[
// Susunan objek "UserStatus" (dijelaskan di atas)
]
}
RequestedSession
{
"sessionid": "1", // uint64
"include_all_user_messages": "0" // bool
}
API umum yang tersedia.
Lihat
IGameNotificationsService untuk daftar lengkapnya.
Meluncurkan sesi game tertentu
Pengguna akan dapat melihat semua sesi game aktif mereka pada halaman profil komunitas mereka di Steam. Bersamaan dengan status game, terdapat tombol untuk menginstruksikan Steam untuk meluncurkan game dengan parameter peluncuran spesifik untuk mendefinisikan sesi game-nya. Ketika game diluncurkan dengan cara ini, parameter peluncuran "_sessionid" akan disediakan untuk game-nya. Kamu bisa mendapatkan parameter ini menggunakan
ISteamApps::GetLaunchQueryParam.
Seperti ini:
const char *pchSessionID = ISteamApps()->GetLaunchQueryParam("_sessionid");
Game yang mendukung peluncuran langsung ke dalam game dengan cara ini harus memanggil antarmuka ini pada saat peluncuran game, mengonfirmasi apabila string ID Sesi ada dan valid untuk pengguna yang login, dan memuat game secara langsung.
Pelokalan
Pelokalan disediakan oleh pengembang game melalui alat pelokalan yang merupakan bagian dari pengonfigurasi aplikasi. Kamu bertanggung jawab untuk mengatur setiap terjemahan bahasa untuk setiap string yang dimasukkan ke alat pelokalan. Setiap string yang tidak diterjemahkan ke bahasa pemain akan dirender dalam bahasa Inggris.
Pemberitahuan game mendukung pelokalan untuk properti berikut:
Setiap
teks yang dilokalkan terdiri dari dua komponen:
Token merupakan key yang dimulai dengan simbol "#" dan mewakili string yang dilokalkan dalam bahasa-bahasa berbeda melalui alat pelokalan dari pengonfigurasi aplikasimu. Satu token dapat berisi beberapa variabel yang dapat diganti saat runtime berdasarkan konteks game ketika teks akan dihasilkan. Contohnya adalah:
#InvitationText = "{{user}} mengundangmu bermain Catur."
Pada contoh di atas, terjemahan bahasa Inggris untuk #InvitationText berisi variabel tunggal yaitu "user". Ketika kamu ingin merender pesan teks ini kepada pengguna ketika "SteamUserName" mengundangnya bermain game, kamu akan memperbarui objek LocalizationText dengan properti berikut:
"message":
{
"token": "#InvitationText",
"variables":
[
{ "key": "user", "value": "Michael" }
]
}
Ketika pemain melihat statusnya, dia akan melihat pesan ini (dalam bahasa lokalnya): "Michael mengundangmu bermain Catur."
Token pelokalan dapat diunggah ke bagian Pelokalan Asinkron di tab Komunitas pada halaman Pengaturan Steamworks untuk aplikasimu.
Setiap bahasa dapat diunggah satu per satu dalam file VDF yang terlihat seperti ini:
"lang"
{
"Language" "english"
"Tokens"
{
"TheNameOfTheToken" "The localized text associated with the token"
"TheNameOfAnotherToken" "The localized text associated with the second token"
}
}
Atau, token untuk semua bahasa dapat diunggah dalam satu file yang terlihat seperti ini:
"lang"
{
"english"
{
"Tokens"
{
"TheNameOfTheToken" "The localized text associated with the token"
"TheNameOfAnotherToken" "The localized text associated with the second token"
}
}
"spanish"
{
"Tokens"
{
"TheNameOfTheToken" "El texto localizado asociado con el token"
"TheNameOfAnotherToken" "El texto localizado asociado con el segundo token"
}
}
}