Ringkasan Desain Playable Location API

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.

Diagram pipeline lokasi hasil seleksi.

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.

Diagram pipeline lokasi yang dihasilkan.

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.

Diagram pipeline nilai kunci lokasi diurutkan.

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:
    1. Memetakan Lokasi yang dapat diputar ke Sel S2 mereka di level 17: PlayableLocation.s2CellId.parent(17)
    2. Bergabung dengan Biome S2CellIds di level 17
  • Sajikan Lokasi yang Dapat Diputar bersama dengan atribut biome jika tersedia.

Diagram repositori bioma ke lokasi yang dapat diputar.

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.

Diagram pembuatan kueri dan cache lokasi yang dapat diputar.

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.

Diagram pelaporan lokasi buruk.

Berikut adalah serangkaian kriteria contoh yang dapat digunakan untuk membantu menentukan apakah Lokasi Dapat Diputar buruk:

Kriteria Contoh
Tidak aman
  • Lokasi yang dapat dimainkan terletak dalam jarak 50 meter dari tepi tebing.
  • Lokasi yang dapat dimainkan berada di tengah jalan raya utama, atau dekat dengan lalu lintas yang bergerak cepat.
Area non-publik
  • Fasilitas pemerintah yang dibatasi. Misalnya, pangkalan militer.
Tidak dapat diakses
  • Area yang diberi pagar.
  • Bangunan terkenal di air.
Tidak dapat diakses untuk sementara
  • Lokasi yang tutup karena renovasi.
  • Lokasi yang tutup secara musiman.
  • Jalan ditutup untuk perbaikan selama lebih dari satu minggu.
Peka terhadap budaya
  • Makam.
  • Tempat ibadah.