Playable Location API melayani kumpulan titik geografis yang diseleksi dan dibuat (lokasi yang dapat diputar). Setiap lokasi yang dapat dimainkan dipilih oleh Google berdasarkan kesesuaiannya untuk digunakan dalam game berbasis lokasi sebagai poin untuk hal-hal seperti toko reparasi dan hadiah game.
Beberapa lokasi yang dapat dimainkan terletak di dekat lokasi menarik terkemuka, sebagian berada di trotoar di sepanjang jalan, sementara lokasi lainnya terletak acak di dalam taman, taman bermain, alun-alun kota, dan area lain yang dapat diakses umum.
Tujuan dokumen ini adalah memberikan ringkasan tentang cara penerapan API sehingga developer pihak ketiga dapat memanfaatkan konsep utama untuk membuat kumpulan lokasi yang dapat dimainkan mereka sendiri menggunakan sumber data alternatif.
Latar belakang
Bagian ini memberikan ringkasan support library yang digunakan, dan memperkenalkan konsep dasar terkait lokasi yang dapat dimainkan.
Library Dukungan
Library dukungan berikut digunakan di seluruh panduan ini.
Perpustakaan | Deskripsi |
Geometri S2 | Dukungan fleksibel untuk pengindeksan spasial. |
Buffering Protokol | Cara menserialisasi data terstruktur dengan bahasa yang netral, tidak tergantung platform, dan dapat diperluas untuk digunakan dalam protokol komunikasi, penyimpanan data, dan lainnya. |
Library Geometri S2
Library Geometri S2 adalah sistem informasi geografis yang mewakili data pada bola tiga dimensi. Library ini menyertakan fitur berikut:
- Dukungan untuk pengindeksan spasial.
- Hal ini memungkinkan Anda memperkirakan area arbitrer sebagai kumpulan Sel S2 diskret.
- Pengindeksan spasial dalam memori yang cepat untuk kumpulan titik, polyline, dan poligon.
- Operasi konstruktif yang kuat (seperti persimpangan, penggabungan, dan penyederhanaan) dan predikat boolean (seperti pengujian untuk containment).
- Operasi kueri yang efisien untuk menemukan objek di sekitar, mengukur jarak, dan menghitung sentroid.
- Kumpulan predikat matematika untuk menguji hubungan antara primitif geometris.
- Pembulatan snap.
Statistik sel S2
Statistik Sel S2 berguna untuk menghitung hal-hal seperti lama waktu yang diperlukan untuk mendownload set data pada QPS tertentu.
Repositori kode geometri S2
Clone salah satu repositori ini untuk mulai menggunakan Sel S2.
SSTable
Format file SSTable digunakan untuk menyimpan, memproses, dan bertukar set data secara efisien. SSTable menyediakan peta persisten yang tersusun dan tidak dapat diubah dari kunci ke nilai, dengan kunci dan nilai merupakan string byte arbitrer.
Lokasi Pemutaran
Secara umum, lokasi adalah titik geografis pada peta, tetapi lokasi yang dapat dimainkan adalah lokasi yang dianggap cocok untuk menempatkan objek game dalam game dunia nyata (yaitu, sebagai tempat muncul untuk hal-hal seperti hadiah).
Jenis lokasi yang dapat dimainkan
Diseleksi
Lokasi yang dapat diputar pilihan adalah titik geografis yang terkait dengan objek yang ada di lokasi tertentu. Lokasi ini mewakili lokasi Lokasi Menarik (POI) yang diambil dari database Tempat.
Dibuat
Jika tidak ada cukup lokasi yang dapat dimainkan yang diseleksi untuk memenuhi kriteria Anda, Playable Location API menghasilkan lokasi tambahan yang dapat diputar. Lokasi yang dapat diputar ini adalah titik geografis yang tidak terkait dengan objek yang sudah ada. Sebagai gantinya, titik geografis ini dibuat secara terprogram dan ditempatkan secara acak di sepanjang trotoar, di dalam taman, di pantai, dan di dalam taman bermain, alun-alun kota, dan area lain yang dapat diakses publik.
Tujuannya adalah untuk menyediakan setidaknya kepadatan minimum lokasi yang dapat dimainkan, dengan pertimbangan yang diberikan untuk kriteria berikut:
Kriteria | Contoh |
Keamanan pemain | Hadiah game tidak boleh muncul di tengah jalan bebas hambatan atau di dalam pangkalan militer. |
Kelayakan untuk gameplay | Pemain tidak boleh mengganggu pemakaman atau tempat ibadah. |
Properti Lokasi yang Dapat Diputar
Bagian berikut membahas beberapa properti yang terkait dengan objek Lokasi yang Dapat Diputar dalam penerapan Google yang mungkin berguna bagi developer untuk membuat game berbasis lokasi.
- ID tempat
- String alfanumerik yang mengidentifikasi lokasi secara unik. Ini adalah ID Tempat untuk lokasi pilihan yang dapat diputar (misalnya, Chlj79YW1ohQwokRWPhGmWQ2K4). Anda dapat menggunakan ID Tempat lokasi bermain pilihan untuk melampirkan metadata khusus game ke lokasi tersebut.
- plusCode
- Plus Codes yang secara unik mengidentifikasi lokasi pemutaran yang dihasilkan. Plus Codes adalah string alfanumerik. Misalnya, 23CPRV2R+WG76. Anda dapat menggunakan plus code lokasi yang dihasilkan untuk melampirkan metadata khusus game ke lokasi.
- jenis
- Array Jenis Lokasi yang Dapat Dimainkan (string) yang menentukan jenis lokasi yang dapat diputar. Jenis pertama dalam array dianggap sebagai jenis utama. Misalnya, Anda dapat memiliki lokasi yang dapat diputar yang bersifat hiburan dan outdoor_reCreation.
- Titik tengah
- Koordinat geografis yang sesuai dengan titik tengah lokasi. Titik tengah digunakan untuk menentukan apakah lokasi berada dalam area minat.
- snappedPoint
- Koordinat geografis yang sesuai dengan lokasi yang berada di trotoar jalan terdekat (saat ada jalan terdekat). Anda dapat menggunakan snap-point untuk menempatkan objek game saat pemilik bisnis tidak menginginkan pemain game berada di dalam lokasi mereka. Jika titik yang diikat tidak tersedia, titik tengah harus digunakan.
- biomeType
- Jika lokasi yang dapat diputar berada dalam bioma, kolom ini akan diisi dengan satu atau beberapa nilai BiomeType. Contoh bioma adalah hutan, lahan basah, dan daerah perkotaan.
Desain
Pemilihan Titik untuk Game
Memilih Lokasi Pilihan
Seperti yang disebutkan di atas, lokasi pilihan adalah Lokasi Menarik (POI) dunia nyata yang dianggap cocok untuk gameplay. Berikut ini akan memberikan ringkasan umum tentang pipeline data (dengan kriteria pemilihan dan pemfilteran) yang dapat digunakan untuk menghasilkan lokasi ini. Tujuan pipeline ini adalah untuk menghasilkan SStable Lokasi Terseleksi yang dikunci di S2CellIds yang selanjutnya dapat dimasukkan ke dalam database untuk kueri real-time bagi Lokasi yang Dapat Diputar di region tertentu.
Asumsinya adalah developer memiliki akses ke Fitur Peta atau Repositori Tempat yang berisi kandidat kumpulan POI selain geometri wilayah yang dikecualikan (di mana Lokasi Dapat Diputar tidak boleh ada).
Pipeline berfungsi menggunakan pendekatan gabungan yang diizinkan/tidak diizinkan.Dalam satu fase, kami memilih semua POI yang cocok dengan daftar jenis yang diizinkan dan dianggap sesuai untuk gameplay (misalnya kafe, library, toko bunga, dll.) dan di fase lain, kami memfilter semua POI yang berada dalam kumpulan wilayah yang dikecualikan. Wilayah yang dikecualikan dibentuk menggunakan geometri (misalnya kotak pembatas) dari kumpulan fitur peta bawaan yang dianggap tidak cocok untuk gameplay (misalnya pangkalan militer, kuburan) untuk menghasilkan Covering S2. Cakupan S2 tersebut kemudian dapat digunakan untuk melihat apakah salah satu POI yang dipilih berada dalam wilayah yang dikecualikan dan, jika ya, filter. Kumpulan lokasi hasil seleksi selanjutnya diindeks dengan mengonversi titik tengahnya ke S2CellIds di level 30. Hal ini memungkinkan pencarian berbasis rentang dari Lokasi yang Dapat Diputar dalam region tertentu.
Memilih Lokasi yang Dibuat
Seperti yang disebutkan di atas, lokasi yang dihasilkan digunakan untuk melengkapi Playable Location di area tempat POI dunia nyata tidak memiliki kepadatan yang diperlukan untuk gameplay. Sebagai aturan umum, kami telah menemukan sekitar 9 Lokasi Dapat Diputar di setiap sel S2 level 16 (~0,02 km^2) harus memiliki kepadatan yang cukup untuk game berbasis lokasi.
Pembuatan titik geografis "acak" ini juga dilakukan menggunakan pendekatan gabungan daftar yang diizinkan/tidak diizinkan. Daftar yang diizinkan adalah daftar fitur peta yang dianggap sesuai untuk menghasilkan titik (mis.taman, trotoar, dll.) dan daftar yang tidak diizinkan adalah area yang poinnya harus dikecualikan (mis.perairan, jalan kendaraan bermotor, dll.). Dalam kedua kasus tersebut, geometri fitur peta digunakan untuk menghasilkan S2 yang mencakup area masing-masing. Saat kedua kumpulan tersebut bergabung, wilayah yang dikecualikan yang tumpang-tindih dikurangi dari wilayah yang disertakan untuk menghasilkan kumpulan area kandidat akhir untuk lokasi yang dihasilkan. Sebagai langkah terakhir, kita "secara acak" menghasilkan titik geografis dalam area tersebut dan menulis ke SStable yang diindeks menggunakan S2CellIds di level 30 yang mewakili titik tengah. Untuk Lokasi yang Dihasilkan, kode plus digunakan sebagai ID Tempat.
Ringkasan Pipeline Lokasi
Seperti yang disebutkan di atas, output dari dua pipeline data sebelumnya adalah dua SSTable dari objek PlayableLocation yang diindeks menggunakan S2CellIds pada level S2 30. File ini dapat dimuat ke penyimpanan Nilai Kunci Urutan untuk pencarian yang diindeks secara spasial. Salah satu opsinya adalah Spanner database SQL terdistribusi Google.
Bioma
Bioma adalah komunitas tanaman dan hewan yang memiliki kesamaan karakteristik adaptasi lingkungan. Bioma terbentuk sebagai respons terhadap iklim fisik yang digunakan bersama. Contoh bioma adalah hutan, lahan basah, dan daerah perkotaan.
Jika lokasi yang dapat diputar berada dalam biome, kolom biomeType dapat diisi dengan satu atau beberapa nilai BiomeType.
Anda dapat menggunakan informasi bioma untuk menempatkan berbagai jenis objek game di peta. Misalnya, jika bidang bioma berisi nilai rerumputan, bidang tersebut dapat menghasilkan jenis makhluk yang berbeda dibandingkan jika bidang bioma berisi nilai perkotaan.
Berikut adalah penjelasan proses penambahan informasi bioma ke Playable Locations sebagai bagian dari pipeline Lokasi di atas. Earth Engine Google memiliki beberapa set data penutup lahan dengan kelas informasi seperti hutan, padang rumput, dan air yang dapat digunakan sebagai sumber informasi bioma. Kami merekomendasikan langkah-langkah tingkat tinggi berikut untuk menambahkan informasi bioma:
- Menyeleksi data yang memiliki informasi bioma dan geolokasi.
- Tetapkan informasi bioma sebagai atribut ke Lokasi Dapat Diputar yang ada
berdasarkan geolokasinya, dan biasanya dapat dilakukan dengan penggabungan spasial.
Misalnya, jika informasi Biome tersedia di Sel S2 level 17 dan
Lokasi yang Dapat Dimainkan diindeks menggunakan S2CellId pada level 30, penggabungan dapat
dilakukan sebagai berikut:
- Memetakan Lokasi yang dapat diputar ke Sel S2 mereka di level 17: PlayableLocation.s2CellId.parent(17)
- Bergabung dengan Biome S2CellIds di level 17
- Sajikan Lokasi yang Dapat Diputar bersama dengan atribut biome jika tersedia.
Membuat Kueri Lokasi Dapat Diputar
Jika rekomendasi di atas diikuti dan kami mengindeks Lokasi yang Dapat Diputar menggunakan S2CellIds di level 30 (lihat Library S2 untuk mengonversi dari LatLng ke id sel), kami dapat melakukan pemindaian berbasis rentang untuk mengambil semua lokasi yang dapat diputar di wilayah tertentu.
Contoh Kueri:
Jika ingin mengambil semua Lokasi Dapat Diputar yang terletak di dalam S2Cell di level 12 (~5km^2), kita dapat mengeluarkan kueri berikut:
S2CellId: 0x89c2599000000000 Min Rentang: 0x89c2598000000001 (s2CellId.rangeMin().id()) Rentang Maks: 0x89c2599fffffffff (s2CellId.rangeMax().id())
SELECT * FROM PlayableLocations
WHERE S2CellId BETWEEN 0x89c2598000000001 AND 0x89c2599fffffffff;
Spasi
S2Library sekali lagi berguna untuk mengontrol kepadatan Playable Locations dalam game Anda. Level S2 bersifat hierarkis sehingga setiap sel di level 14 berisi 4 sel di level 15 dan seterusnya (Lihat Statistik Sel S2). Properti ini dapat dimanfaatkan saat menempatkan objek game dalam game Anda. Misalnya, Anda dapat memilih untuk memiliki satu "monster" per sel level 14 dan untuk mendistribusikan 64 "permata" secara merata di area yang sama, Anda menempatkan satu "permata" di setiap sel level 17 (setiap sel level 14 berisi 64 sel level 17).
Interaksi Kueri dan Cache
Alur logika yang direkomendasikan antara klien game, server game, database status game, dan database lokasi yang dapat dimainkan digambarkan dalam diagram urutan berikut. Perhatikan bahwa Anda dapat menggabungkan status game dan lokasi yang dapat dimainkan menjadi satu DB, tetapi dibiarkan terpisah di sini agar lebih jelas.
Pelaporan Lokasi Buruk
Berikut ini adalah proses untuk mengumpulkan masukan terkait kualitas lokasi yang dapat dimainkan dari dalam game dengan memungkinkan pemain melaporkan lokasi yang dapat dimainkan. Laporan ini dapat diproses di pipeline data dan digunakan untuk menghapus lokasi yang buruk dari Database Lokasi Playable.
Sebaiknya terapkan pelaporan lokasi yang buruk menggunakan langkah-langkah berikut:
- Buat titik entri sisi klien (formulir seluler atau web) bagi pemain untuk mengirimkan laporan poin buruk terstruktur kepada developer game.
- Buat pipeline data untuk memproses semua laporan yang diterima dan menghasilkan sinyal untuk membantu mengklasifikasikan seberapa buruk setiap lokasi.
- Bergantung pada kasus penggunaan yang sebenarnya, model ML murni atau model ML hibrida+Solusi Human dapat digunakan untuk menskalakan proses moderasi, untuk menghapus lokasi yang tidak sesuai dari PlayableLocationsDB.
Berikut adalah serangkaian kriteria contoh yang dapat digunakan untuk membantu menentukan apakah Lokasi Dapat Diputar buruk:
Kriteria | Contoh |
Tidak aman |
|
Area non-publik |
|
Tidak dapat diakses |
|
Tidak dapat diakses untuk sementara |
|
Peka terhadap budaya |
|