Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy dla początkujących
Treść artykułu
"Nieznany problem z usługami Google Play" dla GM:S 1.4
autor: Threef (4.03.16) | czas czytania: 4 minuty, 14 sekund
Prawie wszystkie zewnętrzne API w GameMaker: Studio 1.4 zostały przeniesione do zewnętrznych rozszerzeń (extensions). Ma tu duże plusy, a największym jakim się chwali YoYoGames jest to że wcześniej zmiany w zewnętrznym API wymagały zmian w samym GM:S a to skutkowało nowym update. Teraz YoYoGames może wypuścić sam update dla rozszerzenia bez zmuszania nas do pobierania najnowszej wersji całego programu.

W ten sposób zmieniły się między innymi API Padów MOGA, Facebooka, Analityki, no i Play Services o których jest ten drobny artykuł. Gdy będziemy próbowali aktywować w Global Game Settings któreś z zewnętrznych API zostaniemy przeniesieni do Marketplace gdzie będziemy mogli pobrać i dodać do naszego projektu odpowiednie rozszerzenie.

Skoro jesteśmy przy pobieraniu wspomnę ze gdy ktoś po zaktualizowaniu do wersji 1.4 ma problem ze skompilowaniem apk to musi pobrać Android Support Library i Android Support Repository. Oba poprzez Android SDK Manager z zakładki Tools.

Ale przejdźmy już do Google Play Games Services czyli usług udostępniających nam łatwe osiągnięcia albo tabele wyników dla Androida. Nie jest to instrukcja jak zaimplementować te usługi do waszych gier. Wszystko jest dobrze wytłumaczone na tech blogu YoYoGames, a w GameMakerze macie dołączone demo pokazujące jak skonfigurować usługi. Ja tutaj krótko skupię się na problemie jaki męczył mnie od ponad 4 miesięcy czyli: cytat:Nieznany problem z usługami Google Play.Błąd który nie ma najmniejszego sensu. Nie blokuje gry. Nie daje komunikatu gdzie jest błąd. Wyniki w Google nigdzie nie prowadzą. Błąd który pojawia się po zalogowaniu i powoduje jedynie to że Play Services nie działa w grze.
Spędziłem sporo czasu sprawdzając wcześniejsze wersje GameMakera lub pobierając różne SDK. Dopiero przedwczoraj puściły mi nerwy i zacząłem szukać po forum GameMaker Community najróżniejszych tematów o problemach z Androidem i w końcu znalazłem rozwiązanie. Okazuje się że to wina YoYoGames, a błąd jest banalny i prawdopodobnie zostanie poprawiony za jakiś czas. Miejmy nadzieję że ten artykuł nie będzie potrzebny zbyt wielu osobom.

Błąd występuje w GooglePlayServicesExtension v2.2.1 i dotyczy Google Cloud Saving. Zupełnie innej usługi która jak się domyślacie służy do zapisywania stanów gry w chmurze. Szkoda tylko że nie jest to udokumentowana funkcjonalność i trzeba będzie się dokopywać do niej samemu. Dokumentacja dalej twierdzi że dostępne są tylko usługi chmury Amazon WhisperSync.
Tak więc nasz błąd jest wywoływany przez Google Play Games które poprzez Google Play Services stara się wywołać nie skonfigurowany Google Cloud Saving. Chodzi o to że nasza gra pyta o Cloud Saving, ale my nie umożliwiliśmy go aplikacji poprzez konsolę developerską. Jaki byłby sens zaznaczać ten ptaszek skoro nie zamierzamy korzystać z zapisów w chmurze? Stąd właśnie jest problem że pomimo iż mamy odznaczony podobny ptaszek w Global Game Settings naszego projektu to nasza gra sama pyta o używanie Cloud Saving!

Więc jednym z rozwiązań tego problemu jest po prostu włączenie zapisu do chmury w Google Play Developer Console. Ja nie testowałem tego rozwiązania, a od razu przeszedłem do drugiego które poprawia ten błąd. Aby to zrobić musimy edytować pliki rozszerzenia. Dokładnie ten jeden plik.
cytat:ŚCIEŻKA DO PROJEKTU\extensions\GooglePlayServicesExtension\AndroidSource\Java\GooglePlayServicesExtension.javaPrzechodzimy do linijki 97 gdzie znajdujemy ten kawałek kodu:
kod:if( bCloudEnable )
//{
//These are needed if you are using the cloud saving functionality, if you have them in & do not have save games enabled in your google developer console for your game, you won't be able to log
// in to google play services...
Log.i("yoyo","Adding Google Drive API for cloud saving");
builder.addApi(Drive.API);
builder.addScope(Drive.SCOPE_APPFOLDER);
//}

Jak widać klamry zostały wykomentowane z jakiegoś powodu przez YoYoGames. Przez to warunek nie ma znaczenia i kod wykona się niezależnie od niego. Sam komentarz wewnątrz klamr opisuje wszystko bardzo dobrze. Gdyby kogoś interesowało to warunek sprawdza czy w Global Game Settings został zaznaczony ptaszek od Cloud Saving. Jeżeli warunek nie jest brany pod uwagę to i ptaszek nie ma znaczenia.
Powoduje to że nie ważne czy chcemy czy nie, do naszej gry zostaje dopisane API Google Drive. To skutkuje znowu tym że nasza gra nie może się zalogować do Play Services bo nie zgodziliśmy się aby korzystała z tego API.

Musimy odkomentować klamry i sprawić aby warunek działał. Zapisujemy plik. Czyścimy Cache w projekcie i kompilujemy go ponownie. Teraz wszystko powinno działać. Nasza gra będzie się nareszcie logować do Google Games i wysyłać punkty do tabel wyników, a nasi gracze będą mogli zdobywać osiągnięcia!
głosów: 2 | ocena: 9.99 oceń zasób | dodał: Threef
Komentarze
stron: 1

1


av

Uzjel (17:46, 4.03.2016)

Zamiast tego, wystarczyło zezwolić w konsoli Google API na Drive API lub wyłączyć Cloud Saving w konsoli programisty

av

I am Lord (18:43, 4.03.2016)

A ktoś też miał problem, dzisiaj pisał. Im am vader?

av

Threef (19:08, 4.03.2016)

Uzjel: Właśnie na odwrót. Trzeba włączyć Drive API w konsoli.

av

Uzjel (0:50, 5.03.2016)

Tak napisałem.

av

I am vader (15:29, 7.03.2016)

Tak, ale moj problem byl z kompilacją na androida, no more, no less. To moze byc problem z moją konfiguracją, nie kompilowałem od czasu przenosin na nowy dysk, chociaz GM wykrywa wszystko za poprawnie skonfigurowane.

av

Threef (16:19, 7.03.2016)

@I am vader: Może długość ścieżki? Nie dość że trzeba mieć krótką ścieżkę do SDK Androida to i trzeba podać nową ścieżkę w konfiguracji GM dla jego cache. Bo GM wrzuca pliki do tamtego folderu i stamtąd próbuje kompilować.

av

Uzjel (1:22, 8.03.2016)

Fakt, przeskakiwanie z wersji stabilnych jest bardzo trudne czasami :/

av

gnysek (20:06, 9.03.2016)

I najlepiej nie mieć polskich liter i spacji w żadnej ze ścieżek.

av

I am vader (23:19, 9.03.2016)

@Threef - Ścieżki mam takie same i równie krótkie jak miałem oryginalnie, po prostu na nowym dysku. Powinno działać..

av

gnysek (11:09, 29.03.2016)

Teraz to jeszcze trzeba podać dla jakiej wersji gra ma się kompilować od kiedy mają ten nowy kompiler. Jak podasz inne niż masz pobrane, zapomnij o tym, że się uda.

stron: 1

1



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
19 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 15, userów: 4, ukrytych: 0
Konrad-GM, Wojo, pankracy, I am Lord
Użytkownicy na czacie discord
Konrad-GM (23:09, 19.06.19):
Internet głównie, pisałem jakiś swój silnik w OpenGL + C++ ucząc się z learnopengl.com i tak podstawy shaderów podłapałem
I am Lord (22:41, 19.06.19):
Konrad mistrzu shaderów z jakich źródeł się uczyłeś?
Korodzik (21:35, 19.06.19):
W sumie to czemu od ponad pół roku temat dyzmka o Seidzie wisi na górze forum?
SimianVirus7 (18:53, 19.06.19):
chwilę pokombinowałem ale shadery to nie moja bajka
Konrad-GM (12:40, 19.06.19):
docs.yoyogames....ders/index.html Tutaj masz ładnie to opisane w pierwszych akapitach
Konrad-GM (12:39, 19.06.19):
Trochę pokiełbasiłem z tym mnożeniem, ale ostatecznie coś takiego powinno być - pastebin.com/6jjunh5g Tak, ten parametr zmieniasz przez uniformy właśnie.
SimianVirus7 (12:36, 19.06.19):
Prosto i na temat, to lubie a powiedz mi jeszcze, czy shadery mogę zmieniać dynamicznie, znaczy, że zrobie uniwersalny, a parametry będę zmieniał w kodzie jakiegoś obiektu
Konrad-GM (12:24, 19.06.19):
A i tam dałem mnożenie, zamiast mnożenia możesz dać + to wtedy czarny kolor też powinno Ci się rozjaśnić, sorry
Konrad-GM (12:20, 19.06.19):
Oczywiście nie chcesz mieszać się do wartości kanału Alpha, więc możesz coś takiego zrobić: gl_FragColor = (tutaj standardowy kod) * vec4(vec3(1.0 + uRozjasnienie), 1.0); gdzie uRozjasnienie to uniform float uRozjasnienie;
Konrad-GM (12:15, 19.06.19):
Wiesz co, standardowy shader po stworzeniu nowego, to jak chcesz coś rozjaśnić to jest to niezmiernie proste. We fragment shaderze masz wyjście gl_FragColor to wystarczy, że dodasz mnożenie przez wartość rozjaśnienia
SimianVirus7 (12:13, 19.06.19):
jest to jakaś opcja, ale najpierw musiałbym się ich nauczyć
Konrad-GM (10:33, 19.06.19):
A może shader?
gnysek (10:31, 19.06.19):
chyba nie
SimianVirus7 (9:13, 19.06.19):
czy w gm:s2 można jakoś rozjaśnić sprite'a? w gm:s w zakładce effects było ich multum, a w gm:s2 jest tylko grayscale i blur. Jakiś plugin?
gnysek (23:35, 16.06.19):
Wiem.
Konrad-GM (23:25, 16.06.19):
Przez to emaile trafiają do spamu z miejsca
gnysek (23:11, 16.06.19):
Bo Ranma wciąż mi nie dał dostępu do domeny żebym ja normalnie mógł konfigurować.
Konrad-GM (14:43, 16.06.19):
Dlaczego emaile z gmclan przychodzą po domenie gmclan.ovh i to bez szyfrowania? :o
SimianVirus7 (14:25, 16.06.19):
Zastanawiałem się, dlaczego gra schodzi do 5fpsów przy prawie pustym roomie, a tu się okazało, że mam 50 000 obiektów
gnysek (18:59, 14.06.19):
thx
SimianVirus7 (16:19, 14.06.19):
Właśnie zdałem sobie sprawę, że kupiłem przykład z marketu, którego twórcą jest Gnysek
Flashek (14:09, 14.06.19):
takie cos w podstawowce robilismy
gnysek (14:42, 13.06.19):
Myślę, że to było na podstawie kodu oryginalnego manuala
Ranmus (13:49, 13.06.19):
Mimo wszystko dokumentacja gnyskowa dokumentacja widzę, że do GM8, który miał premierę ~2010 roku, gdzie już od dawna się nie używało tabel do layout.
Ranmus (13:45, 13.06.19):
Tak samo ktoś teraz może napisać jaki jest sens używać flexboxa zamiast grida.
Ranmus (13:43, 13.06.19):
Taki był sens, że kilkanaście lat temu nie było html5, css3 czy nawet xhtml i tylko poprzez tabelki dało się wymusić ten sam układ na wielu przeglądarkach. Kiedyś divy nie dzialały tak jak teraz lub ich nie było.
gnysek (22:27, 11.06.19):
10-12 lat temu była taka moda.
Konrad-GM (16:59, 11.06.19):
Oczywiście poza tworzeniem layoutu z tabel
Konrad-GM (16:57, 11.06.19):
Pewnie era xhtml. Chociaż dzisiaj też używa się tagów table, bo semantyka :v
Wojo (16:50, 11.06.19):
tfu <table>
Wojo (16:50, 11.06.19):
Jaki był sens użycia <tr> zamiast <div> ? Z góry zaznaczam, że się na tym za bardzo nie znam
gnysek (21:06, 10.06.19):
O matko, jaką starą stronę znalazłem na moim serwerze, jak projektowałem jak ma wyglądać gmclanowa dokumentacja... gnysek.pl/gm8.doku/index.html
szpaq99 (15:18, 10.06.19):
I tak doszczętnie zniszczyłeś konkurencję, głosy są jednogłośne
SimianVirus7 (7:24, 10.06.19):
aaa, zapomniałem xD i faktycznie jak się nie ma ruchu to też zapomniałem o jakieś akcji
Korodzik (23:11, 9.06.19):
SimianVirus7, twoja gra się wiesza jak się zremisuje
SimianVirus7 (15:08, 9.06.19):
o, rzeczywiście, dzięki
Adriann (14:50, 9.06.19):
Zdaje się że można konwertować jak klikniesz prawym przyciskiem myszy na kod i wybierzesz opcję
SimianVirus7 (12:53, 9.06.19):
Hm, zawsze klikałem, żeby projekt był w trybie GML, a teraz wybrałem Drag&Drop i w sumie tam jest taka możliwość
SimianVirus7 (12:49, 9.06.19):
Mam pytanie. Czy w gms2 można włączyć to drzewko z akcjami do danego eventu, tak jak to było w gms1. gmclan.org/uplo...2___pytanie.png
gnysek (11:48, 9.06.19):
Czasem można wygrać przez samo zgłoszenie, bo jest jedna osoba A jak mniej niż trzy gry to i tak punktujesz
SimianVirus7 (8:12, 9.06.19):
Za długo na nią czekałem żeby odpuścić
gnysek (0:47, 9.06.19):
Czemu? Nie trzeba na każdą ligę robić gry,
SimianVirus7 (0:08, 9.06.19):
No i tak nie zdążył bym zrobić czegoś od podstaw wracam w niedzielę wieczorem także najwyżej będę zdyskwalifikowany
gnysek (9:57, 8.06.19):
To jest przykład. Ktoś musi po prostu wygrać
SimianVirus7 (22:16, 7.06.19):
oj, teraz przeczytałem zaktualizowany opis tury :V czyli nie wystarczy samo zmniejszanie się planszy? musi być tylko jeden gracz na mapie, żeby wygrać?
gnysek (21:19, 7.06.19):
btw. nikt nie mówi, że to musi być tradycyjne kółko i krzyżyk. Możesz chodzić kółkiem i walczyć z krzyżykiem
SimianVirus7 (20:33, 7.06.19):
półtora godziny mineło, a ja wciąż myślę nad mechaniką gry ._.
gnysek (22:24, 6.06.19):
Naprawione
gnysek (22:17, 6.06.19):
Zerkam właśnie, może to jednak moja nadgorliwość ostatnio, jak trochę poprawiałem SEO gmclanowe, które jest straszne.
szpaq99 (20:36, 6.06.19):
Dokładnie tak naprawdę to nie był błąd ] tylko jesteście w Truman Show
Ankieta
» Ile powinny trwać tury Ligi 24?
24h
48h
54h (piątek od 18:00)
7 dni
inna długość (podałem w komentarzu ankiety)

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2019. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2019 {=|=} fable_inside();

[ Czas generowania strony: 0.0271 sekund ] [ Liczba zapytań MySQL: 13 ]