UWAGA: usługi gier w Google Maps Platform zostały wycofane 18 października 2021 r. Obecni użytkownicy będą mieli dostęp do tego okresu do 31 grudnia 2022 r. W tym czasie będziemy nadal zapewniać pomoc dotyczącą poważnych błędów i przerw w działaniu usług. W przewodniku po przenoszeniu usług gier znajdziesz zasoby, które pomogą Ci zaplanować kolejne kroki związane z projektami.

Omówienie interfejsu Playable Location API

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Interfejs Playable Location API udostępnia kolekcje wybranych i wygenerowanych punktów geograficznych (lokalizacji do odtwarzania). Każda placówka z możliwością grania jest wybierana przez Google na podstawie tego, czy kwalifikuje się ona do wykorzystania w grach opartych na lokalizacji, i zbiera je między innymi za punkty serwisowe i nagrody.

Niektóre ciekawe lokalizacje znajdują się w pobliżu ciekawych miejsc, a niektóre znajdują się na chodniku wzdłuż jezdni, a inne są losowo położone w parkach, placach zabaw, placach miejskich i innych miejscach publicznie dostępnych.

W tym dokumencie znajdziesz przegląd sposobu implementacji interfejsu API, tak aby programiści zewnętrzni mogli wykorzystać własne pojęcia do generowania własnych zestawów możliwych do odtworzenia własnych źródeł za pomocą alternatywnego źródła danych.

Wprowadzenie

Ta sekcja zawiera omówienie używanych bibliotek pomocy oraz podstawowe pojęcia związane z lokalizacjami gry.

Biblioteki pomocy

W tym przewodniku używane są te biblioteki pomocy.

Biblioteka Description
Geometria S2 Elastyczna obsługa indeksowania przestrzennego.
Bufory protokołowe Niewymagający znajomości języka, neutralnej dla platformy i elastyczna możliwość serializowania uporządkowanych danych do użytku w protokołach komunikacji, miejscu na dane i nie tylko.

Biblioteka geometryczna S2

Biblioteka geometryczna S2 to system informacji geograficznej, który reprezentuje dane w trójwymiarowej sferze. Biblioteka zawiera te funkcje:

  • Obsługa indeksowania przestrzennego.
    • Dzięki temu możesz określać dowolne obszary jako kolekcje odrębnych komórek S2.
    • Szybkie indeksowanie przestrzenne w pamięci kolekcji punktów, linii łamanych i wielokątów.
  • Wydajne operacje konstruktywne (np. skrzyżowanie, łączenie i uproszczenie) oraz predykcje logiczne (np. testowanie w celu zachowania izolacji).
  • Wydajne wykonywanie zapytań o znajdowanie pobliskich obiektów, pomiary odległości i przetwarzanie centroidów.
  • Zbiór zadań matematycznych do testowania relacji między prymitywami geometrycznymi.
  • Zaokrąglaj.

Statystyki komórek S2

Statystyki komórek S2 są przydatne przy obliczaniu takich danych jak czas potrzebny na pobranie zbioru danych w określonej liczbie zapytań na sekundę.

Repozytoria kodu geometrii S2

Skopiuj pierwsze te repozytoria, aby rozpocząć pracę z komórkami S2.

Tabele SS

Format pliku SSTable służy do efektywnego przechowywania, przetwarzania i wymiany zbiorów danych. SSSS to trwała, uporządkowana mapa z klucza na wartości, gdzie zarówno klucze, jak i wartości to dowolne ciągi bajtów.

Lokalizacje do odtwarzania

Ogólnie rzecz biorąc, lokalizacja to punkt geograficzny na mapie, ale z możliwością odtworzenia miejsce, w którym można umieszczać obiekty z gier w świecie rzeczywistym (czyli miejsca, w których pojawiają się punkty, np. nagrody).

Rodzaje miejsc, w których można grać

Wybrane

Wybrane lokalizacje demonstracyjne gier to punkty geograficzne powiązane z obiektami występującymi w określonych lokalizacjach. Reprezentują one lokalizacje ciekawych miejsc uzyskane z bazy danych Miejsc.

Wygenerowano

Jeśli nie ma wystarczającej liczby wybranych lokalizacji z możliwością odtworzenia, które spełniają Twoje kryteria, interfejs Playable Location API generuje dodatkowe lokalizacje. Te wygenerowane lokalizacje możliwe do odtworzenia to punkty geograficzne, które nie są powiązane z istniejącymi obiektami. Te punkty geograficzne są tworzone automatycznie i umieszczane losowo przy chodnikach, parkach, plażach, placach zabaw, placach miejskich i innych publicznie dostępnych obszarach.

Chodzi o to, aby zapewnić minimalną gęstość miejsc, w których można grać, z uwzględnieniem tych kryteriów:

Kryteria Przykład
Bezpieczeństwo graczy Nagrody w grze nie powinny pojawiać się na autostradach ani w bazach wojskowych.
Odpowiednie w grze Gracze nie powinni zakłócać cmentarzów ani miejsc kultu.

Właściwości odtwarzania

Poniżej omawiamy niektóre właściwości powiązane z obiektami z możliwością odtwarzania w implementacji Google, które mogą być przydatne dla deweloperów tworzących gry oparte na lokalizacji.

placeId,
Ciąg alfanumeryczny, który jednoznacznie identyfikuje lokalizację. Jest to identyfikator miejsca dla wybranych lokalizacji odtwarzania (np. Chlj79ZW1ohQwokRWPhGmWQ2K4). Możesz użyć wybranego przez siebie identyfikatora miejsca do grania, aby dołączyć do niej metadane związane z grą.
kod Plus Code
Kod Plus Code, który jednoznacznie identyfikuje wygenerowaną lokalizację odtwarzania. Kody plus to ciągi alfanumeryczne. Na przykład: 23CPRV2R+WG76. Możesz użyć kodu Plus Code wygenerowanej lokalizacji, aby dołączyć do lokalizacji metadane dotyczące gry.
typy
Tablica typów lokalizacji z możliwością odtwarzania (ciągi znaków), które określają typ odtwarzanej lokalizacji. Pierwszy typ w tablicach jest uważany za typ podstawowy. Możesz na przykład utworzyć plac zabaw, który zapewni zarówno rozrywkę, jak i rekreacja na świeżym powietrzu.
CenterPoint
Współrzędne geograficzne odpowiadające punktowi centralnemu lokalizacji. Punkt centralny służy do określenia, czy lokalizacja należy do danego obszaru.
snappedPoint
Współrzędne geograficzne odpowiadające lokalizacji są przyciągane do chodnika najbliższej drogi (jeśli znajdują się w jej pobliżu). Możesz wykorzystać punkt z przyczepem, aby umieścić obiekty w grach, gdy właściciele firm nie chcą, aby gracze w Twojej firmie grali w tę grę. Jeśli punkt przyciągania jest niedostępny, użyj punktu środkowego.
typ biomu
Jeśli znajduje się w biomie, jest to pole wypełnione co najmniej jedną wartością BiomeType. Przykładami biomów są lasy, mokradła lub obszary miejskie.

Struktura

Wybór punktów dla graczy

Wybieranie wybranych lokalizacji

Jak wspomnieliśmy wcześniej, wybrane miejsca to prawdziwe miejsca warte uwagi, które są odpowiednie do rozgrywki. Poniżej znajdziesz ogólny przegląd potoku danych (z kryteriami wyboru i filtrowania), którego można użyć do wygenerowania tych lokalizacji. Celem tego potoku jest wygenerowanie SStable z wyselekcjonowanymi lokalizacjami zapisanymi w S2CellIds, które mogą być później wpisane do bazy danych dla zapytań w czasie rzeczywistym dla lokalizacji Playable w danym regionie.

Zakładamy, że deweloper ma dostęp do funkcji mapy lub repozytorium miejsc, które oprócz geometrii wykluczonych regionów (gdzie lokalizacje Play nie powinny być częścią pakietu) są mapą kandydatów.

Potok działa w oparciu o połączone podejście do listy dozwolonych/blokowanych, w którym w pierwszej kolejności wybieramy wszystkie ważne miejsca pasujące do listy typów uznanych za odpowiednie do rozgrywki (np.kawiarnia, biblioteka, kwiaciarnia itp.), a w drugiej odfiltrowujemy wszystkie ważne miejsca należące do zbioru wykluczonych regionów. Wykluczone regiony są tworzone za pomocą geometrii (np. ramek ograniczających) zdefiniowanego wstępnie zestawu obiektów mapy, które zostały uznane za nieodpowiednie do grania w grę (np. bazy wojskowe lub cmentarze), by uzyskać Pokrycie S2. Pozwala to sprawdzić, czy któreś z wybranych miejsc docelowych S2 mieści się w wykluczonych regionach. Ostatni zestaw wybranych lokalizacji jest następnie indeksowany przez przekonwertowanie punktów centralnych na S2CellId na poziomie 30. Dzięki temu można wyszukiwać lokalizacje Playable w określonym zakresie.

Diagram potoku wybranych lokalizacji.

Wybieranie wygenerowanych lokalizacji

Jak wspomnieliśmy wcześniej, wygenerowane lokalizacje służą do uzupełniania lokalizacji w obszarach, na których w rzeczywistych miejscach nie ma wymaganej gęstości na potrzeby rozgrywki. Zgodnie z ogólną zasadą w każdym z komórek S1 na poziomie 16 (~0,02 km^2) powinno wystarczyć gęstość w przypadku gier z uwzględnieniem lokalizacji.

Te „losowe” obszary geograficzne można też generować za pomocą połączonych list dozwolonych i blokowanych. Lista dozwolonych to lista obiektów mapy, na których występuje możliwość generowania punktów (np.parków, chodników itp.), a listy zablokowanych to obszary, które mają zostać wykluczone (np.zbiorniki wodne, drogi samochodowe itp.). W obu przypadkach geometria cech mapy służy do generowania zasięgu S2 odpowiedniego obszaru i po połączeniu pokrywających się regionów, które są wykluczone, w celu wygenerowania ostatecznego zbioru obszarów kandydujących do wygenerowanych lokalizacji. Na ostatnim etapie „losowo” tworzymy punkty geograficzne w tych obszarach i zapisujemy je w tabeli SStable z wykorzystaniem identyfikatorów S2CellId na poziomie 30 reprezentujących punkty centralne. Jako identyfikatorów miejsc używane są generowane kody.

Schemat potoku wygenerowany.

Omówienie potoku lokalizacji

Jak już wspomnieliśmy, wyjściowe dwa potoki danych to 2 tabele obiektów SSPlayableLocation zindeksowanych za pomocą S2CellIds na poziomie 20. Pliki te mogą być ładowane do dowolnego magazynu uporządkowanej pary klucz-wartość, aby można je było wyszukiwać zbiorczo. Jednym z rozwiązań jest rozproszona baza danych SQL Google.

Schemat potoku klucz-wartość uporządkowanej według lokalizacji.

Biomy

Biomamy społeczność roślin i zwierząt, które mają wspólne cechy środowiska. Biomy powstają w odpowiedzi na wspólny klimat. Przykładami biomów są lasy, mokradła lub obszary miejskie.

Jeśli w biomie znajduje się lokalizacja, którą można odtworzyć, pole biomeType może zawierać jedną lub więcej wartości BiomeType.

Za pomocą informacji o biomach możesz umieszczać na mapie różne typy obiektów gier. Jeśli na przykład pole biomu zawiera wartość trawy, może to oznaczać inne stworzenie niż wartość pola miasto.

Poniżej opisano proces dodawania informacji biomu do lokalizacji z możliwością odtwarzania w ramach potoku powyższego Lokalizacje. Earth Engine Google ma wiele zbiorów danych obejmujących tereny, takich jak lasy, łąki i woda, które mogą być wykorzystywane do pozyskiwania informacji biomowych. Aby dodać informacje dotyczące biomu, wykonaj te czynności:

  • selekcjonowanie danych zawierających informacje biometyczne lub geolokalizacyjne;
  • Przypisz biomę jako atrybut do istniejących lokalizacji z możliwością odtwarzania na podstawie ich geolokalizacji. Zwykle można to zrobić za pomocą połączenia przestrzennego. Jeśli na przykład informacje dotyczące biomu są dostępne w komórce S2 na poziomie 17, a lokalizacje do odtworzenia są indeksowane przy użyciu numeru S2CellId na poziomie 30, połączenie może mieć takie działanie:
    1. Zmapuj lokalizacje, w których można odtwarzać treści, na ich komórki S2 na poziomie 17: PlayableLocation.s2CellId.parent(17)
    2. Dołącz do Biome S2CellIds na poziomie 17
  • Jeśli to możliwe, wyświetlaj lokalizację odtwarzania z atrybutem biome.

Repozytorium biomu przedstawiające diagramy z możliwością odtwarzania.

Wysyłanie zapytań o lokalizacje do odtwarzania

Jeśli zastosujesz się do powyższych zaleceń i zindeksujemy lokalizacje z możliwością odtwarzania za pomocą S2CellIds na poziomie 30 (zobacz Bibliotekę S2, aby przekonwertować z LaLng na identyfikator komórki), możemy przeprowadzić skanowanie w zakresie, aby pobrać wszystkie lokalizacje możliwe do odtworzenia w danym regionie.

Przykładowe zapytanie:

Jeśli chcemy pobrać wszystkie lokalizacje z możliwością odtworzenia znajdujące się w komórce S2Cell na poziomie 12 (~5 km^2), możemy przesłać takie zapytanie:

S2CellId: 0x89c2599000000000 Minim zakresu: 0x89c2598000000001 (s2CellId.rangeMin().id()) Range Max: 0x89c2599VPAIDfff (s2CellId.rangeMax().id())

SELECT * FROM PlayableLocations
WHERE S2CellId BETWEEN 0x89c2598000000001 AND 0x89c2599fffffffff;

Odstępy

Biblioteka S2 może być jeszcze przydatna do kontrolowania układu lokalizacji gier. Poziomy S2 są hierarchiczne, więc każda komórka na poziomie 14 zawiera 4 komórki na poziomie 15 itd. (patrz Statystyki komórek S2). Możesz ich używać podczas umieszczania obiektów w grze. Możesz na przykład mieć jedną „potwora” na komórkę z poziomem 14 oraz aby rozdzielić 64 „klejnoty” w tym samym obszarze i umieścić 1 „biżuterię” w każdej komórce poziomu 17 (każda komórka 14 ma 64 komórki 17).

Interakcje z zapytaniami i buforowaniem

Zalecany przepływ logiczny między klientem gry, serwerem gry, bazą danych stanów gry i bazą danych lokalizacji gry jest przedstawiony na tym diagramie sekwencyjnym. Możesz połączyć stan gry i możliwe do odtworzenia lokalizacje w jednej bazie danych, ale aby zachować ich przejrzystość, musisz je rozdzielić.

Schemat zapytań i lokalizacji zapisu w pamięci podręcznej.

Nieprawidłowe raportowanie lokalizacji

Poniżej opisujemy proces zbierania opinii o jakości miejsc w grze, w których można grać, pozwalając graczom zgłaszać lokalizacje, w których nie można korzystać. Raporty te mogą być przetwarzane w potoku danych i używane do usuwania nieprawidłowych lokalizacji z bazy danych lokalizacji odtwarzania.

Zalecamy zaimplementowanie raportów o złej lokalizacji w następujący sposób:

  • Utwórz punkt wejścia po stronie klienta (mobilny lub internetowy), w którym gracze będą mogli zgłaszać deweloperom błędy w strukturze.
  • utworzyć potok danych do przetwarzania wszystkich odebranych raportów i generowania sygnałów, które pomogą Ci sklasyfikować poszczególne lokalizacje pod kątem problemów;
  • Zależnie od rzeczywistego przypadku może być używany czysty model ML lub hybrydowy model ML + rozwiązanie ludzkie, aby usunąć nieodpowiednie lokalizacje z PlayableLocationsDB.

Schemat raportowania nieprawidłowej lokalizacji.

Oto zestaw przykładowych kryteriów, których można użyć do określenia, czy lokalizacja z możliwością odtworzenia jest nieprawidłowa:

Kryteria Przykład
Niebezpieczne
  • Możliwość gry to 50 metrów od krawędzi klifu.
  • Możliwość grania znajduje się na środku głównej arterii lub w pobliżu ruchu szybko się przemieszczającego.
Miejsca niedostępne publicznie
  • Instytucje państwowe z ograniczonym dostępem. Może to być na przykład baza wojskowa.
Niedostępny
  • Obszary ogrodzone.
  • Znane obiekty w wodzie.
Chwilowo niedostępny
  • Lokalizacje zamknięte z powodu remontu.
  • Lokalizacje, które są zamknięte sezonowo.
  • Drogi zamknięte na potrzeby naprawy dłużej niż tydzień.
Wrażliwa kulturowo
  • Cmentarze.
  • Miejsca kultu.