Dzięki temu opakowaniu możesz uzyskać dostęp do pakietu SDK YouTube Playables w Godot za pomocą udostępnionego .gd
. Opakowanie zawiera łącznik pakietu SDK w formacie .js i plik .gd
, aby przyspieszyć proces tworzenia. Dostępny jest też przykładowy projekt, który pokazuje, jak używać tych skryptów w projekcie.
Pakiety zip z Godot można pobrać z repozytorium z przykładami Playables.
Wykorzystanie
- Wyodrębnij
GoogleYTGameWrapper-godot.zip
w folderze projektu, w którym mają się znajdować te skrypty. Ten plik ZIP zawiera 2 pliki:YTGameWrapper.gd
: służy jako łącznik do pakietu SDK JavaScript Playables w YouTube, umożliwiając wywołanie pakietu SDK w grze.YTGameSDK.js
: służy do nawiązywania połączenia z pakietem SDK YT Playables. W tym przykładzie umieścimy ten plik w katalogu głównym projektu. Możesz to zmienić, ale wymaga to zaktualizowania lokalizacji uwzględnienia nagłówka.- Pełną wersję przykładowego projektu można pobrać z repozytorium przykładowych projektów w Pokoju gier. W przypadku tej wersji użyj pliku zip o nazwie
GoogleYTGameWrapper-godot-with-sample.zip
.
- Dodaj nowy skrypt globalny Autoload dla
YTGameWrapper.gd
, który został rozpakowany. Możesz to zrobić w sekcjiProject
->Project Settings...
->Globals
. W polu danychPath
wybierz plikYTGameWrapper.gd
, a w polu danychNode Name
dodaj plikYTGameWrapper
. Na koniec kliknij+ Add
.- Dzięki temu skrypt będzie dostępny globalnie w Twoim kodzie, co pozwoli Ci wywoływać funkcję
YTGameWrapper
w razie potrzeby.
- Dzięki temu skrypt będzie dostępny globalnie w Twoim kodzie, co pozwoli Ci wywoływać funkcję
- Sprawdź, czy platforma Godot w Twoim projekcie jest skonfigurowana do eksportu do
Web
. To ustawienie znajdziesz na karcie Eksport. Najpierw kliknijProject
, a potemExport...
. - W panelu Eksportowanie dodaj nowe ustawienie, klikając kolejno
Add...
iWeb
. Po utworzeniu kodu dodaj go do pola ustawieńHead Include
.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
- Wyeksportuj projekt internetowy w panelu
Export
, klikającExport Project...
i wybierając lokalizację kompilacji. - Po skompilowaniu projektu przejdź do folderu kompilacji i skopiuj do niego plik
YTGameSDK.js
. Pamiętaj, aby dołączyć go do przesyłanej kompilacji. - Sprawdź, czy spełniasz wymagania techniczne dotyczące projektu, i użyj pakietu testów dotyczących interaktywnych treści.
Przykłady
W tej sekcji znajdziesz kilka przykładów użycia obudowy .gd
. Nie jest to jednak pełna lista dostępnych interfejsów API. Pełną listę dostępnych interfejsów API znajdziesz w pakiecie SDK YouTube Playables. Zakładamy też, że Twój projekt jest skonfigurowany zgodnie z opisem w sekcji Korzystanie.
sendScore
Ten przykład pokazuje implementację sendScore(int points)
w .gd
:
var current_game_score: int = 0
...
func add_score(scoreAdded: int):
current_game_score += scoreAdded
YTGameWrapper.send_score(current_game_score)
onPause
Oto przykład tego, jak gra może nasłuchiwać zdarzeń Pause
pochodzących z YT Playables, aby w razie potrzeby wstrzymać silnik:
func _ready() -> void:
# hook up on game paused
YTGameWrapper.game_paused.connect(self._on_game_paused)
# hook up on game resumed and game save data received events
YTGameWrapper.game_resumed.connect(self._on_game_resumed)
func _on_game_paused():
# Pause your game logic, audio, etc.
get_tree().paused = true
func _on_game_resumed():
# Resume your game logic, audio, etc.
get_tree().paused = false
saveData
Oto przykład użycia saveData
, wysyłanego do pakietu SDK Playables w YouTube:
var current_game_score: int = 0
var time_elapsed: float = 0.0
...
func save_game_data():
YTGameWrapper.save_data('{"BestScore": "' + str(current_game_score) + '","BestTime": "' +str(time_elapsed)+ '"}')
loadData
Oto przykład użycia loadData
, wysyłanego do pakietu SDK Playables w YouTube:
func _ready() -> void:
# hook up game load data received event
YTGameWrapper.load_data_received.connect(self._on_load_data)
# Request to load data when the game starts
YTGameWrapper.load_data()
func _on_load_data(save_data_string: String):
if not save_data_string.is_empty():
# Add logic to parse the save_data_string and restore game state
print("Loaded data: ", save_data_string)
requestInterstitialAd
Ten przykład pokazuje, jak używać tagu requestInterstitialAd
, który wskazuje, że jest to dobry moment na wyświetlenie reklamy pełnoekranowej (jeśli jest dostępna). Aby uzyskać najlepsze wyniki, zadzwoń w przerwie w grze, np. na końcu poziomu.
func set_game_over(didWin: bool):
YTGameWrapper.request_interstitial_ad()
# logic for game over
Jak podzielić zasoby w projekcie Godot (opóźnione wczytywanie)
Jednym z głównych problemów, na które zwracają uwagę deweloperzy korzystający z Godot, jest konieczność zachowania wymagań dotyczących rozmiaru pliku i ogólnych wymagań dotyczących rozmiaru pakietu.
Opóźnione wczytywanie zasobów to świetna metoda optymalizacji projektu, ponieważ możesz wczytywać zasoby, poziomy i dane w miarę potrzeby. Nasz zespół certyfikacyjny może zrezygnować z ogólnych ograniczeń rozmiaru pliku, jeśli zostanie to zrobione prawidłowo, ponieważ pełna gra nie będzie wczytywana z góry, ale dopiero wtedy, gdy użytkownik będzie się poruszać po Twoim produkcie.
Aby ułatwić prawidłowe wczytywanie, Godot oferuje pakiety eksportowania, łaty i modyfikacji (link do angielskiej wersji strony). Zalecamy wygenerowanie plików .pck
, które są wczytywane w miarę potrzeby.
Zapoznaj się z pełną dokumentacją interfejsu YT Playables API.