Ten dokument zawiera odpowiedzi na najczęstsze pytania dotyczące pakietów SDK i publikowania gier w Gry Google Play na PC.
Jak dodać VPN?
Deweloperom, którzy chcą przetestować swoją grę w regionach, w których Gry Google Play na PC nie są obsługiwane, zalecamy użycie sieci VPN, aby uzyskać adres IP z obsługiwanego regionu.
Upewnij się, że w sieci VPN włączony jest tryb TUN. Wskazówki dotyczące włączania trybu TUN i konfigurowania zapory sieciowej znajdziesz w instrukcji obsługi dostawcy sieci VPN.
Po włączeniu trybu TUN zainstaluj Gry Google Play na PC i emulator na potrzeby testów.
Czy można korzystać z procesu zakupu bez serwera backendu?
Z punktu widzenia bezpieczeństwa przetwarzanie bez serwera backendu jest na ogół niezalecane.
Więcej informacji znajdziesz w artykule Przetwarzanie bez serwera backendu.
Jak rozpocząć tworzenie gier na PC w Grach Google Play w Unity lub edytorze UE?
- Włącz tryb programisty i przeprowadź testy.
- Dodaj pliki
manifest.xmli.dll. Więcej informacji znajdziesz w dokumencie dla deweloperów. - Zarejestruj identyfikator GUID partnera w ramach wcześniejszego dostępu na potrzeby testów.
Czy po uruchomieniu gry w aplikacji Gry Google Play synchronizowane są dane konta Google?
Po uruchomieniu gry za pomocą klienta Gry Google Play konto jest automatycznie synchronizowane i nie trzeba ponownie logować się za pomocą procesu logowania Google.
Czy podczas przesyłania pakietu aplikacji dla systemu Windows (WAB) za pomocą launchera innej firmy wymagany jest pakiet gry do sprawdzenia?
Możesz przesłać tylko instalator, a nie cały pakiet gry. Osoba sprawdzająca będzie mogła pobrać pakiet gry za pomocą instalatora.
Czy jeśli gracz używa launchera innej firmy zamiast klienta Google Play, jego konto w usługach gier Play będzie się automatycznie synchronizować?
Aby funkcje pakietu SDK działały, grę należy uruchamiać bezpośrednio w aplikacji Gry Google Play. Jeśli grę uruchamia inny proces, np. instalator lub aplikacja uruchamiająca, to ten proces musi być uruchamiany z klienta Gier Google Play. Gra musi przekazywać wszystkie parametry otrzymane od klienta do procesu klienta.
Jak pakiet SDK obsługuje logowanie się na konto Google w przypadku wielu instancji lub kont?
Każde uruchomienie gry w Gry Google Play jest traktowane jako „sesja gry” i każda „sesja gry” może być powiązana z kontem. Mogą się różnić. Jeśli więc uruchomisz grę na koncie A, a potem przełączysz się na konto B i ponownie uruchomisz grę, obie będą działać jednocześnie.
Czy istnieją ograniczenia dotyczące rozmiaru pliku WAB (Windows App Bundle)?
W przypadku aplikacji WAB możesz przesłać plik o rozmiarze do 10 GB.
Czy po zintegrowaniu pakietu SDK do Gier Google Play na PC można nadal korzystać z dotychczasowych systemów płatności opartych na interfejsach API?
Wszystkie płatności muszą być obsługiwane przez pakiet SDK Gier Google Play na PC przy użyciu Płatności w Google Play. Nie możesz używać w tej samej grze dotychczasowej formy płatności opartej na interfejsie API.
Czy istnieją środowiska testów otwartych lub zamkniętych podobne do środowiska mobilnego?
Obecnie nie jest dostępna dedykowana piaskownica kompleksowa, ale zdajemy sobie sprawę, że deweloperzy potrzebują środowiska testowego podobnego do środowiska produkcyjnego. Wkrótce udostępnimy bardziej zaawansowane rozwiązanie.
Nie możemy prawidłowo przetwarzać zakupów zainicjowanych w trybie deweloperskim.
Zakup w trybie deweloperskim musi zostać skonsumowany w ciągu 3 minut, w przeciwnym razie może zostać zwrócony.
Czy są jakieś różnice między interfejsem API (starsza wersja) a pakietem SDK do Gier Google Play na PC?
- Starsza wersja skupia się tylko na płatnościach
- Pakiet SDK będzie obsługiwać usługę Google Desktop Service (GDS) i pełne funkcje komputera.
- Przyjazny dla programistów interfejs SDK
- Nie musisz logować się w Google w przeglądarce
Czy istnieje alternatywny sposób inicjowania pakietu SDK przez bezpośrednie uruchomienie gry za pomocą programu uruchamiającego gry, bez korzystania z Gier Google Play na PC?
Grę należy uruchomić za pomocą klienta Gier Google Play na PC. Więcej informacji znajdziesz w dokumencie dla deweloperów.
Płatności cykliczne i subskrypcje nie są obsługiwane. Czy planujecie wprowadzić tę funkcję?
Nie planujemy dodawania innych opcji zakupu poza zakupami w aplikacji. Chętnie poznamy Twoją opinię na temat konkretnych przypadków użycia.
Czy billingerror występuje w wyniku rozpoczęcia procesu zakupu czy wyniku płatności?
Jest to odpowiedź z wynikiem płatności. Funkcja LaunchPurchaseFlow zwróci wartość natychmiast, nie blokując działania aplikacji, ale musisz nasłuchiwać wywołania zwrotnego, aby wiedzieć, kiedy się zakończyło, i przechwycić wynik.
Czy można utworzyć skrót, który będzie bezpośrednio otwierać grę?
Aby otworzyć grę bezpośrednio, możesz użyć tego identyfikatora URI:
googleplaygames://launch/?pid=2&id=com.company.gamename
Identyfikator URI obsługuje wykrywanie, czy klient Gier Google Play na PC jest otwarty. Jeśli klient nie jest otwarty, przed uruchomieniem gry lub programu uruchamiającego otworzy się klient Gier Google Play. Musisz zarządzać grą lub programem uruchamiającym, aby zapobiec uruchamianiu wielu instancji.
QueryProductDetails Limity żądań do interfejsu API
Maksymalna liczba produktów, o które można zapytać w ramach jednego wywołania interfejsu API QueryProductDetails, wynosi 50. Jeśli przekroczysz ten limit, musisz podzielić żądanie na kilka wywołań.
Dlaczego moja gra nie instaluje się ani nie pojawia po przesłaniu pierwszego pakietu aplikacji na Windowsa (WAB)?
Jeśli Twoja gra jest wprowadzana bez istniejącej wcześniej wersji na PC („pierwsza gra WAB”), system może automatycznie umieścić ją w stanie wstrzymania publikacji zarządzanej. Dzieje się tak, ponieważ nie ma istniejącej wartości bazowej, którą można by zaktualizować. Aby w pełni opublikować WAB i umożliwić instalację gry, musisz przejść do Konsoli Google Play i ręcznie wykonać wymagane działanie związane z publikowaniem (np. kliknąć „Opublikuj zmiany”).
Jak obsługujesz inicjowanie, jeśli Gry Google Play uruchamiają program uruchamiający grę innej firmy?
Nie musisz integrować pakietu SDK bezpośrednio z programem uruchamiającym. Musisz jednak przekazać wszystkie argumenty wiersza poleceń otrzymane przez program uruchamiający od klienta Gier Google Play bezpośrednio do utworzonego procesu podrzędnego (pliku wykonywalnego gry). Jeśli inicjowanie się nie powiedzie (np. zwróci wartość kActionRequiredShutdownClientProcess), wszystkie procesy, w tym program uruchamiający, muszą zostać zakończone, aby Gry Google Play mogły spróbować automatycznie przywrócić i ponownie uruchomić grę. Więcej informacji znajdziesz w kroku 5 w przewodniku konfiguracji.
Czy błąd przekroczenia limitu czasu jest zamierzony, jeśli użytkownik zamknie przeglądarkę bez dokonania płatności podczas procesu zakupu?
Tak, jest to znany problem i zamierzone działanie w obecnym procesie opartym na przeglądarce. Google aktywnie pracuje nad funkcją płynnego zakupu (opartą na WebView), która utrzyma proces płatności w grze i rozwiąże problem z przekroczeniem limitu czasu.
Czy natywny pakiet SDK na PC obsługuje znaki wielobajtowe w pliku certyfikatu (PEM)?
Tak, pakiet SDK obsługuje znaki wielobajtowe na potrzeby certyfikacji.
Jakie parametry są wymagane podczas wywoływania funkcji BillingClient::QueryPurchases lub BillingClient::LaunchPurchaseFlow?
Funkcja akceptuje QueryPurchasesContinuation, czyli wywołanie zwrotne funkcji o sygnaturze std::function<void(QueryPurchasesResult)>. Wywołanie zwrotne przekazuje Ci wynik ze wszystkimi wartościami ProductPurchaseDetails. Te informacje są dostępne w plikach nagłówkowych pakietu SDK w pliku includes/billing/models.h.
Wynikowy obiekt launch_purchase_flow_result ma funkcje ok() i code().
Funkcja ok() zwraca informację, czy automatyzacja została uruchomiona. Funkcja code()zwraca wyliczenie BillingError (includes/billing/enums.h), które ma 10 możliwych przypadków błędów, takich jak anulowanie przez użytkownika lub błąd sieci.
Czy wywołanie funkcji BillingClient::LaunchPurchaseFlow() obsługuje przekazywanie niestandardowego numeru zamówienia?
W obecnej wersji pakietu SDK nie ma możliwości przekazania własnego ładunku.
Możesz jednak podać dowolną kombinację obfuscated_account_id i obfuscated_profile_id. Możesz nie podawać żadnej z nich, tylko jedną lub obie.
Pole offer_token jest wymagane i określa ofertę zakupu, którą użytkownik próbuje kupić w procesie płatności. Obecnie każdy kod SKU w Google Play ma dokładnie 1 ofertę (np. kup 1 produkt za 10 PLN). W przyszłości zespół ds. płatności w Google Play będzie obsługiwać wiele ofert.
Aby mieć pewność, że metadane są powiązane w przypadku przerw w procesie zakupu, przed wyświetleniem okna zakupu zapisz metadane na serwerze backendu i powiąż je z identyfikatorem konta użytkownika, kupowanym kodem SKU i bieżącą sygnaturą czasową. Więcej informacji znajdziesz w artykule Łączenie zakupu z danymi wewnętrznymi.
Czy integracja z Play Install Referrer działa?
Najnowsza wersja pakietu SDK (25.5.409.0 i nowsza) obsługuje interfejs Play Install Referrer API. Więcej informacji znajdziesz w dokumentacji interfejsu Play Install Referrer API.
Czy użytkownik musi logować się osobno w przypadku każdej gry, aby dokonać zakupu?
Konto pierwszoplanowe w Grach Google Play jest używane w przypadku każdej sesji gry, więc nie musisz logować się ponownie. Konto, którego używasz w Grach Google Play, gdy rozpoczyna się sesja gry, to konto, z którego są wysyłane wywołania interfejsu API. Gdy uruchamiasz proces zakupu w przeglądarce, musisz być zalogowany(-a) i używać tego samego konta co w sesji gry. Jeśli użytkownik jest zalogowany na inne konto, kreator internetowy poprosi go o przełączenie kont.
Jakie warunki trzeba spełnić, aby przejść z rozliczeń Google z OAuth na natywne rozliczenia Google z DLL?
Gry mogą nadal używać logowania przez Google za pomocą protokołu OAuth do zarządzania zalogowanym kontem, ale Google zaleca zaprzestanie korzystania ze starszych interfejsów API do rozliczeń REST. Przejście z interfejsów API rozliczeń REST (z logowaniem OAuth2) na przepływ SDK może być operacją oznaczoną flagą funkcji, więc oba mogą współistnieć przez pewien czas, podczas którego gra będzie się przełączać.
Czy interfejs Payment Request API (LaunchPurchaseFlow) jest przetwarzany w przeglądarce?
Tak, na razie jest przetwarzana w przeglądarce. Google planuje umożliwić przeprowadzenie całego procesu bez opuszczania gry za pomocą pakietu SDK.
Czy można wielokrotnie używać parametrów inicjowania?
Jest to możliwe, o ile klient Gry Google Play jest uruchomiony, a informacje logowania są prawidłowe. Jednak w scenariuszach takich jak opisany w przewodniku wszystkie procesy uruchomione przez grę muszą zostać zakończone, gdy użytkownik zamknie grę lub gra zostanie zamknięta z powodu błędu inicjowania pakietu SDK, np. kActionRequiredShutdownClientProcess.
Czy zamiast HKEY_LOCAL_MACHINE można używać kluczy rejestru w HKEY_CURRENT_USER?
Klucze rejestru należy tworzyć na podstawie gałęzi głównej. Możesz ustawić główny
klaster jako HKEY_LOCAL_MACHINE lub HKEY_CURRENT_USER w zależności od celu i rodzaju danych. W wytycznych jako przykładu używamy HKEY_LOCAL_MACHINEroju.
Czy gra może jednocześnie obsługiwać natywny pakiet SDK i starsze systemy płatności?
System płatności działa w modelu dwukierunkowym w zależności od wersji binarnej gry. Użytkownicy korzystający ze starszych wersji będą nadal korzystać z dotychczasowego procesu, a użytkownicy korzystający z nowych wersji przejdą na płatności oparte na pakiecie SDK. W okresie przejściowym użytkownicy korzystający z obu sposobów płatności będą współistnieć.
Jak przesłać plik WAB na potrzeby testów wewnętrznych?
Udostępnij konta z listy dozwolonych firmie Google, aby mogła ona włączyć je do testów wewnętrznych. Gdy Google otrzyma listę, upewni się, że te osoby zostaną uwzględnione w procesie wprowadzania.
Gdzie dodajesz nowych testerów?
Osoba kontaktowa w Google tworzy grupę e-mailową dla każdego projektu PC, do której należy dodać konta Google testerów. Tylko członkowie tej grupy e-mailowej mogą pobierać pakiety testowe w Gry Google Play.
Gdzie należy przesłać oficjalny pakiet na komputery przed formalnym wprowadzeniem na rynek?
Pakiet WAB możesz przesłać w lokalizacji podanej w odpowiedzi na pierwsze pytanie. Nie możesz jednak opublikować go ręcznie. Musisz podać pracownikom zaplecza Google dokładny czas UTC (z dokładnością do godziny). Google skonfiguruje harmonogram publikacji i dopilnuje, aby została ona opublikowana na czas.
Jak obsługujesz ulepszenia i konserwację po oficjalnym wprowadzeniu na rynek?
Kolejne uaktualnienia i konserwacje muszą być przeprowadzane za pomocą programu uruchamiającego. Klient Gier Google Play nie obsługuje funkcji aktualizacji, więc program uruchamiający musi mieć możliwość aktualizowania zarówno gry, jak i samego siebie.
Jakie są wymagania dotyczące weryfikacji pakietów na PC przez Google?
Pakiety na PC są skanowane pod kątem złośliwego oprogramowania, a następnie testerzy sprawdzają tylko instalację gry, jej uruchomienie i odinstalowanie.
Czy muszę zintegrować wszystkie interfejsy API?
Inne interfejsy API nie są wymagane, ale oferują dodatkowe korzyści.
google::play::billing jest wymagane w przypadku zakupów w aplikacji i sprzedaży treści cyfrowych. google::play::games::recall jest wymagany do śledzenia danych o skierowaniach, aby pomóc Ci zrozumieć, które źródła ruchu wysyłają najwięcej użytkowników do pobrania Twojej aplikacji. google::play::games::integrity jest wymagany do ochrony aplikacji przed nieuczciwymi podmiotami poprzez wykrywanie potencjalnie ryzykownych urządzeń i nieznanych emulatorów.
Dlaczego niektóre procesy gry są zamykane po zamknięciu klienta Gier Google Play, a inne nie?
Google nie kontroluje podprocesów ani procesów działającej gry. Działanie zależy od tego, czy gra jest emulowaną grą na Androida czy natywną grą na PC. Emulowane gry są instalowane w osobnym środowisku, więc ich działanie zależy w dużej mierze od inicjowania i zamykania emulatora.
Czy należy użyć funkcji odinstalowywania Gier Google Play, czy niestandardowego instalatora?
Google zaleca korzystanie z funkcji odinstalowywania Gier Google Play.