Godot 4 · GDScript
Настройка
Gamdato предоставляет готовые к использованию бэкенд-сервисы. Клиент Godot, это аддон для Godot 4.5+ (GDScript), который предоставляет глобальный узел под названием Gamdato, доступный из любого скрипта без необходимости что-либо импортировать.
Создайте аккаунт
Зарегистрируйтесь на gamdato.com. Ссылка для активации отправляется на ваш email (истекает через 24 часа). После подтверждения email войдите, чтобы получить доступ к панели.
Зарегистрируйте игру
В своей панели создайте новую игру, введя название. Вы получите панель управления для управления таблицами лидеров, контентом, наградами и просмотра списка игроков.
Сохраните GAME_ID и API_KEY: они понадобятся для подключения вашей игры к серверу.
Включите плагин
Скопируйте папку аддона в addons/ в вашем проекте и включите её в Project > Project Settings > Plugins > Gamdato > Enable. Это регистрирует глобальный узел Gamdato, доступный из любого скрипта.
Первоначальная настройка
Настройте клиент один раз при запуске, обычно в _ready() вашей главной сцены. Порядок таблиц определяет их индекс (1, 2, 3...).
Gamdato.set_controller("YOUR-GAME-ID", "YOUR-API-KEY")
Gamdato.set_leaderboard(["table_key_1", "table_key_2"])Безопасность: не вписывайте API_KEY в код и не коммитьте его. Читайте ключ из переменной окружения, var key := OS.get_environment("GAMDATO_API_KEY"), или из файла конфигурации, исключённого из git, и передавайте его в set_controller(). Ключ всё равно попадает в экспортированную сборку, но хранение его вне системы контроля версий предотвращает утечки. Хороший приём, постоянный autoload (напр. узел "GamdatoController"), который один раз загружает учётные данные и вызывает set_controller() за вас.
Подключите сигналы
Вы никогда не делаете сетевые вызовы: вы вызываете функции и слушаете сигналы для получения результата. Подключайте сигналы в _ready() перед настройкой. Сессия поддерживается активной и обновляется автоматически.
func _ready() -> void:
Gamdato.session_started.connect(_on_connected)
Gamdato.tables_loaded.connect(_on_ready)
Gamdato.submit_completed.connect(_on_score_sent)
Gamdato.set_controller("YOUR-GAME-ID", "YOUR-API-KEY")
Gamdato.set_leaderboard(["scores_normal", "scores_hard"])
func _on_ready() -> void:
for row in Gamdato.get_table_data(1):
print("#%d %s %d" % [row.rank, row.player_name, row.score])Статус и соединение
Функции статуса для реакции в вашем интерфейсе:
- is_ready(): true, когда данные готовы к отображению.
- is_session_active(): true, пока есть соединение (идеально для индикатора статуса).
- has_connectivity(): true, если интернет есть прямо сейчас. Слушайте connectivity_changed, чтобы реагировать на изменения.
- reload_info(): обновить все таблицы с сервера.
Работает офлайн
Gamdato спроектирован так, чтобы ваша игра никогда не казалась сломанной без интернета:
- Мгновенное чтение: рейтинги, ваш лучший результат и загруженный контент берутся из локального хранилища.
- Результаты в безопасности: с submit_with_retry результат, отправленный офлайн, доставляется при переподключении, даже если игрок закроет игру.
- Самопереподключение: плагин повторяет попытки самостоятельно и восстанавливается, когда сеть возвращается.