Playable Locations API menyajikan koleksi titik geografis yang diseleksi dan dihasilkan (lokasi yang dapat diputar). Setiap lokasi yang dapat dimainkan dipilih oleh Google berdasarkan kesesuaiannya untuk digunakan dalam game berbasis lokasi sebagai spawn point untuk hal-hal seperti depot perbaikan dan hadiah game.
Beberapa lokasi yang dapat dimainkan terletak di dekat lokasi menarik terkemuka, beberapa berada di trotoar di sepanjang jalan, sementara yang lainnya berada secara acak di dalam taman, taman bermain, alun-alun kota, dan area lain yang dapat diakses secara publik.
Tujuan dokumen ini adalah untuk memberikan ringkasan tentang cara penerapan API sehingga developer pihak ketiga dapat memanfaatkan konsep utama untuk membuat kumpulan lokasi yang dapat dimainkan sendiri menggunakan sumber data alternatif.
Latar belakang
Bagian ini memberikan ringkasan tentang support library yang digunakan, dan memperkenalkan konsep dasar yang terkait dengan lokasi yang dapat dimainkan.
Library Dukungan
Library dukungan berikut digunakan di seluruh panduan ini.
Perpustakaan | Deskripsi |
Geometri S2 | Dukungan yang fleksibel untuk pengindeksan spasial. |
Buffering Protokol | Cara serialisasi data terstruktur yang netral bahasa, netral 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 dunia tiga dimensi. Library ini menyertakan fitur-fitur berikut:
- Dukungan untuk pengindeksan spasial.
- Hal ini memungkinkan Anda memperkirakan area arbitrer sebagai kumpulan Sel S2 yang terpisah.
- Pengindeksan spasial dalam memori yang cepat pada kumpulan titik, polyline, dan poligon.
- Operasi konstruktif yang kuat (seperti persimpangan, union, 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 antar-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.
SSTables
Format file SSTable digunakan untuk menyimpan, memproses, dan bertukar set data secara efisien. SSTable menyediakan peta persisten yang tidak dapat diubah dan diurutkan dari kunci ke nilai, dengan kunci dan nilai merupakan string byte arbitrer.
Lokasi Dapat Diputar
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 spawn point untuk hal-hal seperti hadiah).
Jenis lokasi yang dapat dimainkan
Diseleksi
Lokasi pilihan yang dapat dimainkan adalah titik geografis yang dikaitkan dengan objek yang ada di lokasi tertentu. Lokasi tersebut mewakili lokasi Lokasi Menarik (POI) yang diambil dari database Tempat.
Dibuat
Jika lokasi pemutaran pilihan tidak cukup untuk memenuhi kriteria Anda, Playable Locations API akan menghasilkan lokasi yang dapat diputar tambahan. Lokasi yang dapat dimainkan tersebut adalah titik geografis yang tidak terkait dengan objek yang ada. Sebagai gantinya, titik geografis ini dibuat secara terprogram, dan ditempatkan secara acak di trotoar, di dalam taman, di pantai, dan di dalam taman bermain, alun-alun kota, dan area yang dapat diakses publik lainnya.
Tujuannya adalah untuk menyediakan setidaknya kepadatan minimum lokasi yang dapat dimainkan, dengan pertimbangan yang diberikan pada kriteria berikut:
Kriteria | Contoh |
Keamanan pemain | Hadiah game tidak boleh muncul di tengah jalan bebas hambatan atau di dalam markas militer. |
Kelayakan untuk gameplay | Pemain tidak boleh mengganggu pemakaman atau tempat ibadah. |
Properti Lokasi Pemutaran
Bagian berikut membahas beberapa properti yang terkait dengan objek Lokasi Dapat Diputar dalam penerapan Google yang mungkin berguna bagi developer untuk membuat game berbasis lokasi.
- placeId
- String alfanumerik yang mengidentifikasi lokasi secara unik. Ini adalah ID Tempat untuk lokasi yang dapat diputar yang diseleksi (misalnya, Chlj79YW1ohQwokRWPhGmWQ2K4). Anda dapat menggunakan ID Tempat lokasi yang dapat dimainkan 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 kode plus lokasi yang dibuat untuk melampirkan metadata khusus game ke lokasi.
- jenis
- Array jenis Lokasi yang Dapat Diputar (string) yang menentukan jenis lokasi yang dapat diputar. Jenis pertama dalam array dianggap sebagai jenis primer. Misalnya, Anda dapat memiliki lokasi yang dapat dimainkan yang merupakan hiburan dan outdoor_recreation.
- centerPoint
- 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 dipaskan ke trotoar jalan terdekat (saat ada jalan terdekat). Anda dapat menggunakan snap-point untuk menempatkan objek game saat pemilik bisnis tidak ingin 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 disebutkan di atas, lokasi pilihan adalah Lokasi Menarik (POI) di dunia nyata yang dianggap cocok untuk gameplay. Berikut ini akan memberikan ringkasan umum tentang pipeline data (dengan kriteria pemilihan dan pemfilteran) yang mungkin digunakan untuk menghasilkan lokasi ini. Tujuan pipeline ini adalah untuk menghasilkan SStable dari Lokasi yang Diseleksi yang dikuncikan pada S2CellIds yang selanjutnya dapat dimasukkan ke dalam database untuk kueri real-time untuk Lokasi Dapat Diputar di region tertentu.
Asumsinya adalah developer memiliki akses ke Fitur Peta atau Repositori Tempat yang berisi kumpulan kandidat POI selain geometri wilayah yang dikecualikan (di mana Lokasi Dapat Diputar seharusnya tidak ada).
Pipeline bekerja menggunakan pendekatan gabungan dalam daftar 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 dalam fase lain, kami memfilter semua POI yang berada dalam kumpulan wilayah yang dikecualikan. Wilayah yang dikecualikan dibentuk menggunakan geometri (misalnya kotak pembatas) kumpulan fitur peta standar yang dianggap tidak cocok untuk gameplay (misalnya pangkalan militer, kuburan) untuk membuat Cakupan S2. Cakupan S2 tersebut kemudian dapat digunakan untuk melihat apakah salah satu POI yang dipilih berada dalam region yang dikecualikan dan jika demikian memfilternya. Kumpulan lokasi hasil seleksi akhir akan diindeks dengan mengonversi titik tengahnya menjadi S2CellIds pada level 30. Hal ini memungkinkan pencarian berbasis rentang untuk Lokasi yang Dapat Diputar dalam region yang ditentukan.
Memilih Lokasi yang Dibuat
Seperti yang disebutkan di atas, lokasi yang dihasilkan digunakan untuk melengkapi Lokasi yang Dapat Diputar di area tempat POI dunia nyata tidak memiliki kepadatan yang diperlukan untuk gameplay. Sebagai aturan umum, kami telah menemukan sekitar 9 Lokasi Dapat Dimainkan 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 yang diizinkan/tidak diizinkan. Daftar yang diizinkan adalah daftar fitur peta yang dianggap sesuai untuk membuat titik (mis.taman, trotoar, dll.) dan daftar yang tidak diizinkan adalah area yang titiknya harus dikecualikan (mis.perairan, jalan kendaraan bermotor, dll.). Dalam kedua kasus tersebut, geometri fitur peta digunakan untuk menghasilkan cakupan S2 di areanya masing-masing, dan saat kedua set tersebut digabungkan, region yang dikecualikan yang tumpang-tindih akan dikurangi dari region yang disertakan untuk menghasilkan kumpulan area kandidat akhir untuk lokasi yang dihasilkan. Sebagai langkah terakhir, kami "secara acak" menghasilkan titik geografis dalam area tersebut dan menulis ke SStable yang diindeks menggunakan S2CellIds pada level 30 yang mewakili titik tengah. Untuk Lokasi yang Dibuat, 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 tumbuhan dan hewan yang memiliki kesamaan karakteristik adaptasi lingkungan yang umum. Bioma terbentuk sebagai respons terhadap iklim fisik yang sama. Contoh bioma adalah hutan, lahan basah, dan daerah perkotaan.
Jika lokasi yang dapat diputar berada dalam bioma, 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 kolom bioma berisi nilai padang rumput, kolom tersebut dapat menghasilkan jenis makhluk yang berbeda dibandingkan jika kolom bioma berisi nilai urban.
Berikut adalah proses untuk menambahkan informasi bioma ke Lokasi yang Dapat Diputar sebagai bagian dari pipeline Lokasi di atas. Earth Engine Google memiliki beberapa set data tutupan 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 sudah ada
berdasarkan geolokasi, dan ini biasanya dapat dilakukan dengan penggabungan spasial.
Misalnya, jika informasi Biome tersedia di S2 Cell level 17 dan
Lokasi yang Dapat Diputar diindeks menggunakan S2CellId mereka pada level 30, join dapat
dilakukan sebagai berikut:
- Petakan Lokasi yang dapat dimainkan ke Sel S2 mereka di level 17: PlayableLocation.s2CellId.parent(17)
- Bergabung dengan Biome S2CellIds di level 17
- Tayangkan Lokasi Dapat Diputar bersama dengan atribut bioma jika tersedia.
Membuat Kueri Lokasi yang Dapat Diputar
Jika rekomendasi di atas diikuti dan kami mengindeks Lokasi yang Dapat Diputar menggunakan S2CellIds pada 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 region tertentu.
Contoh Kueri:
Jika kita ingin mengambil semua Lokasi Dapat Dimainkan yang terletak 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 Lokasi yang Dapat Diputar di 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 di game Anda. Misalnya, Anda dapat memilih untuk memiliki satu "monster" per level 14 sel dan untuk mendistribusikan 64 "permata" secara merata di area yang sama, tempatkan 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 ke dalam satu DB, tetapi keduanya dibiarkan terpisah di sini agar lebih jelas.
Pelaporan Lokasi Buruk
Berikut ini adalah proses pengumpulan masukan terkait kualitas lokasi yang dapat dimainkan dari dalam game dengan memungkinkan pemain melaporkan lokasi yang tidak dapat dimainkan. Laporan ini dapat diproses di pipeline data dan digunakan untuk menghapus lokasi yang buruk dari Database Lokasi Dapat Dimainkan.
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 hybrid+Solusi manusia dapat digunakan untuk menskalakan proses moderasi, untuk menghapus lokasi yang tidak pantas dari PlayableLocationsDB.
Berikut adalah serangkaian contoh kriteria 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 |
|
Sensitif secara budaya |
|