Interfejs Playable Location API udostępnia kolekcje wybranych i wygenerowanych punktów geograficznych (lokalizacji demonstracyjnych gier). Każda lokalizacja, którą można wykorzystać w grze, jest wybierana przez Google na podstawie jej przydatności w grach opartych na lokalizacji, takich jak punkty serwisowe czy nagrody w grze.
Niektóre chętnie odwiedzane przez Ciebie miejsca znajdują się w pobliżu ciekawych miejsc, ale znajdują się przy chodnikach wzdłuż jezdni, a inne losowo znajdują się na terenie parków, placów zabaw, miejskich placów i innych publicznie dostępnych obszarów.
W tym dokumencie omawiamy sposób implementacji interfejsu API, tak aby deweloperzy zewnętrzni mogli wykorzystać własne pojęcia do generowania własnych zestawów możliwych do odtworzenia miejsc przy użyciu alternatywnego źródła danych.
Wprowadzenie
W tej sekcji znajdziesz omówienie używanych bibliotek pomocy i zapoznasz się z podstawowymi pojęciami dotyczącymi lokalizacji, w których można grać.
Biblioteki pomocy
W tym przewodniku są używane te biblioteki pomocy.
Biblioteka | Description |
Geometria S2 | Elastyczna obsługa indeksowania przestrzennego. |
Bufory protokołu | Elastyczne i uniwersalne metody seriowania uporządkowanych danych neutralnych pod względem języka i platformy do użytku na potrzeby protokołów komunikacji, przechowywania danych i innych elementów. |
Biblioteka geometryczna S2
Biblioteka geometryczna S2 to system informacji geograficznych, który reprezentuje dane w trójwymiarowej sferze. Biblioteka zawiera te funkcje:
- Obsługa indeksowania przestrzennego.
- Dzięki temu możesz wybierać dowolne obszary jako zbiory odrębnych komórek S2.
- Szybkie indeksowanie przestrzenne w pamięci kolekcji punktów, linii łamanych i wielokątów.
- Trwałe operacje konstrukcyjne (np. skrzyżowanie, związki i uproszczenie) oraz predykcje logiczne (np. testowanie pod kątem obecności izolacji).
- Efektywne wykonywanie zapytań dotyczących znajdowania obiektów w pobliżu, mierzenia odległości i obliczania centroidów.
- Zbiór środków matematycznych do testowania związków między prymitywami geometrycznymi.
- Przyciągnij zaokrąglenie.
Statystyki komórki S2
Statystyki komórki S2 przydają się do obliczeń, takich jak czas potrzebny na pobranie zbioru danych przy określonej liczbie zapytań na sekundę.
Repozytoria kodu geometrycznych S2
Skopiuj dowolne te repozytoria, aby zacząć korzystać z komórek S2.
Tabele SS
Format pliku SSTable służy do efektywnego przechowywania, przetwarzania i wymiany zbiorów danych. SSTable zapewnia trwałą, nieuporządkowaną mapę z kluczy do wartości, gdzie zarówno klucze, jak i wartości to dowolne ciągi bajtów.
Lokalizacje do odtwarzania
Ogólnie lokalizacja to punkt geograficzny na mapie, ale z rozgrywką to miejsce, w którym można umieszczać obiekty gier w prawdziwych grach (czyli np. jako punkty pojawiania się nagród).
Rodzaje lokalizacji gier
Wyselekcjonowane
Wybrane lokalizacje demonstracyjne gier to punkty geograficzne powiązane z obiektami występującymi w określonych lokalizacjach. Są to lokalizacje ciekawych miejsc z bazy danych Miejsc.
Wygenerowane
Jeśli nie ma wystarczającej liczby wybranych lokalizacji docelowych, aby można było spełnić kryteria, interfejs Playable Location API generuje dodatkowe lokalizacje. Są to generowane przez Ciebie lokalizacje geograficzne, które nie są powiązane z istniejącymi obiektami. Te punkty geograficzne są tworzone automatycznie i umieszczone losowo przy chodnikach, parkach, plażach, placach zabaw, placach miejskich i innych publicznie dostępnych miejscach.
Celem jest zapewnienie co najmniej gęstości gier, 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 dla graczy | Gracze nie powinni przeszkadzać w korzystaniu z cmentarzy ani miejsc kultu. |
Właściwości lokalizacji grywalnej
Poniżej omawiamy niektóre właściwości powiązane z obiektami z możliwością odtworzenia w implementacji Google, które mogą być przydatne dla deweloperów tworzących gry oparte na lokalizacji.
- identyfikator miejsca
- Ciąg alfanumeryczny, który jednoznacznie identyfikuje lokalizację. Jest to identyfikator miejsca dla wybranych lokalizacji odtwarzania (na przykład Chlj79ZW1ohQwokRWPhGmWQ2K4). Możesz użyć wybranego przez siebie identyfikatora miejsca gry, aby dołączyć do niej metadane dotyczące gry.
- kod Plus Code
- Kod Plus Code jednoznacznie identyfikująca wygenerowaną lokalizację odtwarzania. Kody plus to ciągi alfanumeryczne. Na przykład 23CPRV2R+WG76. Za pomocą wygenerowanego kodu plusa lokalizacji możesz dołączyć do niej metadane dotyczące gry.
- typy
- Tablica typów lokalizacji odtwarzania (ciągi znaków), które określają typ odtwarzanej lokalizacji. Pierwszy typ tablicy jest uważany za typ podstawowy. Możesz na przykład ustawić jako lokalizację docelową zarówno rozrywkę, jak i rekreacja na świeżym powietrzu.
- CenterPoint
- Współrzędne geograficzne odpowiadające centralnemu punktowi lokalizacji. Punkt centralny określa, czy lokalizacja znajduje się na obszarze zainteresowań.
- snappedPoint
- Współrzędne geograficzne odpowiadające lokalizacji przyciągnięte do chodnika najbliższej drogi (jeśli istnieje droga w pobliżu). Możesz wykorzystać obiekt „snapped” do umieszczania obiektów w grze, jeśli właściciele firm nie chcą, aby gracze używali w siedzibie firmy. Jeśli punkt przyciągania jest niedostępny, użyj punktu centralnego.
- typ biome
- Jeśli w biomie znajduje się lokalizacja możliwa do odtworzenia, to pole jest wypełniane co najmniej 1 wartością BiomeType. Są to na przykład lasy, mokradła i tereny miejskie.
stylu,
Wybór punktów dla graczy
Wybieranie wybranych lokalizacji
Jak już wspomnieliśmy, wybrane miejsca są rzeczywistymi miejscami ciekawymi, które nadają się do rozgrywki. Poniżej znajdziesz ogólne omówienie 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 na kluczach S2CellId, które mogą być później wprowadzane do bazy danych na potrzeby zapytań w czasie rzeczywistym dotyczących lokalizacji odtwarzania w danym regionie.
Zakładamy, że oprócz lokalizacji geograficznej wykluczonych obszarów deweloper ma dostęp do funkcji mapy lub repozytorium miejsc, które zawiera oprócz tego geometrię wykluczonych regionów, w których nie powinno być lokalizacji odtwarzania.
Potok działa w oparciu o połączone listy dozwolonych/blokowanych miejsc, gdzie w jednej fazie wybieramy wszystkie ważne miejsca pasujące do listy dozwolonych typów gier (na przykład kawiarnię, bibliotekę, kwiaciarnię itp.), a w drugim odfiltrowujemy wszystkie ważne miejsca należące do wykluczonych regionów. Wykluczone regiony są tworzone za pomocą geometrii (np. ramek ograniczających) wstępnie zdefiniowanego zestawu funkcji mapy, które są uważane za nieodpowiednie do grania w grę (np. baz wojskowych lub cmentarzy), aby wygenerować Pokrycie S2. Następnie można użyć osłon S2, aby sprawdzić, czy któreś z wybranych ważnych miejsc znajduje się w wykluczonych regionach, a jeśli tak, odfiltrować je. Ostatni zestaw wybranych lokalizacji jest następnie indeksowany przez przekonwertowanie punktów środkowych na S2CellId na poziomie 30. To pozwala wyszukiwać oparte na zakresach lokalizacje odtwarzania w określonym regionie.
Wybieranie wygenerowanych lokalizacji
Jak już wspomnieliśmy, wygenerowane lokalizacje są używane do uzupełniania lokalizacji odtwarzania w obszarach, w których prawdziwe miejsca nie mają wymaganej gęstości dla gier. Zgodnie z ogólną zasadą w przypadku wszystkich 1 lokalizacji z możliwością odtwarzania w każdej komórce S1 na poziomie 16 (~0,02 km^2) powinna być wystarczająca gęstość w przypadku gier opartych na lokalizacji.
Te „losowe” punkty geograficzne są również generowane z wykorzystaniem połączonej listy dozwolonych i blokad. Lista dozwolonych to lista obiektów mapy, na których może generować punkty (np.parki, chodniki itp.), a listy zablokowanych to obszary, które należy wykluczyć (np.zbiorniki wodne, drogi dla pojazdów silnikowych itp.). W obu przypadkach geometria cech mapy jest używana do generowania zasięgu S2 dla odpowiednich obszarów, a po połączeniu dwóch zbiorów nakłada się wykluczone regiony w celu wygenerowania ostatecznego zestawu obszarów kandydujących do wygenerowanych lokalizacji. Ostatnim etapem jest „losowe” generowanie punktów geograficznych znajdujących się w tych obszarach i zapisywanie ich do SStable zindeksowanego za pomocą identyfikatorów S2CellId na poziomie 30 reprezentujących punkty środkowe. Jako wygenerowane identyfikatory wygenerowane kody są używane.
Przegląd potoku lokalizacji
Jak wspomniano powyżej, dane wyjściowe poprzednich 2 potoków danych są 2 tabelami SSTable obiektów PlayableLocation zindeksowanych za pomocą S2CellIds na poziomie S2 30. Pliki te można wczytać do dowolnego uporządkowanego magazynu par klucz-wartość, aby przeprowadzić ich indeksowanie przestrzenne. Jedną z opcji jest rozproszona baza danych SQL Spanner opracowana przez Google.
Biomy
Biogram to społeczność roślin i zwierząt, które mają wspólne cechy środowiska. Biomaty powstają w odpowiedzi na wspólny klimat. Są to na przykład lasy, mokradła i tereny miejskie.
Gdy w biomie znajduje się lokalizacja demonstracyjna gry, pole biomeType może zawierać co najmniej 1 wartość BiomeType.
Korzystając z danych biomu, możesz umieszczać na mapie różne typy obiektów w grze. Jeśli na przykład pole biomu zawiera wartość trawiastą, oznaczałoby to, że stworzenie miało inny typ niż stworzenie o wartości podmiejska.
Poniżej opisujemy proces dodawania informacji biome do lokalizacji z możliwością odtwarzania w ramach procesu Lokalizacje opisanego powyżej. Earth Engine Google ma wiele zbiorów danych pokrywy lądowej z klasami informacyjnymi, takimi jak lasy, łąki i woda, których można używać do pozyskiwania informacji o biomie. Aby dodać informacje dotyczące biomu, zalecamy wykonanie tych czynności:
- Wybierz dane, które zawierają informacje dotyczące biomu i geolokalizacji.
- Przypisz biomę jako atrybut do istniejących lokalizacji demonstracyjnych gier opartych na ich geolokalizacji. Zwykle można to zrobić za pomocą połączenia przestrzennego.
Jeśli na przykład informacje dotyczące Biome są dostępne na poziomie komórki S7, a informacje o możliwych lokalizacjach są indeksowane za pomocą ich identyfikatorów S2CellId na poziomie 30, złączenie może wyglądać tak:
- Zmapuj możliwy do odtworzenia lokalizacje na komórki S2 na poziomie 17: PlayableLocation.s2CellId.parent(17)
- Dołącz za pomocą Biome S2CellIds na poziomie 17
- Udostępniaj lokalizację gry razem z atrybutem biome, jeśli jest dostępny.
Wysyłanie zapytań dotyczących lokalizacji odtwarzania
Jeśli zastosujesz się do powyższych zaleceń, a my zindeksujemy lokalizacje za pomocą S2CellIds na poziomie 30 (zobacz bibliotekę S2, aby przekonwertować z LaLng na identyfikator komórki), możemy wykonać skanowanie w zakresie, aby pobrać wszystkie lokalizacje odtwarzania w danym regionie.
Przykładowe zapytanie:
Jeśli chcemy pobrać wszystkie lokalizacje demonstracyjne gier znajdujące się w komórce S2Cell na poziomie 12 (~5 km^2), możemy wysłać to zapytanie:
S2CellId: 0x89c2599000000000 Minim zakresu: 0x89c2598000000001 (s2CellId.rangeMin().id()) Range Max: 0x89c2599')}>fff (s2CellId.rangeMax().id())
SELECT * FROM PlayableLocations
WHERE S2CellId BETWEEN 0x89c2598000000001 AND 0x89c2599fffffffff;
Odstępy
Biblioteka S2 może być przydatna do kontrolowania gęstości odtwarzania treści w grze. Poziomy S2 są hierarchiczne, dlatego każda komórka na poziomie 14 zawiera 4 komórki na poziomie 15 itd. (patrz Statystyki komórek S2). Tych właściwości można używać podczas umieszczania obiektów w grze. Możesz na przykład mieć 1 „potwora” na komórkę w poziomie 14, aby rozłożyć 64 biżuterię w tym samym obszarze i umieścić w każdej komórce 17 biżuterii (każda komórka 14 zawiera 64 komórki poziomu 17).
Interakcje z zapytaniami i buforowaniem
Zalecany przepływ logiki między klientem, serwerem gry, bazą danych stanów gry i bazą danych lokalizacji gry jest przedstawiony na poniższym diagramie sekwencji. Pamiętaj, że możliwe jest połączenie stanu gry i lokalizacji gry w jedną bazę danych, ale aby zachować przejrzystość, zachowaj je tutaj.
Zgłaszanie nieprawidłowej lokalizacji
Poniżej opisujemy proces zbierania opinii o jakości lokalizacji w grze, na podstawie których użytkownicy mogą zgłaszać lokalizacje, w których nie można ich używać. Raporty te mogą być przetwarzane w potoku danych i używane do usuwania nieprawidłowych lokalizacji z bazy danych lokalizacji odtwarzania.
Zalecamy wdrożenie raportów o niewłaściwej lokalizacji. W tym celu wykonaj te czynności:
- Stwórz punkt wejścia po stronie klienta (mobilny lub internetowy), w którym gracze będą mogli zgłaszać deweloperom gry nieuczciwe raporty.
- Zbudowanie potoku danych służącego do przetwarzania wszystkich odebranych raportów i generowania sygnałów w celu klasyfikowania złej lokalizacji.
- W zależności od rzeczywistego przypadku użycia do moderacji może być używany sam model ML lub rozwiązanie hybrydowe z modelem ML + ludzi, aby usunąć nieodpowiednie lokalizacje z PlayableLocationsDB.
Oto zestaw przykładowych kryteriów, dzięki którym można ustalić, czy lokalizacja z możliwością odtworzenia jest błędna:
Kryteria | Przykład |
Niebezpieczne |
|
Miejsca niedostępne publicznie |
|
Niedostępny |
|
Chwilowy brak dostępu |
|
Poufne treści |
|